fix(exe): 修复mem addr错误

This commit is contained in:
Liphen 2023-11-27 14:55:04 +08:00
parent 4c8b004029
commit 53860c99c6
2 changed files with 24 additions and 20 deletions

View File

@ -47,9 +47,11 @@ class DCache(implicit config: CpuConfig) extends Module {
io.axi.aw.cache := 0.U
val wvalid = RegInit(false.B)
val wdata = RegInit(0.U(XLEN.W))
val wstrb = RegInit(0.U(4.W))
io.axi.w.id := 1.U
io.axi.w.data := 0.U
io.axi.w.strb := 0.U
io.axi.w.data := wdata
io.axi.w.strb := wstrb
io.axi.w.last := 1.U
io.axi.w.valid := wvalid
@ -57,16 +59,18 @@ class DCache(implicit config: CpuConfig) extends Module {
val araddr = RegInit(0.U(32.W))
val arsize = RegInit(0.U(3.W))
val arlen = RegInit(0.U(8.W))
val arvalid = RegInit(false.B)
io.axi.ar.id := 1.U
io.axi.ar.addr := araddr
io.axi.ar.len := 0.U
io.axi.ar.len := arlen
io.axi.ar.size := arsize
io.axi.ar.burst := BURST_INCR.U
val arvalid = RegInit(false.B)
io.axi.ar.valid := arvalid
io.axi.ar.prot := 0.U
io.axi.ar.cache := 0.U
io.axi.ar.lock := 0.U
val rready = RegInit(false.B)
io.axi.r.ready := rready
@ -88,13 +92,13 @@ class DCache(implicit config: CpuConfig) extends Module {
awaddr := io.cpu.addr(31, 0)
awsize := Cat(false.B, io.cpu.size)
awvalid := true.B
io.axi.w.data := io.cpu.wdata
io.axi.w.strb := wstrb_gen
wdata := io.cpu.wdata
wstrb := wstrb_gen
wvalid := true.B
status := s_writeback
}.otherwise {
araddr := io.cpu.addr(31, 0)
io.axi.ar.size := Cat(false.B, io.cpu.size)
arsize := Cat(false.B, io.cpu.size)
arvalid := true.B
rready := true.B
status := s_uncached

View File

@ -44,8 +44,8 @@ class ExeAccessMemCtrl(implicit val config: CpuConfig) extends Module {
)
)
val mem_addr = Wire(Vec(config.fuNum, UInt(DATA_ADDR_WID.W)))
mem_addr(0) := io.inst(0).src_info.src1_data + io.inst(0).src_info.src2_data
mem_addr(1) := io.inst(1).src_info.src1_data + io.inst(1).src_info.src2_data
mem_addr(0) := io.inst(0).src_info.src1_data + io.inst(0).inst_info.imm
mem_addr(1) := io.inst(1).src_info.src1_data + io.inst(1).inst_info.imm
io.mem.out.addr := Mux1H(
Seq(
(io.inst(0).inst_info.fusel === FuType.lsu) -> mem_addr(0),