0

我已经编写了一个 Makefile 来在 questasim 中运行测试。我正在使用以下命令。

vsim -l 成绩单 -voptargs=+acc 测试 -do $(WAVEDIR)/$(WAVE_FILE)

这有助于打开 questa 窗口并模拟测试用例。使用瘦 questa 控制台,我需要运行“run -a”以便完整的测试执行。

有没有我可以在我的 Makefile 中添加的命令,它可以在不使用 questa 控制台命令的情况下执行测试用例。

提前致谢

问候小号

4

2 回答 2

0

在这里,我发布了下面的 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)
于 2020-07-30T08:49:08.247 回答
0

只需添加第二个-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 中(有更智能和更有效的方法来处理这种与锁有关的并行问题,但这超出了范围)。

于 2020-07-27T13:55:27.433 回答