ahb: inject fuzzy errors
This commit is contained in:
parent
2912a76a2b
commit
6318d7d44c
@ -39,10 +39,16 @@ class AHBNativeTest(aFlow: Boolean, txns: Int = 5000, timeout: Int = 500000)(imp
|
|||||||
io.finished := dut.io.finished
|
io.finished := dut.io.finished
|
||||||
}
|
}
|
||||||
|
|
||||||
class AHBFuzzMaster(aFlow: Boolean, txns: Int)(implicit p: Parameters) extends LazyModule
|
trait HasFuzzTarget {
|
||||||
|
val fuzzAddr = AddressSet(0x0, 0xfff)
|
||||||
|
val pattern = Seq(AddressSet(0x8, ~0x808), // ie: 0x8-0xf, 0x18-0x1f, ... 0x7f8-0x7ff
|
||||||
|
AddressSet(0x900, ~0x900)) // ie: 0x900-0x9ff, 0xb00-0xbff, ... 0xf00-0xfff
|
||||||
|
}
|
||||||
|
|
||||||
|
class AHBFuzzMaster(aFlow: Boolean, txns: Int)(implicit p: Parameters) extends LazyModule with HasFuzzTarget
|
||||||
{
|
{
|
||||||
val node = AHBIdentityNode()
|
val node = AHBIdentityNode()
|
||||||
val fuzz = LazyModule(new TLFuzzer(txns))
|
val fuzz = LazyModule(new TLFuzzer(txns, overrideAddress = Some(fuzzAddr)))
|
||||||
val model = LazyModule(new TLRAMModel("AHBFuzzMaster"))
|
val model = LazyModule(new TLRAMModel("AHBFuzzMaster"))
|
||||||
|
|
||||||
(node
|
(node
|
||||||
@ -50,6 +56,7 @@ class AHBFuzzMaster(aFlow: Boolean, txns: Int)(implicit p: Parameters) extends L
|
|||||||
:= TLDelayer(0.2)
|
:= TLDelayer(0.2)
|
||||||
:= TLBuffer(BufferParams.flow)
|
:= TLBuffer(BufferParams.flow)
|
||||||
:= TLDelayer(0.2)
|
:= TLDelayer(0.2)
|
||||||
|
:= TLErrorEvaluator(pattern, testOn=true, testOff=true)
|
||||||
:= model.node
|
:= model.node
|
||||||
:= fuzz.node)
|
:= fuzz.node)
|
||||||
|
|
||||||
@ -62,20 +69,19 @@ class AHBFuzzMaster(aFlow: Boolean, txns: Int)(implicit p: Parameters) extends L
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AHBFuzzSlave()(implicit p: Parameters) extends LazyModule
|
class AHBFuzzSlave()(implicit p: Parameters) extends SimpleLazyModule with HasFuzzTarget
|
||||||
{
|
{
|
||||||
val node = AHBIdentityNode()
|
val node = AHBIdentityNode()
|
||||||
val ram = LazyModule(new TLTestRAM(AddressSet(0x0, 0xfff)))
|
val ram = LazyModule(new TLTestRAM(fuzzAddr))
|
||||||
|
|
||||||
(ram.node
|
(ram.node
|
||||||
|
:= TLErrorEvaluator(pattern)
|
||||||
:= TLFragmenter(4, 16)
|
:= TLFragmenter(4, 16)
|
||||||
:= TLDelayer(0.2)
|
:= TLDelayer(0.2)
|
||||||
:= TLBuffer(BufferParams.flow)
|
:= TLBuffer(BufferParams.flow)
|
||||||
:= TLDelayer(0.2)
|
:= TLDelayer(0.2)
|
||||||
:= AHBToTL()
|
:= AHBToTL()
|
||||||
:= node)
|
:= node)
|
||||||
|
|
||||||
lazy val module = new LazyModuleImp(this) { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class AHBFuzzBridge(aFlow: Boolean, txns: Int)(implicit p: Parameters) extends LazyModule
|
class AHBFuzzBridge(aFlow: Boolean, txns: Int)(implicit p: Parameters) extends LazyModule
|
||||||
|
Loading…
Reference in New Issue
Block a user