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