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