我已经编写了一个 Makefile 来在 questasim 中运行测试。我正在使用以下命令。
vsim -l 成绩单 -voptargs=+acc 测试 -do $(WAVEDIR)/$(WAVE_FILE)
这有助于打开 questa 窗口并模拟测试用例。使用瘦 questa 控制台,我需要运行“run -a”以便完整的测试执行。
有没有我可以在我的 Makefile 中添加的命令,它可以在不使用 questa 控制台命令的情况下执行测试用例。
提前致谢
问候小号
在这里,我发布了下面的 Makefile 示例。
TEST = test_top_0006
WAVE_FILE = wave_test0006.do
PREFIX = europractice questa 10.6c
RTLDIR = ..
WAVEDIR = waves
TRANSCRIPT_FILE = transcript
GITBRANCH = feature
VSIM = $(PREFIX) vsim
VLOG = $(PREFIX) vlog
VCOM = $(PREFIX) vcom
VLIB = $(PREFIX) vlib
VLOG_OPTS = -suppress vlog-2583 +acc
compile: rtl tb
# compile all spu sources
spu = $(RTLDIR)/rtl/opcodeDefs_pkg.sv \
$(RTLDIR)/rtl/au/fp_pkg.sv \
$(RTLDIR)/rtl/spu.sv \
$(RTLDIR)/rtl/spu_top.sv
rtl:
if [ ! -d work ]; then $(VLIB) work; fi
${VLOG} -lint -work ${VLOG_OPTS} ${spu}
# compile verification environment
tb:
if [ ! -d work ]; then $(VLIB) work; fi
$(VLOG) $(VLOG_OPTS) $(RTLDIR)/rtl/typedefs_pkg.sv
$(VLOG) $(VLOG_OPTS) $(RTLDIR)/rtl/harness.sv
if [ ! -e "${TEST}.sv" ]; then false; fi
${VLOG} $(VLOG_OPTS) ${TEST}.sv
# run simulator in GUI mode
run:
${VSIM} -l $(TRANSCRIPT_FILE) test -do $(WAVEDIR)/$(WAVE_FILE) -do 'run -all'
runc: tb
${VSIM} -c -l $(TRANSCRIPT_FILE) -voptargs=+acc test -do $(WAVEDIR)/nogui.do
# GIT commands
push:
git push origin $(GITBRANCH)
pull:
git pull
commit:
git commit -a
stat:
git status
clean:
rm -rf work
rm -rf vsim.wlf
rm -f $(TRANSCRIPT_FILE)
只需添加第二个-do
选项:
vsim -l transcript -voptargs=+acc test -do $(WAVEDIR)/$(WAVE_FILE) -do 'run -all'
旁注:在使用带有 Modelsim 或 Questa 的 make 时要小心。这些工具不是并行安全的。如果您尝试并行运行多个编译,您可能会损坏您的目标库并出现奇怪的错误。
因此,如果您使用 make 来编译、创建库等,您必须保证 make 不会尝试并行启动多个修改相同库或相同配置文件的作业(例如modelsim.ini
)。使用 GNU make 总是将.NOTPARALLEL:
特殊目标添加到您的 Makefiles 中(有更智能和更有效的方法来处理这种与锁有关的并行问题,但这超出了范围)。