fuzzer: allow fuzzing range to be overridden
This commit is contained in:
parent
cd547fabbd
commit
1f1240baf1
@ -62,10 +62,14 @@ class AXI4FullFuzzRAMTest(implicit p: Parameters) extends UnitTest(500000) {
|
|||||||
io.finished := dut.io.finished
|
io.finished := dut.io.finished
|
||||||
}
|
}
|
||||||
|
|
||||||
class AXI4FuzzMaster()(implicit p: Parameters) extends LazyModule
|
trait HasFuzzTarget {
|
||||||
|
val fuzzAddr = AddressSet(0x0, 0xfff)
|
||||||
|
}
|
||||||
|
|
||||||
|
class AXI4FuzzMaster()(implicit p: Parameters) extends LazyModule with HasFuzzTarget
|
||||||
{
|
{
|
||||||
val node = AXI4OutputNode()
|
val node = AXI4OutputNode()
|
||||||
val fuzz = LazyModule(new TLFuzzer(5000))
|
val fuzz = LazyModule(new TLFuzzer(5000, overrideAddress = Some(fuzzAddr)))
|
||||||
val model = LazyModule(new TLRAMModel("AXI4FuzzMaster"))
|
val model = LazyModule(new TLRAMModel("AXI4FuzzMaster"))
|
||||||
|
|
||||||
model.node := fuzz.node
|
model.node := fuzz.node
|
||||||
@ -88,11 +92,11 @@ class AXI4FuzzMaster()(implicit p: Parameters) extends LazyModule
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AXI4FuzzSlave()(implicit p: Parameters) extends LazyModule
|
class AXI4FuzzSlave()(implicit p: Parameters) extends LazyModule with HasFuzzTarget
|
||||||
{
|
{
|
||||||
val node = AXI4InputNode()
|
val node = AXI4InputNode()
|
||||||
val xbar = LazyModule(new TLXbar)
|
val xbar = LazyModule(new TLXbar)
|
||||||
val ram = LazyModule(new TLRAM(AddressSet(0x0, 0xfff)))
|
val ram = LazyModule(new TLRAM(fuzzAddr))
|
||||||
val error= LazyModule(new TLError(Seq(AddressSet(0x1800, 0xff))))
|
val error= LazyModule(new TLError(Seq(AddressSet(0x1800, 0xff))))
|
||||||
|
|
||||||
ram.node := TLFragmenter(4, 16)(xbar.node)
|
ram.node := TLFragmenter(4, 16)(xbar.node)
|
||||||
|
@ -82,7 +82,8 @@ class TLFuzzer(
|
|||||||
(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)(implicit p: Parameters) extends LazyModule
|
noModify: Boolean = false,
|
||||||
|
overrideAddress: Option[AddressSet] = None)(implicit p: Parameters) extends LazyModule
|
||||||
{
|
{
|
||||||
val node = TLClientNode(TLClientParameters(sourceId = IdRange(0,inFlight)))
|
val node = TLClientNode(TLClientParameters(sourceId = IdRange(0,inFlight)))
|
||||||
|
|
||||||
@ -96,7 +97,7 @@ class TLFuzzer(
|
|||||||
val edge = node.edgesOut(0)
|
val edge = node.edgesOut(0)
|
||||||
|
|
||||||
// Extract useful parameters from the TL edge
|
// Extract useful parameters from the TL edge
|
||||||
val endAddress = edge.manager.maxAddress + 1
|
val endAddress = overrideAddress.map(_.max).getOrElse(edge.manager.maxAddress)
|
||||||
val maxTransfer = edge.manager.maxTransfer
|
val maxTransfer = edge.manager.maxTransfer
|
||||||
val beatBytes = edge.manager.beatBytes
|
val beatBytes = edge.manager.beatBytes
|
||||||
val maxLgBeats = log2Up(maxTransfer/beatBytes)
|
val maxLgBeats = log2Up(maxTransfer/beatBytes)
|
||||||
|
Loading…
Reference in New Issue
Block a user