XBAR (Crossbar switch) - Project-Bonfire/Bonfire GitHub Wiki
Specifications
-
XBAR is part of data-path of the router, no control data is passed through it, however, it is controlled by the control part (its select lines are controlled by the Allocator unit).
-
Used for transmitting data to the output port. The input of Crossbar Switch (XBAR) is fed from the Data_out (output data) of FIFO. Every FIFO is connected to every XBAR of all the outputs. However, at one time, only one input can get grant to transmits its data to the output port via a XBAR unit.
-
XBAR is instantiate per each output port of the router (5 XBAR modules in total for the router). For each XBAR, the Data_out of all the FIFO modules are connected, except the one related to the output port itself (to avoid U-turns) (for example the output of L FIFO does not need to be connected to L XBAR module).
-
XBAR is configurable via DATA_WIDTH, which specifies the width of the data passing through it (the flit width, specified in number of bits, considered as 32 bits in our case).
-
Select lines of XBAR (sel) are managed by the allocator unit. It is encoded as one-hot for better fault detection capability. The order of the meaning of select line values is as follows:
- 00001 => Local
- 00010 => South
- 00100 => West
- 01000 => East
- 10000 => North (Also, the XBAR is designed in a way that invalid values for โselโ cause the North input to be selected).
-
XBAR is fully combinational (no need for clock and reset signals).