Revert "Core monitor bundle (#1746)" (#1750)

This reverts commit c69607cfd5.
This commit is contained in:
Gleb Gagarin 2018-12-12 20:18:51 -08:00 committed by GitHub
parent dd89f987cb
commit 6eac64c73a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 20 deletions

View File

@ -89,23 +89,6 @@ class RocketCustomCSRs(implicit p: Parameters) extends CustomCSRs with HasRocket
override def decls = super.decls :+ marchid :+ mvendorid :+ mimpid override def decls = super.decls :+ marchid :+ mvendorid :+ mimpid
} }
// this bundle is used to expose some internal core signals
// to verification monitors which sample instruction commits
class CoreMonitorBundle(val xLen: Int) extends Bundle {
val hartid = UInt(width = xLen)
val timer = UInt(width = 32)
val valid = Bool()
val pc = UInt(width = xLen)
val wrdst = UInt(width = 5)
val wrdata = UInt(width = xLen)
val wren = Bool()
val rd0src = UInt(width = 5)
val rd0val = UInt(width = xLen)
val rd1src = UInt(width = 5)
val rd1val = UInt(width = xLen)
val inst = UInt(width = 32)
}
@chiselName @chiselName
class Rocket(tile: RocketTile)(implicit p: Parameters) extends CoreModule()(p) class Rocket(tile: RocketTile)(implicit p: Parameters) extends CoreModule()(p)
with HasRocketCoreParameters with HasRocketCoreParameters
@ -819,10 +802,24 @@ class Rocket(tile: RocketTile)(implicit p: Parameters) extends CoreModule()(p)
val icache_blocked = !(io.imem.resp.valid || RegNext(io.imem.resp.valid)) val icache_blocked = !(io.imem.resp.valid || RegNext(io.imem.resp.valid))
csr.io.counters foreach { c => c.inc := RegNext(perfEvents.evaluate(c.eventSel)) } csr.io.counters foreach { c => c.inc := RegNext(perfEvents.evaluate(c.eventSel)) }
val coreMonitorBundle = Wire(new CoreMonitorBundle(xLen)) class CoreMonitorBundle extends Bundle {
val hartid = UInt(width = hartIdLen)
val time = UInt(width = 32)
val valid = Bool()
val pc = UInt(width = vaddrBitsExtended)
val wrdst = UInt(width = 5)
val wrdata = UInt(width = xLen)
val wren = Bool()
val rd0src = UInt(width = 5)
val rd0val = UInt(width = xLen)
val rd1src = UInt(width = 5)
val rd1val = UInt(width = xLen)
val inst = UInt(width = 32)
}
val coreMonitorBundle = Wire(new CoreMonitorBundle)
coreMonitorBundle.hartid := io.hartid coreMonitorBundle.hartid := io.hartid
coreMonitorBundle.timer := csr.io.time(31,0) coreMonitorBundle.time := csr.io.time(31,0)
coreMonitorBundle.valid := csr.io.trace(0).valid && !csr.io.trace(0).exception coreMonitorBundle.valid := csr.io.trace(0).valid && !csr.io.trace(0).exception
coreMonitorBundle.pc := csr.io.trace(0).iaddr(vaddrBitsExtended-1, 0) coreMonitorBundle.pc := csr.io.trace(0).iaddr(vaddrBitsExtended-1, 0)
coreMonitorBundle.wrdst := Mux(rf_wen && !(wb_set_sboard && wb_wen), rf_waddr, UInt(0)) coreMonitorBundle.wrdst := Mux(rf_wen && !(wb_set_sboard && wb_wen), rf_waddr, UInt(0))
@ -834,6 +831,8 @@ class Rocket(tile: RocketTile)(implicit p: Parameters) extends CoreModule()(p)
coreMonitorBundle.rd1val := Reg(next=Reg(next=ex_rs(1))) coreMonitorBundle.rd1val := Reg(next=Reg(next=ex_rs(1)))
coreMonitorBundle.inst := csr.io.trace(0).insn coreMonitorBundle.inst := csr.io.trace(0).insn
p(BundleMonitorKey).foreach { _ ("rocket_core_monitor", coreMonitorBundle) }
if (enableCommitLog) { if (enableCommitLog) {
val t = csr.io.trace(0) val t = csr.io.trace(0)
val rd = wb_waddr val rd = wb_waddr
@ -862,7 +861,7 @@ class Rocket(tile: RocketTile)(implicit p: Parameters) extends CoreModule()(p)
} }
else { else {
printf("C%d: %d [%d] pc=[%x] W[r%d=%x][%d] R[r%d=%x] R[r%d=%x] inst=[%x] DASM(%x)\n", printf("C%d: %d [%d] pc=[%x] W[r%d=%x][%d] R[r%d=%x] R[r%d=%x] inst=[%x] DASM(%x)\n",
coreMonitorBundle.hartid, coreMonitorBundle.timer, coreMonitorBundle.valid, coreMonitorBundle.hartid, coreMonitorBundle.time, coreMonitorBundle.valid,
coreMonitorBundle.pc, coreMonitorBundle.pc,
coreMonitorBundle.wrdst, coreMonitorBundle.wrdata, coreMonitorBundle.wren, coreMonitorBundle.wrdst, coreMonitorBundle.wrdata, coreMonitorBundle.wren,
coreMonitorBundle.rd0src, coreMonitorBundle.rd0val, coreMonitorBundle.rd0src, coreMonitorBundle.rd0val,

View File

@ -0,0 +1,12 @@
// See LICENSE.Berkeley for license details.
// See LICENSE.SiFive for license details.
package freechips.rocketchip.util
import freechips.rocketchip.config._
import Chisel._
// This key allows to pass a bundle monitor object through parameters
// It does not define acutal implementation
case object BundleMonitorKey extends Field[Option[(String, Bundle) => Unit]] (None)