首页 > 其他分享 >后端基础——vcs后仿delay

后端基础——vcs后仿delay

时间:2023-03-20 13:13:22浏览次数:49  
标签:cell INTERCONNECT delay sdf vcs 后仿 DEVICE IOPATH

贴上参考文章, 写的很好:negative timing check和negative delay - 知乎 (zhihu.com),如有需要可以参考原文

一,vcs后仿两个关键的option

在做vcs后仿时,有两个参数:+neg_tchk-negdelay

+neg_tchk针对的是timing check task,即$setuphold / $recrem / $nochange 这三种task,如果这些timing check task中的timing limit有负值,就需要加上这个option,否则vcs会把负的timing limit当作0来处理。这个参数不会影响$setup / $hold / $removal / $recovery / $skew / $width / $period这些类型的timing check task,因为后面这几种timing check task的timing limit不允许是负值。

-negdelay针对的是延时的计算,即cell内部(IOPATH)或者cell to cell间(INTERCONNECT)的延时,如果不使用这个option,vcs同样会把负的delay值当作0来处理。

IOPATH / INTERCONNECT / PORT / DEVICE delay,都是些什么呢?可以在sdf的specification中找到对应的解释。

二,sdf中4种delay

1,IOPATH

cell内的input to output的delay

 

 以上图sdf中的一段为例:

IOPATH是关键字,无须多说;posedge i1是这条IOPATH的start point,o1是end point;后面的(2:3:4)和(4:5:6),分别指的是o1在rise和fall时的delay。

被两个冒号所间隔开的3个值,分别对应着MIN : TYPICAL : MAX,在反标sdf时(比如test bench中使用的$sdf_annotate语句)会指定其中一种。

比如说,如果在$sdf_annotate中指定了MIN,那么,posedge i1如果导致了o1从0跳变为1,则delay值为(2:3:4)中的2,如果posedge i1导致了o1从1跳变为0,则delay值为(4:5:6)中的4。

“posedge i1”这两个单词是一个整体,如果发生了i1从1至0/x/z的跳变(即negedge i1),则不会走这一条。MIN的值并非一定小于MAX,是有可能大于MAX的,比如,可能会出现(4:3:2)这样的情况,它也是合法的。

2,INTERCONNECT

一般用于描述前一个cell的output至下一个cell的input的delay,可以理解作为cell与cell间的连线的delay。

 

 例子中的每条INTERCONNECT后面只有一个延时值,这意味着end point不再区别rise delay和fall delay,不管是rise还是fall,都采用这个delay值。

3,PORT

也是一种连线的delay,和INTERCONNECT有点像。不同的地方在于,INTERCONNECT会有一个start point(前一个cell的output)和一个end point(后一个cell的input),但PORT类型只有end point(后一个cell的input),没有start point(前一个cell的output)。

4,DEVICE

和IOPATH有点相似,一般用于描述cell内的延时。但IOPATH需要指定input和output,而DEVICE只需要指定output(这一点又有点像PORT,但PORT面向的是cell的input,PORT是cell外的delay)。

使用DEVICE时,任意input至这个output的delay,都被此DEVICE语句决定。

 

ps:在一个sdf文件内,会见到大量的INTERCONNECT和IOPATH语句,而DEVICE和PORT似乎比较少见,有些sdf中则完全看不到后2种。

三,再看delay option

对于-negdelay,在vcs user guide中能看到它还有一些额外的说明:

To consider a negative INTERCONNECT delay, one of the following should be true:
- Sum of INTERCONNECT and PORT delays should be greater than zero
- Sum of INTERCONNECT and IOPATH delays should be greater than zero
- Sum of INTERCONNECT and DEVICE delays should be greater than zero
Otherwise, the negative INTERCONNECT delay is ignored, and a warning message is generated for the same.
Similarly, to consider a negative IOPATH delay, the sum of IOPATH and DEVICE delays should be greater than zero. Otherwise, the negative IOPATH delay is ignored, and a warning message is generated for the same.

如果不满足以上条件,sdf反标将报出warning信息

在实际的vcs后仿真中,遇见了以下问题:

 

 

Warning-[SDFCOM_UHICD] Up-hierarchy Interconnect Delay ignored

这是在top hierarchy中使用了INTERCONNECT语句来定义某个sub hierarchy cell’s output至top hierarchy的output所导致的。工具认为这里需要的是DEVICE,而不需要INTERCONNECT,拿掉这条INTERCONNECT后,就不会再有这种warning了。

在阅读网络上论坛等相似问题,很多人的答案是这个warnning并不碍事。我分析此处是sdf中重复定义了部分端口的延时,INTERCONNECT语句定义到下层模块的延时被下层模块再次定义,因此忽略了该语句的定义,而DEVICE Delay被采用,从效果上来说影响不大。

 

标签:cell,INTERCONNECT,delay,sdf,vcs,后仿,DEVICE,IOPATH
From: https://www.cnblogs.com/hwzhao/p/17235916.html

相关文章

  • 07-逻辑仿真工具VCS-Post processing with VCD+ files
    逻辑仿真工具-VCS编译完成不会产生波形,仿真完成之后,生成波形文件,通过dve产看波形vcd是波形文件的格式,但是所占的内存比较大,后面出现了vpd(VCD+)波形文件将一些系......
  • 06-逻辑仿真工具VCS-Debug
    逻辑仿真工具VCSverdi只进行debug进行使用,不进行编译,只进行产生波形之后的debug仿真速度和代码质量有关系,选项也会影响仿真速度,行为级>RTL>门级信号的可见性和......
  • 05-逻辑仿真工具VCS-详解01
    VerilogSimulationEventQueue主要了解VCS是如何处理交给它的代码的Verilog的仿真事件队列,介绍VCS如何处理交给它的代码。VCS是Synopsys公司的,支持多种语言。1.Verilo......
  • Reset [email protected] and root password VCSA
    Resetadministrator@vsphere.localandrootpasswordVCSA7OCTOBER2019KABIRIfyoufindyourselfinasituationwherenobodyknowswhattheadministratorpa......
  • linux解压时报错: gzip: stdin: not in gzip format tar: Child returned status 1 tar
    gzip:stdin:notingzipformattar:Childreturnedstatus1tar:Errorisnotrecoverable:exitingnow方法一报错:压缩的时候用czvf参数,解压的时候用xzvf参解......
  • Java DelayQueue包装类
    publicclassDelayQueueWrapper<T>{privateTimeUnittimeUnit;privatefinalLongcapacity;privatelongcurrentSize;privateDelayQueue<......
  • C#异步延迟Task.Delay()的使用
    一、要在异步方法中需要延迟代码继续往下执行可以使用awaitTask.Delay(),效果类似Thread.Sleep()。两者之间的不同是1、await Task.Delay实质创建一个运行给定时间的任......
  • 02-逻辑仿真工具VCS使用
    逻辑仿真工具VCS使用1Makefile执行VCS仿真#Makefileforsimulatingthefull_adder.vwiththesimulatorVCS#------------------------------------------------......
  • 01-逻辑仿真工具VCS使用
    1逻辑仿真工具VCS的使用在书写完成RTL代码之后,确保自己书写的代码和自己想要的逻辑是一致的。VCS是synopsys公司下的的仿真工具。1VCS仿真过程编译-->仿真-->debug/......
  • vcs仿真vivado独立IP和的方法
    转载:VCS独立仿真VivadoIP核的一些方法总结-知乎(zhihu.com)最近,需要使用VCS仿真一个高速并串转换的Demo,其中需要用到Vivado的SelectIOIP核以及IDELAYCTRL,IDELAY2原语......