feat(csr): 增加debug用csr

This commit is contained in:
Liphen 2023-11-30 14:02:43 +08:00
parent ea283c3f20
commit 10b720d322
2 changed files with 17 additions and 11 deletions

View File

@ -249,7 +249,9 @@ trait HasCSRConst {
// 0xB80 - 0x89F are also used as perfcnt csr // 0xB80 - 0x89F are also used as perfcnt csr
// Machine Counter Setup (not implemented) // Machine Counter Setup (not implemented)
// Debug/Trace Registers (shared with Debug Mode) (not implemented) // Debug/Trace Registers (shared with Debug Mode) (simply implemented)
val Tselect = 0x7a0
val Tdata1 = 0x7a1
// Debug Mode Registers (not implemented) // Debug Mode Registers (not implemented)
def privEcall = 0x000.U def privEcall = 0x000.U

View File

@ -168,7 +168,7 @@ class Csr(implicit val config: CpuConfig) extends Module with HasCSRConst {
MaskedRegMap(Mepc, mepc), MaskedRegMap(Mepc, mepc),
MaskedRegMap(Mcause, mcause), MaskedRegMap(Mcause, mcause),
MaskedRegMap(Mtval, mtval), MaskedRegMap(Mtval, mtval),
MaskedRegMap(Mip, mip.asUInt, 0.U, MaskedRegMap.Unwritable) MaskedRegMap(Mip, mip.asUInt, 0.U, MaskedRegMap.Unwritable),
// Machine Memory Protection // Machine Memory Protection
// MaskedRegMap(Pmpcfg0, pmpcfg0), // MaskedRegMap(Pmpcfg0, pmpcfg0),
// MaskedRegMap(Pmpcfg1, pmpcfg1), // MaskedRegMap(Pmpcfg1, pmpcfg1),
@ -178,6 +178,10 @@ class Csr(implicit val config: CpuConfig) extends Module with HasCSRConst {
// MaskedRegMap(PmpaddrBase + 1, pmpaddr1, pmpaddrWmask), // MaskedRegMap(PmpaddrBase + 1, pmpaddr1, pmpaddrWmask),
// MaskedRegMap(PmpaddrBase + 2, pmpaddr2, pmpaddrWmask), // MaskedRegMap(PmpaddrBase + 2, pmpaddr2, pmpaddrWmask),
// MaskedRegMap(PmpaddrBase + 3, pmpaddr3, pmpaddrWmask) // MaskedRegMap(PmpaddrBase + 3, pmpaddr3, pmpaddrWmask)
// Debug/Trace Registers (shared with Debug Mode)
MaskedRegMap(Tselect, tselect, 0.U, MaskedRegMap.Unwritable), // 用于通过 risc-v test
MaskedRegMap(Tdata1, tdata1, 0.U, MaskedRegMap.Unwritable)
) //++ perfCntsLoMapping ) //++ perfCntsLoMapping
val priv_mode = RegInit(Priv.m) // 当前特权模式 val priv_mode = RegInit(Priv.m) // 当前特权模式
@ -210,15 +214,15 @@ class Csr(implicit val config: CpuConfig) extends Module with HasCSRConst {
val mem_valid = mem_inst_info.valid val mem_valid = mem_inst_info.valid
val mem_addr = mem_inst(31, 20) val mem_addr = mem_inst(31, 20)
// 不带前缀的信号为exe阶段的信号 // 不带前缀的信号为exe阶段的信号
val valid = io.executeUnit.in.valid val valid = io.executeUnit.in.valid
val op = io.executeUnit.in.inst_info.op val op = io.executeUnit.in.inst_info.op
val fusel = io.executeUnit.in.inst_info.fusel val fusel = io.executeUnit.in.inst_info.fusel
val addr = io.executeUnit.in.inst_info.inst(31, 20) val addr = io.executeUnit.in.inst_info.inst(31, 20)
val rdata = Wire(UInt(XLEN.W)) val rdata = Wire(UInt(XLEN.W))
val src1 = io.executeUnit.in.src_info.src1_data val src1 = io.executeUnit.in.src_info.src1_data
val csri = ZeroExtend(io.executeUnit.in.inst_info.inst(19, 15), XLEN) val csri = ZeroExtend(io.executeUnit.in.inst_info.inst(19, 15), XLEN)
val exe_stall = io.ctrl.exe_stall val exe_stall = io.ctrl.exe_stall
val mem_stall = io.ctrl.mem_stall val mem_stall = io.ctrl.mem_stall
val wdata = LookupTree( val wdata = LookupTree(
op, op,
List( List(