mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
making linux waveforms more useful
This commit is contained in:
parent
9bc5ddf5f2
commit
5b96f7fbd7
@ -35,7 +35,7 @@ vopt +acc work.testbench -o workopt
|
|||||||
|
|
||||||
vsim workopt -suppress 8852,12070
|
vsim workopt -suppress 8852,12070
|
||||||
|
|
||||||
do ./wave-dos/busybear-waves.do
|
do ./wave-dos/linux-waves.do
|
||||||
|
|
||||||
#-- Run the Simulation
|
#-- Run the Simulation
|
||||||
run -all
|
run -all
|
||||||
|
@ -35,7 +35,7 @@ vopt +acc work.testbench -o workopt
|
|||||||
|
|
||||||
vsim workopt -suppress 8852,12070
|
vsim workopt -suppress 8852,12070
|
||||||
|
|
||||||
do ./wave-dos/bens-busybear-waves.do
|
do ./wave-dos/linux-waves.do
|
||||||
|
|
||||||
|
|
||||||
#-- Run the Simulation
|
#-- Run the Simulation
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
# busybear-waves.do
|
|
||||||
restart -f
|
|
||||||
delete wave /*
|
|
||||||
view wave
|
|
||||||
|
|
||||||
add wave /testbench/dut/hart/DataStall
|
|
||||||
add wave /testbench/dut/hart/ICacheStallF
|
|
||||||
add wave /testbench/dut/hart/StallF
|
|
||||||
add wave /testbench/dut/hart/StallD
|
|
||||||
add wave /testbench/dut/hart/StallE
|
|
||||||
add wave /testbench/dut/hart/StallM
|
|
||||||
add wave /testbench/dut/hart/StallW
|
|
||||||
add wave /testbench/dut/hart/FlushD
|
|
||||||
add wave /testbench/dut/hart/FlushE
|
|
||||||
add wave /testbench/dut/hart/FlushM
|
|
||||||
add wave /testbench/dut/hart/FlushW
|
|
||||||
add wave -divider
|
|
||||||
|
|
||||||
add wave /testbench/clk
|
|
||||||
add wave /testbench/reset
|
|
||||||
add wave -divider
|
|
||||||
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCF
|
|
||||||
add wave -hex /testbench/PCtext
|
|
||||||
add wave -hex /testbench/pcExpected
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCD
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/InstrD
|
|
||||||
add wave /testbench/InstrDName
|
|
||||||
add wave -divider
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCE
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/InstrE
|
|
||||||
add wave /testbench/InstrEName
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/SrcAE
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/SrcBE
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/ALUResultE
|
|
||||||
#add wave /testbench/dut/hart/ieu/dp/PCSrcE
|
|
||||||
add wave -divider
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCM
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/InstrM
|
|
||||||
add wave /testbench/InstrMName
|
|
||||||
add wave /testbench/dut/uncore/dtim/memwrite
|
|
||||||
add wave -hex /testbench/dut/uncore/HADDR
|
|
||||||
add wave -hex /testbench/dut/uncore/HWDATA
|
|
||||||
add wave -divider
|
|
||||||
add wave -hex /testbench/PCW
|
|
||||||
add wave -hex /testbench/InstrW
|
|
||||||
add wave /testbench/InstrWName
|
|
||||||
add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/RdW
|
|
||||||
add wave -divider
|
|
||||||
|
|
||||||
# appearance
|
|
||||||
TreeUpdate [SetDefaultTree]
|
|
||||||
WaveRestoreZoom {0 ps} {100 ps}
|
|
||||||
configure wave -namecolwidth 250
|
|
||||||
configure wave -valuecolwidth 150
|
|
||||||
configure wave -justifyvalue left
|
|
||||||
configure wave -signalnamewidth 0
|
|
||||||
configure wave -snapdistance 10
|
|
||||||
configure wave -datasetprefix 0
|
|
||||||
configure wave -rowmargin 4
|
|
||||||
configure wave -childrowmargin 2
|
|
||||||
set DefaultRadix hexadecimal
|
|
@ -1,58 +1,66 @@
|
|||||||
# busybear-waves.do
|
# linux-waves.do
|
||||||
|
|
||||||
restart -f
|
restart -f
|
||||||
delete wave /*
|
delete wave /*
|
||||||
view wave
|
view wave
|
||||||
|
|
||||||
-- display input and output signals as hexidecimal values
|
add wave -divider
|
||||||
# Diplays All Signals recursively
|
|
||||||
add wave /testbench/clk
|
add wave /testbench/clk
|
||||||
add wave /testbench/reset
|
add wave /testbench/reset
|
||||||
add wave -divider
|
|
||||||
add wave -hex /testbench/PCtext
|
add wave -divider Stalls_and_Flushes
|
||||||
|
add wave /testbench/dut/hart/StallF
|
||||||
|
add wave /testbench/dut/hart/StallD
|
||||||
|
add wave /testbench/dut/hart/StallE
|
||||||
|
add wave /testbench/dut/hart/StallM
|
||||||
|
add wave /testbench/dut/hart/StallW
|
||||||
|
add wave -group stall_srcs /testbench/dut/hart/DataStall
|
||||||
|
add wave -group stall_srcs /testbench/dut/hart/ICacheStallF
|
||||||
|
add wave /testbench/dut/hart/FlushD
|
||||||
|
add wave /testbench/dut/hart/FlushE
|
||||||
|
add wave /testbench/dut/hart/FlushM
|
||||||
|
add wave /testbench/dut/hart/FlushW
|
||||||
|
|
||||||
|
add wave -divider F
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/PCF
|
||||||
|
add wave -divider D
|
||||||
add wave -hex /testbench/pcExpected
|
add wave -hex /testbench/pcExpected
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCD
|
add wave -hex /testbench/dut/hart/ifu/PCD
|
||||||
|
add wave -hex /testbench/PCtextD
|
||||||
|
add wave /testbench/InstrDName
|
||||||
add wave -hex /testbench/dut/hart/ifu/InstrD
|
add wave -hex /testbench/dut/hart/ifu/InstrD
|
||||||
add wave -hex /testbench/dut/hart/ifu/StallD
|
add wave -hex /testbench/dut/hart/ieu/c/InstrValidD
|
||||||
add wave -hex /testbench/dut/hart/ifu/FlushD
|
add wave -divider E
|
||||||
add wave -hex /testbench/dut/hart/ifu/StallE
|
add wave -hex /testbench/dut/hart/ifu/PCE
|
||||||
add wave -hex /testbench/dut/hart/ifu/FlushE
|
add wave -hex /testbench/PCtextE
|
||||||
add wave -hex /testbench/dut/hart/ifu/InstrRawD
|
add wave /testbench/InstrEName
|
||||||
add wave /testbench/CheckInstrD
|
add wave -hex /testbench/dut/hart/ifu/InstrE
|
||||||
add wave /testbench/lastCheckInstrD
|
add wave -hex /testbench/dut/hart/ieu/c/InstrValidE
|
||||||
add wave /testbench/speculative
|
add wave -hex /testbench/dut/hart/ieu/dp/SrcAE
|
||||||
add wave /testbench/lastPC2
|
add wave -hex /testbench/dut/hart/ieu/dp/SrcBE
|
||||||
add wave -divider
|
add wave -hex /testbench/dut/hart/ieu/dp/ALUResultE
|
||||||
add wave -divider
|
add wave -divider M
|
||||||
add wave /testbench/dut/uncore/HSELBootTim
|
add wave -hex /testbench/dut/hart/ifu/PCM
|
||||||
add wave /testbench/dut/uncore/HSELTim
|
add wave -hex /testbench/PCtextM
|
||||||
add wave /testbench/dut/uncore/HREADTim
|
add wave /testbench/InstrMName
|
||||||
add wave /testbench/dut/uncore/dtim/HREADTim0
|
add wave -hex /testbench/dut/hart/ifu/InstrM
|
||||||
add wave /testbench/dut/uncore/HREADYTim
|
add wave -hex /testbench/dut/hart/ieu/c/InstrValidM
|
||||||
add wave -divider
|
add wave /testbench/dut/uncore/dtim/memwrite
|
||||||
add wave /testbench/dut/uncore/HREADBootTim
|
add wave -hex /testbench/dut/uncore/HADDR
|
||||||
add wave /testbench/dut/uncore/bootdtim/HREADTim0
|
add wave -hex /testbench/HWRITE
|
||||||
add wave /testbench/dut/uncore/HREADYBootTim
|
add wave -hex /testbench/dut/uncore/HWDATA
|
||||||
add wave /testbench/dut/uncore/HADDR
|
add wave -hex /testbench/HRDATA
|
||||||
add wave /testbench/dut/uncore/HRESP
|
add wave -hex /testbench/readAdrExpected
|
||||||
add wave /testbench/dut/uncore/HREADY
|
add wave -divider W
|
||||||
add wave /testbench/dut/uncore/HRDATA
|
add wave -hex /testbench/PCW
|
||||||
#add wave -hex /testbench/dut/hart/priv/csr/MTVEC_REG
|
add wave -hex /testbench/PCtextW
|
||||||
#add wave -hex /testbench/dut/hart/priv/csr/MSTATUS_REG
|
add wave -hex /testbench/dut/hart/ieu/c/InstrValidW
|
||||||
#add wave -hex /testbench/dut/hart/priv/csr/SCOUNTEREN_REG
|
add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
||||||
#add wave -hex /testbench/dut/hart/priv/csr/MIE_REG
|
add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
||||||
#add wave -hex /testbench/dut/hart/priv/csr/MIDELEG_REG
|
add wave -hex /testbench/dut/hart/ieu/dp/RdW
|
||||||
#add wave -hex /testbench/dut/hart/priv/csr/MEDELEG_REG
|
|
||||||
add wave -divider
|
add wave -divider RegFile
|
||||||
# registers!
|
|
||||||
add wave -hex /testbench/regExpected
|
add wave -hex /testbench/regExpected
|
||||||
add wave -hex /testbench/regNumExpected
|
add wave -hex /testbench/regNumExpected
|
||||||
add wave -hex /testbench/HWRITE
|
|
||||||
add wave -hex /testbench/dut/hart/MemRWM[1]
|
|
||||||
add wave -hex /testbench/HWDATA
|
|
||||||
add wave -hex /testbench/HRDATA
|
|
||||||
add wave -hex /testbench/HADDR
|
|
||||||
add wave -hex /testbench/readAdrExpected
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[1]
|
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[1]
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[2]
|
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[2]
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[3]
|
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[3]
|
||||||
@ -84,36 +92,10 @@ add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[28]
|
|||||||
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[29]
|
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[29]
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[30]
|
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[30]
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[31]
|
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf[31]
|
||||||
add wave /testbench/InstrFName
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCD
|
add wave -divider
|
||||||
#add wave -hex /testbench/dut/hart/ifu/InstrD
|
|
||||||
add wave /testbench/InstrDName
|
|
||||||
#add wave -divider
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCE
|
|
||||||
##add wave -hex /testbench/dut/hart/ifu/InstrE
|
|
||||||
add wave /testbench/InstrEName
|
|
||||||
#add wave -hex /testbench/dut/hart/ieu/dp/SrcAE
|
|
||||||
#add wave -hex /testbench/dut/hart/ieu/dp/SrcBE
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/ALUResultE
|
|
||||||
#add wave /testbench/dut/hart/ieu/dp/PCSrcE
|
|
||||||
#add wave -divider
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCM
|
|
||||||
##add wave -hex /testbench/dut/hart/ifu/InstrM
|
|
||||||
add wave /testbench/InstrMName
|
|
||||||
#add wave /testbench/dut/hart/dmem/dtim/memwrite
|
|
||||||
#add wave -hex /testbench/dut/hart/dmem/AdrM
|
|
||||||
#add wave -hex /testbench/dut/hart/dmem/WriteDataM
|
|
||||||
#add wave -divider
|
|
||||||
add wave -hex /testbench/PCW
|
|
||||||
##add wave -hex /testbench/dut/hart/ifu/InstrW
|
|
||||||
add wave /testbench/InstrWName
|
|
||||||
#add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
|
||||||
#add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
|
||||||
#add wave -hex /testbench/dut/hart/ieu/dp/RdW
|
|
||||||
#add wave -divider
|
|
||||||
##add ww
|
|
||||||
add wave -hex -r /testbench/*
|
add wave -hex -r /testbench/*
|
||||||
#
|
|
||||||
# appearance
|
# appearance
|
||||||
TreeUpdate [SetDefaultTree]
|
TreeUpdate [SetDefaultTree]
|
||||||
WaveRestoreZoom {0 ps} {100 ps}
|
WaveRestoreZoom {0 ps} {100 ps}
|
@ -473,7 +473,21 @@ module testbench();
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
string PCtext, PCtext2;
|
string PCtextD,PCtextE,PCtextM,PCtext2;
|
||||||
|
always_ff @(posedge clk, posedge reset)
|
||||||
|
if (reset) begin
|
||||||
|
PCtextE <= #1 "(reset)";
|
||||||
|
PCtextM <= #1 "(reset)";
|
||||||
|
end else begin
|
||||||
|
if (~dut.hart.StallE)
|
||||||
|
if (dut.hart.FlushE) PCtextE <= #1 "(flushed)";
|
||||||
|
else PCtextE <= #1 PCtextD;
|
||||||
|
if (~dut.hart.StallM)
|
||||||
|
if (dut.hart.FlushM) PCtextM <= #1 "(flushed)";
|
||||||
|
else PCtextM <= #1 PCtextE;
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
instrs = 0;
|
instrs = 0;
|
||||||
end
|
end
|
||||||
@ -495,7 +509,7 @@ module testbench();
|
|||||||
(dut.hart.ifu.PCD == 32'h80001dc6) || // as well as stores to PLIC
|
(dut.hart.ifu.PCD == 32'h80001dc6) || // as well as stores to PLIC
|
||||||
(dut.hart.ifu.PCD == 32'h80001de0) ||
|
(dut.hart.ifu.PCD == 32'h80001de0) ||
|
||||||
(dut.hart.ifu.PCD == 32'h80001de2)) begin
|
(dut.hart.ifu.PCD == 32'h80001de2)) begin
|
||||||
$display("warning: NOPing out %s at PC=%0x, instr %0d, time %0t", PCtext, dut.hart.ifu.PCD, instrs, $time);
|
$display("warning: NOPing out %s at PC=%0x, instr %0d, time %0t", PCtextD, dut.hart.ifu.PCD, instrs, $time);
|
||||||
force CheckInstrD = 32'b0010011;
|
force CheckInstrD = 32'b0010011;
|
||||||
force dut.hart.ifu.InstrRawD = 32'b0010011;
|
force dut.hart.ifu.InstrRawD = 32'b0010011;
|
||||||
while (clk != 0) #1;
|
while (clk != 0) #1;
|
||||||
@ -515,10 +529,10 @@ module testbench();
|
|||||||
$display("no more PC data to read");
|
$display("no more PC data to read");
|
||||||
`ERROR
|
`ERROR
|
||||||
end
|
end
|
||||||
scan_file_PC = $fscanf(data_file_PC, "%s\n", PCtext);
|
scan_file_PC = $fscanf(data_file_PC, "%s\n", PCtextD);
|
||||||
PCtext2 = "";
|
PCtext2 = "";
|
||||||
while (PCtext2 != "***") begin
|
while (PCtext2 != "***") begin
|
||||||
PCtext = {PCtext, " ", PCtext2};
|
PCtextD = {PCtextD, " ", PCtext2};
|
||||||
scan_file_PC = $fscanf(data_file_PC, "%s\n", PCtext2);
|
scan_file_PC = $fscanf(data_file_PC, "%s\n", PCtext2);
|
||||||
end
|
end
|
||||||
scan_file_PC = $fscanf(data_file_PC, "%x\n", CheckInstrD);
|
scan_file_PC = $fscanf(data_file_PC, "%x\n", CheckInstrD);
|
||||||
@ -527,7 +541,7 @@ module testbench();
|
|||||||
(dut.hart.ifu.PCD == 32'h80001dc6) || // as well as stores to PLIC
|
(dut.hart.ifu.PCD == 32'h80001dc6) || // as well as stores to PLIC
|
||||||
(dut.hart.ifu.PCD == 32'h80001de0) ||
|
(dut.hart.ifu.PCD == 32'h80001de0) ||
|
||||||
(dut.hart.ifu.PCD == 32'h80001de2)) begin
|
(dut.hart.ifu.PCD == 32'h80001de2)) begin
|
||||||
$display("warning: NOPing out %s at PC=%0x, instr %0d, time %0t", PCtext, dut.hart.ifu.PCD, instrs, $time);
|
$display("warning: NOPing out %s at PC=%0x, instr %0d, time %0t", PCtextD, dut.hart.ifu.PCD, instrs, $time);
|
||||||
force CheckInstrD = 32'b0010011;
|
force CheckInstrD = 32'b0010011;
|
||||||
force dut.hart.ifu.InstrRawD = 32'b0010011;
|
force dut.hart.ifu.InstrRawD = 32'b0010011;
|
||||||
while (clk != 0) #1;
|
while (clk != 0) #1;
|
||||||
|
Loading…
Reference in New Issue
Block a user