verilog和VHDL混合编译仿真
在实际项目中,由于项目经历了较多的版本更迭或者设计人员的技术水平限制,有些时候难免有使用到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