story · 2020年08月19日

使用$test$plusargs优化设计仿真速度

来自微信公众号 “数字芯片实验室”

测试平台在早期通常需要具有调试功能,例如使用系统任务$monitor或$display打印指定的文本,以及在仿真过程中记录波形信息。

这些波形信息可以是$dumpvars系统任务指定写入的VCD文件,也可以是$vcdpluson系统任务指定写入的VPD文件。

仿真器的这些调试功能大大降低了仿真性能,特别是将文本信息直接打印到显示器上。因此,在设计周期的哪个阶段启用仿真器的这些调试功能是一个需要考虑的问题。

在testbench中使用编译指令‘ifdef, ‘else和‘endif 可以满足我们的一些需求。此时,我们需要在VCS编译时使用+define编译选项。

initial begin

`ifdef postprocess

$vcdpluson(0,design);

`endif

end
vcs testbench.v design.v +define+postprocess

系统函数$vcdpluson(0,design)将设计中的波形信息记录在vpd文件中,这大大降低了仿真性能。

实际项目中,我们只在设计仿真初期需要这个波形信息,因为在仿真初期验证平台的debug能力比仿真速度更重要。

在仿真周期的后期,进行回归测试(regression)就可以不添加该编译选项以提高仿真性能。

另外这种编译指令方式在我们添加或者改变这些系统函数时需要重新编译,这增加了设计的仿真周期。

为此,VCS等仿真器提供了仿真选项支持$test$plusargs 代替‘ifdef编译选项

initial if ($test$plusargs("postprocess")) begin

$vcdpluson(0,design_1);

end

使用仿真选项支持$test$plusargs之后,就不需要对设计和测试平台重新编译,也不需要编译选项+define。取而代之的是在仿真时,增加仿真选项

simv +postprocess

需要注意的是工具会识别任何以该仿真选项为前缀的字符串。

module top; 

initial begin 

     if ( $test$plusargs("a") ) 

          $display("\n<<< Now a >>>\n"); 

     else if ( $test$plusargs("ab") ) 

          $display("\n<<< Now ab >>>\n"); 

     else if ( $test$plusargs("abc") ) 

          $display("\n<<< Now abc >>>\n"); 

     end

endmodule

使用仿真选项+a, +ab,或者+abc,都会输出<<>>。



所以我们应该将长的仿真选项放在最前面,如下所示

module top;

initial begin

    if ( $test$plusargs("abc") )

        $display("\n<<< Now abc >>>\n");

    else if ( $test$plusargs("ab") )

        $display("\n<<< Now ab >>>\n");

    else if ( $test$plusargs("a") )

        display("\n<<< Now a >>>\n");

    end

end

module

使用仿真选项可以避免仿真前期重复的编译,但是也会增加一次编译时间。

我们可以综合上面两种方法,根据实际需求,同时使用编译和仿真选项。

`ifdef comppostprocess
initial
    if($test$plusargs("runpostprocess")) begin
        $vcdpluson(0,design_1);
    end
`endif

类似地,可以使用$value$plusargs在仿真时传入值,避免重复编译。

本文转载自公众号:芯片数字实验室
原文链接:https://mp.weixin.qq.com/s/PL\_DBXTswVM2D7brcf4RjA
未经作者同意,请勿转载!

推荐阅读

想了解更多内容,欢迎关注芯片数字实验室专栏
推荐阅读
关注数
12315
内容数
220
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息