|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
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出各种违例。 |
|