post-simulation相关问题及解决方法

上一篇 / 下一篇  2017-10-25 18:26:14 / 个人分类:验证

1.PR后的timing rpt没有时序违反,那sdf里负的hold 是什么意思,是好是坏?
   setup,hold的本质是数据不能在clock变化的周围变化, 否则会出错, 把在clock前的叫setup, clock后的叫hold, 其实是一个窗口 (violation window). 但是由于一个触发器内部本身也有delay, 假如data path没delay, clock path有delay, 那么这个窗口从触发器外部看起来的话, 就是往左移了, 移得太多, 就可能让hold timingcheck的值变成负值. 是正确的. 说的比较复杂, 其实画画时序图很容易理解.hold为负值的意思是信号在时钟沿之前指定时间内(那个负值的绝对值)翻转都不会出问题。

2 有error,提示要加+neg_thck,这个和负的hold有什么关系吗?加+neg_tchk貌似把负的hold修成0了?
   +neg_tchk是让工具知道你有负的hold/setup值, 以前的clock比较慢, 所以没出现过负值, 现在有了, 必须要加上这个option,不然就不准了. +这个option不是变成0, 是支持负值了, 你说反了. 我认为加“+neg_tchk”把负值改为0可能是因为工具不支持负值,所以把负值改为0来计算,这样相当于仿真时hold check更苛刻了。

3.+notimingcheck就相当于不检查负的hold?那影响仿真所加时序吗?这个命令在仿真时候需要加吗?
   +notimingcheck就是字面意思, 不做timing check, 对于后仿来说, 加和不加的都要跑一跑。不加的话就是纯功能仿真,不考虑时序。

4.notimingcheck在RTL仿真和后仿真中的意义?如果后仿真中加了这个参数会有什么影响?
   notimingcheck在RTL级仿真中,可以避免如sram、flash以及你RTL中例化的std cell报出时序违背,而影响你的仿真结果。后仿真一般仅将notimingcheck设置在跨时钟域处理的第一级DFF上,以规避其报时序违背,导致仿真出现X态。第二级的时序是需要解决的(也就是说第二级不能出现时序问题,因为他属于同一个时钟域)。

5.怎么将“notimingcheck”这个参数只加到跨时钟域的第一级呢?
  假设你有两个dff (分别为“u1/u2/u3”,“u1/u2/u4”) 不做时序。检查创建一个文件,我在这里命名为notimingcheck.cfg
文件内容为:
instance {
    u1/u2/u3,
    u1/u2/u4
} {noTiming};
然后在仿真编译中加入 “+optconfigfile+notimingcheck.cfg
执行仿真即可。
instance也可以是module和tree。noTiming也可以是noIopath,noSpecify等等。

6.我现在遇到个问题,DC综合后的netlist和sdf拿来后仿,波形到一个地方所有输出pin全变x态了,后续就全是不定了。而将综合后的sdc和netlist进行APR,然后输出PR后的netlist和sdf文件拿来后仿,波形就没有问题。这是为什么呢?DC和PR都没有timing violation。vcs命令都是用的vcs -gui -R top_testbench.v +neg_tchk 烦请大神看看,可能是哪的问题?
  DC不修Hold啊,一般综合后的网表只跑#0 delay的就可以了,DC综合以后的sdf不准确的,可能有些大delay。你只跑#0 delay的综合后网表就可以了。

7. VCS的时序选项nospecify,+delay_mode_zero,+notimingcheck和+no_notifier之间有什么区别
 以一个简单的与非门为例
module ND(X,A1,A2)
   output X ;
   input A1,A2 ;
   specify
     (A1 => X) = 50 ;
     (A2 => X) = 50 ;
   endspecify
endmodule
在标准单元中,定义输入A1到输出X的路径延时为50 time unit。

+nospeicy:vcs不加入50 time unit的延时
+delay_mode_zero:将标准单元中定义的延时替换为0
+notimingcheck :时序检查开关,比如setup/hold/width检查等等,如使用开关,则仿真时不检查时序,如后仿真,时序检查不满足,可能导致X扩散。
+no_notifier:在库里面有一些检 查,width,setup,removal等等,一旦有violation,它就将notifier寄存器翻转,这样就出现X态,为了不让仿真中出现这 个情况,可以再仿真时加上 +no_notifier,这样仿真不会翻转notifier寄存器,也不会出现X态,不过会display出各种违例。

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2017-11-22  
   1234
567891011
12131415161718
19202122232425
2627282930  

我的存档

数据统计

  • 访问量: 175
  • 日志数: 1
  • 建立时间: 2017-10-25
  • 更新时间: 2017-10-25

RSS订阅

Open Toolbar