A FIFO order checker.
class TLFIFOFixer(implicit p: Parameters) extends LazyModule
FIFO order: For a client whose source id is a range > 1 and asks for the FIFO order, all TileLink transactions belonging to the same source id should proceed in sequential order. To be specific, an A channel packet can be emitted only when either the previous A channel packets belongs to the same id (a burst) or all previous A channel packets have been responded by a D channel packets (a fresh transaction).
When the FIFO order is requested and violated, stall the TileLink channel (hardware deadlock).
- node
TLAdapterNode
the diplomacy object to record port connections for module generation. - module
LazyModuleImp
- io
Bundle
module I/O ports:
inHeterogeneousBag[TLBundle]
input ports.
outHeterogeneousBag[TLBundle]
output ports. - a_id
Seq[UInt]
get the targetfifoId
using the address for channel A. - a_nid
UInt
high when nofifoId
is found. - a_first
Bool
whether it is the first beat in a burst. - d_first
Bool
whether it is the first beat in a burst. - stalls
Seq[Bool]
whether the incoming packet violate any of the FIFO order rules.
- io
- apply
(x:TLOutwardNode) => TLOutwardNode
wrap an outward node with a fixer.
Last updated: 19/07/2017
CC BY-NC-SA 4.0, © (2017) Wei Song
Apache 2.0, © (2016-2017) SiFive, Inc
BSD, © (2012-2014, 2016) The Regents of the University of California (Regents)