Skip to content

Commit

Permalink
Merge pull request #422 from riscv-boom/rc-bump-aug-2019
Browse files Browse the repository at this point in the history
Fixes for rocket-chip bump
  • Loading branch information
colinschmidt committed Dec 12, 2019
2 parents c9fa26d + 0c059c1 commit 63b430b
Show file tree
Hide file tree
Showing 15 changed files with 57 additions and 31 deletions.
2 changes: 1 addition & 1 deletion CHIPYARD.hash
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2f3ac85c2ae0a679cdd900df55dbf7f1998f638c
542b2a6e6e121a41f307b61336fa678eb0a45a1c
2 changes: 1 addition & 1 deletion src/main/scala/common/tile.scala
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ class BoomTile(
tlMasterXbar.node := frontend.masterNode

private val deviceOpt = None
val iCacheLogicalTreeNode = new ICacheLogicalTreeNode(deviceOpt, tileParams.icache.get)
val iCacheLogicalTreeNode = new BoomICacheLogicalTreeNode(frontend.icache, deviceOpt, tileParams.icache.get)

// ROCC
val roccs = p(BuildRoCC).map(_(p))
Expand Down
3 changes: 1 addition & 2 deletions src/main/scala/exu/core.scala
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import java.nio.file.{Paths}

import chisel3._
import chisel3.util._
import chisel3.experimental.dontTouch

import freechips.rocketchip.config.Parameters
import freechips.rocketchip.rocket.Instructions._
Expand Down Expand Up @@ -1301,7 +1300,7 @@ class BoomCore(implicit p: Parameters) extends BoomModule
val mmioStart = "0x" + f"${bootromParams.address + bootromParams.size}%X"
val mmioEnd = "0x" + f"${extMemParams.master.base}%X"
val plicBase = "0x" + f"${plicParams.baseAddress}%X"
val plicSize = "0x" + f"${PLICConsts.size}%X"
val plicSize = "0x" + f"${PLICConsts.size(plicParams.maxHarts)}%X"
val clintBase = "0x" + f"${clintParams.baseAddress}%X"
val clintSize = "0x" + f"${CLINTConsts.size}%X"
val memSize = "0x" + f"${extMemParams.master.size}%X"
Expand Down
1 change: 0 additions & 1 deletion src/main/scala/exu/execution-units/rocc.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ package boom.exu

import chisel3._
import chisel3.util._
import chisel3.experimental.dontTouch

import freechips.rocketchip.config.Parameters
import freechips.rocketchip.tile.{RoCCCoreIO, RoCCInstruction}
Expand Down
2 changes: 0 additions & 2 deletions src/main/scala/ifu/fetch-buffer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ package boom.ifu

import chisel3._
import chisel3.util._
import chisel3.experimental.{dontTouch}
import chisel3.core.{DontCare}

import freechips.rocketchip.config.{Parameters}
import freechips.rocketchip.rocket.{MStatus, BP, BreakpointUnit}
Expand Down
3 changes: 1 addition & 2 deletions src/main/scala/ifu/fetch-control-unit.scala
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ package boom.ifu

import chisel3._
import chisel3.util._
import chisel3.core.{withReset, DontCare}
import chisel3.experimental.{dontTouch}
import chisel3.core.{withReset}

import freechips.rocketchip.rocket.{MStatus, BP}
import freechips.rocketchip.config.{Parameters}
Expand Down
1 change: 0 additions & 1 deletion src/main/scala/ifu/fetch-monitor.scala
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ package boom.ifu

import chisel3._
import chisel3.util._
import chisel3.core.{DontCare}

import freechips.rocketchip.config.{Parameters}

Expand Down
2 changes: 0 additions & 2 deletions src/main/scala/ifu/fetch-target-queue.scala
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ package boom.ifu

import chisel3._
import chisel3.util._
import chisel3.core.{DontCare}
import chisel3.experimental.{dontTouch}

import freechips.rocketchip.config.{Parameters}
import freechips.rocketchip.util.{Str}
Expand Down
1 change: 0 additions & 1 deletion src/main/scala/ifu/frontend.scala
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import freechips.rocketchip.tilelink._
import freechips.rocketchip.tile._
import freechips.rocketchip.util._
import freechips.rocketchip.util.property._
import freechips.rocketchip.diplomaticobjectmodel.logicaltree.{ICacheLogicalTreeNode}

import boom.bpu._
import boom.common._
Expand Down
66 changes: 53 additions & 13 deletions src/main/scala/ifu/icache.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ package boom.ifu
import chisel3._
import chisel3.util._
import chisel3.internal.sourceinfo.{SourceInfo}
import chisel3.experimental.{dontTouch}
import chisel3.experimental.{chiselName}

import freechips.rocketchip.config.{Parameters}
Expand All @@ -25,6 +24,9 @@ import freechips.rocketchip.tilelink._
import freechips.rocketchip.util._
import freechips.rocketchip.util.property._
import freechips.rocketchip.rocket.{HasL1ICacheParameters, ICacheParams, ICacheErrors, ICacheReq}
import freechips.rocketchip.diplomaticobjectmodel.logicaltree.{LogicalTreeNode}
import freechips.rocketchip.diplomaticobjectmodel.DiplomaticObjectModelAddressing
import freechips.rocketchip.diplomaticobjectmodel.model.{OMComponent, OMICache, OMECC}

import boom.common._
import boom.util.{BoomCoreStringPrefix}
Expand Down Expand Up @@ -68,6 +70,26 @@ class ICache(
beatBytes = wordBytes,
minLatency = 1)})
}
class BoomICacheLogicalTreeNode(icache: ICache, deviceOpt: Option[SimpleDevice], params: ICacheParams) extends LogicalTreeNode(() => deviceOpt) {
override def getOMComponents(resourceBindings: ResourceBindings, children: Seq[OMComponent] = Nil): Seq[OMComponent] = {
Seq(
OMICache(
memoryRegions = DiplomaticObjectModelAddressing.getOMMemoryRegions("ITIM", resourceBindings),
interrupts = Nil,
nSets = params.nSets,
nWays = params.nWays,
blockSizeBytes = params.blockBytes,
dataMemorySizeBytes = params.nSets * params.nWays * params.blockBytes,
dataECC = params.dataECC.map(OMECC.fromString),
tagECC = params.tagECC.map(OMECC.fromString),
nTLBEntries = params.nTLBEntries,
maxTimSize = params.nSets * (params.nWays-1) * params.blockBytes,
memories = if(!icache.enableBlackBox) icache.module.asInstanceOf[ICacheModule].dataArrays.map(_._2)
else Seq()
)
)
}
}

/**
* IO Signals leaving the ICache
Expand Down Expand Up @@ -279,15 +301,37 @@ class ICacheModule(outer: ICache) extends ICacheBaseModule(outer)
if (2*tl_out.d.bits.data.getWidth == wordBits) (nSets * refillCycles/2)
else (nSets * refillCycles)

val dataArrays = if(cacheParams.fetchBytes <= 8)
// Use unbanked icache for narrow accesses.
(0 until nWays).map { x =>
DescribedSRAM(
name = s"dataArrayWay_${x}",
desc = "ICache Data Array",
size = nSets * refillCycles,
data = UInt(dECC.width(wordBits).W)
)
}
else
// Use two banks, interleaved.
(0 until nWays).map { x =>
DescribedSRAM(
name = s"dataArrayB0Way_${x}",
desc = "ICache Data Array",
size = nSets * refillCycles,
data = UInt(dECC.width(wordBits/nBanks).W)
)} ++
(0 until nWays).map { x =>
DescribedSRAM(
name = s"dataArrayB1Way_${x}",
desc = "ICache Data Array",
size = nSets * refillCycles,
data = UInt(dECC.width(wordBits/nBanks).W)
)}

if (cacheParams.fetchBytes <= 8) {
// Use unbanked icache for narrow accesses.
val dataArrays = (0 until nWays).map { x =>
SyncReadMem(nSets * refillCycles, UInt(dECC.width(wordBits).W)).suggestName(
"dataArrayWay_" + x.toString)
}

s1_bankId := 0.U
for ((dataArray, i) <- dataArrays zipWithIndex) {
for ((dataArray, i) <- dataArrays.map(_._1) zipWithIndex) {
def row(addr: UInt) = addr(untagBits-1, blockOffBits-log2Ceil(refillCycles))
val s0_ren = s0_valid || s0_slaveValid

Expand All @@ -305,13 +349,9 @@ class ICacheModule(outer: ICache) extends ICacheBaseModule(outer)
s1_dout(i) := dataArray.read(mem_idx, !wen && s0_ren)
}
} else {
val dataArraysB0 = (0 until nWays).map { x =>
SyncReadMem(ramDepth, UInt(dECC.width(wordBits/nBanks).W)).suggestName(
"dataArrayB0Way_" + x.toString)}
val dataArraysB1 = (0 until nWays).map { x =>
SyncReadMem(ramDepth, UInt(dECC.width(wordBits/nBanks).W)).suggestName(
"dataArrayB1Way_" + x.toString)}
// Use two banks, interleaved.
val dataArraysB0 = dataArrays.map(_._1).take(nWays)
val dataArraysB1 = dataArrays.map(_._1).drop(nWays)
require (nBanks == 2)

// Bank0 row's id wraps around if Bank1 is the starting bank.
Expand Down
1 change: 0 additions & 1 deletion src/main/scala/lsu/dcache.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ package boom.lsu

import chisel3._
import chisel3.util._
import chisel3.experimental.dontTouch

import freechips.rocketchip.config.Parameters
import freechips.rocketchip.diplomacy._
Expand Down
1 change: 0 additions & 1 deletion src/main/scala/lsu/lsu.scala
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ package boom.lsu

import chisel3._
import chisel3.util._
import chisel3.experimental.dontTouch

import freechips.rocketchip.config.Parameters
import freechips.rocketchip.rocket
Expand Down
1 change: 0 additions & 1 deletion src/main/scala/lsu/mshrs.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ package boom.lsu

import chisel3._
import chisel3.util._
import chisel3.experimental.dontTouch

import freechips.rocketchip.config.Parameters
import freechips.rocketchip.diplomacy._
Expand Down
1 change: 0 additions & 1 deletion src/main/scala/lsu/prefetcher.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package boom.lsu

import chisel3._
import chisel3.util._
import chisel3.experimental.dontTouch

import freechips.rocketchip.config.Parameters
import freechips.rocketchip.diplomacy._
Expand Down
1 change: 0 additions & 1 deletion src/main/scala/lsu/tlb.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package boom.lsu

import chisel3._
import chisel3.util._
import chisel3.experimental.dontTouch

import freechips.rocketchip.config.Parameters
import freechips.rocketchip.rocket._
Expand Down

0 comments on commit 63b430b

Please sign in to comment.