verilog仿真——$test$plusargs 和 $value$plusargs
VERILOG的參數(shù)可以用define和parameter的方式定義,這種方法要求我們?cè)诰幾g前將變量必須定義好,編譯完成之后再也不能修改;
然而,有時(shí)候我們?cè)谶M(jìn)行仿真時(shí),需要從外部傳遞參數(shù),這個(gè)要求怎么滿足呢?
我們來(lái)看下 $test$plusargs和$value$plusargs的功能,首先來(lái)看一個(gè)簡(jiǎn)單的例子:
`timescale 1ns/1psmodule tb;reg[255:0] testname;initial begin$display("**********************RESULT IS BELOW*********************");if($test$plusargs("TAISHAN"))$display("****************TAISHAN is selected******************");else$display("**********************$test$plusargs FAIL**************");if ($value$plusargs("TESTNAME=%s", testname[255:0]))??$display("*****************Running test %0s.********************", testname);?else$display("**********************$value$plusargs FAIL**************");$finish;endendmodule以synopsis的VCS工具為例,正常編譯后,
在仿真時(shí),不同命令的結(jié)果如下:
命令:simv? 輸出: **********************$test$plusargs FAIL*************** **********************$value$plusargs FAIL**************命令:simv +TAISHAN 輸出: ****************TAISHAN is selected****************** **********************$value$plusargs FAIL**************命令:simv +TAISHAN +TESTNAME=HUASHAN 輸出: ****************TAISHAN is selected****************** *****************Running test HUASHAN.********************跑完以上例子,對(duì)$test$plusargs和$value$plusargs已經(jīng)有一個(gè)初步的了解。
注意,simv有一個(gè)bug,假如一段程序中有如下代碼:
if($test$plusargs("TAISHAN")) begin。。。end
if($test$plusargs("TAISHANHAO")) begin。。。end
在仿真時(shí),若采用命令
simv +TAISHANHAO
TAISHANHAO也會(huì)觸發(fā)分支if($test$plusargs("TAISHAN")) begin。。。end
因此,建議大家在命名時(shí)前綴盡量不要一致。
總結(jié)
以上是生活随笔為你收集整理的verilog仿真——$test$plusargs 和 $value$plusargs的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 时钟切换处理(Verilog)
- 下一篇: linux内核移植imx8,NXP iM