@@ -34,28 +34,24 @@ class TreeCoreL2() extends Module with AXI4Config with InstConfig {
3434 if2id.io.instIn.addr := pcUnit.io.axi.addr
3535 if2id.io.instIn.data := pcUnit.io.instDataOut
3636 if2id.io.ifFlushIn := ctrlUnit.io.flushIfOut
37-
3837 // id
3938 idUnit.io.inst <> if2id.io.instOut
4039 id2ex.io.instIn <> if2id.io.instOut
4140 ex2ma.io.instIn <> id2ex.io.instOut
4241 maUnit.io.instIn <> ex2ma.io.instOut
4342 ma2wb.io.instIn <> maUnit.io.instOut
44-
43+ //
4544 idUnit.io.id2regfile <> regFileUnit.io.id2regfile
46-
4745 // for load correlation
4846 idUnit.io.exuOperTypeIn := id2ex.io.exAluOperTypeOut
4947 idUnit.io.exuWtAddrIn := id2ex.io.exWtAddrOut
50-
5148 // id to ex
5249 id2ex.io.idAluOperTypeIn := idUnit.io.exuOperTypeOut
5350 id2ex.io.idRsValAIn := idUnit.io.rsValAOut
5451 id2ex.io.idRsValBIn := idUnit.io.rsValBOut
5552 id2ex.io.idWtEnaIn := idUnit.io.wtEnaOut
5653 id2ex.io.idWtAddrIn := idUnit.io.wtAddrOut
5754 id2ex.io.lsuFunc3MSBIn := idUnit.io.lsuFunc3MSBOut
58- id2ex.io.lsuWtEnaIn := idUnit.io.lsuWtEnaOut
5955 id2ex.io.ifFlushIn := ctrlUnit.io.flushIdOut
6056 // ex
6157 execUnit.io.offsetIn := idUnit.io.exuOffsetOut // important!!!
@@ -68,22 +64,14 @@ class TreeCoreL2() extends Module with AXI4Config with InstConfig {
6864 ex2ma.io.wtIn.addr := id2ex.io.exWtAddrOut
6965 ex2ma.io.wtIn.data := execUnit.io.wtDataOut
7066
71- ex2ma.io.lsuFunc3MSBIn := id2ex.io.lsuFunc3MSBOut
72- ex2ma.io.lsuWtEnaIn := id2ex.io.lsuWtEnaOut
73- ex2ma.io.lsuOperTypeIn := execUnit.io.exuOperTypeIn
74- ex2ma.io.lsuValAIn := execUnit.io.rsValAIn
75- ex2ma.io.lsuValBIn := execUnit.io.rsValBIn
76- ex2ma.io.lsuOffsetIn := RegNext (execUnit.io.offsetIn) // important!!
77-
67+ ex2ma.io.lsInstIn.func3MSB := id2ex.io.lsuFunc3MSBOut
68+ ex2ma.io.lsInstIn.operType := execUnit.io.exuOperTypeIn
69+ ex2ma.io.lsInstIn.valA := execUnit.io.rsValAIn
70+ ex2ma.io.lsInstIn.valB := execUnit.io.rsValBIn
71+ ex2ma.io.lsInstIn.offset := RegNext (execUnit.io.offsetIn) // important!!
7872 // ma
79- maUnit.io.memFunc3MSBIn := ex2ma.io.lsuFunc3MSBOut
80- maUnit.io.memOperTypeIn := ex2ma.io.lsuOperTypeOut
81- maUnit.io.memValAIn := ex2ma.io.lsuValAOut
82- maUnit.io.memValBIn := ex2ma.io.lsuValBOut
83- maUnit.io.memOffsetIn := ex2ma.io.lsuOffsetOut
84-
85- maUnit.io.wtIn <> ex2ma.io.wtOut
86- ex2ma.io.lsuWtEnaOut := DontCare
73+ maUnit.io.wtIn <> ex2ma.io.wtOut
74+ maUnit.io.lsInstIn <> ex2ma.io.lsInstOut
8775
8876 // ma to wb
8977 ma2wb.io.wtIn <> maUnit.io.wtOut
@@ -95,26 +83,22 @@ class TreeCoreL2() extends Module with AXI4Config with InstConfig {
9583 regFileUnit.io.wtIn <> ma2wb.io.wtOut
9684
9785 // forward control unit
98- // forwardUnit.io.exIn <> ex2ma.io.wtIn
9986 forwardUnit.io.exIn.ena := ex2ma.io.wtIn.ena
10087 forwardUnit.io.exIn.addr := ex2ma.io.wtIn.addr
10188 forwardUnit.io.exIn.data := ex2ma.io.wtIn.data
10289
10390 // maDataIn only come from regfile and imm
10491 // maDataOut have right data include load/store inst and alu calc
105- forwardUnit.io.maIn.ena := ma2wb.io.wtIn.ena
106- forwardUnit.io.maIn.addr := ma2wb.io.wtIn.addr
107- forwardUnit.io.maIn.data := ma2wb.io.wtIn.data
108-
92+ forwardUnit.io.maIn <> maUnit.io.wtOut
10993 forwardUnit.io.idRdEnaAIn := idUnit.io.id2regfile.rdA.ena
11094 forwardUnit.io.idRdAddrAIn := idUnit.io.id2regfile.rdA.addr
95+ idUnit.io.fwRsEnaAIn := forwardUnit.io.fwRsEnaAOut
96+ idUnit.io.fwRsValAIn := forwardUnit.io.fwRsValAOut
97+
11198 forwardUnit.io.idRdEnaBIn := idUnit.io.id2regfile.rdB.ena
11299 forwardUnit.io.idRdAddrBIn := idUnit.io.id2regfile.rdB.addr
113-
114- idUnit.io.fwRsEnaAIn := forwardUnit.io.fwRsEnaAOut
115- idUnit.io.fwRsValAIn := forwardUnit.io.fwRsValAOut
116- idUnit.io.fwRsEnaBIn := forwardUnit.io.fwRsEnaBOut
117- idUnit.io.fwRsValBIn := forwardUnit.io.fwRsValBOut
100+ idUnit.io.fwRsEnaBIn := forwardUnit.io.fwRsEnaBOut
101+ idUnit.io.fwRsValBIn := forwardUnit.io.fwRsValBOut
118102
119103 // branch and load/store control
120104 ctrlUnit.io.excpJumpInfo <> csrUnit.io.excpJumpInfo
@@ -235,10 +219,10 @@ class TreeCoreL2() extends Module with AXI4Config with InstConfig {
235219 // printf(p"[csr]io.debugMstatus = 0x${Hexadecimal(csrUnit.io.debugMstatus)}\n")
236220 // printf(p"[ex]io.wtDataOut = 0x${Hexadecimal(execUnit.io.wtDataOut)}\n")
237221
238- // printf(p"[ma]io.memOperTypeIn = 0x${Hexadecimal(maUnit.io.memOperTypeIn )}\n")
239- // printf(p"[ma]io.memValAIn = 0x${Hexadecimal(maUnit.io.memValAIn )}\n")
240- // printf(p"[ma]io.memValBIn = 0x${Hexadecimal(maUnit.io.memValBIn )}\n")
241- // printf(p"[ma]io.memOffsetIn = 0x${Hexadecimal(maUnit.io.memOffsetIn )}\n")
222+ // printf(p"[ma]io.lsInstIn.operType = 0x${Hexadecimal(maUnit.io.lsInstIn.operType )}\n")
223+ // printf(p"[ma]io.lsInstIn.valA = 0x${Hexadecimal(maUnit.io.lsInstIn.valA )}\n")
224+ // printf(p"[ma]io.lsInstIn.valB = 0x${Hexadecimal(maUnit.io.lsInstIn.valB )}\n")
225+ // printf(p"[ma]io.lsInstIn.offset = 0x${Hexadecimal(maUnit.io.lsInstIn.offset )}\n")
242226 // printf(p"[ma]io.axi.addr = 0x${Hexadecimal(maUnit.io.axi.addr)}\n")
243227 // printf(p"[ma]io.axi.wdata = 0x${Hexadecimal(maUnit.io.axi.wdata)}\n")
244228 // printf(p"[ma]io.axi.size = 0x${Hexadecimal(maUnit.io.axi.size)}\n")
0 commit comments