vcs 的initreg功能是为了给reg变量一个初始值,以免不定态的变量值在dut内部传播,导致dut出现挂死。
setenv VCS_PRINT_INITREG_INITIALIZATION 1
设置这个环境变量后,vcs会把0时刻顶层目录下的所有信号的初始值打印到仿真目录下的一个文件里面。
initreg用法分为两步:编译选项为
+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
+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
module dev 1
所有例化了dev的模块值都初始化为1
modtree dev 0 1
对dev及其下面所有的模块值初始化为1