芯片后仿及SDF反标注

SDF文件用于存储电路延迟信息,用于路径时序分析。$sdf_annotate命令用于将SDF文件反标到网表中,VCS编译器也可配合-sdf选项进行延迟反标注,帮助检查电路时序违例。反标注方法包括直接在代码中使用$sdf_annotate函数和通过VCS编译指令指定SDF文件。
摘要由CSDN通过智能技术生成

什么是SDF文件?

SDF(Standard Delay Format)文件是把布局布线过程中器件之间的延迟和线之间的延迟信息保留下来,据此就可以在路径时序分析时将电路中整条路径的时序计算出来,再根据时序约束条件判断电路时序是否满足要求。没有反标SDF文件的门级仿真,用综合出的门级网表就能完成,这时由于hold没有修,所以会出现不少时序违例。带时序的反标的门级仿真,也就是布局布线后的仿真,这时的网表是修补完timing的网表,与没有反标SDF的门级仿真相比,时序违例会减少。

SDF延迟反标注方法:

方法一:使用$sdf_annotate将SDF文件反标到网表中:

$sdf_annotate("sdf_file"  [,module_instance] [,"sdf_configfile"]  [, "sdf_logfile"] [,"mtm_spec"]

[, "scale_factors"] [, "scale_type"]);

其中,module_instance是例化的模块名,例如在testbench中,例化顶层:

digital_top  digital_top_u   

digital_top_u是例化的模块名,那么按照上面的格式,在testbench中添加下列代码:

initial begin

$sdf_annotate( "fast.sdf"  ,digital_top_u  ,     , “fast_sdf.log"  ,"MAXIMUM"  ,    ,  );

end

sdf_file: sdf文件;(此例中sdf文件名为fast.sdf)

module_instance:调用$sdf_annotate模块实例的范围;

sdf_configfile:指定SDF配置文件;

sdf_logfile:生成所有的sdf反标错误的文件,需在编译时使用+sdfverbose。

mtm_spec:指向哪一种延时类型,通常有三种min,typ,max,分别表示最小延时,常规延时,最大延时。对应写在$sdf_annotate函数中是"MINIMUM", "TYPICAL", "MAXIMUM"。

在仿真器读入SDF的时候,要指定使用哪一组。

scale_factors:指定min:typ:max的缩放因子,默认为三个正实数“1.0:1.0:1.0”。

由于是默认参数,所以在上面的$sdf_annotate( "fast.sdf"  ,digital_top_u  ,     , “fast_sdf.log"  ,"MAXIMUM"  ,    ,  );  中的对应位置用空格表示,也可以不用空格,用空格对应参数看起来更清楚。

scale_type:指定SDF文件中缩放前使用的延迟值,它可能的值是"FROM_TYPICAL",

"FROM_MINIMUM"  ,   "FROM_MAXIMUM"和默认"FROM_MTM";

此项参数也是默认,同样在$sdf_annotate函数中对应位置可以用空格来表示。除sdf_file必须要给出以外,其他参数都可以使用默认值,用空格来表示,也可以不用空格。

VCS编译指令:-full64  -kdb  -sverilog  -f vflist   -l com.log  -debug_access+all  +vcs+vcdpluson   +negdelay    -sdfretain    +sdfverbose    

Notes:其中testbench,dut.v,sdf文件放在同一层目录(同一个文件夹),但vflist里面只需要有testbench和dut.v的文件名,不需要把sdf文件的名字写进去,因为sdf文件已经用$sdf_annotate函数调用了。

如何确认成功反标?

编译完成后,可以从终端或者log文件中看到这么一句话:

SDF  annotation  completed.   

同时也会显示反标过程中有多少个error和warning。

方法二:VCS编译器配置

在VCS编译指令中加上    -sdf   min|typ|max:instance_name:file.sdf,

具体格式为   -sdf   max:tb_digital_top.digital_top_u:fast.sdf

其中,tb_digital_top为testbench的模块名,digital_top_u为顶层的例化名。

同时编译选项加上 +neg_tchk   -negdelay   -sdfretain

注意VCS编译指令中最大延时用max表示,在$sdf_annotate函数中最大延时用MAXIMUM表示。

Notes:关于后仿的延时文件fast.sdf以及slow.sdf,前者表示快的,后者表示慢的。fast.sdf检查hold时间,slow.sdf检查setup时间,越慢setup越不容易满足,越快hold越不容易满足。

其中,sdf反标注有延迟类型的选择,分最坏,最好,最常用三种情况,最坏情况:slow对应max,fast对应min。

Tips:如果需要对多个例化的模块进行延迟反标注,可以在testbench里面,用多个$sdf_annotate,分别用来标注需要反标的模块。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值