Generic Tilelink crossbar.
class TLXbar(policy: TLArbiter.Policy = TLArbiter.roundRobin)(implicit p: Parameters) extends LazyModule
- policy
TLArbiter.Policy
(param) the arbitration algorithm used in arbiters. - node
TLNexusNode
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. - inputIdRanges
Seq[IdRange]
ranges of input (client) ports. Resolved at module generation time. - outputIdRanges
Seq[IdRange]
ranges of output (manager) ports. Pre-assigned. - outputPorts
Seq[(addr: UInt) => Bool]
address route functions. - wide_bundle
TLBundleParameters
A Bundle parameter wide enough to represent all input and output ports. Resolved at module generation time. - addressA, addressC
Seq[UInt]
target addresses of channel A and C. - requestAIO, requestCIO
Seq[Bool]
client to manager (I to O) one-hot route result for channel A and C. - requestBOI, requestDOI
Seq[Bool]
manager to client (O to I) one-hot route result for channel B and D. - requestEIO
Seq[Bool]
client to manager (I to O) one-hot route result for channel E. - beatsAI, beatsBO, beatsCI, beatsDO, beatsEI
Seq[UInt]
number of beats in the busrt (AXI style, N-1). - portsAOI, portsBIO, portsCOI, portsDIO, portsEOI,
Seq[Seq[TLBundleX]]
Demulplexed connections from input to outputs.
- io
The data-width of all ports must be equal.
The sourceId and fifoId are reordered to reduce their range.
This range shrink is defined in the case variables of node
: clientFn
and managerFn
.
- mapInputIds
(Seq[TLClientPortParameters]) => Seq[IdRange]
Resolve id range of input ports at binding time. All input port should have a non-zero range, otherwise exception! - mapOutputIds
(Seq[TLClientPortParameters]) => Seq[IdRange]
Get the assigned output id range of all managers. - assignRanges
(Seq[Int] => Seq[IdRange])
Internal function used by mapInputIds() and mapOutputIds(). - relabeler
(Int) => Int
shrink the range of fifoId. Internal function used by TLXbar.node.managerFn(). - fanout
(DecoupledIO[T], Seq[Bool]) => Vec[DecoupledIO[T]]
demultiplexing input port for output connection.
Last updated: 18/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)