常用的时序反标方法和EDA工具反标方法

电子说

1.3w人已加入

描述

前段时间,一个朋友聊叙到这个后仿真任务命令都咋用,随即整理了下,可以完成基本的后仿真不成问题,但是如果还要完成一些其他的幺蛾子,那就需要各位仔细研读各工具的UserGuide了。下文如果觉得有帮助,烦请“三连”,当然加鸡腿也是可以的。。。哈哈哈,开玩笑了,只要对需要的人有用即可。

后仿真时,需要使用sdf对网表记性反标,即对网表中的时序信息记性“替换”,本文将示例常用的时序反标方法和一些EDA工具反标方法。

1 采用SystemVerilog(Verilog)系统任务

SystemVerilog和Verilog中在过程块中使用系统任务$sdf_annotate实现sdf文件对于网表的反标,其使用格式如下:

$sdf_annotate(sdf_file,module_instance,config_file,log_file,mtm_spec,scale_factors,scale_type);

其中各参数的主要意义如下:

sdf_file:指定要使用的sdf文件;

module_instance:指定sdf文件要反标的设计层次,需要注意的是此时指定的是例化名而非模块名。同时该参数本身是可选择的,默认实例名为调用$sdf_annotate所在模块的实例名(注意顶层模块名与实例名相同,可参阅《【168】仿真时为什么顶层不例化》);

config_file:指定进行反标时一些详细的反标控制信息,该选项可选,一般不指定,详细看参考各EDA工具帮助手册;

log_file:指定保存反标过程中产生的log信息文件名,该选项可选,建议指定,以方便查阅反标过程中的信息;

mtm_spec:指定反标的时序类型,也是可选项,反标常用类型主要有下表几种。

关键字 说明
MAXMIN 反标时选用最大延迟值
MINIMUM 反标时选用最小延迟值
TOOL_CONTROL(默认) 默认值,由仿真工具指定
TYPICAL 反标时选用典型值

这里需要注意,该参数为字符串类型,所以在任务中指定表格中的参数时需要给对应的关键字加上双引号。

scale_factors:指定最大延迟、最小延迟和典型延迟值的缩放因子,该选项也是可选的,一般情况下也不指定。该参数可以实现对于反标值的缩放,默认值为1.01.0,当然也可以指定不同的值,实现延迟值的不同缩放比例,例如,scale_factors设置为“1.2:1.3:1.4”,此时sdf中指定的反标值为“24”,那么实际反标给网表的值为“1.2*21.4*4”,即此时的实际反标值为“2.45.6”;

scale_type:该参数也属于可选项,用于指定缩放因子具体作用的延迟值,指定该参数后,confg_file中指定的配置文件中的SCALE_TYPE将会被覆盖掉,该参数可以指定的关键字如下表所示。

关键字 说明
FROM_MAXMIN 缩放因子仅作用于最大延迟值
FROM_MINIMUM 缩放因子仅作用于最小延迟值
FROM_MTM(默认) 缩放因子作用于min/typ/max
FROM_TYPICAL 缩放因子仅作用于典型值

【示例】 

时序

其中第二个参数top_tb是要反标模块的例化名,一般从顶层开始写起。个人比较推荐使用该方法,因为该方法不依赖于具体的EDA工具,而下述的方法依赖于具体的EDA工具,也因此,这些依赖于具体工具的命令不能复用。

2 EDA工具反标

因为反标操作是发生在析构(elaboration)阶段完成的,所以可以在工具的析构阶段增加对应的参数实现反标操作。下面将针对Synopsys的VCSMX和Cadence的NCSIM进行示例说明。

2.1 VCSMX(Synopsys)

2.1.1命令行

在析构命令中增加如下参数选项,可以实现指定层次和sdf的反标,具体格式如下:

-sdf min|typ|maxfile_sdf

注意其中min、typ和max是可选的,根据需要指定。

【示例】 

时序

【反标信息】 

时序

2.1.2 预编译方式

上面在析构命令中直接指定反标层次和sdf文件的方式存在一个问题,那就是如果我们的设计代码进行了修改,但是sdf文件并没有修改,此时如果编译完后,在析构的时候还要再进行一次sdf文件的解析反标,将会比较耗费时间,为此,一般的EDA工具都提供了另外一种反标方式,即对sdf文件进行预编译,如果sdf文件并没有修改,仅设计文件进行修改,此时就可以采用sdf预编译方式,具体操作步骤如下示例。

【示例】

时序

【反标信息一】在系统任务$sdf_annotate中添加要使用的已经预编译的反标文件 

时序

【反标信息二】在析构命令中加入已经预编译的反标文件,大家可以仔细观察下两者差异。 

时序

另外,在VCSMX中,还可以指定sdf预编译生成文件的保存路径,指定方式如下:

时序

2.2 NCSIM

在NCSIM中使用较多的反标方式除了调用$sdf_annotate之外,就是采用命令文件的方式,其主要特点也是将sdf的编译与设计的编译分开,将sdf单独编译,在析构时再指定已经编译好的sdf文件,其具体操作如下示例。

【示例】

时序

反标信息同上,此处不再赘述。另外,如果使用nc的64模式进行仿真,那么在编译析构命令中加上“-64bit”即可。

当然上述EDA工具对应的各种命令还有很多对应的参数,想了解的朋友可以参考对应工具的UserGuide,示例中仅是一些基本设置项,大家可以根据需要记性调整。

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分