From fc5c04ed4b64f76a8e2d020b1b4d3646c401273c Mon Sep 17 00:00:00 2001 From: Megan Wachs Date: Wed, 2 Aug 2017 14:44:18 -0700 Subject: [PATCH 1/2] TLFuzzer: Allow Ordered clients to be created as well by the fuzzer --- src/main/scala/tilelink/Fuzzer.scala | 38 ++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/src/main/scala/tilelink/Fuzzer.scala b/src/main/scala/tilelink/Fuzzer.scala index 6bd65c87..e7047b68 100644 --- a/src/main/scala/tilelink/Fuzzer.scala +++ b/src/main/scala/tilelink/Fuzzer.scala @@ -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 */ class TLFuzzer( - nOperations: Int, - inFlight: Int = 32, - noiseMaker: (Int, Bool, Int) => UInt = { - (wide: Int, increment: Bool, abs_values: Int) => - LFSRNoiseMaker(wide=wide, increment=increment) - }, - noModify: Boolean = false, - overrideAddress: Option[AddressSet] = None)(implicit p: Parameters) extends LazyModule + nOperations: Int, + inFlight: Int = 32, + noiseMaker: (Int, Bool, Int) => UInt = { + (wide: Int, increment: Bool, abs_values: Int) => + LFSRNoiseMaker(wide=wide, increment=increment) + }, + noModify: Boolean = false, + overrideAddress: Option[AddressSet] = None, + nOrdered: Option[Int] = None)(implicit p: Parameters) extends LazyModule { - val node = TLClientNode(TLClientParameters( - name = "Fuzzer", - sourceId = IdRange(0,inFlight))) + + val clientParams = if (nOrdered.isDefined) { + 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(inFlight/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) { val io = new Bundle { From 595415d207d675cfe7be0f5ba9a1988a3cdd86b6 Mon Sep 17 00:00:00 2001 From: Megan Wachs Date: Wed, 2 Aug 2017 15:48:21 -0700 Subject: [PATCH 2/2] TLFuzzer: Correct the number of ordered clients created --- src/main/scala/tilelink/Fuzzer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/tilelink/Fuzzer.scala b/src/main/scala/tilelink/Fuzzer.scala index e7047b68..c37ad450 100644 --- a/src/main/scala/tilelink/Fuzzer.scala +++ b/src/main/scala/tilelink/Fuzzer.scala @@ -92,7 +92,7 @@ class TLFuzzer( 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(inFlight/n) {i => + Seq.tabulate(n) {i => TLClientParameters(name =s"OrderedFuzzer$i", sourceId = IdRange(i * (inFlight/n), (i + 1)*(inFlight/n)), requestFifo = true)