style(cache): use next addr信号名修改
This commit is contained in:
parent
51debc4d27
commit
c112df3e35
|
@ -137,16 +137,17 @@ class DCache(cacheConfig: CacheConfig)(implicit config: CpuConfig) extends Modul
|
||||||
val ar_handshake = RegInit(false.B)
|
val ar_handshake = RegInit(false.B)
|
||||||
val aw_handshake = RegInit(false.B)
|
val aw_handshake = RegInit(false.B)
|
||||||
|
|
||||||
val should_next_addr = (state === s_idle && !tlb_fill) || (state === s_wait)
|
// 是否使用exe的地址进行提前访存
|
||||||
//
|
val use_next_addr = (state === s_idle && !tlb_fill) || (state === s_wait)
|
||||||
val data_raddr = Mux(victim.valid, victim_addr, Mux(should_next_addr, exe_addr, bank_addr))
|
|
||||||
|
val data_raddr = Mux(victim.valid, victim_addr, Mux(use_next_addr, exe_addr, bank_addr))
|
||||||
val replace_wstrb = Wire(Vec(nway, UInt(AXI_STRB_WID.W)))
|
val replace_wstrb = Wire(Vec(nway, UInt(AXI_STRB_WID.W)))
|
||||||
val replace_waddr = Mux(victim.valid, victim.waddr, bank_addr)
|
val replace_waddr = Mux(victim.valid, victim.waddr, bank_addr)
|
||||||
val replace_wdata = Mux(state === s_replace, io.axi.r.bits.data, io.cpu.wdata)
|
val replace_wdata = Mux(state === s_replace, io.axi.r.bits.data, io.cpu.wdata)
|
||||||
|
|
||||||
val replace_way = lru(index)
|
val replace_way = lru(index)
|
||||||
|
|
||||||
val tag_raddr = Mux(victim.valid, victim.index, Mux(should_next_addr, exe_addr, index))
|
val tag_raddr = Mux(victim.valid, victim.index, Mux(use_next_addr, exe_addr, index))
|
||||||
val tag_wstrb = RegInit(VecInit(Seq.fill(nway)(false.B)))
|
val tag_wstrb = RegInit(VecInit(Seq.fill(nway)(false.B)))
|
||||||
val tag_wdata = RegInit(0.U(tagWidth.W))
|
val tag_wdata = RegInit(0.U(tagWidth.W))
|
||||||
|
|
||||||
|
|
|
@ -84,14 +84,14 @@ class ICache(cacheConfig: CacheConfig)(implicit config: CpuConfig) extends Modul
|
||||||
val valid = RegInit(VecInit(Seq.fill(nway)(VecInit(Seq.fill(nindex)(false.B)))))
|
val valid = RegInit(VecInit(Seq.fill(nway)(VecInit(Seq.fill(nindex)(false.B)))))
|
||||||
|
|
||||||
// * should choose next addr * //
|
// * should choose next addr * //
|
||||||
val should_next_addr = (state === s_idle && !tlb_fill) || (state === s_wait)
|
val use_next_addr = (state === s_idle && !tlb_fill) || (state === s_wait)
|
||||||
|
|
||||||
// 读取一个cache条目中的所有bank行
|
// 读取一个cache条目中的所有bank行
|
||||||
val data = Wire(Vec(nway, Vec(nbank, Vec(instBlocksPerBank, UInt(AXI_DATA_WID.W)))))
|
val data = Wire(Vec(nway, Vec(nbank, Vec(instBlocksPerBank, UInt(AXI_DATA_WID.W)))))
|
||||||
val data_rindex = io.cpu.addr(should_next_addr)(indexWidth + offsetWidth - 1, offsetWidth)
|
val data_rindex = io.cpu.addr(use_next_addr)(indexWidth + offsetWidth - 1, offsetWidth)
|
||||||
|
|
||||||
val tag = RegInit(VecInit(Seq.fill(nway)(0.U(tagWidth.W))))
|
val tag = RegInit(VecInit(Seq.fill(nway)(0.U(tagWidth.W))))
|
||||||
val tag_raddr = io.cpu.addr(should_next_addr)(indexWidth + offsetWidth - 1, offsetWidth)
|
val tag_raddr = io.cpu.addr(use_next_addr)(indexWidth + offsetWidth - 1, offsetWidth)
|
||||||
val tag_wstrb = RegInit(VecInit(Seq.fill(nway)(false.B)))
|
val tag_wstrb = RegInit(VecInit(Seq.fill(nway)(false.B)))
|
||||||
val tag_wdata = RegInit(0.U(tagWidth.W))
|
val tag_wdata = RegInit(0.U(tagWidth.W))
|
||||||
|
|
||||||
|
@ -213,7 +213,7 @@ class ICache(cacheConfig: CacheConfig)(implicit config: CpuConfig) extends Modul
|
||||||
rready <> io.axi.r.ready
|
rready <> io.axi.r.ready
|
||||||
|
|
||||||
val acc_err = RegInit(false.B)
|
val acc_err = RegInit(false.B)
|
||||||
val addr_err = io.cpu.addr(should_next_addr)(XLEN - 1, PADDR_WID).orR
|
val addr_err = io.cpu.addr(use_next_addr)(XLEN - 1, PADDR_WID).orR
|
||||||
|
|
||||||
when(acc_err) { acc_err := false.B }
|
when(acc_err) { acc_err := false.B }
|
||||||
io.cpu.acc_err := acc_err //TODO:实现cached段中的访存错误
|
io.cpu.acc_err := acc_err //TODO:实现cached段中的访存错误
|
||||||
|
|
Loading…
Reference in New Issue