don't use Scala to Chisel implicit conversions outside of rocket
This commit is contained in:
parent
9910c69c67
commit
ab3219cf6e
@ -148,7 +148,7 @@ abstract class BaseCoreplexModule[+L <: BaseCoreplex, +B <: BaseCoreplexBundle](
|
|||||||
tile.interrupts.meip := plic.io.harts(plic.cfg.context(i, 'M'))
|
tile.interrupts.meip := plic.io.harts(plic.cfg.context(i, 'M'))
|
||||||
tile.interrupts.seip.foreach(_ := plic.io.harts(plic.cfg.context(i, 'S')))
|
tile.interrupts.seip.foreach(_ := plic.io.harts(plic.cfg.context(i, 'S')))
|
||||||
tile.interrupts.debug := debugModule.io.debugInterrupts(i)
|
tile.interrupts.debug := debugModule.io.debugInterrupts(i)
|
||||||
tile.hartid := i
|
tile.hartid := UInt(i)
|
||||||
tile.resetVector := io.resetVector
|
tile.resetVector := io.resetVector
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ package rocket
|
|||||||
|
|
||||||
import Chisel._
|
import Chisel._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import cde.Parameters
|
import cde.Parameters
|
||||||
|
|
||||||
class BPControl(implicit p: Parameters) extends CoreBundle()(p) {
|
class BPControl(implicit p: Parameters) extends CoreBundle()(p) {
|
||||||
|
@ -5,6 +5,7 @@ package rocket
|
|||||||
import Chisel._
|
import Chisel._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import uncore.agents.PseudoLRU
|
import uncore.agents.PseudoLRU
|
||||||
|
|
||||||
case object BtbKey extends Field[BtbParameters]
|
case object BtbKey extends Field[BtbParameters]
|
||||||
|
@ -7,6 +7,7 @@ import Instructions._
|
|||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
import uncore.devices._
|
import uncore.devices._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import junctions.AddrMap
|
import junctions.AddrMap
|
||||||
|
|
||||||
class MStatus extends Bundle {
|
class MStatus extends Bundle {
|
||||||
@ -259,7 +260,7 @@ class CSRFile(implicit p: Parameters) extends CoreModule()(p)
|
|||||||
val s_interrupts = Mux(!reg_debug && (reg_mstatus.prv < PRV.S || (reg_mstatus.prv === PRV.S && reg_mstatus.sie)), pending_interrupts & reg_mideleg, UInt(0))
|
val s_interrupts = Mux(!reg_debug && (reg_mstatus.prv < PRV.S || (reg_mstatus.prv === PRV.S && reg_mstatus.sie)), pending_interrupts & reg_mideleg, UInt(0))
|
||||||
val all_interrupts = m_interrupts | s_interrupts
|
val all_interrupts = m_interrupts | s_interrupts
|
||||||
val interruptMSB = BigInt(1) << (xLen-1)
|
val interruptMSB = BigInt(1) << (xLen-1)
|
||||||
val interruptCause = interruptMSB + PriorityEncoder(all_interrupts)
|
val interruptCause = UInt(interruptMSB) + PriorityEncoder(all_interrupts)
|
||||||
io.interrupt := all_interrupts.orR && !io.singleStep || reg_singleStepped
|
io.interrupt := all_interrupts.orR && !io.singleStep || reg_singleStepped
|
||||||
io.interrupt_cause := interruptCause
|
io.interrupt_cause := interruptCause
|
||||||
io.bp := reg_bp take nBreakpoints
|
io.bp := reg_bp take nBreakpoints
|
||||||
@ -267,7 +268,7 @@ class CSRFile(implicit p: Parameters) extends CoreModule()(p)
|
|||||||
// debug interrupts are only masked by being in debug mode
|
// debug interrupts are only masked by being in debug mode
|
||||||
when (Bool(usingDebug) && reg_dcsr.debugint && !reg_debug) {
|
when (Bool(usingDebug) && reg_dcsr.debugint && !reg_debug) {
|
||||||
io.interrupt := true
|
io.interrupt := true
|
||||||
io.interrupt_cause := interruptMSB + CSR.debugIntCause
|
io.interrupt_cause := UInt(interruptMSB) + CSR.debugIntCause
|
||||||
}
|
}
|
||||||
|
|
||||||
val system_insn = io.rw.cmd === CSR.I
|
val system_insn = io.rw.cmd === CSR.I
|
||||||
@ -600,10 +601,10 @@ class CSRFile(implicit p: Parameters) extends CoreModule()(p)
|
|||||||
when (decoded_addr(CSRs.sbadaddr)) { reg_sbadaddr := wdata(vaddrBitsExtended-1,0) }
|
when (decoded_addr(CSRs.sbadaddr)) { reg_sbadaddr := wdata(vaddrBitsExtended-1,0) }
|
||||||
when (decoded_addr(CSRs.mideleg)) { reg_mideleg := wdata & delegable_interrupts }
|
when (decoded_addr(CSRs.mideleg)) { reg_mideleg := wdata & delegable_interrupts }
|
||||||
when (decoded_addr(CSRs.medeleg)) { reg_medeleg := wdata & delegable_exceptions }
|
when (decoded_addr(CSRs.medeleg)) { reg_medeleg := wdata & delegable_exceptions }
|
||||||
when (decoded_addr(CSRs.mscounteren)) { reg_mscounteren := wdata & delegable_counters }
|
when (decoded_addr(CSRs.mscounteren)) { reg_mscounteren := wdata & UInt(delegable_counters) }
|
||||||
}
|
}
|
||||||
if (usingUser) {
|
if (usingUser) {
|
||||||
when (decoded_addr(CSRs.mucounteren)) { reg_mucounteren := wdata & delegable_counters }
|
when (decoded_addr(CSRs.mucounteren)) { reg_mucounteren := wdata & UInt(delegable_counters) }
|
||||||
}
|
}
|
||||||
if (nBreakpoints > 0) {
|
if (nBreakpoints > 0) {
|
||||||
when (decoded_addr(CSRs.tselect)) { reg_tselect := wdata }
|
when (decoded_addr(CSRs.tselect)) { reg_tselect := wdata }
|
||||||
|
@ -10,6 +10,7 @@ import uncore.coherence._
|
|||||||
import uncore.constants._
|
import uncore.constants._
|
||||||
import uncore.util._
|
import uncore.util._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
|
||||||
class DCacheDataReq(implicit p: Parameters) extends L1HellaCacheBundle()(p) {
|
class DCacheDataReq(implicit p: Parameters) extends L1HellaCacheBundle()(p) {
|
||||||
|
@ -5,6 +5,7 @@ package rocket
|
|||||||
import Chisel._
|
import Chisel._
|
||||||
import Instructions._
|
import Instructions._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import FPConstants._
|
import FPConstants._
|
||||||
import uncore.constants.MemoryOpConstants._
|
import uncore.constants.MemoryOpConstants._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
@ -3,6 +3,7 @@ package rocket
|
|||||||
import Chisel._
|
import Chisel._
|
||||||
import uncore.tilelink._
|
import uncore.tilelink._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
|
||||||
class FrontendReq(implicit p: Parameters) extends CoreBundle()(p) {
|
class FrontendReq(implicit p: Parameters) extends CoreBundle()(p) {
|
||||||
|
@ -4,6 +4,7 @@ package rocket
|
|||||||
|
|
||||||
import Chisel._
|
import Chisel._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
|
||||||
class Instruction(implicit val p: Parameters) extends ParameterizedBundle with HasCoreParameters {
|
class Instruction(implicit val p: Parameters) extends ParameterizedBundle with HasCoreParameters {
|
||||||
|
@ -5,6 +5,7 @@ import uncore.agents._
|
|||||||
import uncore.tilelink._
|
import uncore.tilelink._
|
||||||
import uncore.util._
|
import uncore.util._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
|
||||||
trait HasL1CacheParameters extends HasCacheParameters with HasCoreParameters {
|
trait HasL1CacheParameters extends HasCacheParameters with HasCoreParameters {
|
||||||
|
@ -8,6 +8,7 @@ import uncore.constants.MemoryOpConstants._
|
|||||||
import ALU._
|
import ALU._
|
||||||
import cde.Parameters
|
import cde.Parameters
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
|
|
||||||
abstract trait DecodeConstants extends HasCoreParameters
|
abstract trait DecodeConstants extends HasCoreParameters
|
||||||
{
|
{
|
||||||
|
@ -5,6 +5,7 @@ package rocket
|
|||||||
import Chisel._
|
import Chisel._
|
||||||
import ALU._
|
import ALU._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
|
|
||||||
class MultiplierReq(dataBits: Int, tagBits: Int) extends Bundle {
|
class MultiplierReq(dataBits: Int, tagBits: Int) extends Bundle {
|
||||||
val fn = Bits(width = SZ_ALU_FN)
|
val fn = Bits(width = SZ_ALU_FN)
|
||||||
|
@ -9,6 +9,7 @@ import uncore.agents._
|
|||||||
import uncore.constants._
|
import uncore.constants._
|
||||||
import uncore.util._
|
import uncore.util._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
|
||||||
case class DCacheConfig(
|
case class DCacheConfig(
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
// See LICENSE for license details.
|
// See LICENSE for license details.
|
||||||
|
|
||||||
package object rocket extends
|
package object rocket extends rocket.constants.ScalarOpConstants
|
||||||
rocket.constants.ScalarOpConstants
|
|
||||||
|
@ -6,6 +6,7 @@ import Chisel._
|
|||||||
import uncore.agents._
|
import uncore.agents._
|
||||||
import uncore.constants._
|
import uncore.constants._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
|
||||||
class PTWReq(implicit p: Parameters) extends CoreBundle()(p) {
|
class PTWReq(implicit p: Parameters) extends CoreBundle()(p) {
|
||||||
|
@ -7,6 +7,7 @@ import uncore.tilelink._
|
|||||||
import uncore.constants._
|
import uncore.constants._
|
||||||
import uncore.agents.CacheName
|
import uncore.agents.CacheName
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
|
||||||
case object RoccMaxTaggedMemXacts extends Field[Int]
|
case object RoccMaxTaggedMemXacts extends Field[Int]
|
||||||
|
@ -8,6 +8,7 @@ import uncore.agents.CacheName
|
|||||||
import uncore.constants._
|
import uncore.constants._
|
||||||
import junctions.HasAddrMapParameters
|
import junctions.HasAddrMapParameters
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
|
||||||
case object XLen extends Field[Int]
|
case object XLen extends Field[Int]
|
||||||
|
@ -4,6 +4,7 @@ package rocket
|
|||||||
|
|
||||||
import Chisel._
|
import Chisel._
|
||||||
import util._
|
import util._
|
||||||
|
import Chisel.ImplicitConversions._
|
||||||
import junctions._
|
import junctions._
|
||||||
import scala.math._
|
import scala.math._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
|
@ -4,9 +4,9 @@ package rocketchip
|
|||||||
|
|
||||||
import Chisel._
|
import Chisel._
|
||||||
import cde.{Parameters, Field}
|
import cde.{Parameters, Field}
|
||||||
import util._
|
|
||||||
import junctions._
|
import junctions._
|
||||||
import junctions.NastiConstants._
|
import junctions.NastiConstants._
|
||||||
|
import util.LatencyPipe
|
||||||
|
|
||||||
case object BuildExampleTop extends Field[Parameters => ExampleTop]
|
case object BuildExampleTop extends Field[Parameters => ExampleTop]
|
||||||
case object SimMemLatency extends Field[Int]
|
case object SimMemLatency extends Field[Int]
|
||||||
@ -31,7 +31,7 @@ class TestHarness(q: Parameters) extends Module {
|
|||||||
require(dut.io.mmio_tl.isEmpty)
|
require(dut.io.mmio_tl.isEmpty)
|
||||||
|
|
||||||
for (int <- dut.io.interrupts)
|
for (int <- dut.io.interrupts)
|
||||||
int := false
|
int := Bool(false)
|
||||||
|
|
||||||
if (dut.io.mem_axi.nonEmpty) {
|
if (dut.io.mem_axi.nonEmpty) {
|
||||||
val memSize = p(GlobalAddrMap)("mem").size
|
val memSize = p(GlobalAddrMap)("mem").size
|
||||||
@ -82,12 +82,12 @@ class SimAXIMem(size: BigInt)(implicit p: Parameters) extends NastiModule()(p) {
|
|||||||
val rValid = Reg(init = Bool(false))
|
val rValid = Reg(init = Bool(false))
|
||||||
val ar = RegEnable(io.axi.ar.bits, io.axi.ar.fire())
|
val ar = RegEnable(io.axi.ar.bits, io.axi.ar.fire())
|
||||||
io.axi.ar.ready := !rValid
|
io.axi.ar.ready := !rValid
|
||||||
when (io.axi.ar.fire()) { rValid := true }
|
when (io.axi.ar.fire()) { rValid := Bool(true) }
|
||||||
when (io.axi.r.fire()) {
|
when (io.axi.r.fire()) {
|
||||||
assert(ar.burst === NastiConstants.BURST_INCR)
|
assert(ar.burst === NastiConstants.BURST_INCR)
|
||||||
ar.addr := ar.addr + (UInt(1) << ar.size)
|
ar.addr := ar.addr + (UInt(1) << ar.size)
|
||||||
ar.len := ar.len - 1
|
ar.len := ar.len - UInt(1)
|
||||||
when (ar.len === UInt(0)) { rValid := false }
|
when (ar.len === UInt(0)) { rValid := Bool(false) }
|
||||||
}
|
}
|
||||||
|
|
||||||
val w = io.axi.w.bits
|
val w = io.axi.w.bits
|
||||||
@ -100,15 +100,15 @@ class SimAXIMem(size: BigInt)(implicit p: Parameters) extends NastiModule()(p) {
|
|||||||
val aw = RegEnable(io.axi.aw.bits, io.axi.aw.fire())
|
val aw = RegEnable(io.axi.aw.bits, io.axi.aw.fire())
|
||||||
io.axi.aw.ready := !wValid && !bValid
|
io.axi.aw.ready := !wValid && !bValid
|
||||||
io.axi.w.ready := wValid
|
io.axi.w.ready := wValid
|
||||||
when (io.axi.b.fire()) { bValid := false }
|
when (io.axi.b.fire()) { bValid := Bool(false) }
|
||||||
when (io.axi.aw.fire()) { wValid := true }
|
when (io.axi.aw.fire()) { wValid := Bool(true) }
|
||||||
when (io.axi.w.fire()) {
|
when (io.axi.w.fire()) {
|
||||||
assert(aw.burst === NastiConstants.BURST_INCR)
|
assert(aw.burst === NastiConstants.BURST_INCR)
|
||||||
aw.addr := aw.addr + (UInt(1) << aw.size)
|
aw.addr := aw.addr + (UInt(1) << aw.size)
|
||||||
aw.len := aw.len - 1
|
aw.len := aw.len - UInt(1)
|
||||||
when (aw.len === UInt(0)) {
|
when (aw.len === UInt(0)) {
|
||||||
wValid := false
|
wValid := Bool(false)
|
||||||
bValid := true
|
bValid := Bool(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
def row = mem((aw.addr >> log2Ceil(nastiXDataBits/8))(log2Ceil(depth)-1, 0))
|
def row = mem((aw.addr >> log2Ceil(nastiXDataBits/8))(log2Ceil(depth)-1, 0))
|
||||||
@ -142,9 +142,9 @@ class SimDTM(implicit p: Parameters) extends BlackBox {
|
|||||||
io.reset := tbreset
|
io.reset := tbreset
|
||||||
dutio <> io.debug
|
dutio <> io.debug
|
||||||
|
|
||||||
tbsuccess := dutsuccess || io.exit === 1
|
tbsuccess := dutsuccess || io.exit === UInt(1)
|
||||||
when (io.exit >= 2) {
|
when (io.exit >= UInt(2)) {
|
||||||
printf("*** FAILED *** (exit code = %d)\n", io.exit >> 1)
|
printf("*** FAILED *** (exit code = %d)\n", io.exit >> UInt(1))
|
||||||
stop(1)
|
stop(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ trait CoreplexLocalInterrupterModule extends Module with HasRegMap with MixCorep
|
|||||||
|
|
||||||
val time = Seq.fill(timeWidth/regWidth)(Reg(init=UInt(0, width = regWidth)))
|
val time = Seq.fill(timeWidth/regWidth)(Reg(init=UInt(0, width = regWidth)))
|
||||||
when (io.rtcTick) {
|
when (io.rtcTick) {
|
||||||
val newTime = time.asUInt + 1
|
val newTime = time.asUInt + UInt(1)
|
||||||
for ((reg, i) <- time zip (0 until timeWidth by regWidth))
|
for ((reg, i) <- time zip (0 until timeWidth by regWidth))
|
||||||
reg := newTime >> i
|
reg := newTime >> i
|
||||||
}
|
}
|
||||||
|
@ -135,5 +135,5 @@ object Random
|
|||||||
private def round(x: Double): Int =
|
private def round(x: Double): Int =
|
||||||
if (x.toInt.toDouble == x) x.toInt else (x.toInt + 1) & -2
|
if (x.toInt.toDouble == x) x.toInt else (x.toInt + 1) & -2
|
||||||
private def partition(value: UInt, slices: Int) =
|
private def partition(value: UInt, slices: Int) =
|
||||||
Seq.tabulate(slices)(i => value < round((i << value.getWidth).toDouble / slices))
|
Seq.tabulate(slices)(i => value < UInt(round((i << value.getWidth).toDouble / slices)))
|
||||||
}
|
}
|
||||||
|
@ -22,10 +22,6 @@ package object util {
|
|||||||
}
|
}
|
||||||
|
|
||||||
implicit def uintToBitPat(x: UInt): BitPat = BitPat(x)
|
implicit def uintToBitPat(x: UInt): BitPat = BitPat(x)
|
||||||
implicit def intToUInt(x: Int): UInt = UInt(x)
|
|
||||||
implicit def bigIntToUInt(x: BigInt): UInt = UInt(x)
|
|
||||||
implicit def booleanToBool(x: Boolean): Bits = Bool(x)
|
|
||||||
implicit def intSeqToUIntSeq(x: Seq[Int]): Seq[UInt] = x.map(UInt(_))
|
|
||||||
implicit def wcToUInt(c: WideCounter): UInt = c.value
|
implicit def wcToUInt(c: WideCounter): UInt = c.value
|
||||||
|
|
||||||
implicit class UIntToAugmentedUInt(val x: UInt) extends AnyVal {
|
implicit class UIntToAugmentedUInt(val x: UInt) extends AnyVal {
|
||||||
|
Loading…
Reference in New Issue
Block a user