apb: inject fuzzy errors
This commit is contained in:
parent
0280a1f218
commit
ec70e5fb02
@ -12,7 +12,9 @@ class APBRAM(
|
|||||||
executable: Boolean = true,
|
executable: Boolean = true,
|
||||||
beatBytes: Int = 4,
|
beatBytes: Int = 4,
|
||||||
devName: Option[String] = None,
|
devName: Option[String] = None,
|
||||||
errors: Seq[AddressSet] = Nil)
|
errors: Seq[AddressSet] = Nil,
|
||||||
|
fuzzReady: Boolean = false,
|
||||||
|
fuzzError: Boolean = false)
|
||||||
(implicit p: Parameters) extends DiplomaticSRAM(address, beatBytes, devName)
|
(implicit p: Parameters) extends DiplomaticSRAM(address, beatBytes, devName)
|
||||||
{
|
{
|
||||||
val node = APBSlaveNode(Seq(APBSlavePortParameters(
|
val node = APBSlaveNode(Seq(APBSlavePortParameters(
|
||||||
@ -37,8 +39,8 @@ class APBRAM(
|
|||||||
mem.write(paddr, Vec.tabulate(beatBytes) { i => in.pwdata(8*(i+1)-1, 8*i) }, in.pstrb.toBools)
|
mem.write(paddr, Vec.tabulate(beatBytes) { i => in.pwdata(8*(i+1)-1, 8*i) }, in.pstrb.toBools)
|
||||||
}
|
}
|
||||||
|
|
||||||
in.pready := Bool(true)
|
in.pready := Bool(!fuzzReady) || LFSR16(!in.penable)(0)
|
||||||
in.pslverr := RegNext(!legal)
|
in.pslverr := RegEnable(!legal, !in.penable) || (Bool(fuzzError) && LFSR16(Bool(true))(0))
|
||||||
in.prdata := mem.readAndHold(paddr, read).asUInt
|
in.prdata := mem.readAndHold(paddr, read).asUInt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ class APBFuzzBridge(aFlow: Boolean, txns: Int)(implicit p: Parameters) extends L
|
|||||||
val fuzz = LazyModule(new TLFuzzer(txns))
|
val fuzz = LazyModule(new TLFuzzer(txns))
|
||||||
val model = LazyModule(new TLRAMModel("APBFuzzMaster"))
|
val model = LazyModule(new TLRAMModel("APBFuzzMaster"))
|
||||||
val xbar = LazyModule(new APBFanout)
|
val xbar = LazyModule(new APBFanout)
|
||||||
val ram = LazyModule(new APBRAM(AddressSet(0x0, 0xff)))
|
val ram = LazyModule(new APBRAM(AddressSet(0x0, 0xff), fuzzReady = true, fuzzError = true))
|
||||||
val gpio = LazyModule(new RRTest0(0x100))
|
val gpio = LazyModule(new RRTest0(0x100))
|
||||||
|
|
||||||
ram.node := xbar.node
|
ram.node := xbar.node
|
||||||
@ -31,6 +31,7 @@ class APBFuzzBridge(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)
|
||||||
|
:= TLFragmenter(4, 8)
|
||||||
:= model.node
|
:= model.node
|
||||||
:= fuzz.node)
|
:= fuzz.node)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user