$test$plusargs(),$value$plusargs()使用注意,学习笔记

$test$plusargs(),$value$plusargs()使用注意,学习笔记

在项目开发中,遇到了一个问题,我们的共用文件中有一个parameter类型的变量,用来定义时钟周期,由于这个文件是通用的时序信号生成文件,所以不建议直接在这里修改这个变量的值。

最直接的办法是,通过宏来定义这个parameter的值,在运行我自己的test的时候,有我自己的宏来控制这个值。

我在想有没有什么办法能够不修改这个文件,而通过编译时在编译指令里加一些东西来修改这个值,一番讨论后,虽然没有找到合适的方法,不过我学习了一下$test$plusargs(),$value$plusargs()这两个Verilog的系统函数。

关于这两个函数,网上的资料还是蛮多的,这两个函数的用法也比较简单,但是有一个细节需要我们注意,如下代码:

if( $test$plusargs ( “JOB”) )

$display(“JOB”);

if( $test$plusargs ( “JOB1”) )

$display(“JOB1”);

if( $test$plusargs ( “JOB11”) )

$display(“JOB11”);

if( $test$plusargs ( “JOB111”) )

$display(“JOB111”);

那么我们在编译时,如果通过terminal传入+JOB11,会打印出什么?

理想上,打印出的应该是JOB11,

但是事实是,打印出来的是

JOB

JOB1

JOB11

这样我们能够了解,$test$plusargs()的匹配机制不是完全字符匹配,而是根据括号内的内容 ,在编译指令里寻找,只要有匹配到即可,所以我们在使用的时候,要尽量避免这种情况出现。

推荐看这两篇文章

https://baijiahao.baidu.com/s?id=1665681948769998524&wfr=spider&for=pc

https://www.cnblogs.com/nanoty/p/4355245.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值