forked from Github_Repos/cvw
Page table walker now walks the table.
Added interlock so the icache stalls. Page table walker not walking correctly, goes to fault state.
This commit is contained in:
parent
bc9c944ba0
commit
dd84f2958e
@ -33,11 +33,11 @@ add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/
|
|||||||
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushE
|
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushE
|
||||||
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushM
|
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushM
|
||||||
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushW
|
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushW
|
||||||
add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallF
|
add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallF
|
||||||
add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallD
|
add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallD
|
||||||
add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallE
|
add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallE
|
||||||
add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallM
|
add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallM
|
||||||
add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallW
|
add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallW
|
||||||
add wave -noupdate -group Bpred -color Orange /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHR
|
add wave -noupdate -group Bpred -color Orange /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHR
|
||||||
add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPPredF
|
add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPPredF
|
||||||
add wave -noupdate -group Bpred -expand -group {branch update selection inputs} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/InstrClassE[0]}
|
add wave -noupdate -group Bpred -expand -group {branch update selection inputs} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/InstrClassE[0]}
|
||||||
@ -89,6 +89,7 @@ add wave -noupdate -expand -group {instruction pipeline} /testbench/InstrFName
|
|||||||
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrD
|
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrD
|
||||||
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrE
|
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrE
|
||||||
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrM
|
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrM
|
||||||
|
add wave -noupdate -expand -group {instruction pipeline} /testbench/InstrW
|
||||||
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCNextF
|
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCNextF
|
||||||
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCF
|
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCF
|
||||||
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCPlus2or4F
|
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCPlus2or4F
|
||||||
@ -104,7 +105,7 @@ add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/c/RegWriteD
|
|||||||
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/dp/RdD
|
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/dp/RdD
|
||||||
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/dp/Rs1D
|
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/dp/Rs1D
|
||||||
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/dp/Rs2D
|
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/dp/Rs2D
|
||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/rf
|
add wave -noupdate -group RegFile -expand /testbench/dut/hart/ieu/dp/regf/rf
|
||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/a1
|
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/a1
|
||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/a2
|
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/a2
|
||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/a3
|
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/a3
|
||||||
@ -117,18 +118,18 @@ add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart
|
|||||||
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/CSRReadValW
|
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/CSRReadValW
|
||||||
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultSrcW
|
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultSrcW
|
||||||
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultW
|
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultW
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/a
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/a
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/b
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/b
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/result
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/result
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/flags
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/flags
|
||||||
add wave -noupdate -expand -group alu -divider internals
|
add wave -noupdate -group alu -divider internals
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/overflow
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/overflow
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/carry
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/carry
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/zero
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/zero
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/neg
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/neg
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/lt
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/lt
|
||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/ltu
|
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/ltu
|
||||||
add wave -noupdate -group dcache -expand -group {cpu request} /testbench/dut/hart/MemAdrM
|
add wave -noupdate -group dcache -expand -group {cpu request} /testbench/dut/hart/MemAdrM
|
||||||
add wave -noupdate -group dcache -expand -group {cpu request} /testbench/dut/hart/WriteDataM
|
add wave -noupdate -group dcache -expand -group {cpu request} /testbench/dut/hart/WriteDataM
|
||||||
add wave -noupdate -group dcache /testbench/dut/hart/MemPAdrM
|
add wave -noupdate -group dcache /testbench/dut/hart/MemPAdrM
|
||||||
@ -174,41 +175,45 @@ add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/N
|
|||||||
add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/D
|
add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/D
|
||||||
add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/Q
|
add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/Q
|
||||||
add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/rem0
|
add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/rem0
|
||||||
add wave -noupdate -group icache -color Orange /testbench/dut/hart/ifu/icache/controller/CurrState
|
add wave -noupdate -expand -group icache -color Orange /testbench/dut/hart/ifu/icache/controller/CurrState
|
||||||
add wave -noupdate -group icache /testbench/dut/hart/ifu/icache/controller/NextState
|
add wave -noupdate -expand -group icache /testbench/dut/hart/ifu/icache/controller/NextState
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/hit
|
add wave -noupdate -expand -group icache /testbench/dut/hart/ifu/ITLBMissF
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spill
|
add wave -noupdate -expand -group icache -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/DataValidBit
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/ICacheStallF
|
add wave -noupdate -expand -group icache -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/cachetags/ReadData
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/SavePC
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/hit
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spillSave
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spill
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/UnalignedSelect
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/ICacheStallF
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/PCMux
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/SavePC
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spillSave
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spillSave
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntReset
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/UnalignedSelect
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/PreCntEn
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/PCMux
|
||||||
add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntEn
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spillSave
|
||||||
add wave -noupdate -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/NUMLINES
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntReset
|
||||||
add wave -noupdate -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/BLOCKLEN
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/PreCntEn
|
||||||
add wave -noupdate -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/BLOCKBYTELEN
|
add wave -noupdate -expand -group icache -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntEn
|
||||||
add wave -noupdate -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/OFFSETLEN
|
add wave -noupdate -expand -group icache -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/NUMLINES
|
||||||
add wave -noupdate -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/INDEXLEN
|
add wave -noupdate -expand -group icache -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/BLOCKLEN
|
||||||
add wave -noupdate -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/TAGLEN
|
add wave -noupdate -expand -group icache -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/BLOCKBYTELEN
|
||||||
add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCountFlag
|
add wave -noupdate -expand -group icache -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/OFFSETLEN
|
||||||
add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCount
|
add wave -noupdate -expand -group icache -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/INDEXLEN
|
||||||
add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrPAdrF
|
add wave -noupdate -expand -group icache -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/TAGLEN
|
||||||
add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrReadF
|
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCountFlag
|
||||||
add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrAckF
|
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCount
|
||||||
add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrInF
|
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrPAdrF
|
||||||
add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteEnable
|
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrReadF
|
||||||
add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteData
|
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrAckF
|
||||||
add wave -noupdate -group icache -expand -group memory -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/DataValidBit
|
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrInF
|
||||||
add wave -noupdate -group icache -expand -group memory -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/cachetags/ReadData
|
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteEnable
|
||||||
add wave -noupdate -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/WriteEnable
|
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteData
|
||||||
add wave -noupdate -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/WriteLine
|
add wave -noupdate -expand -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/WriteEnable
|
||||||
add wave -noupdate -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/cachetags/StoredData
|
add wave -noupdate -expand -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/WriteLine
|
||||||
add wave -noupdate -group icache -expand -group {instr to cpu} /testbench/dut/hart/ifu/icache/controller/FinalInstrRawF
|
add wave -noupdate -expand -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/cachetags/StoredData
|
||||||
add wave -noupdate -group icache -expand -group pc /testbench/dut/hart/ifu/icache/controller/PCPF
|
add wave -noupdate -expand -group icache -expand -group {instr to cpu} /testbench/dut/hart/ifu/icache/controller/FinalInstrRawF
|
||||||
add wave -noupdate -group icache -expand -group pc /testbench/dut/hart/ifu/icache/controller/PCPreFinalF
|
add wave -noupdate -expand -group icache -expand -group pc /testbench/dut/hart/ifu/icache/controller/PCPF
|
||||||
|
add wave -noupdate -expand -group icache -expand -group pc /testbench/dut/hart/ifu/icache/controller/PCPreFinalF
|
||||||
|
add wave -noupdate -group AHB -expand -group read /testbench/dut/hart/ebu/HRDATA
|
||||||
|
add wave -noupdate -group AHB -expand -group read /testbench/dut/hart/ebu/HRDATAMasked
|
||||||
|
add wave -noupdate -group AHB -expand -group read /testbench/dut/hart/ebu/HRDATANext
|
||||||
add wave -noupdate -group AHB /testbench/dut/hart/ebu/BusState
|
add wave -noupdate -group AHB /testbench/dut/hart/ebu/BusState
|
||||||
add wave -noupdate -group AHB /testbench/dut/hart/ebu/ProposedNextBusState
|
add wave -noupdate -group AHB /testbench/dut/hart/ebu/ProposedNextBusState
|
||||||
add wave -noupdate -group AHB /testbench/dut/hart/ebu/NextBusState
|
add wave -noupdate -group AHB /testbench/dut/hart/ebu/NextBusState
|
||||||
@ -237,15 +242,17 @@ add wave -noupdate -group AHB /testbench/dut/hart/ebu/HADDRD
|
|||||||
add wave -noupdate -group AHB /testbench/dut/hart/ebu/HSIZED
|
add wave -noupdate -group AHB /testbench/dut/hart/ebu/HSIZED
|
||||||
add wave -noupdate -group AHB /testbench/dut/hart/ebu/HWRITED
|
add wave -noupdate -group AHB /testbench/dut/hart/ebu/HWRITED
|
||||||
add wave -noupdate -group AHB /testbench/dut/hart/ebu/StallW
|
add wave -noupdate -group AHB /testbench/dut/hart/ebu/StallW
|
||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/CurrState
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/CurrState
|
||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/DataStall
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/DataStall
|
||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/MemAdrM
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/MemAdrM
|
||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/MemPAdrM
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/MemPAdrM
|
||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/ReadDataW
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/ReadDataW
|
||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/WriteDataM
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/WriteDataM
|
||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/AtomicMaskedM
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/AtomicMaskedM
|
||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/DSquashBusAccessM
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/DSquashBusAccessM
|
||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/MemAckW
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/HRDATAW
|
||||||
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/MemAckW
|
||||||
|
add wave -noupdate -group lsu /testbench/dut/hart/lsu/StallW
|
||||||
add wave -noupdate -group plic /testbench/dut/uncore/genblk2/plic/HCLK
|
add wave -noupdate -group plic /testbench/dut/uncore/genblk2/plic/HCLK
|
||||||
add wave -noupdate -group plic /testbench/dut/uncore/genblk2/plic/HSELPLIC
|
add wave -noupdate -group plic /testbench/dut/uncore/genblk2/plic/HSELPLIC
|
||||||
add wave -noupdate -group plic /testbench/dut/uncore/genblk2/plic/HADDR
|
add wave -noupdate -group plic /testbench/dut/uncore/genblk2/plic/HADDR
|
||||||
@ -297,16 +304,48 @@ add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/M
|
|||||||
add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/CurrentPTE
|
add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/CurrentPTE
|
||||||
add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/ValidPTE
|
add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/ValidPTE
|
||||||
add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/LeafPTE
|
add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/LeafPTE
|
||||||
add wave -noupdate -expand -group {LSU ARB} /testbench/dut/hart/arbiter/HPTWTranslate
|
add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/MMUStall
|
||||||
add wave -noupdate -expand -group {LSU ARB} /testbench/dut/hart/arbiter/HPTWPAdr
|
add wave -noupdate -group {LSU ARB} /testbench/dut/hart/arbiter/HPTWTranslate
|
||||||
add wave -noupdate -expand -group {LSU ARB} /testbench/dut/hart/arbiter/HPTWReadPTE
|
add wave -noupdate -group {LSU ARB} /testbench/dut/hart/arbiter/HPTWPAdr
|
||||||
add wave -noupdate -expand -group {LSU ARB} /testbench/dut/hart/arbiter/HPTWReady
|
add wave -noupdate -group {LSU ARB} /testbench/dut/hart/arbiter/HPTWReadPTE
|
||||||
add wave -noupdate -expand -group {LSU ARB} -expand -group toLSU /testbench/dut/hart/arbiter/MemAdrMtoLSU
|
add wave -noupdate -group {LSU ARB} /testbench/dut/hart/arbiter/HPTWReady
|
||||||
add wave -noupdate -expand -group {LSU ARB} /testbench/dut/hart/arbiter/SelPTW
|
add wave -noupdate -group {LSU ARB} -expand -group toLSU /testbench/dut/hart/arbiter/MemAdrMtoLSU
|
||||||
|
add wave -noupdate -group {LSU ARB} /testbench/dut/hart/arbiter/SelPTW
|
||||||
add wave -noupdate /testbench/dut/hart/lsu/DataStall
|
add wave -noupdate /testbench/dut/hart/lsu/DataStall
|
||||||
|
add wave -noupdate -expand -group csr /testbench/dut/hart/priv/csr/MIP_REGW
|
||||||
|
add wave -noupdate /testbench/dut/uncore/genblk2/plic/ExtIntM
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HCLK
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HRESETn
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HSELUART
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HADDR
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HWRITE
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HWDATA
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HREADUART
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HRESPUART
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HREADYUART
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/SIN
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/DSRb
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/DCDb
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/CTSb
|
||||||
|
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/RIb
|
||||||
|
add wave -noupdate -group uart -expand -group outputs /testbench/dut/uncore/genblk4/uart/SOUT
|
||||||
|
add wave -noupdate -group uart -expand -group outputs /testbench/dut/uncore/genblk4/uart/RTSb
|
||||||
|
add wave -noupdate -group uart -expand -group outputs /testbench/dut/uncore/genblk4/uart/DTRb
|
||||||
|
add wave -noupdate -group uart -expand -group outputs /testbench/dut/uncore/genblk4/uart/OUT1b
|
||||||
|
add wave -noupdate -group uart -expand -group outputs /testbench/dut/uncore/genblk4/uart/OUT2b
|
||||||
|
add wave -noupdate -group uart -expand -group outputs /testbench/dut/uncore/genblk4/uart/INTR
|
||||||
|
add wave -noupdate -group uart -expand -group outputs /testbench/dut/uncore/genblk4/uart/TXRDYb
|
||||||
|
add wave -noupdate -group uart -expand -group outputs /testbench/dut/uncore/genblk4/uart/RXRDYb
|
||||||
|
add wave -noupdate /testbench/dut/uncore/genblk2/plic/pendingPGrouped
|
||||||
|
add wave -noupdate /testbench/dut/uncore/genblk2/plic/intPending
|
||||||
|
add wave -noupdate /testbench/dut/uncore/genblk2/plic/nextIntPending
|
||||||
|
add wave -noupdate /testbench/dut/uncore/genblk2/plic/requests
|
||||||
|
add wave -noupdate /testbench/dut/uncore/genblk2/plic/GPIOIntr
|
||||||
|
add wave -noupdate /testbench/dut/uncore/genblk2/plic/UARTIntr
|
||||||
|
add wave -noupdate /testbench/dut/uncore/genblk4/uart/u/intrpending
|
||||||
TreeUpdate [SetDefaultTree]
|
TreeUpdate [SetDefaultTree]
|
||||||
WaveRestoreCursors {{Cursor 4} {32648010 ns} 0} {{Cursor 5} {11172098 ns} 0} {{Cursor 3} {7672141 ns} 0}
|
WaveRestoreCursors {{Cursor 5} {9729816 ns} 0} {{Cursor 6} {7857655 ns} 0} {{Cursor 7} {7869135 ns} 1} {{Cursor 8} {7868621 ns} 0} {{Cursor 9} {7868621 ns} 0} {{Cursor 10} {7865190 ns} 0} {{Cursor 11} {7867237 ns} 0}
|
||||||
quietly wave cursor active 2
|
quietly wave cursor active 1
|
||||||
configure wave -namecolwidth 250
|
configure wave -namecolwidth 250
|
||||||
configure wave -valuecolwidth 189
|
configure wave -valuecolwidth 189
|
||||||
configure wave -justifyvalue left
|
configure wave -justifyvalue left
|
||||||
@ -321,4 +360,4 @@ configure wave -griddelta 40
|
|||||||
configure wave -timeline 0
|
configure wave -timeline 0
|
||||||
configure wave -timelineunits ns
|
configure wave -timelineunits ns
|
||||||
update
|
update
|
||||||
WaveRestoreZoom {11171939 ns} {11172253 ns}
|
WaveRestoreZoom {9729788 ns} {9730412 ns}
|
||||||
|
15
wally-pipelined/src/cache/ICacheCntrl.sv
vendored
15
wally-pipelined/src/cache/ICacheCntrl.sv
vendored
@ -56,6 +56,8 @@ module ICacheCntrl #(parameter BLOCKLEN = 256) (
|
|||||||
|
|
||||||
// Outputs to pipeline control stuff
|
// Outputs to pipeline control stuff
|
||||||
output logic ICacheStallF, EndFetchState,
|
output logic ICacheStallF, EndFetchState,
|
||||||
|
input logic ITLBMissF,
|
||||||
|
input logic ITLBWriteF,
|
||||||
|
|
||||||
// Signals to/from ahblite interface
|
// Signals to/from ahblite interface
|
||||||
// A read containing the requested data
|
// A read containing the requested data
|
||||||
@ -109,6 +111,8 @@ module ICacheCntrl #(parameter BLOCKLEN = 256) (
|
|||||||
|
|
||||||
|
|
||||||
localparam STATE_INVALIDATE = 18; // *** not sure if invalidate or evict? invalidate by cache block or address?
|
localparam STATE_INVALIDATE = 18; // *** not sure if invalidate or evict? invalidate by cache block or address?
|
||||||
|
localparam STATE_TLB_MISS = 19;
|
||||||
|
|
||||||
|
|
||||||
localparam AHBByteLength = `XLEN / 8;
|
localparam AHBByteLength = `XLEN / 8;
|
||||||
localparam AHBOFFETWIDTH = $clog2(AHBByteLength);
|
localparam AHBOFFETWIDTH = $clog2(AHBByteLength);
|
||||||
@ -209,7 +213,9 @@ module ICacheCntrl #(parameter BLOCKLEN = 256) (
|
|||||||
STATE_READY: begin
|
STATE_READY: begin
|
||||||
PCMux = 2'b00;
|
PCMux = 2'b00;
|
||||||
ICacheReadEn = 1'b1;
|
ICacheReadEn = 1'b1;
|
||||||
if (hit & ~spill) begin
|
if (ITLBMissF) begin
|
||||||
|
NextState = STATE_TLB_MISS;
|
||||||
|
end else if (hit & ~spill) begin
|
||||||
SavePC = 1'b1;
|
SavePC = 1'b1;
|
||||||
ICacheStallF = 1'b0;
|
ICacheStallF = 1'b0;
|
||||||
NextState = STATE_READY;
|
NextState = STATE_READY;
|
||||||
@ -363,6 +369,13 @@ module ICacheCntrl #(parameter BLOCKLEN = 256) (
|
|||||||
ICacheStallF = 1'b0;
|
ICacheStallF = 1'b0;
|
||||||
NextState = STATE_READY;
|
NextState = STATE_READY;
|
||||||
end
|
end
|
||||||
|
STATE_TLB_MISS: begin
|
||||||
|
if (ITLBWriteF) begin
|
||||||
|
NextState = STATE_READY;
|
||||||
|
end else begin
|
||||||
|
NextState = STATE_TLB_MISS;
|
||||||
|
end
|
||||||
|
end
|
||||||
default: begin
|
default: begin
|
||||||
PCMux = 2'b01;
|
PCMux = 2'b01;
|
||||||
NextState = STATE_READY;
|
NextState = STATE_READY;
|
||||||
|
3
wally-pipelined/src/cache/icache.sv
vendored
3
wally-pipelined/src/cache/icache.sv
vendored
@ -43,6 +43,9 @@ module icache
|
|||||||
output logic CompressedF,
|
output logic CompressedF,
|
||||||
// High if the icache is requesting a stall
|
// High if the icache is requesting a stall
|
||||||
output logic ICacheStallF,
|
output logic ICacheStallF,
|
||||||
|
input logic ITLBMissF,
|
||||||
|
input logic ITLBWriteF,
|
||||||
|
|
||||||
// The raw (not decompressed) instruction that was requested
|
// The raw (not decompressed) instruction that was requested
|
||||||
// If this instruction is compressed, upper 16 bits may be the next 16 bits or may be zeros
|
// If this instruction is compressed, upper 16 bits may be the next 16 bits or may be zeros
|
||||||
output logic [31:0] FinalInstrRawF
|
output logic [31:0] FinalInstrRawF
|
||||||
|
@ -51,6 +51,7 @@ module ahblite (
|
|||||||
input logic MemReadM, MemWriteM,
|
input logic MemReadM, MemWriteM,
|
||||||
input logic [`XLEN-1:0] WriteDataM,
|
input logic [`XLEN-1:0] WriteDataM,
|
||||||
input logic [1:0] MemSizeM,
|
input logic [1:0] MemSizeM,
|
||||||
|
//output logic DataStall,
|
||||||
// Signals from MMU
|
// Signals from MMU
|
||||||
/* -----\/----- EXCLUDED -----\/-----
|
/* -----\/----- EXCLUDED -----\/-----
|
||||||
input logic MMUStall,
|
input logic MMUStall,
|
||||||
@ -158,10 +159,10 @@ module ahblite (
|
|||||||
// *** Ross Thompson remove this datastall
|
// *** Ross Thompson remove this datastall
|
||||||
/* -----\/----- EXCLUDED -----\/-----
|
/* -----\/----- EXCLUDED -----\/-----
|
||||||
assign #2 DataStall = ((NextBusState == MEMREAD) || (NextBusState == MEMWRITE) ||
|
assign #2 DataStall = ((NextBusState == MEMREAD) || (NextBusState == MEMWRITE) ||
|
||||||
(NextBusState == ATOMICREAD) || (NextBusState == ATOMICWRITE) ||
|
(NextBusState == ATOMICREAD) || (NextBusState == ATOMICWRITE));
|
||||||
MMUStall);
|
|
||||||
-----/\----- EXCLUDED -----/\----- */
|
-----/\----- EXCLUDED -----/\----- */
|
||||||
|
|
||||||
|
|
||||||
//assign #1 InstrStall = ((NextBusState == INSTRREAD) || (NextBusState == INSTRREADC) ||
|
//assign #1 InstrStall = ((NextBusState == INSTRREAD) || (NextBusState == INSTRREADC) ||
|
||||||
// MMUStall);
|
// MMUStall);
|
||||||
|
|
||||||
|
@ -86,6 +86,7 @@ module lsuArb
|
|||||||
|
|
||||||
logic [1:0] CurrState, NextState;
|
logic [1:0] CurrState, NextState;
|
||||||
logic SelPTW;
|
logic SelPTW;
|
||||||
|
logic HPTWStallD;
|
||||||
|
|
||||||
|
|
||||||
flopr #(2) StateReg(
|
flopr #(2) StateReg(
|
||||||
@ -140,7 +141,12 @@ module lsuArb
|
|||||||
// *** need to rename DcacheStall and Datastall.
|
// *** need to rename DcacheStall and Datastall.
|
||||||
// not clear at all. I think it should be LSUStall from the LSU,
|
// not clear at all. I think it should be LSUStall from the LSU,
|
||||||
// which is demuxed to HPTWStall and CPUDataStall? (not sure on this last one).
|
// which is demuxed to HPTWStall and CPUDataStall? (not sure on this last one).
|
||||||
assign HPTWStall = SelPTW ? DataStall : 1'b1;
|
assign HPTWStallD = SelPTW ? DataStall : 1'b1;
|
||||||
|
flopr #(1) HPTWStallReg (.clk(clk),
|
||||||
|
.reset(reset),
|
||||||
|
.d(HPTWStallD),
|
||||||
|
.q(HPTWStall));
|
||||||
|
|
||||||
assign DCacheStall = SelPTW ? 1'b0 : DataStall; // *** this is probably going to change.
|
assign DCacheStall = SelPTW ? 1'b0 : DataStall; // *** this is probably going to change.
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
@ -164,7 +164,7 @@ module pagetablewalker (
|
|||||||
|
|
||||||
flopenl #(3) mmureg(clk, reset, 1'b1, NextWalkerState, IDLE, WalkerState);
|
flopenl #(3) mmureg(clk, reset, 1'b1, NextWalkerState, IDLE, WalkerState);
|
||||||
|
|
||||||
assign PRegEn = (WalkerState == LEVEL1 || WalkerState == LEVEL0) && ~HPTWStall;
|
assign PRegEn = (WalkerState == LEVEL1_WDV || WalkerState == LEVEL0_WDV) && ~HPTWStall;
|
||||||
|
|
||||||
// State transition logic
|
// State transition logic
|
||||||
always_comb begin
|
always_comb begin
|
||||||
@ -184,13 +184,11 @@ module pagetablewalker (
|
|||||||
else NextWalkerState = FAULT;
|
else NextWalkerState = FAULT;
|
||||||
LEVEL0_WDV: if (HPTWStall) NextWalkerState = LEVEL0_WDV;
|
LEVEL0_WDV: if (HPTWStall) NextWalkerState = LEVEL0_WDV;
|
||||||
else NextWalkerState = LEVEL0;
|
else NextWalkerState = LEVEL0;
|
||||||
LEVEL0: if (ValidPTE && LeafPTE && ~AccessAlert)
|
LEVEL0: if (ValidPTE & LeafPTE & ~AccessAlert)
|
||||||
NextWalkerState = LEAF;
|
NextWalkerState = LEAF;
|
||||||
else NextWalkerState = FAULT;
|
else NextWalkerState = FAULT;
|
||||||
LEAF: if (MMUTranslate) NextWalkerState = LEVEL1_WDV;
|
LEAF: NextWalkerState = IDLE;
|
||||||
else NextWalkerState = IDLE;
|
FAULT: NextWalkerState = IDLE;
|
||||||
FAULT: if (MMUTranslate) NextWalkerState = LEVEL1_WDV;
|
|
||||||
else NextWalkerState = IDLE;
|
|
||||||
// Default case should never happen, but is included for linter.
|
// Default case should never happen, but is included for linter.
|
||||||
default: NextWalkerState = IDLE;
|
default: NextWalkerState = IDLE;
|
||||||
endcase
|
endcase
|
||||||
@ -278,8 +276,8 @@ module pagetablewalker (
|
|||||||
|
|
||||||
flopenl #(4) mmureg(clk, reset, 1'b1, NextWalkerState, IDLE, WalkerState);
|
flopenl #(4) mmureg(clk, reset, 1'b1, NextWalkerState, IDLE, WalkerState);
|
||||||
|
|
||||||
assign PRegEn = (WalkerState == LEVEL1 || WalkerState == LEVEL0 ||
|
assign PRegEn = (WalkerState == LEVEL1_WDV || WalkerState == LEVEL0_WDV ||
|
||||||
WalkerState == LEVEL2 || WalkerState == LEVEL3) && ~HPTWStall;
|
WalkerState == LEVEL2_WDV || WalkerState == LEVEL3_WDV) && ~HPTWStall;
|
||||||
|
|
||||||
always_comb begin
|
always_comb begin
|
||||||
case (WalkerState)
|
case (WalkerState)
|
||||||
@ -329,13 +327,9 @@ module pagetablewalker (
|
|||||||
if (ValidPTE && LeafPTE && ~AccessAlert) NextWalkerState = LEAF;
|
if (ValidPTE && LeafPTE && ~AccessAlert) NextWalkerState = LEAF;
|
||||||
else NextWalkerState = FAULT;
|
else NextWalkerState = FAULT;
|
||||||
|
|
||||||
LEAF: if (MMUTranslate && SvMode == `SV48) NextWalkerState = LEVEL3_WDV;
|
LEAF: NextWalkerState = IDLE;
|
||||||
else if (MMUTranslate && SvMode == `SV39) NextWalkerState = LEVEL2_WDV;
|
|
||||||
else NextWalkerState = IDLE;
|
|
||||||
|
|
||||||
FAULT: if (MMUTranslate && SvMode == `SV48) NextWalkerState = LEVEL3_WDV;
|
FAULT: NextWalkerState = IDLE;
|
||||||
else if (MMUTranslate && SvMode == `SV39) NextWalkerState = LEVEL2_WDV;
|
|
||||||
else NextWalkerState = IDLE;
|
|
||||||
// Default case should never happen, but is included for linter.
|
// Default case should never happen, but is included for linter.
|
||||||
default: NextWalkerState = IDLE;
|
default: NextWalkerState = IDLE;
|
||||||
endcase
|
endcase
|
||||||
|
@ -250,6 +250,7 @@ module wallypipelinedhart
|
|||||||
.HPTWReady(HPTWReadyfromLSU),
|
.HPTWReady(HPTWReadyfromLSU),
|
||||||
.Funct3MfromLSU(Funct3MfromLSU),
|
.Funct3MfromLSU(Funct3MfromLSU),
|
||||||
.StallWfromLSU(StallWfromLSU),
|
.StallWfromLSU(StallWfromLSU),
|
||||||
|
// .DataStall(LSUStall),
|
||||||
.* ); // data cache unit
|
.* ); // data cache unit
|
||||||
|
|
||||||
ahblite ebu(
|
ahblite ebu(
|
||||||
|
Loading…
Reference in New Issue
Block a user