xref: /XiangShan/src/main/scala/xiangshan/backend/regfile/Regfile.scala (revision 5844fcf02181bcf3a22ac080465d35f0ecc1d0e2)
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