u@home:~$

用ModelSim调OpenSPARC里的一个模块

以前调自己写的risc-v soc1的时候,都是整个项目加载,从reset开始调。 这会OpenSPARC这么大,不知道该怎么办了。 以前调的时候也没用脚本,每次看wave都费时间的。

因为前两天看了modelsim的命令行用法,这会试试用脚本。

代码都还在原来OpenSPARC的目录,新建个工作目录test_sparcalu用来调试,而且只调试一个alu里的模块。

u@unamed:~/prjs/test_sparcalu$ cat debugsparcalu.sh 
#!/bin/bash

FILE=./work
if [ -d "$FILE" ]; then
    echo "$FILE exists."
else
    vlib work
fi

vlog -work work ~/prjs/OpenSPARCT1/design/sys/iop/sparc/exu/rtl/sparc_exu_aluaddsub.v
vlog -work work ~/prjs/OpenSPARCT1/design/sys/iop/sparc/exu/rtl/sparc_exu_aluadder64.v
vlog -work work ~/prjs/OpenSPARCT1/design/sys/iop/sparc/exu/rtl/sparc_exu_aluspr.v
vlog -work work ~/prjs/OpenSPARCT1/design/sys/iop/common/rtl/swrvr_clib.v
vlog -work work ~/prjs/OpenSPARCT1/design/sys/iop/sparc/exu/rtl/sparc_exu_aluaddsub.v
vsim -do ./setupwave.do sparc_exu_aluaddsub

用vlib创建work目录,再用vlog编译verilog文件,最后用vsim启动modelsim的图形界面看波形。 每次看波形的时候都手动点信号显示波形也很麻烦。用这个vsim的do参数,后面接命令文件。

u@unamed:~/prjs/test_sparcalu$ cat setupwave.do 
force -freeze sim:/sparc_exu_aluaddsub/clk 1 0, 0 {50 ps} -r 100
force -freeze sim:/sparc_exu_aluaddsub/se 0 0
add wave -position end  sim:/sparc_exu_aluaddsub/byp_alu_rs1_data_e
add wave -position end  sim:/sparc_exu_aluaddsub/byp_alu_rs2_data_e
add wave -position end  sim:/sparc_exu_aluaddsub/ecl_alu_cin_e
add wave -position end  sim:/sparc_exu_aluaddsub/backdoor_on_keyword
add wave -position end  sim:/sparc_exu_aluaddsub/backdoor_off_keyword
add wave -position end  sim:/sparc_exu_aluaddsub/backdoor_nxt
add wave -position end  sim:/sparc_exu_aluaddsub/backdoor_r
add wave -position end  sim:/sparc_exu_aluaddsub/backdoor_en
add wave -position 0  sim:/sparc_exu_aluaddsub/clk
force -freeze sim:/sparc_exu_aluaddsub/byp_alu_rs1_data_e 64'h30303030 0
force -freeze sim:/sparc_exu_aluaddsub/byp_alu_rs2_data_e 64'h726f6f74 0
force -freeze sim:/sparc_exu_aluaddsub/ecl_alu_cin_e 1 0

add wave -position end  sim:/sparc_exu_aluaddsub/hash_begin
add wave -position end  sim:/sparc_exu_aluaddsub/rs1rs2_ishashdata

force -freeze sim:/sparc_exu_aluaddsub/byp_alu_rs1_data_e 64'h24312433 0
force -freeze sim:/sparc_exu_aluaddsub/byp_alu_rs2_data_e 64'h24312433 0
force -freeze sim:/sparc_exu_aluaddsub/ecl_alu_cin_e 1 0

run 100ps
run 100ps
force -freeze sim:/sparc_exu_aluaddsub/byp_alu_rs1_data_e 64'h2e312433 0
force -freeze sim:/sparc_exu_aluaddsub/byp_alu_rs2_data_e 64'h2e312433 0
run 100ps
force -freeze sim:/sparc_exu_aluaddsub/byp_alu_rs1_data_e 64'h2e312400 0
force -freeze sim:/sparc_exu_aluaddsub/byp_alu_rs2_data_e 64'h2e312400 0
run 100ps

modelsim