mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Merge branch 'main' of https://github.com/davidharrishmc/riscv-wally into main
This commit is contained in:
commit
589bee5875
@ -1,64 +0,0 @@
|
|||||||
define genCheckpoint
|
|
||||||
# GDB config
|
|
||||||
set pagination off
|
|
||||||
set logging overwrite on
|
|
||||||
set logging redirect on
|
|
||||||
set confirm off
|
|
||||||
|
|
||||||
# QEMU must also use TCP port 1240
|
|
||||||
target extended-remote :1240
|
|
||||||
|
|
||||||
# QEMU Config
|
|
||||||
maintenance packet Qqemu.PhyMemMode:1
|
|
||||||
|
|
||||||
# Symbol file
|
|
||||||
file ../buildroot-image-output/vmlinux
|
|
||||||
|
|
||||||
# Argument Parsing
|
|
||||||
set $tcpPort=$arg0
|
|
||||||
set $instrCount=$arg1
|
|
||||||
set $statePath=$arg2
|
|
||||||
set $ramPath=$arg3
|
|
||||||
set $checkPC=$arg4
|
|
||||||
set $checkPCoccurences=$arg5
|
|
||||||
eval "set $statePath = \"%s/stateGDB.txt\"", $statePath
|
|
||||||
eval "set $ramPath = \"%s/ramGDB.txt\"", $ramPath
|
|
||||||
|
|
||||||
|
|
||||||
# Step over reset vector into actual code
|
|
||||||
stepi 100
|
|
||||||
# Set breakpoint for where to stop
|
|
||||||
b do_idle
|
|
||||||
# Proceed to checkpoint
|
|
||||||
printf "GDB proceeding to checkpoint at %d instrs\n", $instrCount
|
|
||||||
#stepi $instrCount-1000
|
|
||||||
b *$checkPC
|
|
||||||
ignore 2 $checkPCoccurences
|
|
||||||
c
|
|
||||||
|
|
||||||
printf "Reached checkpoint at %d instrs\n", $instrCount
|
|
||||||
|
|
||||||
# Log all registers to a file
|
|
||||||
printf "GDB storing state to %s\n", $statePath
|
|
||||||
eval "set logging file %s", $statePath
|
|
||||||
set logging on
|
|
||||||
info all-registers
|
|
||||||
set logging off
|
|
||||||
|
|
||||||
# Log main memory to a file
|
|
||||||
printf "GDB storing RAM to %s\n", $ramPath
|
|
||||||
eval "set logging file %s", $ramPath
|
|
||||||
set logging on
|
|
||||||
x/134217728xb 0x80000000
|
|
||||||
set logging off
|
|
||||||
|
|
||||||
# Continue to checkpoint; stop on the 3rd time
|
|
||||||
# Should reach login prompt by then
|
|
||||||
printf "GDB continuing execution to login prompt\n"
|
|
||||||
ignore 1 2
|
|
||||||
c
|
|
||||||
|
|
||||||
printf "GDB reached login prompt!\n"
|
|
||||||
kill
|
|
||||||
q
|
|
||||||
end
|
|
@ -8,7 +8,7 @@ define genCheckpoint
|
|||||||
# Argument Parsing
|
# Argument Parsing
|
||||||
set $tcpPort=$arg0
|
set $tcpPort=$arg0
|
||||||
set $instrCount=$arg1
|
set $instrCount=$arg1
|
||||||
set $statePath=$arg1
|
set $statePath=$arg2
|
||||||
set $ramPath=$arg2
|
set $ramPath=$arg2
|
||||||
set $checkPC=$arg3
|
set $checkPC=$arg3
|
||||||
set $checkPCoccurences=$arg4
|
set $checkPCoccurences=$arg4
|
||||||
@ -31,7 +31,7 @@ define genCheckpoint
|
|||||||
# Proceed to checkpoint
|
# Proceed to checkpoint
|
||||||
printf "GDB proceeding to checkpoint at %d instrs\n", $instrCount
|
printf "GDB proceeding to checkpoint at %d instrs\n", $instrCount
|
||||||
#stepi $instrCount-1000
|
#stepi $instrCount-1000
|
||||||
b *$checkPC
|
eval "b *0x%s",$checkPC
|
||||||
ignore 2 $checkPCoccurences
|
ignore 2 $checkPCoccurences
|
||||||
c
|
c
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
source genSettings.sh
|
source genSettings.sh
|
||||||
tcpPort=1236
|
tcpPort=1236
|
||||||
|
|
||||||
instrs=50000000
|
instrs=10000000
|
||||||
checkOutDir="$outDir/checkpoint$instrs"
|
checkOutDir="$outDir/checkpoint$instrs"
|
||||||
checkIntermedDir="$checkOutDir/intermediate-outputs"
|
checkIntermedDir="$checkOutDir/intermediate-outputs"
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ then
|
|||||||
-bios $imageDir/fw_jump.elf -kernel $imageDir/Image -append "root=/dev/vda ro" -initrd $imageDir/rootfs.cpio \
|
-bios $imageDir/fw_jump.elf -kernel $imageDir/Image -append "root=/dev/vda ro" -initrd $imageDir/rootfs.cpio \
|
||||||
-singlestep -rtc clock=vm -icount shift=1,align=off,sleep=on,rr=replay,rrfile="$intermedDir/$recordFile" \
|
-singlestep -rtc clock=vm -icount shift=1,align=off,sleep=on,rr=replay,rrfile="$intermedDir/$recordFile" \
|
||||||
-gdb tcp::$tcpPort -S) \
|
-gdb tcp::$tcpPort -S) \
|
||||||
& riscv64-unknown-elf-gdb -quiet -x genCheckpoint.gdb -ex "genCheckpoint $tcpPort $instrs \"$checkIntermedDir\" 0x$pc $occurences"
|
& riscv64-unknown-elf-gdb -x genCheckpoint.gdb -ex "genCheckpoint $tcpPort $instrs \"$checkIntermedDir\" \"$pc\" $occurences"
|
||||||
# Post-Process GDB outputs
|
# Post-Process GDB outputs
|
||||||
./parseState.py "$checkOutDir"
|
./parseState.py "$checkOutDir"
|
||||||
./fix_mem.py "$checkIntermedDir/ramGDB.txt" "$checkOutDir/ram.txt"
|
./fix_mem.py "$checkIntermedDir/ramGDB.txt" "$checkOutDir/ram.txt"
|
||||||
|
@ -49,7 +49,7 @@ module cachereplacementpolicy
|
|||||||
logic LRUWriteEnD;
|
logic LRUWriteEnD;
|
||||||
|
|
||||||
/* verilator lint_off BLKLOOPINIT */
|
/* verilator lint_off BLKLOOPINIT */
|
||||||
always_ff @(posedge clk, posedge reset) begin
|
always_ff @(posedge clk) begin
|
||||||
if (reset) begin
|
if (reset) begin
|
||||||
RAdrD <= '0;
|
RAdrD <= '0;
|
||||||
MemPAdrMD <= '0;
|
MemPAdrMD <= '0;
|
||||||
|
6
wally-pipelined/src/cache/cacheway.sv
vendored
6
wally-pipelined/src/cache/cacheway.sv
vendored
@ -111,7 +111,7 @@ module cacheway #(parameter NUMLINES=512, parameter BLOCKLEN = 256, TAGLEN = 26,
|
|||||||
assign VictimTagWay = SelFlush ? FlushThisWay : VicDirtyWay;
|
assign VictimTagWay = SelFlush ? FlushThisWay : VicDirtyWay;
|
||||||
|
|
||||||
|
|
||||||
always_ff @(posedge clk, posedge reset) begin
|
always_ff @(posedge clk) begin
|
||||||
if (reset)
|
if (reset)
|
||||||
ValidBits <= {NUMLINES{1'b0}};
|
ValidBits <= {NUMLINES{1'b0}};
|
||||||
else if (InvalidateAll)
|
else if (InvalidateAll)
|
||||||
@ -134,14 +134,14 @@ module cacheway #(parameter NUMLINES=512, parameter BLOCKLEN = 256, TAGLEN = 26,
|
|||||||
|
|
||||||
generate
|
generate
|
||||||
if(DIRTY_BITS) begin
|
if(DIRTY_BITS) begin
|
||||||
always_ff @(posedge clk, posedge reset) begin
|
always_ff @(posedge clk) begin
|
||||||
if (reset)
|
if (reset)
|
||||||
DirtyBits <= {NUMLINES{1'b0}};
|
DirtyBits <= {NUMLINES{1'b0}};
|
||||||
else if (SetDirtyD & (WriteEnableD | VDWriteEnableD)) DirtyBits[WAdrD] <= 1'b1;
|
else if (SetDirtyD & (WriteEnableD | VDWriteEnableD)) DirtyBits[WAdrD] <= 1'b1;
|
||||||
else if (ClearDirtyD & (WriteEnableD | VDWriteEnableD)) DirtyBits[WAdrD] <= 1'b0;
|
else if (ClearDirtyD & (WriteEnableD | VDWriteEnableD)) DirtyBits[WAdrD] <= 1'b0;
|
||||||
end
|
end
|
||||||
|
|
||||||
always_ff @(posedge clk, posedge reset) begin
|
always_ff @(posedge clk) begin
|
||||||
SetDirtyD <= SetDirty;
|
SetDirtyD <= SetDirty;
|
||||||
ClearDirtyD <= ClearDirty;
|
ClearDirtyD <= ClearDirty;
|
||||||
end
|
end
|
||||||
|
2
wally-pipelined/src/cache/dcachefsm.sv
vendored
2
wally-pipelined/src/cache/dcachefsm.sv
vendored
@ -144,7 +144,7 @@ module dcachefsm
|
|||||||
assign CntEn = PreCntEn & AHBAck;
|
assign CntEn = PreCntEn & AHBAck;
|
||||||
|
|
||||||
|
|
||||||
always_ff @(posedge clk, posedge reset)
|
always_ff @(posedge clk)
|
||||||
if (reset) CurrState <= #1 STATE_READY;
|
if (reset) CurrState <= #1 STATE_READY;
|
||||||
else CurrState <= #1 NextState;
|
else CurrState <= #1 NextState;
|
||||||
|
|
||||||
|
2
wally-pipelined/src/cache/icachefsm.sv
vendored
2
wally-pipelined/src/cache/icachefsm.sv
vendored
@ -116,7 +116,7 @@ module icachefsm
|
|||||||
logic PreCntEn;
|
logic PreCntEn;
|
||||||
|
|
||||||
// the FSM is always runing, do not stall.
|
// the FSM is always runing, do not stall.
|
||||||
always_ff @(posedge clk, posedge reset)
|
always_ff @(posedge clk)
|
||||||
if (reset) CurrState <= #1 STATE_READY;
|
if (reset) CurrState <= #1 STATE_READY;
|
||||||
else CurrState <= #1 NextState;
|
else CurrState <= #1 NextState;
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ module RASPredictor
|
|||||||
.q(PtrQ));
|
.q(PtrQ));
|
||||||
|
|
||||||
// RAS must be reset.
|
// RAS must be reset.
|
||||||
always_ff @ (posedge clk, posedge reset) begin
|
always_ff @ (posedge clk) begin
|
||||||
if(reset) begin
|
if(reset) begin
|
||||||
for(index=0; index<StackSize; index++)
|
for(index=0; index<StackSize; index++)
|
||||||
memory[index] <= {`XLEN{1'b0}};
|
memory[index] <= {`XLEN{1'b0}};
|
||||||
|
Loading…
Reference in New Issue
Block a user