原文链接:https://www.icode9.com/content-4-1217974.html
vcs 的initreg功能是为了给verilog的Variables, Registers,Memories一个初始值,以免不定态的变量值在dut内部传播,导致dut出现挂死。
setenv VCS_PRINT_INITREG_INITIALIZATION 1
设置这个环境变量后,vcs会把0时刻顶层目录下的所有信号的初始值打印到仿真目录下的一个文件里面。
用法分为两步:编译选项为
+vcs+initreg+random
仿真选项为
+vcs+initreg+0 //intialize to value 0
+vcs+initreg+1 //initialize to value 1+vcs+initreg+x
//intialize to value x
+vcs+initreg+z //initialize to value z+vcs+initreg+random //initialize to value 0 or 1 with default random seed
注意该配置会导致env中的变量也会被赋处置,比如task中定义了一个int 变量。
+vcs+initreg+seed
//initialize to value 0 or 1 with user-defined seed
+vcs+initreg+config+initfile
//follow below text
initfile内部的语法规则:
tree tb.dut.inst 0 0
第一个0代表层次关系,0代表当前level以及下面的所有level; 1当前level;2当前level以及下一级level
第二个0代表初始值为0;可以是0|1|x|z|random|random 种子号