在實際項目中,由於項目經歷了較多的版本更迭或者設計人員的技術水平限制,有些時候難免有使用到verilog的代碼和VHDL代碼共同存在一個項目中的情況,那這個時候我們要怎樣進行混合編譯仿真驗證呢?這里以使用vcs工具編譯verdi查看波形為例:
如果我們設計代碼是vhdl版本的,但是還想使用更高級的代碼verilog或者systemverilog作為它的頂層tb,並且還想使用uvm的組件來搭建更方便的驗證環境,那么整個環境的編譯和執行過程如下:
1.需要准備的軟件vcs-mx和verdi,其中vcs-mx版本會有vlogan和vhdlan兩個編譯程序
2.開始編譯
編譯vhdl的代碼,dut_src.f是vhdl的文件列表:
vhdlan -nc dut_src.f -l cmp_vhdl.log
編譯uvm庫的sv代碼:
vlogan -full64 -timescale=1ns/1ps +v2k -sverilog -ntb_opts uvm -l cmp_uvm.log
編譯我們自己設計的sv代碼和自己設計的uvm各個組件部分的代碼,tb.f是文件列表:
vlogan -full64 -timescale=1ns/1ps +v2k -sverilog tb.f -ntb_opts uvm -l cmp_verilog.log
編譯vhdl和verilog各自的庫生成可執行文件simv:
vcs -timescale=1ns/1ps -ntb_opts uvm -top tb_top -debug_access+pp -fsdb -j56 -cm line+fsm+tgl+cond -lint=TFIPC-L +nbaopt +rad +notimingchecks +nospecify +error+30
run起來,生成波形,其中TC_NAME是傳入的tc參數:
./simv -cm line+fsm+tgl+cond +fsdb+force +fsdbfile+../wave/tb_top.fsdb +UVM_TESTNAME=$(TC_NAME)
3.查看波形
編譯出verdi可以查看的庫,使用vhdlcom是編譯vhdl文件的庫,vericom是編譯verilog文件的庫
vhdlcom -lib my_work dut_src.f
vericom -lib my_work -sv tb_top.sv
使用verdi打開波形文件:
verdi -lib my_work -top tb_top -ssf tb_top.fsdb