allow direct instatiation of arbitrary non-caching groundtests
This commit is contained in:
parent
f03ffb32a0
commit
cb2a18b533
40
src/main/scala/DirectGroundTest.scala
Normal file
40
src/main/scala/DirectGroundTest.scala
Normal file
@ -0,0 +1,40 @@
|
||||
package rocketchip
|
||||
|
||||
import Chisel._
|
||||
import cde.{Parameters, Field}
|
||||
import groundtest._
|
||||
import uncore.tilelink._
|
||||
import uncore.agents._
|
||||
|
||||
class DirectGroundTestTop(topParams: Parameters) extends Module
|
||||
with HasTopLevelParameters {
|
||||
implicit val p = topParams
|
||||
val io = new TopIO
|
||||
|
||||
// Not using the debug
|
||||
io.debug.req.ready := Bool(false)
|
||||
io.debug.resp.valid := Bool(false)
|
||||
|
||||
require(io.mmio_axi.isEmpty && io.mmio_ahb.isEmpty && io.mmio_tl.isEmpty)
|
||||
require(io.mem_ahb.isEmpty && io.mem_tl.isEmpty)
|
||||
require(nMemChannels == 1)
|
||||
require(nTiles == 1)
|
||||
|
||||
val test = p(BuildGroundTest)(outermostParams.alterPartial({
|
||||
case GroundTestId => 0
|
||||
case CacheName => "L1D"
|
||||
}))
|
||||
require(test.io.cache.size == 0)
|
||||
require(test.io.mem.size == nBanksPerMemChannel)
|
||||
require(test.io.ptw.size == 0)
|
||||
|
||||
when (test.io.finished) { stop() }
|
||||
|
||||
val mem_ic = Module(new TileLinkMemoryInterconnect(
|
||||
nBanksPerMemChannel, nMemChannels)(outermostParams))
|
||||
|
||||
mem_ic.io.in <> test.io.mem
|
||||
io.mem_axi.zip(mem_ic.io.out).foreach { case (nasti, tl) =>
|
||||
TopUtils.connectTilelinkNasti(nasti, tl)(outermostParams)
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
package rocketchip
|
||||
|
||||
import Chisel._
|
||||
import cde.{Parameters, Field}
|
||||
import groundtest._
|
||||
import uncore.tilelink._
|
||||
|
||||
trait HasDirectMemtestParameters {
|
||||
implicit val p: Parameters
|
||||
lazy val tileSettings = p(GroundTestKey)(0)
|
||||
lazy val nGens = tileSettings.uncached
|
||||
}
|
||||
|
||||
class MemtestGenerators(implicit val p: Parameters) extends Module
|
||||
with HasDirectMemtestParameters {
|
||||
val io = new Bundle {
|
||||
val mem = Vec(nGens, new ClientUncachedTileLinkIO)
|
||||
val finished = Bool(OUTPUT)
|
||||
}
|
||||
|
||||
val generators =
|
||||
(0 until nGens).map(id => Module(new UncachedTileLinkGenerator(id)))
|
||||
|
||||
io.mem <> generators.map(_.io.mem)
|
||||
io.finished := generators.map(_.io.finished).reduce(_ && _)
|
||||
}
|
||||
|
||||
class DirectMemtestTop(topParams: Parameters) extends Module
|
||||
with HasTopLevelParameters
|
||||
with HasDirectMemtestParameters {
|
||||
implicit val p = topParams
|
||||
val io = new TopIO
|
||||
|
||||
// Not using the debug
|
||||
io.debug.req.ready := Bool(false)
|
||||
io.debug.resp.valid := Bool(false)
|
||||
|
||||
require(io.mmio_axi.isEmpty && io.mmio_ahb.isEmpty && io.mmio_tl.isEmpty)
|
||||
require(io.mem_ahb.isEmpty && io.mem_tl.isEmpty)
|
||||
require(nBanksPerMemChannel == nGens)
|
||||
require(nMemChannels == 1)
|
||||
require(nTiles == 1)
|
||||
|
||||
val memtest = Module(new MemtestGenerators()(outermostParams))
|
||||
val mem_ic = Module(new TileLinkMemoryInterconnect(nGens, 1)(outermostParams))
|
||||
|
||||
mem_ic.io.in <> memtest.io.mem
|
||||
io.mem_axi.zip(mem_ic.io.out).foreach { case (nasti, tl) =>
|
||||
TopUtils.connectTilelinkNasti(nasti, tl)(outermostParams)
|
||||
}
|
||||
when (memtest.io.finished) { stop() }
|
||||
}
|
@ -251,6 +251,7 @@ class WithPCIeMockupTest extends Config(
|
||||
}
|
||||
case _ => throw new CDEMatchError
|
||||
})
|
||||
|
||||
class PCIeMockupTestConfig extends Config(
|
||||
new WithPCIeMockupTest ++ new GroundTestConfig)
|
||||
|
||||
@ -258,7 +259,6 @@ class WithDirectMemtest extends Config(
|
||||
(pname, site, here) => {
|
||||
val nGens = 8
|
||||
pname match {
|
||||
case GroundTestId => 0
|
||||
case GroundTestKey => Seq(GroundTestTileSettings(uncached = nGens))
|
||||
case GeneratorKey => GeneratorParameters(
|
||||
maxRequests = 1024,
|
||||
@ -267,9 +267,36 @@ class WithDirectMemtest extends Config(
|
||||
case NAcquireTransactors => nGens - 2
|
||||
case MIFTagBits => Dump("MIF_TAG_BITS", 2)
|
||||
case NBanksPerMemoryChannel => nGens
|
||||
case BuildGroundTest =>
|
||||
(p: Parameters) => Module(new GeneratorTest()(p))
|
||||
case _ => throw new CDEMatchError
|
||||
}
|
||||
})
|
||||
|
||||
class WithDirectComparator extends Config(
|
||||
(pname, site, here) => pname match {
|
||||
case GroundTestKey => Seq.fill(site(NTiles)) {
|
||||
GroundTestTileSettings(uncached = site(ComparatorKey).targets.size)
|
||||
}
|
||||
case BuildGroundTest =>
|
||||
(p: Parameters) => Module(new ComparatorCore()(p))
|
||||
case ComparatorKey => ComparatorParameters(
|
||||
targets = Seq(0L, 0x100L),
|
||||
width = 8,
|
||||
operations = 1000,
|
||||
atomics = site(UseAtomics),
|
||||
prefetches = site("COMPARATOR_PREFETCHES"))
|
||||
case UseFPU => false
|
||||
case UseAtomics => false
|
||||
case "COMPARATOR_PREFETCHES" => false
|
||||
// Hax Hax Hax
|
||||
case NAcquireTransactors => 0
|
||||
case MIFTagBits => Dump("MIF_TAG_BITS", 2)
|
||||
case NBanksPerMemoryChannel => site(ComparatorKey).targets.size
|
||||
case _ => throw new CDEMatchError
|
||||
})
|
||||
|
||||
class DirectMemtestConfig extends Config(
|
||||
new WithDirectMemtest ++ new GroundTestConfig)
|
||||
class DirectComparatorConfig extends Config(
|
||||
new WithDirectComparator ++ new GroundTestConfig)
|
||||
|
Loading…
Reference in New Issue
Block a user