Verilog之“$test$plusargs和$value$plusargs用法小结“

Abstract

t e s t test testplusargs和 v a l u e value valueplusargs作为进行Verilog和SystemVerilog仿真运行时调用的系统函数,可以在仿真命令中直接通过进行赋值的方式将参数传递进入到设计中,并且不局限于不同仿真器对于参数在仿真命令中定义格式不同的限制,也避免了调换参数带来的频繁编译等问题。使用这两条函数对于搭建测试平台有一定的便利,同时对于理解Factory中用例是如何传递进ProxyClass有一定的帮助。

本文将对 t e s t test testplusargs和 v a l u e value valueplusargs使用过程中遇到的问题进行小结。

Introduction

首先,在进行宏定义时,我们经常使用`ifdef等命令在代码中,参看下例:

在这里插入图片描述

如果要能够成功调用$dump等函数,需要在编译(compile)时指定`define的宏定义,其使用方法如下:

-define dumpon test.v

但是,在仿真过程中不需要该部分定义时该如何处理呢?

当需要改变编译条件时,经常需要重新编译。并且一旦编译通过,在编译阶段指定的宏定义在整个仿真运行过程中一直有效,因此,如果需要修改宏定义,则需要重新进行编译,从而降低了仿真的效率。

为此,可以使用 t e s t test testplusargs和 v a l u e value valueplusargs进行解决,该函数的调用发生在仿真运行(run)阶段。这样仅需要对设计进行一次编译即可,如果需要改变相应的条件,可以在run的时候动态指定,这样有利于脚本处理进行回归的验证,同时也有利于object的动态construct。

1、 t e s t test testplusargs

在运行(run)仿真时指定要选择的条件,即只需要在仿真运行命令(run-options)中指定参数需要选择的条件即可,例如下例中,如果要将test01.dat、test02.dat、test03.dat分别load到各自的men中,仅需要如下命令在运行命令中加入“<+test01+test02+test03>”即可,当仿真运行时, t e s t test testplusargs会在命令行中搜索指定的字符,若找到相应字符,在函数返回“1”,否则返回“0”。如果下次仿真时不需要test01时,仅需要将test01从运行命令中删除即可。

在这里插入图片描述

+test01+test02+test03…

2、 v a l u e value valueplusargs

v a l u e value valueplusargs可以讲运行命令(run-options)中的参数值传递给指定的信号或者字符,其语法格式如下:

Integer= v a l u e value valueplusargs(“string”,signalname);

其中string=”plusarg_format”+”format_string”,”plusarg_format”指定了用户定义的要进行传递的值,”format_string”指定了要传递的值的格式(类似$display中定义的%s、%h、etc.),并且string中”plusarg_format”和”format_string”格式应该为”plusarg_format”(=/+)”format_string”。如果转换后的位宽和传递的值不一致,则按照如下规则转换:
在这里插入图片描述

v a l u e value valueplusargs使用示例如下:
在这里插入图片描述

若使用的运行命令如下:

+FINISH=10000+TESTNAME=this_test+FREQ=5.6666

则上例的运行结果为:

stop_clk : 10000

testname:this_test

frequency:5.6666(如果run-options中没有增加“FREQ=5.6666”,那么frequency为8.333333)。

3、 Conclusion

在实际使用 t e s t test testplusargs和 v a l u e value valueplusargs时,需要在编写代码初期考虑好使用的范围,否则,实际仿真时未必可以对仿真带来便捷。

本期分享就到这里,更多IC设计知识请关注叩持电子知乎!

希望可以帮助到你。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值