1
0

Merge pull request #917 from freechipsproject/fuzzer_order

TLFuzzer: Allow Ordered clients to be created as well by the fuzzer
This commit is contained in:
Megan Wachs 2017-08-02 18:39:59 -07:00 committed by GitHub
commit 3fc7100048

View File

@ -77,18 +77,34 @@ object LFSRNoiseMaker {
* @param noiseMaker is a function that supplies a random UInt of a given width every time inc is true * @param noiseMaker is a function that supplies a random UInt of a given width every time inc is true
*/ */
class TLFuzzer( class TLFuzzer(
nOperations: Int, nOperations: Int,
inFlight: Int = 32, inFlight: Int = 32,
noiseMaker: (Int, Bool, Int) => UInt = { noiseMaker: (Int, Bool, Int) => UInt = {
(wide: Int, increment: Bool, abs_values: Int) => (wide: Int, increment: Bool, abs_values: Int) =>
LFSRNoiseMaker(wide=wide, increment=increment) LFSRNoiseMaker(wide=wide, increment=increment)
}, },
noModify: Boolean = false, noModify: Boolean = false,
overrideAddress: Option[AddressSet] = None)(implicit p: Parameters) extends LazyModule overrideAddress: Option[AddressSet] = None,
nOrdered: Option[Int] = None)(implicit p: Parameters) extends LazyModule
{ {
val node = TLClientNode(TLClientParameters(
name = "Fuzzer", val clientParams = if (nOrdered.isDefined) {
sourceId = IdRange(0,inFlight))) val n = nOrdered.get
require(n > 0, s"nOrdered must be > 0, not $n")
require((inFlight % n) == 0, s"inFlight (${inFlight}) must be evenly divisible by nOrdered (${nOrdered}).")
Seq.tabulate(n) {i =>
TLClientParameters(name =s"OrderedFuzzer$i",
sourceId = IdRange(i * (inFlight/n), (i + 1)*(inFlight/n)),
requestFifo = true)
}
} else {
Seq(TLClientParameters(
name = "Fuzzer",
sourceId = IdRange(0,inFlight)
))
}
val node = TLClientNode(Seq(TLClientPortParameters(clientParams)))
lazy val module = new LazyModuleImp(this) { lazy val module = new LazyModuleImp(this) {
val io = new Bundle { val io = new Bundle {