最近在項目中,發現驗證環境中的頂層的program(通常將program做爲驗證環境的入口),都是automatic的。it
其實Program默認是static的,那麼爲何須要把驗證環境作成automatic呢?編譯
緣由以下:test
若是不加automatic,則program中的變量是static,也就是靜態的。變量的存儲在一個固定的空間。變量
若是使用automatic,則變量是動態分配空間的,這樣能夠避免對同一個變量操做,形成後面的覆蓋前面的狀況。語法
代碼示例以下:方法
program automatic soc_ver_program();項目
`include "./regs_def.svi"static
`include "./driver_inc.sv"vi
`include "./soc_testcase_inc.sv"cas
initial begin
run_test(); //注意這裏的run_test後面不要加參數,這樣不須要對不一樣用例從新編譯,符合UVM方法學相關語法。
end
endprogram
注意:此program裏面,調用了run_test(),run_test->create tc -> create env。大體的順序是這樣的。