remove nondeterminism
This commit is contained in:
		| @@ -412,7 +412,13 @@ class Control(implicit conf: RocketConfiguration) extends Module | ||||
|   val id_csr_en = id_csr != CSR.N | ||||
|   val id_csr_fp = Bool(!conf.fpu.isEmpty) && id_csr_en && DecodeLogic(id_csr_addr, fp_csrs, CSRs.all.toSet -- fp_csrs) | ||||
|   val id_csr_wen = id_raddr1 != UInt(0) || !Vec(CSR.S, CSR.C).contains(id_csr) | ||||
|   val id_csr_invalid = id_csr_en && !Vec(legal_csrs.map(UInt(_))).contains(id_csr_addr) | ||||
|  | ||||
|   val legal_uint_csrs = new scala.collection.mutable.ArrayBuffer[Bits] | ||||
|   for (csr <- legal_csrs) { | ||||
|     legal_uint_csrs += UInt(csr) | ||||
|   } | ||||
|  | ||||
|   val id_csr_invalid = id_csr_en && !Vec(legal_uint_csrs).contains(id_csr_addr) | ||||
|   val id_csr_privileged = id_csr_en && | ||||
|     (id_csr_addr(11,10) === UInt(3) && id_csr_wen || | ||||
|      id_csr_addr(11,10) === UInt(2) || | ||||
|   | ||||
| @@ -243,7 +243,12 @@ class CSRFile(implicit conf: RocketConfiguration) extends Module | ||||
|   for (i <- 0 until reg_uarch_counters.size) | ||||
|     read_mapping += (CSRs.uarch0 + i) -> reg_uarch_counters(i) | ||||
|  | ||||
|   io.rw.rdata := Mux1H(for ((k, v) <- read_mapping) yield decoded_addr(k) -> v) | ||||
|   val decoded_mapping = new scala.collection.mutable.ArrayBuffer[(Bool, Bits)] | ||||
|   for ((k, v) <- read_mapping) { | ||||
|     decoded_mapping += ((decoded_addr(k), v)) | ||||
|   } | ||||
|  | ||||
|   io.rw.rdata := Mux1H(decoded_mapping) | ||||
|  | ||||
|   io.fcsr_rm := reg_frm | ||||
|   when (io.fcsr_flags.valid) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user