2015-12-06 12:01:05 +01:00
|
|
|
package rocketchip
|
|
|
|
|
|
|
|
import Chisel._
|
|
|
|
import groundtest._
|
2016-07-14 21:19:10 +02:00
|
|
|
import groundtest.unittests._
|
|
|
|
import groundtest.common._
|
2015-12-06 12:01:05 +01:00
|
|
|
import rocket._
|
2016-06-28 22:16:48 +02:00
|
|
|
import uncore.tilelink._
|
|
|
|
import uncore.coherence._
|
|
|
|
import uncore.agents._
|
|
|
|
import uncore.devices.NTiles
|
2016-01-07 06:38:35 +01:00
|
|
|
import junctions._
|
2016-02-22 18:07:26 +01:00
|
|
|
import scala.collection.mutable.LinkedHashSet
|
2016-04-22 04:37:08 +02:00
|
|
|
import cde.{Parameters, Config, Dump, Knob, CDEMatchError}
|
2015-12-06 12:01:05 +01:00
|
|
|
import scala.math.max
|
2016-03-16 22:21:47 +01:00
|
|
|
import ConfigUtils._
|
2015-12-06 12:01:05 +01:00
|
|
|
|
|
|
|
class WithGroundTest extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
|
|
|
case TLKey("L1toL2") =>
|
|
|
|
TileLinkParameters(
|
2016-07-22 03:33:46 +02:00
|
|
|
coherencePolicy = (if (site(NCachedTileLinkPorts) <= 1)
|
|
|
|
new MEICoherence(site(L2DirectoryRepresentation)) else
|
|
|
|
new MESICoherence(site(L2DirectoryRepresentation))),
|
2016-01-15 00:10:40 +01:00
|
|
|
nManagers = site(NBanksPerMemoryChannel)*site(NMemoryChannels) + 1,
|
2016-06-14 01:24:01 +02:00
|
|
|
nCachingClients = site(NCachedTileLinkPorts),
|
|
|
|
nCachelessClients = site(NUncachedTileLinkPorts),
|
2016-07-08 20:40:16 +02:00
|
|
|
maxClientXacts = ((site(NMSHRs) + 1) +:
|
|
|
|
site(GroundTestKey).map(_.maxXacts))
|
|
|
|
.reduce(max(_, _)),
|
2016-06-14 01:24:01 +02:00
|
|
|
maxClientsPerPort = 1,
|
2015-12-06 12:01:05 +01:00
|
|
|
maxManagerXacts = site(NAcquireTransactors) + 2,
|
2016-07-01 03:20:43 +02:00
|
|
|
dataBeats = 8,
|
2015-12-06 12:01:05 +01:00
|
|
|
dataBits = site(CacheBlockBytes)*8)
|
|
|
|
case BuildTiles => {
|
2016-05-04 02:11:25 +02:00
|
|
|
val groundtest = if (site(XLen) == 64)
|
|
|
|
DefaultTestSuites.groundtest64
|
|
|
|
else
|
|
|
|
DefaultTestSuites.groundtest32
|
|
|
|
TestGeneration.addSuite(groundtest("p"))
|
2016-05-03 03:34:27 +02:00
|
|
|
TestGeneration.addSuite(DefaultTestSuites.emptyBmarks)
|
2015-12-06 12:01:05 +01:00
|
|
|
(0 until site(NTiles)).map { i =>
|
2016-07-08 20:40:16 +02:00
|
|
|
val tileSettings = site(GroundTestKey)(i)
|
|
|
|
(r: Bool, p: Parameters) => {
|
|
|
|
Module(new GroundTestTile(r)(p.alterPartial({
|
2016-06-14 01:24:01 +02:00
|
|
|
case TLId => "L1toL2"
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestId => i
|
|
|
|
case NCachedTileLinkPorts => if(tileSettings.cached > 0) 1 else 0
|
|
|
|
case NUncachedTileLinkPorts => tileSettings.uncached
|
|
|
|
case RoccNCSRs => tileSettings.csrs
|
2016-06-14 01:24:01 +02:00
|
|
|
})))
|
2016-07-08 20:40:16 +02:00
|
|
|
}
|
2015-12-06 12:01:05 +01:00
|
|
|
}
|
|
|
|
}
|
2016-02-22 18:07:26 +01:00
|
|
|
case UseFPU => false
|
2016-06-14 01:24:01 +02:00
|
|
|
case UseAtomics => false
|
2016-06-08 01:13:01 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2015-12-06 12:01:05 +01:00
|
|
|
})
|
|
|
|
|
2016-06-06 19:48:25 +02:00
|
|
|
class WithComparator extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestKey => Seq.fill(site(NTiles)) {
|
|
|
|
GroundTestTileSettings(uncached = site(ComparatorKey).targets.size)
|
|
|
|
}
|
2016-06-28 01:01:32 +02:00
|
|
|
case BuildGroundTest =>
|
2016-07-08 20:40:16 +02:00
|
|
|
(p: Parameters) => Module(new ComparatorCore()(p))
|
2016-06-06 19:48:25 +02:00
|
|
|
case ComparatorKey => ComparatorParameters(
|
2016-06-14 01:24:01 +02:00
|
|
|
targets = Seq(0L, 0x100L).map(site(GlobalAddrMap)("mem").start.longValue + _),
|
2016-06-06 19:48:25 +02:00
|
|
|
width = 8,
|
|
|
|
operations = 1000,
|
2016-06-14 01:24:01 +02:00
|
|
|
atomics = site(UseAtomics),
|
|
|
|
prefetches = site("COMPARATOR_PREFETCHES"))
|
|
|
|
case UseFPU => false
|
|
|
|
case UseAtomics => false
|
|
|
|
case "COMPARATOR_PREFETCHES" => false
|
2016-06-06 19:48:25 +02:00
|
|
|
case _ => throw new CDEMatchError
|
|
|
|
})
|
|
|
|
|
2016-06-14 01:24:01 +02:00
|
|
|
class WithAtomics extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
|
|
|
case UseAtomics => true
|
2016-07-08 20:40:16 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2016-06-14 01:24:01 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
class WithPrefetches extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
|
|
|
case "COMPARATOR_PREFETCHES" => true
|
2016-07-08 20:40:16 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2016-06-14 01:24:01 +02:00
|
|
|
})
|
|
|
|
|
2015-12-06 12:01:05 +01:00
|
|
|
class WithMemtest extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestKey => Seq.fill(site(NTiles)) {
|
|
|
|
GroundTestTileSettings(1, 1)
|
|
|
|
}
|
|
|
|
case GeneratorKey => GeneratorParameters(
|
|
|
|
maxRequests = 128,
|
|
|
|
startAddress = site(GlobalAddrMap)("mem").start)
|
2015-12-06 12:01:05 +01:00
|
|
|
case BuildGroundTest =>
|
2016-07-08 20:40:16 +02:00
|
|
|
(p: Parameters) => Module(new GeneratorTest()(p))
|
2016-06-08 01:13:01 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2015-12-06 12:01:05 +01:00
|
|
|
})
|
|
|
|
|
2016-07-08 20:40:16 +02:00
|
|
|
class WithNGenerators(nUncached: Int, nCached: Int) extends Config(
|
2016-07-06 02:42:57 +02:00
|
|
|
(pname, site, here) => pname match {
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestKey => Seq.fill(site(NTiles)) {
|
|
|
|
GroundTestTileSettings(nUncached, nCached)
|
|
|
|
}
|
2016-07-06 02:42:57 +02:00
|
|
|
case _ => throw new CDEMatchError
|
|
|
|
})
|
|
|
|
|
2015-12-06 12:01:05 +01:00
|
|
|
class WithCacheFillTest extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestKey => Seq.fill(site(NTiles)) {
|
|
|
|
GroundTestTileSettings(uncached = 1)
|
|
|
|
}
|
2015-12-06 12:01:05 +01:00
|
|
|
case BuildGroundTest =>
|
2016-07-08 20:40:16 +02:00
|
|
|
(p: Parameters) => Module(new CacheFillTest()(p))
|
2016-06-08 01:13:01 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2015-12-06 12:01:05 +01:00
|
|
|
},
|
|
|
|
knobValues = {
|
|
|
|
case "L2_WAYS" => 4
|
|
|
|
case "L2_CAPACITY_IN_KB" => 4
|
2016-06-08 01:13:01 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2015-12-06 12:01:05 +01:00
|
|
|
})
|
|
|
|
|
2015-12-15 05:01:22 +01:00
|
|
|
class WithBroadcastRegressionTest extends Config(
|
2015-12-06 12:01:05 +01:00
|
|
|
(pname, site, here) => pname match {
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestKey => Seq.fill(site(NTiles)) {
|
|
|
|
GroundTestTileSettings(1, 1, maxXacts = 3)
|
|
|
|
}
|
2015-12-06 12:01:05 +01:00
|
|
|
case BuildGroundTest =>
|
2016-07-08 20:40:16 +02:00
|
|
|
(p: Parameters) => Module(new RegressionTest()(p))
|
2015-12-15 05:01:22 +01:00
|
|
|
case GroundTestRegressions =>
|
|
|
|
(p: Parameters) => RegressionTests.broadcastRegressions(p)
|
2016-06-08 01:13:01 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2015-12-15 05:01:22 +01:00
|
|
|
})
|
|
|
|
|
|
|
|
class WithCacheRegressionTest extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestKey => Seq.fill(site(NTiles)) {
|
|
|
|
GroundTestTileSettings(1, 1, maxXacts = 5)
|
|
|
|
}
|
2015-12-15 05:01:22 +01:00
|
|
|
case BuildGroundTest =>
|
2016-07-08 20:40:16 +02:00
|
|
|
(p: Parameters) => Module(new RegressionTest()(p))
|
2015-12-15 05:01:22 +01:00
|
|
|
case GroundTestRegressions =>
|
|
|
|
(p: Parameters) => RegressionTests.cacheRegressions(p)
|
2016-06-08 01:13:01 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2016-01-07 06:38:35 +01:00
|
|
|
})
|
|
|
|
|
2016-02-10 20:12:39 +01:00
|
|
|
class WithNastiConverterTest extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestKey => Seq.fill(site(NTiles)) {
|
|
|
|
GroundTestTileSettings(uncached = 1)
|
|
|
|
}
|
2016-07-08 22:40:52 +02:00
|
|
|
case GeneratorKey => GeneratorParameters(
|
|
|
|
maxRequests = 128,
|
|
|
|
startAddress = site(GlobalAddrMap)("mem").start)
|
2016-02-10 20:12:39 +01:00
|
|
|
case BuildGroundTest =>
|
2016-07-08 20:40:16 +02:00
|
|
|
(p: Parameters) => Module(new NastiConverterTest()(p))
|
2016-06-08 01:13:01 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2016-02-10 20:12:39 +01:00
|
|
|
})
|
|
|
|
|
2016-02-19 22:30:20 +01:00
|
|
|
class WithUnitTest extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestKey => Seq.fill(site(NTiles)) { GroundTestTileSettings() }
|
2016-02-19 22:30:20 +01:00
|
|
|
case BuildGroundTest =>
|
2016-07-08 20:40:16 +02:00
|
|
|
(p: Parameters) => Module(new UnitTestSuite()(p))
|
2016-07-14 21:19:10 +02:00
|
|
|
case UnitTests => (testParams: Parameters) => {
|
|
|
|
implicit val p = testParams
|
|
|
|
Seq(
|
|
|
|
Module(new MultiWidthFifoTest),
|
|
|
|
Module(new SmiConverterTest),
|
|
|
|
Module(new AtosConverterTest),
|
|
|
|
Module(new NastiMemoryDemuxTest),
|
|
|
|
Module(new ROMSlaveTest),
|
|
|
|
Module(new TileLinkRAMTest),
|
|
|
|
Module(new HastiTest))
|
|
|
|
}
|
2016-06-08 01:13:01 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2016-02-19 22:30:20 +01:00
|
|
|
})
|
|
|
|
|
2016-02-22 19:04:38 +01:00
|
|
|
class WithTraceGen extends Config(
|
2016-07-20 20:06:47 +02:00
|
|
|
topDefinitions = (pname, site, here) => pname match {
|
2016-07-08 20:40:16 +02:00
|
|
|
case GroundTestKey => Seq.fill(site(NTiles)) {
|
|
|
|
GroundTestTileSettings(cached = 1)
|
|
|
|
}
|
2016-02-22 19:04:38 +01:00
|
|
|
case BuildGroundTest =>
|
2016-07-08 20:40:16 +02:00
|
|
|
(p: Parameters) => Module(new GroundTestTraceGenerator()(p))
|
|
|
|
case GeneratorKey => GeneratorParameters(
|
2016-07-20 20:06:47 +02:00
|
|
|
maxRequests = 256,
|
2016-07-08 20:40:16 +02:00
|
|
|
startAddress = 0)
|
2016-07-20 20:06:47 +02:00
|
|
|
case AddressBag => {
|
|
|
|
val nSets = 16
|
|
|
|
val nWays = 1
|
|
|
|
val blockOffset = site(CacheBlockOffsetBits)
|
|
|
|
List.tabulate(2 * nWays) { i =>
|
|
|
|
Seq.tabulate(2) { j => (i * nSets + j * 8) << blockOffset }
|
|
|
|
}.flatten
|
|
|
|
}
|
2016-06-08 01:13:01 +02:00
|
|
|
case _ => throw new CDEMatchError
|
2016-07-20 20:06:47 +02:00
|
|
|
},
|
|
|
|
knobValues = {
|
|
|
|
case "L1D_SETS" => 16
|
|
|
|
case "L1D_WAYS" => 1
|
2016-02-22 19:04:38 +01:00
|
|
|
})
|
|
|
|
|
2016-07-06 02:42:57 +02:00
|
|
|
class GroundTestConfig extends Config(new WithGroundTest ++ new BaseConfig)
|
|
|
|
|
2016-06-28 01:01:32 +02:00
|
|
|
class ComparatorConfig extends Config(new WithComparator ++ new GroundTestConfig)
|
2016-06-14 01:24:01 +02:00
|
|
|
class ComparatorL2Config extends Config(
|
|
|
|
new WithAtomics ++ new WithPrefetches ++
|
|
|
|
new WithL2Cache ++ new ComparatorConfig)
|
2016-07-05 02:07:58 +02:00
|
|
|
class ComparatorBufferlessConfig extends Config(
|
|
|
|
new WithBufferlessBroadcastHub ++ new ComparatorConfig)
|
2016-07-22 03:33:46 +02:00
|
|
|
class ComparatorStatelessConfig extends Config(
|
|
|
|
new WithStatelessBridge ++ new ComparatorConfig)
|
2016-07-06 02:42:57 +02:00
|
|
|
|
2015-12-06 12:01:05 +01:00
|
|
|
class MemtestConfig extends Config(new WithMemtest ++ new GroundTestConfig)
|
|
|
|
class MemtestL2Config extends Config(
|
2016-07-22 03:33:46 +02:00
|
|
|
new WithL2Cache ++ new MemtestConfig)
|
2016-07-05 02:07:58 +02:00
|
|
|
class MemtestBufferlessConfig extends Config(
|
2016-07-22 03:33:46 +02:00
|
|
|
new WithBufferlessBroadcastHub ++ new MemtestConfig)
|
|
|
|
class MemtestStatelessConfig extends Config(
|
|
|
|
new WithNGenerators(0, 1) ++ new WithStatelessBridge ++ new MemtestConfig)
|
2016-07-06 02:42:57 +02:00
|
|
|
// Test ALL the things
|
|
|
|
class FancyMemtestConfig extends Config(
|
2016-07-08 20:40:16 +02:00
|
|
|
new WithNGenerators(1, 2) ++ new WithNCores(2) ++ new WithMemtest ++
|
2016-07-06 02:42:57 +02:00
|
|
|
new WithNMemoryChannels(2) ++ new WithNBanksPerMemChannel(4) ++
|
|
|
|
new WithSplitL2Metadata ++ new WithL2Cache ++ new GroundTestConfig)
|
|
|
|
|
2015-12-06 12:01:05 +01:00
|
|
|
class CacheFillTestConfig extends Config(
|
2016-05-03 22:39:04 +02:00
|
|
|
new WithCacheFillTest ++ new WithPLRU ++ new WithL2Cache ++ new GroundTestConfig)
|
2016-07-06 02:42:57 +02:00
|
|
|
|
2015-12-15 05:01:22 +01:00
|
|
|
class BroadcastRegressionTestConfig extends Config(
|
|
|
|
new WithBroadcastRegressionTest ++ new GroundTestConfig)
|
2016-07-05 02:07:58 +02:00
|
|
|
class BufferlessRegressionTestConfig extends Config(
|
|
|
|
new WithBufferlessBroadcastHub ++ new BroadcastRegressionTestConfig)
|
2015-12-15 05:01:22 +01:00
|
|
|
class CacheRegressionTestConfig extends Config(
|
|
|
|
new WithCacheRegressionTest ++ new WithL2Cache ++ new GroundTestConfig)
|
2016-07-06 02:42:57 +02:00
|
|
|
|
2016-02-10 20:12:39 +01:00
|
|
|
class NastiConverterTestConfig extends Config(new WithNastiConverterTest ++ new GroundTestConfig)
|
2016-07-08 22:40:52 +02:00
|
|
|
class FancyNastiConverterTestConfig extends Config(
|
|
|
|
new WithNCores(2) ++ new WithNastiConverterTest ++
|
|
|
|
new WithNMemoryChannels(2) ++ new WithNBanksPerMemChannel(4) ++
|
|
|
|
new WithL2Cache ++ new GroundTestConfig)
|
|
|
|
|
2016-07-06 02:42:57 +02:00
|
|
|
class UnitTestConfig extends Config(new WithUnitTest ++ new GroundTestConfig)
|
2015-12-06 12:01:05 +01:00
|
|
|
|
2016-07-06 02:42:57 +02:00
|
|
|
class TraceGenConfig extends Config(
|
|
|
|
new WithNCores(2) ++ new WithTraceGen ++ new GroundTestConfig)
|
|
|
|
class TraceGenBufferlessConfig extends Config(
|
|
|
|
new WithBufferlessBroadcastHub ++ new TraceGenConfig)
|
|
|
|
class TraceGenL2Config extends Config(
|
|
|
|
new WithL2Cache ++ new TraceGenConfig)
|
2016-07-01 03:20:43 +02:00
|
|
|
|
|
|
|
class MIF128BitComparatorConfig extends Config(
|
|
|
|
new WithMIFDataBits(128) ++ new ComparatorConfig)
|
2016-07-02 03:13:33 +02:00
|
|
|
class MIF128BitMemtestConfig extends Config(
|
|
|
|
new WithMIFDataBits(128) ++ new MemtestConfig)
|
|
|
|
|
|
|
|
class MIF32BitComparatorConfig extends Config(
|
|
|
|
new WithMIFDataBits(32) ++ new ComparatorConfig)
|
|
|
|
class MIF32BitMemtestConfig extends Config(
|
|
|
|
new WithMIFDataBits(32) ++ new MemtestConfig)
|
2016-07-08 22:40:52 +02:00
|
|
|
|
|
|
|
class WithPCIeMockupTest extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
|
|
|
case NTiles => 2
|
|
|
|
case GroundTestKey => Seq(
|
|
|
|
GroundTestTileSettings(1, 1),
|
|
|
|
GroundTestTileSettings(1))
|
|
|
|
case GeneratorKey => GeneratorParameters(
|
|
|
|
maxRequests = 128,
|
|
|
|
startAddress = site(GlobalAddrMap)("mem").start)
|
|
|
|
case BuildGroundTest =>
|
|
|
|
(p: Parameters) => {
|
|
|
|
val id = p(GroundTestId)
|
|
|
|
if (id == 0) Module(new GeneratorTest()(p))
|
|
|
|
else Module(new NastiConverterTest()(p))
|
|
|
|
}
|
|
|
|
case _ => throw new CDEMatchError
|
|
|
|
})
|
2016-07-11 21:10:27 +02:00
|
|
|
|
2016-07-08 22:40:52 +02:00
|
|
|
class PCIeMockupTestConfig extends Config(
|
|
|
|
new WithPCIeMockupTest ++ new GroundTestConfig)
|
2016-07-09 02:56:28 +02:00
|
|
|
|
2016-07-12 02:50:56 +02:00
|
|
|
class WithDirectGroundTest extends Config(
|
|
|
|
(pname, site, here) => pname match {
|
|
|
|
case TLKey("Outermost") => site(TLKey("L2toMC")).copy(
|
|
|
|
maxClientXacts = site(GroundTestKey)(0).maxXacts,
|
|
|
|
maxClientsPerPort = site(NBanksPerMemoryChannel),
|
|
|
|
dataBeats = site(MIFDataBeats))
|
|
|
|
case MIFTagBits => Dump("MIF_TAG_BITS", 2)
|
|
|
|
case NBanksPerMemoryChannel => site(GroundTestKey)(0).uncached
|
|
|
|
case _ => throw new CDEMatchError
|
|
|
|
})
|
|
|
|
|
2016-07-09 02:56:28 +02:00
|
|
|
class WithDirectMemtest extends Config(
|
|
|
|
(pname, site, here) => {
|
|
|
|
val nGens = 8
|
|
|
|
pname match {
|
|
|
|
case GroundTestKey => Seq(GroundTestTileSettings(uncached = nGens))
|
|
|
|
case GeneratorKey => GeneratorParameters(
|
|
|
|
maxRequests = 1024,
|
|
|
|
startAddress = 0)
|
2016-07-11 21:10:27 +02:00
|
|
|
case BuildGroundTest =>
|
|
|
|
(p: Parameters) => Module(new GeneratorTest()(p))
|
2016-07-09 02:56:28 +02:00
|
|
|
case _ => throw new CDEMatchError
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2016-07-11 21:10:27 +02:00
|
|
|
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
|
|
|
|
case _ => throw new CDEMatchError
|
|
|
|
})
|
|
|
|
|
2016-07-12 02:50:56 +02:00
|
|
|
class DirectGroundTestConfig extends Config(
|
|
|
|
new WithDirectGroundTest ++ new GroundTestConfig)
|
2016-07-09 02:56:28 +02:00
|
|
|
class DirectMemtestConfig extends Config(
|
2016-07-12 02:50:56 +02:00
|
|
|
new WithDirectMemtest ++ new DirectGroundTestConfig)
|
2016-07-11 21:10:27 +02:00
|
|
|
class DirectComparatorConfig extends Config(
|
2016-07-12 02:50:56 +02:00
|
|
|
new WithDirectComparator ++ new DirectGroundTestConfig)
|
2016-07-11 21:17:29 +02:00
|
|
|
|
|
|
|
class DirectMemtestFPGAConfig extends Config(
|
|
|
|
new FPGAConfig ++ new DirectMemtestConfig)
|
|
|
|
class DirectComparatorFPGAConfig extends Config(
|
|
|
|
new FPGAConfig ++ new DirectComparatorConfig)
|