后仿中的异步D触发器设置

2020-07-15 14:35:19 浏览数 (2)

在PR后仿时,经常会遇到讨厌的红色X(不定态)。而debug不定态的起因又很麻烦,有可能用Verdi调试半天还是没能找到根本的原因。

今天我们就来分析一下异步D触发器采样不稳定(setup或hold时序不满足)引起的不定态,及后仿时的处理方法。跨时钟域采样或者时钟域同步电路的第一级D触发器,就是典型的可能会出现不定态的情况,如下图所示。

亚稳态亚稳态

而设计中似乎又没法避免这种电路。由于clk_aclk_b是异步的,所以图中的DFF2就无法保证setup和hold时序关系。所以在后仿时就需要设置DFF2为notimingcheck。假设DFF2的路径为tb.dut.u_dff2_reg

在cadence的Incisive(NC)中,用-tfile <file>来指定。

1.  Incisive仿真增加参数

代码语言:txt复制
-tfile notimingcheck.tfile

2.  编辑notimingcheck.tfile文件

代码语言:txt复制
PATH tb.dut.u_dff2_reg -tcheck

在synopsys的vcs中,用 optconfigfile <file>来指定。

  1. vcs仿真增加参数
代码语言:txt复制
 optconfigfile notimingcheck.cfg
  1. 编辑notimingcheck.cfg文件
代码语言:txt复制
instance {tb.dut.u_dff2_reg} {noTiming};

如果有多个异步D触发器,就写多行,一行写一条约束。

注意:

notimingcheck本质就是指定不检查局部的timing关系,所以在使用之前一定要确认这条路径是不是真正的异步关系,否则可能隐藏了背后的BUG。

0 人点赞