后仿反标SDF文件Warning的解决
总结两个问题:
一,
在PR后仿时,经常会遇到讨厌的红色X(不定态)。而debug不定态的起因又很麻烦,有可能用Verdi调试半天还是没能找到根本的原因。
今天我们就来分析一下异步D触发器采样不稳定(setup或hold时序不满足)引起的不定态,及后仿时的处理方法。跨时钟域采样或者时钟域同步电路的第一级D触发器,就是典型的可能会出现不定态的情况。
而设计中似乎又没法避免这种电路。由于clk_a和clk_b是异步的,所以图中的DFF2就无法保证setup和hold时序关系。所以在后仿时就需要设置DFF2为notimingcheck。假设DFF2的路径为tb.dut.u_dff2_reg。
编译器 |
解决步骤 |
cadence的NC |
1. NC仿真增加参数 -tfile notimingcheck.tfile。 2. 编辑notimingcheck.tfile文件 PATH tb.dut.u_dff2_reg –tcheck |
synopsys的vcs |
1. vcs仿真增加参数 +optconfigfile+notimingcheck.cfg。 2. 编辑notimingcheck.cfg文件 instance {tb.dut.u_dff2_reg} {noTiming}; |
另外还可以通过 module, tree指定对象,但只能是module name,不能有层次。
如果有多个异步D触发器,就写多行,一行写一条约束。
二、
在项目PR网表仿真时,遇到很多SDF反标的Timing check Warning,几乎全是D触发器内部时序找不到CP和D的时序检查。查看了一下D触发器模型文件,发现仿真时没有打开NTC和RECRAM宏,导致走的分支不对。
解决方法:VCS选项打开NTC和RECRAM宏定义。