NCSIM、VCS和QuestaSim后仿真如何屏蔽冗余的违例信息呢?

在进行数字电路后仿真时,经常会遇到很多时序为例,通常这些违例都是由网表中大量的时序检查报出的。这些常见的时序检查系统任务如下表所示:
时序检查系统任务 说明
$setuphold 检查建立时间和保持时间,当setup违例时,出现此信息
$setuphold 检查建立时间和保持时间,当hold违例时,出现此信息
$setup 检查建立时间
$hold 检查保持时间
$recovery 检查恢复时间(以复位信号为例,可以理解为rst必须在时钟沿之前的有效的最小时间),一般用于复位、置位等
$removal 检查撤销时间(以复位信号为例,可以理解为rst必须在时钟沿之后的有效的最小时间),一般用于复位、置位等
$recrem 检查恢复和撤销时间,一般常用于复位、置位等
$period 检查周期信号的最小周期,一般常用于时钟
$skew 检查两个信号之间的最大时间差
$width 检查脉冲的最小宽度
因为在仿真的过程中,有些报出的违例我们是不关心的,这些信息的大量出现可能会淹没我们真正需要观测的信息,为此需要在仿真时讲这些冗余的信息屏蔽掉。
针对大家经常使用的ncsim、vcs和modelsim(questasim),下文将说明如何在这两种eda工具中屏蔽冗余的违例信息。
1 ncsim
屏蔽使用的命令格式:
% irun -tfile myfile.tfile [other_options] source_files
上述命令中myfile.tfile中包含屏蔽信息,其中主要内容如下表:
参数 说明
-iopath
+iopath 不使能路径延迟
使能路径延迟
-prim
+prim 不使能指定的instance中原语的延迟
使能指定的instance中原语的延迟
-port
+port 删除指定的instance的port延迟
使能指定的instance的port延迟
[systemtimingtask] -tcheck
[systemtimingtask] +tcheck 屏蔽掉不关心的违例
【示例】*.tfile中内容格式
path top.foo -tcheck                // 屏蔽所有关于foo的时序检查
path top.foo $setup $hold -tcheck     // 屏蔽所有关于foo的setup和hold时序检查
path :soc.lcsoc.syn_reg $setup -tcheck // 屏蔽:soc.lcsoc.syn_reg的setup检查
注意:如果要屏蔽其他检查,只需将示例中的$setup或者$hold换成systemtimingtask中的任何一个即可。
2 vcs
命令格式如下:
tcheck [-disable | -enable] [-r]
tcheck -query instance | port
上述命令使用时需要注意以下几点:
1>在simv的option中,即 % ./simv -ucli run.tcl,其中run.tcl中增加需要屏蔽的信号,将tcheck中的内容增加的run.tcl中;
2>该命令仅对verilog/systemverilog使用;
3>该命令使用时,待检测的源代码必须包括时序检查系统任务,否则将会产生warning信息;
上述命令格式中使用的相关参数的说明如下表所示。
参数 说明
instance | port 要被屏蔽的时序检查的实例或者端口的全路径名称
tcheck_type 指定需要进行屏蔽的时序检查类型:hold|setup|setuphold|width|recovery|removal|recrem|period|skew|all
-disable | -enable 使能或不使能相关时序检查,如果要求屏蔽其中setup,则在tcheck_type指定setup后,需要在tcheck中使用-disable
-msg | -xgen a. 指定的实例或者端口违例信息是否被显示
b. 指定的实例或者端口notifier信息是否被显示
-r 指定是否递归式的对所有指定的instance及其以下层次所有的instance进行时序检查
【示例】(可以通过-ucli do.tcl直接添加到simv中)
tcheck {top_tb.c40010001} width -msg -disable
#对top_tb.c40010001不进行width时序检查,即屏蔽掉top_tb.c40010001的width检查
tcheck {top_tb.c40010001} -query
#显示对top_tb.c40010001的时序检查信息
3 modelsim(questasim)
命令格式如下:
tcheck_set [-quiet] [{-m | -n}] [-r [-v]] [ | ]
上述命令格式中使用的相关参数的说明如下表所示。
参数 说明
实例(模块或者线网)的全路径名称,该项是必须的
-m | -n 指定屏蔽操作的对象是模块还是线网,该项可选。
-m:此时命令中指定的instance是module(verilog)或者entity(vhdl),此时的屏蔽操作将作用于指定的模块的所有实例
-n:此时命令中指定的instance指向一个线网,tcheck_set将应用于所有连接该线网的实例
-quiet 用于指定配置信息不显示于transcript窗口,该参数的指定必须先于,该项可选
-r [-v] 指定是否递归式的对所有指定的instance及其以下层次所有的instance进行时序检查,默认情况下,递归过程中被改变的instance的信息不会输出到transcript,可以用-v将这些信息输出至transcript中,该项可选
tcheck_type 指定需要进行屏蔽的时序检查类型:hold|setup|setuphold|width|recovery|removal|recrem|period|skew|all
使能或者禁止是否将指定的时序检查违例信息和不定态产生的信息报出,该项可设置的值为“on”和“off”,该项可选
控制指定时序检查的违例信息和不定态信息,其中必须先于,其中可设置的值为“on”和“off”,该项可选
【示例】
tcheck_set top_tb.u1.u2 “(width (negedge clk))” off
#示例中,top_tb.u1.u2下的(width (negedge clk))检查产生的所有信息都将被屏蔽掉。如果对于示例中时序检查表达式的写法不了解,可以使用“tcheck_status top_tb.u1.u2”来查看top_tb.u1.u2下所有的时序检查表达式,具体应用如下所示:
% tcheck_status top_tb.u1.u2
% #0 (width (negedge clk)) msgon xon
% #1 (width (posedge clk)) msgon xon
% #2 (setup (negedge d)(posedge clk)) msgon xoff
% #3 (hold (posedge clk)(negedge d)) msgon xoff
最后在使用上述eda工具时,因为不同的工具提供的路径不同,在具体使用时,一定要使用对应的工具获得该工具可识别的路径信息。


便携式叶面积仪是什么,它的应用优势是什么
数字中国,开鸿见日
可控硅的作用介绍及检测方法
iPad Pro用OLED成本将近2000元
GPRS通信应用在气象站中有哪些优势
NCSIM、VCS和QuestaSim后仿真如何屏蔽冗余的违例信息呢?
未来我们将看到更多智能、更高效的家庭自动化设备
Google在人工智能和计算机领域的最新进展
照明创新技术将会持续融入新型智慧城市建设中
3D打印抛光神器Polysher:令打印件表面光滑如镜
Waymo被认为是最有可能率先让自动驾驶成为现实的那一家
芯片缺乏现在买车合适吗
混改后的中国联通营收和利润都取得不错成绩,却仍然没有实现突破的愿望
家电三巨头全面布局物联网,共建企业新格局
安捷伦科技推出业内最小集成色彩传感器
凤凰端子成工业一体机标准接口,它有哪些应用特征
IIoT时代,工业自动化市场呈现哪些变化?
温度变送器与plc接线
磷酸铁锂产业投资热中冷思考
苹果宣布召回香港、新加坡和英国市场的电源适配器,或致用户触电