Skip to content

Commit 119fbb1

Browse files
committed
style: modify some statement in csr reg
1 parent 8835e00 commit 119fbb1

File tree

3 files changed

+55
-43
lines changed

3 files changed

+55
-43
lines changed

rtl/tc_l2/src/main/scala/common/InstConfig.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,6 @@ trait InstConfig {
129129
val mipAddr = 0x344.U(CSRAddrLen.W)
130130
val mcycleAddr = 0xb00.U(CSRAddrLen.W)
131131
val medelegAddr = 0x302.U(CSRAddrLen.W)
132+
val timeCause = "h8000_0000_0000_0007".U(XLen.W)
133+
val ecallCause = "h0000_0000_0000_000b".U(XLen.W)
132134
}

rtl/tc_l2/src/main/scala/core/exec/BEU.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ class BEU extends Module with InstConfig {
5252
io.isa,
5353
(io.pc + io.imm), // NOTE: branch target
5454
Seq(
55-
instJAL -> (io.pc + io.imm),
56-
instJALR -> (io.src1 + io.imm),
55+
instJAL -> (io.pc + io.imm),
56+
instJALR -> (io.src1 + io.imm)
5757
)
5858
)
5959

rtl/tc_l2/src/main/scala/core/exec/CSRReg.scala

Lines changed: 51 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@ import difftest._
66

77
import treecorel2.common.InstConfig
88

9-
object CSRReg {
10-
val timeCause = "h8000_0000_0000_0007".U(64.W)
11-
val ecallCause = "h0000_0000_0000_000b".U(64.W)
12-
}
13-
149
class CSRReg extends Module with InstConfig {
1510
val io = IO(new Bundle {
1611
val globalEn = Input(Bool())
@@ -24,18 +19,6 @@ class CSRReg extends Module with InstConfig {
2419
val csrState = Flipped(new DiffCSRStateIO)
2520
})
2621

27-
protected val csrrwVis = (io.inst === BitPat("b????????????_?????_001_?????_1110011"))
28-
protected val csrrwiVis = (io.inst === BitPat("b????????????_?????_101_?????_1110011"))
29-
protected val csrrsVis = (io.inst === BitPat("b????????????_?????_010_?????_1110011"))
30-
protected val csrrsiVis = (io.inst === BitPat("b????????????_?????_110_?????_1110011"))
31-
protected val csrrcVis = (io.inst === BitPat("b????????????_?????_011_?????_1110011"))
32-
protected val csrrciVis = (io.inst === BitPat("b????????????_?????_111_?????_1110011"))
33-
protected val csrVis = csrrcVis || csrrciVis || csrrsVis || csrrsiVis || csrrwVis || csrrwiVis
34-
protected val mretVis = (io.inst === BitPat("b001100000010_00000_000_00000_1110011"))
35-
protected val ecallVis = (io.inst === BitPat("b000000000000_00000_000_00000_1110011"))
36-
protected val zimm = ZeroExt(io.inst(19, 15), XLen)
37-
protected val addr = io.inst(31, 20)
38-
3922
protected val mcycle = RegInit(0.U(XLen.W))
4023
protected val mstatus = RegInit(0.U(XLen.W))
4124
protected val mtvec = RegInit(0.U(XLen.W))
@@ -47,6 +30,24 @@ class CSRReg extends Module with InstConfig {
4730
protected val medeleg = RegInit(0.U(XLen.W))
4831
protected val mhartid = RegInit(0.U(XLen.W))
4932

33+
protected val csrVis = MuxLookup(
34+
io.inst,
35+
false.B,
36+
Seq(
37+
instCSRRW -> true.B,
38+
instCSRRWI -> true.B,
39+
instCSRRS -> true.B,
40+
instCSRRSI -> true.B,
41+
instCSRRC -> true.B,
42+
instCSRRCI -> true.B
43+
)
44+
)
45+
46+
protected val mretVis = io.inst === instMRET
47+
protected val ecallVis = io.inst === instECALL
48+
protected val zimm = ZeroExt(io.inst(19, 15), XLen)
49+
protected val addr = io.inst(31, 20)
50+
5051
protected val mhartidVis = addr === mhartidAddr
5152
protected val mstatusVis = addr === mstatusAddr
5253
protected val mieVis = addr === mieAddr
@@ -58,18 +59,22 @@ class CSRReg extends Module with InstConfig {
5859
protected val mcycleVis = addr === mcycleAddr
5960
protected val medelegVis = addr === medelegAddr
6061

61-
protected val mcycleVal = Mux(csrVis && mcycleVis, mcycle, 0.U)
62-
protected val mstatusVal = Mux(csrVis && mstatusVis, mstatus, 0.U)
63-
protected val mtvecVal = Mux(csrVis && mtvecVis, mtvec, 0.U)
64-
protected val mcauseVal = Mux(csrVis && mcauseVis, mcause, 0.U)
65-
protected val mepcVal = Mux(csrVis && mepcVis, mepc, 0.U)
66-
protected val mieVal = Mux(csrVis && mieVis, mie, 0.U)
67-
protected val mipVal = Mux(csrVis && mipVis, mip, 0.U)
68-
protected val mscratchVal = Mux(csrVis && mscratchVis, mscratch, 0.U)
69-
protected val medelegVal = Mux(csrVis && medelegVis, medeleg, 0.U)
70-
protected val mhartidVal = Mux(csrVis && mhartidVis, mhartid, 0.U)
71-
protected val rdVal = mcycleVal | mstatusVal | mtvecVal | mcauseVal | mepcVal | mieVal | mipVal |
72-
mscratchVal | medelegVal | mhartidVal
62+
protected val rdVal = MuxLookup(
63+
addr,
64+
0.U(XLen.W),
65+
Seq(
66+
mhartidAddr -> Mux(csrVis, mhartid, 0.U),
67+
mstatusAddr -> Mux(csrVis, mstatus, 0.U),
68+
mieAddr -> Mux(csrVis, mie, 0.U),
69+
mtvecAddr -> Mux(csrVis, mtvec, 0.U),
70+
mscratchAddr -> Mux(csrVis, mscratch, 0.U),
71+
mepcAddr -> Mux(csrVis, mepc, 0.U),
72+
mcauseAddr -> Mux(csrVis, mcause, 0.U),
73+
mipAddr -> Mux(csrVis, mip, 0.U),
74+
mcycleAddr -> Mux(csrVis, mcycle, 0.U),
75+
medelegAddr -> Mux(csrVis, medeleg, 0.U)
76+
)
77+
)
7378

7479
protected val MIE = mstatus(3)
7580
protected val MPIE = mstatus(7)
@@ -83,15 +88,20 @@ class CSRReg extends Module with InstConfig {
8388
io.timeIntrEn := timeIntrEn
8489
io.ecallEn := ecallEn
8590

86-
protected val rcData = SignExt(csrrcVis.asUInt, 64) & (rdVal & ~io.src)
87-
protected val rciData = SignExt(csrrciVis.asUInt, 64) & (rdVal & ~zimm)
88-
protected val rsData = SignExt(csrrsVis.asUInt, 64) & (rdVal | io.src)
89-
protected val rsiData = SignExt(csrrsiVis.asUInt, 64) & (rdVal | zimm)
90-
protected val rwData = SignExt(csrrwVis.asUInt, 64) & (io.src)
91-
protected val rwiData = SignExt(csrrwiVis.asUInt, 64) & (zimm)
92-
protected val wData = rcData | rciData | rsData | rsiData | rwData | rwiData
93-
94-
protected val SD = wData(16, 15) === 3.U || wData(14, 13) === 3.U
91+
protected val wData = MuxLookup(
92+
io.inst,
93+
0.U(XLen.W),
94+
Seq(
95+
instCSRRC -> (rdVal & ~io.src),
96+
instCSRRCI -> (rdVal & ~zimm),
97+
instCSRRS -> (rdVal | io.src),
98+
instCSRRSI -> (rdVal | zimm),
99+
instCSRRW -> (io.src),
100+
instCSRRWI -> (zimm)
101+
)
102+
)
103+
104+
protected val sdBits = wData(16, 15) === 3.U || wData(14, 13) === 3.U
95105
protected val nop3 = 0.U(3.W)
96106
protected val trapStatus = Cat(mstatus(63, 13), 3.U(2.W), nop3, MIE, nop3, 0.U(1.W), nop3)
97107
protected val mretStatus = Cat(mstatus(63, 13), 0.U(2.W), nop3, 1.U(1.W), nop3, MPIE, nop3)
@@ -108,7 +118,7 @@ class CSRReg extends Module with InstConfig {
108118
}.elsewhen(mretVis) {
109119
mstatus := mretStatus
110120
}.elsewhen(csrVis && mstatusVis) {
111-
mstatus := Cat(SD.asUInt, wData(62, 0))
121+
mstatus := Cat(sdBits.asUInt, wData(62, 0))
112122
}
113123

114124
when(csrVis && mtvecVis) { mtvec := wData }
@@ -120,9 +130,9 @@ class CSRReg extends Module with InstConfig {
120130
}
121131

122132
when(timeIntrEn) {
123-
mcause := CSRReg.timeCause
133+
mcause := timeCause
124134
}.elsewhen(ecallEn) {
125-
mcause := CSRReg.ecallCause
135+
mcause := ecallCause
126136
}.elsewhen(csrVis && mcauseVis) {
127137
mcause := wData
128138
}

0 commit comments

Comments
 (0)