modelsim的图像界面加载缓慢,实际上modelsim可以在纯命令行环境下仿真,使用-c参数:vsim -c
。可以在WSL下用makefile运行Windows下的modelsim:
HDL_CODE += .
HDL_CODE += ../../rtl/
MODELSIM_ROOT := /mnt/e/exe/modeltech64_10.4/win64
TB := $(wildcard *tb*)
TB := $(basename $(TB))
MODELSIM :=$(MODELSIM_ROOT)/modelsim.exe
MVLIB := $(MODELSIM_ROOT)/vlib.exe
MVCOM := $(MODELSIM_ROOT)/vcom.exe
MVLOG := $(MODELSIM_ROOT)/vlog.exe
MVSIM := $(MODELSIM_ROOT)/vsim.exe
VHDL_CODE:=$(addsuffix /*.vhd , $(HDL_CODE))
VHDL_CODE:=$(wildcard $(VHDL_CODE))
VERILOG_CODE:=$(addsuffix /*.v , $(HDL_CODE))
VERILOG_CODE:=$(wildcard $(VERILOG_CODE))
simc:makework vhdl verilog
$(MVSIM) -c -L work -voptargs=+acc $(TB) -do 'run -all' -do 'exit'
simg:makework vhdl verilog
$(MVSIM) -L work -voptargs=+acc $(TB) -do 'add wave $(TB)/*' -do 'run -all'
vhdl:$(VHDL_CODE)
$(MVCOM) -2008 -explicit $(VHDL_CODE)
verilog:$(VERILOG_CODE)
$(MVLOG) $(VERILOG_CODE)
makework:
$(MVLIB) work
clr:
rm -rf vsim* transcript work/
.PONY: clr clean
使用make simc
在纯命令行下仿真,如果需要同时导出波形文件,请在verilog TB中添加:
initial begin
$dumpfile("wave.vcd"); // 波形文件名
$dumpvars(0,tbv.u_module); // 抓取层级
end
使用make simg
在图形界面仿真并显示波形,好处是可以看到实时波形。make simg
和在图形界面运行.do文件进行编译无异。其中add wave $(TB)/*
指定要看的层级。
vsim -c
和iverilog
的流程相似,都需要生成.vcd文件,再用gtkwave
查看波形,比较繁琐,但对于小工程而言很方便。