1.makefile的目标任务的梳理:
(1)目标:生成波形文件 依赖:waveform.vcd 文件
(2)目标:生成waveform.vcd 依赖:./obj_dir/V$(MODULE)
(3)目标:生成./obj_dir/V$(MODULE) 依赖:.sv 文件 .cpp文件
(4)目标: clean (清除obj_dir 文件以及波形文件.vcd)
2.makefile代码如下:
MODULE=ALU (设计文件的文件名)
waves: waveform.vcd
@echo “~~~”WAVES
gtkwave waveform.vcd
waveform.vcd: ./obj_dir/V$(MODULE)
@echo“~~~”SIMULATION
./obj_dir/V$(MODULE) +verilator+rand+reset+2
./obj_dir/V$(MODULE): $(MODULE).sv tb_$(MODULE).cpp
@echo“~~~”VERILATING
verilator -Wall --trace --x-assign unique --x-initial unique -cc $(MODULE).sv --exe tb_$(MODULE).cpp
@echo“~~~”BUILDING SIM
make -C obj_dir -f V$(MODULE).mk V$(MODULE)
clean:
rm -rf ./obj_dir
rm -rf waveform.vcd
3. makefile 的命令解读
(1)verilator -Wall --trace --x-assign unique --x-initial unique -cc $(MODULE).sv --exe tb_$(MODULE).cpp
Wall : 使能产生警告
cc : 将.sv文件转为C++文件
exe : 指定C++的测试文件
目的:生成obj_dir 文件夹
(2)make -C obj_dir -f V$(MODULE).mk V$(MODULE)
目的:将.mk文件转为可执行的文件
(3)./obj_dir/V$(MODULE) +verilator+rand+reset+2
目的:执行生成的可执行文件
(4)gtkwave waveform.vcd
目的:将程序执行之后生成的波形文件打开