关于clock模块的验证
时间:10-02
整理:3721RD
点击:
想请教一下各位大神怎么做clock模块的验证。例如clock模块的分频器、clock-gate、clock-mux,其实这些子模块一般没什么问题,主要是对应的clk-div、clk-en、clk-sel信号连接性是否正确。
我是在testcase里面随机配置clock相关的控制信号,在一个interface里面抓取DUT clock模块的输出clock,检验它们的gate情况和频率情况是否和模型计算的预期一致。
但是有个麻烦的问题是,clock的gate或div信息变化时,需要一段时间稳定,这段时间不进行严格检测,但是这段时间长度不是那么容易确定,尤其是clock的路径上有多个分频、gate或mux时。
我做验证时间不长,水平太低,不知道大家的方法是怎样的?谢谢!
我是在testcase里面随机配置clock相关的控制信号,在一个interface里面抓取DUT clock模块的输出clock,检验它们的gate情况和频率情况是否和模型计算的预期一致。
但是有个麻烦的问题是,clock的gate或div信息变化时,需要一段时间稳定,这段时间不进行严格检测,但是这段时间长度不是那么容易确定,尤其是clock的路径上有多个分频、gate或mux时。
我做验证时间不长,水平太低,不知道大家的方法是怎样的?谢谢!
用断言去做,
clock的gate或div信息变化时,需要一段时间稳定 :
这个是指动态切换和静态切换的方面吗?
谢谢你,前几天一直外出,忘记看帖子了,今天回北京刚刚看到,不好意思。不知道您所说的用断言去做是具体断言什么内容呢?
我在sequence中对clock的div、gate、mux做随机配置,应该算您说的动态切换吧。DUT外面挂了一个checker,能够拿到配置信息,随时检查输出clock的频率等。
可以检测分频系数,毛刺什么的,
动态切换是指配置之后分频立马生效,静态要等几拍才能生效
谢谢!我理解div、gate、mux一般都是需要几拍吧,例如mux的sel信号切换时,需要将sel信号同步到新时钟源才能用。不知道你说的同步几拍是不是这个意思。另外,如果是断言检查的话,断言是一直在工作吗?这样的话,在时钟控制信号切换过程中会报错吧?我就是觉得这个很不好处理,切换过程长短与时钟频率有依赖关系,感觉不太好做。如果不是我理解的这样做,能举个具体点例子吗?
十分感谢!
断言是满足条件就进行判断,可以用UVM随机出各种可能的配置,让断言去检查错误
切换过程长短与时钟频率有依赖关系,这个拿沿变化的次数进行判断就可以了。呵呵。
我发了个断言的语法资料,你查查看,
好的,谢谢,之前确实是用uvm随机配置,但是检查用的是自己写的task,可能用断言的话更简洁明了,之前用断言用的语法都比较简单,我再去学习一下。再次感谢!
在top里面是可以使用断言的,通过UVM去随机各种不同的sequence去触发各种条件,这样效果会比较好。你我就是这么用的,你可以试一下