Routing¶
The second aspect of the network is how the routing is performed in FlooNoC, which is where FlooGen comes into play. A lot of of the routing information is quite cumbersome to define and error-prone to do by hand. FlooGen allows you to define the routing in a high-level way, and it will generate the low-level routing information for you. The basic information you need to provide is:
Mandatory Fields¶
route_algo¶
This determines the routing algorithm to use. The options are defined in the [RouteAlgo][floogen.model.routing.RouteAlgo] enum and can be specified as follows:
| Algorithm | Description |
|---|---|
XY |
Dimension-ordered XY routing algorithm. |
YX |
Dimension-ordered YX routing algorithm. |
ID |
Routing algorithm based on router ID tables. |
SRC |
Source-based routing algorithm. |
You can find more information about the different routing algorithms in the routing algorithms documentation.
use_id_table¶
A boolean flag indicating that if set to true, a system address table will be generated in the package which is used to translate system addresses to endpoint IDs or coordinates. This is always used in table-based routing and can be used in XYRouting to translate system addresses to XY-coordinates. If XYRouting is used and this field is set to false, the XY coordinates are automatically derived as address offsets. This is much simpler but requires that all endpoint addresses are contiguous and of the same size.
Optional fields¶
rob_idx¶
The number of bits to allocate for the rob_idx field in the packet header. This is only relevant if reordering buffers are used in the network. If not specified, a default of 1 bit is used.
Reference¶
There is a lot of information that is automatically generated by FlooGen, such as System address map, possible routing tables etc., This information is stored in the [Routing][floogen.model.routing.Routing] class. The full reference of the routing model can be found here.