关于时钟模块完备性验证方法第六章

系列文章目录


第六章 时钟glitch检查



前言

       之所以要进行时钟glitch检查,是因为实际工程中我们遇到这样的问题,有些时钟设计,比如在频率切换过程中,有的时钟设计并非无毛刺切换设计,但是这又是设计允许的,也有些设计虽然是无毛刺切换,但是切换过程中频率并不规整,但是频率也是可以接受的,这就导致前面章节中我们介绍的频率自动化检查的checker无法cover所有的需求,只能waive掉这些特殊的时钟,但是又担心waive掉后,系统运行过程中有可能漏掉一些不满足最小脉冲要求的情况,即我们常说的glitch。因此,这里我们新增了glitch检查,通过设定最小的min pulse值,让checker自动上报那些不满足脉宽要求的时刻,供验证人员分析。

      其次,glitch的风险还是挺大的,首先在前仿真阶段,有些gltich我们还不一定能够发现,这些问题往往需要到了后仿阶段才有可能暴露出来,而一旦系统运行过程中,出现时钟glitch,将有可能带来不可预估的影响,比如timing不满足导致亚稳态等。因此,一个鲁棒性好的设计,一定要避免设计中出现glitch。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是时钟glitch?

        就是我们通常所说的毛刺,即脉冲宽度很小,举个例子,对于某一款工艺节点的DFF的CK端min pulse要求为0.2ns,当clk的最小脉冲宽度小于0.2ns时,DFF就会出现timing违例。包括低电平glitch以及高电平glitch,尤其对于时钟而言,DFF的CK端有最小脉宽要求,一旦不满足要求,即DFF的timing无法保证,将有可能输出不定态,导致亚稳态传播。

二、使用步骤

1.自动化checker代码如下

`define CLK_GLITCH_CHK(clk_sig,t_min,sign) \
begin \
   real t_last, t_now, t_diff; \
   t_last = 0.0; \
   t_now  = 0.0; \
   begin \
      while(1) begin\
         @(chk_sig); \
         t_now = $realtime; \
         if(t_last >= 0) begin \
            t_diff = t_now - t_last; \
            if((t_diff >= 0) && (t_diff < t_min)) begin\
               err_num ++;\
            end \
         end \
         t_last = t_now;\
      end \
   end\
end\

2.算法解析

       这部分算法的核心即在每个时钟的跳变沿,记录当前时刻,然后用后一个沿时间减去前一个沿时间,计算最小min pulse。

       最后,我们可以在验证环境中调用该自动化checker,如下:

`CLK_GLITCH_CHK(clk_target, 0.1, "clk_target")

 比如上述调用,我们需要对clk_target,检查其在系统运行过程中,任意时刻不能出现最小min pulse小于0.1ns的情况,一旦出现,就会自动向testbench中上报错误信息,方便验证人员进行debug。


总结

      通过宏定义的方式对检查进行主体建模,然后在验证bench中对所有待检查的时钟进行扩展建模,很大程度上减少代码的复杂度,使代码通俗易懂,易维护。同时,通过这种自动化的glitch检查,可以检查出任意时刻,出现glitch时随时向testbench上报错误信息,大大提高验证效率。

      进一步扩展,该checker不仅仅局限于时钟的验证,甚至可以扩展到任意signal,在实战中大家可以尽情尝试。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

love混世_魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值