1package xiangshan.backend.regfile 2 3import chisel3._ 4import chisel3.util._ 5import xiangshan._ 6 7class RfReadPort extends XSBundle { 8 val addr = Input(UInt(PhyRegIdxWidth.W)) 9 val data = Output(UInt(XLEN.W)) 10} 11 12class RfWritePort extends XSBundle { 13 val wen = Input(Bool()) 14 val addr = Input(UInt(PhyRegIdxWidth.W)) 15 val data = Input(UInt(XLEN.W)) 16} 17 18class Regfile 19( 20 numReadPorts: Int, 21 numWirtePorts: Int, 22 hasZero: Boolean 23) extends XSModule with NeedImpl { 24 val io = IO(new Bundle() { 25 val readPorts = Vec(numReadPorts, new RfReadPort) 26 val writePorts = Vec(numWirtePorts, new RfWritePort) 27 }) 28} 29