CLK(define函数,fork_join并行)
1、频率验证:入口参数包含(目标时钟,频率、裕量和字符串),获取当前时钟上升沿的开始时间和上次时钟上升沿的时间(用$realtime),做差,判断差值是否在目标频率0.99~目标频率1.01之间。fork join_any内部有2到3个while死循环。
2、相位验证:入口参数包含(目标时钟,源时钟,裕量,字符串),获取clk1上升沿的时间,获取clk2上升沿的时间,做差,差大于裕量则报错。fork join_any内部有2~3个while死循环。
3、占空比验证:入口参数包含(时钟、高低电平权重,满权重是1,裕量,字符串)获取待测clk跳变沿时间,采集每次沿跳变的时间,做差得到高低电平的时间,奇数偶数可以表示上升沿和下降沿,如果是相同占空比,则每个周期进行一个高电平时间和低电平时间的差运算,其绝对值大于裕量就报错。如果不是相同占空比,求出占空比的比值(a/b),t1>(a/b)t20.999&&tx<(a/b)*1.001则正确,否则报错。fork join_any内部有2~3个while死循环。
4、毛刺验证:小于(没有等于)周期一半的都是毛刺(占空比不同略有调整)。入口参数包含(目标时钟,裕量和字符串)。思路:获取目标时钟的沿跳变时间,做差,时间小于占空比小的电平保持时间的都是毛刺。fork join_any内部有2~3个while死循环。
IC验证中CLK验证思路
于 2023-11-09 10:21:14 首次发布