大家好,欢迎来到IT知识分享网。
文章目录
前言
数字验证包含两方面的内容:功能验证和时序验证。对应的仿真模型也不外乎这两个部分,功能部分由门构成,时序部分则包括了时序反标和时序检查两部分。
平时我们所说的功能验证,也就是前仿真,时序被默认为理想情况,不包含延迟信息。门级仿真,也称为后仿真,除了功能验证外,最主要就是用来检查时序是否满足,有没有时序违例的情形。
门级仿真根据网表不同,又可以分为综合后仿真,以及布局布线后仿真。前者是用综合后的网表进行仿真,这时由于没有做CTS,所以会出现不少时序违例的情况;真正时序验证的网表是后端做完布局布线,timing clean的网表,我们称为pnr网表。
进行pnr网表的后仿时,我们需要告知仿真工具cell和net的延时,因此就需要SDF文件。
一、如何产生SDF?
write sdf 代码如下(示例):
write_sdf -version 3.0 -input_port_nets -output_port_nets -context verilog -compress gzip -include {
SETUPHOLD RECREM} -exclude {
checkpins no_condelse} -no_internal_pins top_func_setup_ssgnp0p675vm40c.sdf.gz
This command writes leaf cell pin-to-pin timing information to a disk file. Timing information is written in SDF format using versions v2.1 or v3.0. The timing file contains data associated with the netlist from which it is created.
二、解析SDF内容
SDF文件包含一个首部(header ),后跟一个或多个单元(cell)。
1. header
Header包含一般的信息,比如SDF Version、Design Name 、SDF生成日期、Vendor信息、产生SDF用到的PROGRAM name和VERSION、VOLTAGE、PROCESS、TEMPERATURE、TIMESCALE精度等。
2. cell
下面主要介绍DELAY和TIMINGCHECK这两部分。
① DELAY
SDF DELAY有四种类型:ABSOLUTE、INCREMETN、 PATHPULSE和PATHPULSEPERCENT。
a) ABSOLUTE
ABSOLUTE:在反标期间替换单元实例的现有延迟值。
可以使用ABSOLUTE描述八种延迟定义:
● IOPATH:输入到输出路径的延迟。
示例如下:
//2输入或非门的器件,例化名u434,给出了该器件从输入到输出的每条路径的delay值 (CELL (CELLTYPE "NR2D1") // cell name (INSTANCE u434) // cell instantiate name (DELAY (ABSOLUTE (IOPATH A1 ZN (0.0812::0.0841) (0.0379::0.0395)) //cell delay,IOPATH指输入到输出的delay, A1-->ZN (IOPATH A2 ZN (0.1350::0.1350) (0.0994::0.0994)) //cell delay A2-->ZN ) ) )
● INTERCONNECT:互连走线延迟,可以用于指定从其源端到接收端的整个网络的传播延迟。
示例如下:
//从u434的Z Ouput pin到U444的A2 input pin,给出了上升delay(rising edge transmit delay)和下降delay(falling edge transmit delay). 括号内的时间分别是最小(Tmin)/典型(Ttyp)/最大(Tmax)delay (DELAY (ABSOLUTE (INTERCONNECT u434/Z u444/A2 (0.028:0.029:0.029) (0.030:0.031:0.031)) //上升沿传输delay 和下降沿传输delay ) )
● RETAIN:保留时间定义,可以用于指定输出端口在其相关输入端口改变后应保留其先前值的时间。
● COND:条件路径延迟,可以用于指定状态相关的输入到输出路径延迟。
● CONDELSE:默认路径延迟,可以用于指定条件路径的默认值。
● PORT:端口延迟,可以用于指定互连走线延迟,该延迟被建模为输入端口的延迟。
● NETDELAY:网络延迟,可以用于指定从一个网络的所有源端到所有接收端的传播延迟。
● DEVICE:器件延迟,主要用于描述分布式时序模型,可以用于指定通过单元到输出端口的所有路径的传播延迟。
b) INCREMETN
INCREMETN将新的延迟数据添加到单元实例的任何现有延迟值。也可以使用INCREMETN来描述ABSOLUTE提到的八种延迟定义。
c) PATHPULSE
d) PATHPULSEPERCENT
PATHPULSEPERCENT除了值以百分比表示外,这与PATHPULSE完全相同。
②TIMINGCHECK
在以TIMINGCHECK关键字开头的部分中指定了时序检查的极限。在任何这些检查中,可以使用COND结构指定有条件的时序检查。在某些情况下,可以指定两个额外的条件检查SCOND和CCOND,它们与stamp event和check event关联。
● HOLD:保持时间检查
● SETUPHOLD:建立时间和保持时间检查
● RECOVERY:恢复时间检查
● REMOVAL:撤销时间检查
● RECREM:恢复时间和撤销时间检查
● SKEW:单向偏斜时序检查
● BIDIRECTSKEW:双向偏斜时序检查
● WIDTH:脉宽时序检查
● PERIOD:周期时序检查
● NOCHANGE:不变化时序检查
三、VCS如何反标SDF文件?
反标SDF文件有两种方法,一种作为elaboration的选项指定,另一种是在bench中调用系统函数$sdf_annotate来完成。
1. 作为elaboration的选项
2. 使用系统函数$sdf_annotate
如何确认成功反标呢?
这样我们就反标完成了,接下来让我们通过后仿波形,验证下设计中延迟和sdf文件中延迟是否一致。比如,对于一个register, sdf反标成功后,它的D端和CP端一般不会同时到达。
在反标SDF后,specify块中定义的延迟值不再有用,取代的将是SDF文件中的延迟。所以如果sdf文件的条件信息如果在verilog的specify中没有的话,就会报SDFCOM_INF的warning,意思是IOPATH not found。
总结
在实际的数字电路设计中,掌握SDF文件的产生和内容含义、SDF反标的方法和原理对于确保设计质量和时序正确性非常重要。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129549.html