上一节介绍了如何用verilator跑coremark case,本节将进一步介绍具体的步骤,由上一节,我们知道,直接运行
make runcase CASE=coremark SIM=verilator THREADS=8
即可完成这个仿真,本节我们来看下具体步骤,打开Makefile我们可以看到runcase的时候会执行如下部分:
runcase:
@make cleanVerilator
ifeq ($(CASE),)
$(error Please specify CASE=xxx on the command line, like: \
$(newline) > make buildcase CASE=xxx... \
$(newline) The list of valid cases can be obtained by executing: \
$(newline) > make showcase ...)
endif
ifeq ($(findstring $(CASE), $(CASE_LIST)), $(CASE))
@make -s compile
@make -s buildcase CASE=$(CASE)
ifeq ($(SIM), vcs)
cd ./work && ./simv -l run.vcs.log $(SIMV_POWER_OPT)
else
ifeq ($(SIM), nc)
cd ./work && irun -R -l run.irun.log
else
ifeq ($(SIM), verilator)
make buildVerilator
cd ./work && obj_dir/Vtop
else
cd ./work && vvp xuantie_core.vvp
endif
endif
endif
一步步看,首先执行make -s compile会对910的RTL进行编译,生成对应的C++文件,随后执行make -s buildcase CASE=$(CASE),对要仿真的coremark例子的代码进行交叉编译,生成其对应的可执行bin文件,接着执行make buildVerilator,编译verilator之前生成的C++文件生成仿真程序,最后cd ./work && obj_dir/Vtop执行仿真程序。下面我们逐一解析下,注意在执行下面操作之前需要按照上一节介绍的配置