xref: /XiangShan/src/main/scala/xiangshan/backend/fu/NewCSR/CommitIDModule.scala (revision 844fba5b86d00c2ec233eddeffc3d637862575fd)
1*844fba5bSXuan Hupackage xiangshan.backend.fu.NewCSR
2*844fba5bSXuan Hu
3*844fba5bSXuan Huimport chisel3._
4*844fba5bSXuan Hu
5*844fba5bSXuan Huimport java.util.Properties
6*844fba5bSXuan Hu
7*844fba5bSXuan Huclass CommitIDModule(shaWidth: Int) extends Module {
8*844fba5bSXuan Hu  val io = IO(new Bundle {
9*844fba5bSXuan Hu    val commitID = Output(UInt(shaWidth.W))
10*844fba5bSXuan Hu    val dirty    = Output(Bool())
11*844fba5bSXuan Hu  })
12*844fba5bSXuan Hu
13*844fba5bSXuan Hu  val props = new Properties()
14*844fba5bSXuan Hu  props.load((os.resource / "gitStatus").getInputStream)
15*844fba5bSXuan Hu
16*844fba5bSXuan Hu  val sha = props.get("SHA").asInstanceOf[String].take(shaWidth / 4)
17*844fba5bSXuan Hu  val dirty = props.get("dirty").asInstanceOf[String].toInt
18*844fba5bSXuan Hu
19*844fba5bSXuan Hu  println(s"[CommitIDModule] SHA=$sha")
20*844fba5bSXuan Hu  println(s"[CommitIDModule] dirty=$dirty")
21*844fba5bSXuan Hu
22*844fba5bSXuan Hu  io.commitID := BigInt(sha, 16).U(shaWidth.W)
23*844fba5bSXuan Hu  io.dirty := dirty.U
24*844fba5bSXuan Hu}
25