最近也是遇到了这个问题,通过周末的研究,感觉自己搞明白了,现在总结一下吧!整体的感受:没事多看看各种manual吧,上面讲的真的比网上说的好太多了,网上各种观点都有,难以确定谁对谁错。当然本文也是基于自己的理解,如有错误欢迎指正。
目录
positive setup hold timing check
positive setup hold timing check
$setuphold函数
在工艺厂商提供的工艺库模型中定义了工艺库中用到的所有cell的verilog仿真模型,该模型定义了各种std cell的基本功能以及cell内部的timing check。其中主要以setuphold函数为例说明。该函数可以看做是setup函数和hold函数的组合。同时在SDF3.0版本中,setuphold函数支持negative timing check而单独的setup or hold 函数是不支持negative timing check的。同时在后仿的时候要注意verilog model和SDF在timing cehck的地方要对应,否则就会出现错误。对于recovery 和removal同样,只是简写为$recrem.
verilog 文档对于setuphold函数的定义如下
posedge clock表示referenc_event
data表示data_event
notifer表示notifer寄存器,当出现timing volition时,用户可以选择使用使用某些命令是的notifer的值为X态,即std cell出现X态。
下面四个option都是可选option,当timing check出现负值是才会使用这些option使得timing check更加的准确。
stamptime_condition表示当出现负值的timing check是标记的条件
checktime_condition表示当出现负值的timing check是检查的条件
delayed_reaference 表示delay reference signal for negative timing check
delayed_data表示delay reference data for negative timing check
PS:delayed_reference_signal和delayed_dat