购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 Verilog HDL SDF逆向注解

标准延迟格式(Standard Delay Format,SDF)包含时序值,用于指定路径延迟、时序检查约束和互连延迟。SDF也包含仿真时序以外的其他信息,但是这些信息与Verilog仿真无关。在SDF中的时序值,经常来自ASIC延迟计算工具,它利用了连接性、技术和布局的几何信息。

Verilog逆向注解是一个过程,来自SDF的时序值用于更新指定路径延迟、指定参数值、时序约束值和互连延迟。

1.4.1 SDF注解器

SDF注解器是指可以将SDF数据逆向注解到Verilog仿真器的任何工具。当遇到不能注解的数据时,将报告警告信息。

一个SDF文件可以包含很多结构,它与指定路径延迟、指定参数值、时序检查约束值,或互连延迟无关,如SDF文件TIMINGENV内的任何结构。忽略所有与Verilog时序无关的结构,并且不会给出任何警告。

在逆向注解的过程中,对于没有在SDF文件中提供的任何Verilog时序值,在逆向注解的过程中均不会修改,且不会改变预逆向注解的值。

1.4.2 映射SDF结构到Verilog

SDF时序值显示在CELL声明中,该声明可以包含一个或多个DELAY、TIMINGCHECK和LABEL部分。DELAY部分包含用于指定路径和互连延迟的传播延迟值。TIMINGCHECK部分包含时序检查约束值。LABEL部分包含指定参数的新值。通过将SDF构造与相应的Verilog声明相匹配,然后将现有的Verilog时序值替换为SDF文件中的时序值,可以对Verilog进行逆向注释。

【例1.49】 SDF文件的代码片段,如代码清单1-23所示。

代码清单1-23 SDF文件中的代码片段

1.映射SDF延迟结构到Verilog声明

当注解不是互联延迟的DELAY结构时,SDF注解器查找名字和条件匹配的指定路径。当注解TIMINGCHECK结构时,SDF注解器查找名字和条件匹配的相同类型的时序检查。表1.7给出了通过DELAY中每个SDF结构注解Verilog结构。

表1.7 通过DELAY中每个SDF结构注解Verilog结构

【例1.50】 在下面的例子中,SDF的源信号sel匹配Verilog中的源信号,并且SDF的目的信号zout也匹配Verilog中的目的信号。因此,将上升/下降时间1.3和1.7注解到指定路径。

SDF文件:

Verilog指定路径:

在两个端口之间,一个有条件的IOPATH延迟只能注解到Verilog HDL具有相同条件和相同端口的指定路径。

【例1.51】 在该例子中,上升/下降时间1.3和1.7只注解到第二条指定路径。

在两个端口之间,一个无条件IOPATH延迟将注解到具有两个相同端口的Verilog指定路径。

【例1.52】 在该例子中,上升/下降时间1.3和1.7将注解到所有的指定路径。

2.映射SDF时序检查结构到Verilog

表1.8给出了通过每个类型的SDF时序检查注解Verilog的每个时序检查。v1是时序检查的第一个值,v2是第二个值,而x表示没有值注解。

表1.8 映射SDF时序检查结构到Verilog

注: 带有上标a的SDF时序检查条目不是当前SDF标准的一部分。

时序检查的参考信号和数据信号可以有关联的条件表达式和边沿。一个SDF时序检查中,它的任何信号如果没有条件或者边沿,则将匹配所有对应的Verilog时序检查,而不考虑是否出现条件。

【例1.53】 在该例子中,SDF时序将注解到所有Verilog时序检查。

在一个SDF时序检查中,当条件和/或边沿与信号有关联时,在注解之前,它们将在任何Verilog时序检查中匹配它们。

【例1.54】 在该例子中,SDF时序检查将注解到第一个Verilog时序检查,而不是第二个时序检查。

【例1.55】 在该例子中,SDF时序检查将不会注解到任何的Verilog时序检查中。

3.SDF注解指定参数

SDF中的LABEL结构注解到指定参数。

【例1.56】 SDF注解指定参数的例子1,如代码清单1-24所示。

代码清单1-24 SDF注解Verilog HDL的参数

在该例子中,SDF LABEL结构注解到Verilog模块的指定参数。当一个时钟跳变时,在过程延迟中使用指定参数进行控制。SDF LABEL结构注解dhigh和dlow的值,用于设置时钟的周期和占空。

【例1.57】 SDF注解指定参数的例子2,如代码清单1-25所示。

代码清单1-25 SDF注解Verilog HDL的参数

在该例子中,在一个指定路径表达式内使用了指定参数。SDF LABEL结构用于改变指定参数的值,并对表达式重新评估。

4.SDF注解SDF互连延迟

SDF互连延迟注解与上面所述其他结构的注解的不同之处在于,不存在要注解的相应的Verilog声明。在Verilog仿真中,互联延迟是一个抽象的对象,用于表示从output或inout端口到input或inout端口的传播延迟。INTERCONNECT结构包含源、负载和延迟值,而PORT和NETDELAY结构只包含负载和延迟值。互联延迟只能在两个端口之间进行注解,不能用于原语引脚之间。表1.9给出了在DELAY部分注解SDF互联结构的方法。

表1.9 SDF注解互联延迟

注: 表中带a的SDF结构条目只在OVI SDF版本1.0、2.0和2.1和IEEE SDF版本4.0中有。

互联延迟可以被注解到单个源或者多个源网络。

当注解一个PORT结构时,SDF注解器将搜索端口。如果存在,将给该端口注解一个互联延迟,表示从网络上所有源到该端口的延迟。

当注解一个NETDELAY结构时,SDF注解器将查看是注解到端口还是网络。如果是注解到端口,则SDF注解器将互联延迟注解到该端口;如果是注解到一个网络,则将一个互联延迟注解到连接该网络的所有负载端口。如果端口或网络有多个源,则延迟将表示来源于所有源的延迟。只能将NETDELAY延迟注解到input或inout端口,也可以是网络。

在网络有多个源的情况下,使用INTERCONNECT结构在每个源和负载对之间注解唯一的延迟。当注解这个结构时,SDF注解器将找到源端口和负载端口。如果都存在,则将在两者之间注解一个互联延迟。如果没有找到源端口或源端口和负载端口没有真正地在相同的网络上时,则给出警告信息。但是,一定要注解连接到负载端口的延迟。如果一个端口是多源网络的一部分,则将延迟视作来自所有源端口,它和注解PORT延迟行为相同。源端口应该是output或inout端口,而负载端口应该是input或inout端口。

互联延迟共享指定路径延迟的许多特性。用于填充缺失延迟和脉冲限制的指定路径延迟规则同样也可以应用到互联延迟。互联延迟有12个跳变延迟,其中的每个跳变延迟都有唯一的拒绝和错误脉冲限制。

在一个Verilog模块中,当在任何地方引用一个注解端口时,不管是在$monitor和$display描述中,还是在一个表达式中,都应该提供延迟信号的值。到源的引用将产生一个没有延迟的信号值。而对负载的引用将产生延迟信号值。通常在负载前引用层次的信号值将产生没有延迟的信号值。当在一个负载引用一个信号或在负载后引用层次化的信号时将生成延迟信号值。根据注解的方向,注解一个层次化端口将影响高层或低层所有连接的端口。将来自一个源端口的注解理解为来自层次上高于或低于该源端口的所有源。

正确处理向上的层次注解。当在层次结构中负载高于源时,将出现这个情况,即到所有端口的延迟(这些端口在层次上高于负载或其连接到在层次上高于负载的网络)与到那个负载的延迟相同。

正确处理向下的层次注解。当源在层次中高于负载时,将出现这个情况,即到负载的延迟理解为来自等于或高于源的所有端口或者连接到在层次上高于源的网络。

允许层次上的重叠注解。当注解到不同层次或来自不同层次的相同端口时,没有对应到相同分层子集的端口。在下面的例子中,第一个INTERCONNECT语句注解到网络的所有端口(在i53/selmode中或层次内),而第二注解注解到端口的更小子集(只有在i53/u21/in中或层次内):

重叠注解可以以多种不同的方式发生,特别是多源/多负载网络,以及SDF注解应正确解决所有的互相影响。

1.4.3 多个注解

SDF注解是一个按顺序处理的过程。按照发生的顺序注解SDF文件内的结构。换句话说,注解后面的结构可以修改SDF结构的注解,即修改(INCREMENT)或覆盖(ABSOLUTE)它。

【例1.58】 该例子首先将脉冲限制注解到一个IOPATH,然后注解整个IOPATH,从而覆盖刚刚注解的脉冲限制。

【例1.59】 该例子通过使用空的括号来保持脉冲限制当前的值,而避免覆盖脉冲限制,即

【例1.60】 在该例子中,将上面的注解简化成类似下面的单个描述。

一个PORT注解后面跟着一个到相同负载的INTERCONNECT注解,将只影响来自INTERCONNECT源的延迟。

【例1.61】 该例子中,对于带有3个源和1个负载的网络,延迟来自所有的源(除了i13/out),保持为6。

一个INTERCONNECT注解后面跟着一个PORT注解,将覆盖INTERCONNECT注解。

【例1.62】 在该例子中,将来自所有源到负载的延迟将变成6。

1.4.4 多个SDF文件

可以对多个SDF文件进行注解。对$sdf_annotate任务的每个调用,将用来自SDF文件的时序信息注解设计。注解的值将要修改(INCREMENT)或者覆盖(ABSOLUTE)早前SDF文件的值。通过将指定区域的层次范围作为$sdf_annotate的第二个参数,不同的SDF文件就可以注解一个设计的不同区域。

1.4.5 脉冲限制注解

对于延迟(不是时序约束)的SDF注解,通过使用用于拒绝和错误限制的百分比设置来计算用于脉冲限制注解的默认值。默认限制是100%,可以通过调用选项修改这些值,如假设调用选项将拒绝限制设置为40%、错误限制设置为80%。

【例1.63】 在该例子中,SDF结构将延迟注解为5、拒绝限制注解为2、错误限制注解为4。

【例1.64】 在该例子中,假定指定指定路径的延迟初始为0,下面的注解将导致延迟为5,脉冲限制为0。

在INCREMENT模式下的注解,可能导致脉冲限制小于0。在这种情况下,将它们调整到0。

【例1.65】 在该例子中,如果指定路径的脉冲限制都是3,下面的注解将导致对所有的脉冲限制值为0。

这里有两个SDF结构(PATHPULSE和PATHPULSEPERCENT)只注解到脉冲限制,并不影响延迟。当PATHPULSE设置脉冲限制的值大于延迟时,Verilog将给出相同的行为,就像脉冲限制等于延迟。

1.4.6 SDF到Verilog延迟值映射

对于最多12个状态跳变,Verilog指定路径和互连有唯一的延迟。所有其他结构,如门原语和连续分配,只有3个状态跳变。

对于Verilog指定的路径和互连延迟,SDF提供的跳变延迟值的个数可能小于12个。如表1.10所示,将少于12个SDF延迟扩展到12个延迟,表中左侧给出了Verilog跳变类型,表的上方给出了SDF延迟的数量。SDF的值为v1~v12。

表1.10 SDF到Verilog延迟值的映射 cJpjCzxcUCUCtHSWDKpUprUCaAC7Ol3puiubFt5A/DTWQgvTSDLHS0IhIbL++CfL

点击中间区域
呼出菜单
上一章
目录
下一章
×