Added
- Support for source-based routing algorithm in routers, chimnyes and
floogen. The route is encoded in the header as aroute_tfield, and each router consumes a couple of bits to determine the output ports. In the chimney, a two-stage encoder was added to first determine the destination ID of the request, and then retrive the pre-computed route to that destination from a table. Thefloogenconfiguration was extended to support the new routing algorithm, and it will also generate the necessary tables for the chimneys. - Chimneys now support multiple AXI IDs for non-atomic transactions by specifying the
MaxUniqueidsparameter. This will mitigate ordering of transactions from initially different IDs or endpoints at the expense of some complexity in themeta_bufferwhich then usesid_queueto store the meta information required to return responses. - The conversion from req/rsp with different ID widths from/to NoC has been moved from the chimneys to the
floo_meta_buffermodule. - Added virtual channel router
floo_vc_routerand correspondingfloo_vc_narrow_wide_chimney. Currently only supports XY-Routing and mesh topologies. - Preliminary support for multiple local ports in the routers.
- Additional traffic pattern generation and visualization.
- Added option in
floogento define the direction ofconnectionsto/from routers withdst_dirandsrc_dirflags. This replaces the previousid_offsetflag for that purpose. Specifying the direction of the connection is useful for mesh topologies withXYRouting, but also for tile-based implementation, where the order of the ports matters resp. needs to be known. routersinfloogencan no be configured withdegreeto overwrite the number of ports. This is manily useful for tile-based implementations, where all tiles should have identical routers.
Changed
floo_route_compnow supports source-based routing, and can output both destination ID and a route to the destination.- The chimneys have an additional port
route_table_ito receive the pre-computed routing table that is generated byfloogen. - System address map was renamed from
AddrMaptoSam. - The destination field in the flit header have a new type
dst_twhich is either set toroute_tfor the new source-based routing algorithm, andid_tfor all the other routing algorithms. - Bumped
idmadependency to0.6 - Renamed
rsvdfield in flits topayloadto better reflect its purpose. - Reordered directions in
route_direction_eto better support multiple local ports. - Moved all system related rendered parameters from the flit package to its own package in
my_system_floo_noc.sv. This allows to use the auto-generated routing information for tile-based implementations, that are assembled by hand. - The
bidirectionalflag forconnectionsinfloogenis set totrueby default, since uni-directional links are currently not supported. - The System Address now needs to be passed as a parameter in the
chimneys, since it is not part of the flit packages anymore.
Fixed
- The generation of the unique ID has been changed resp. aligned for 2D meshes to increment Y-first and X-second. This way the address range and ID increment are consistent with each other.
- Broadcasted input
id_iin the chimneys should not throw an error anymore in elaboration. - The
id_offsetshould not be correctly applied in the system address map. Before it resulted in negative coordinates. - The
axi_ch_etypes now have an explicit bitwidth. Previously, this caused issues during elaboration since a 32-bit integer was used as a type. - Fixed a typedef in
floo_vc_arbiterwhen settingNumVirtChannelsto 1, that caused issue when compiling with Verilator. - Fixes issue that the routing table was not renderred when
IdTablewas used as the routing algorithm.
Removed
- Removed all
floo_synth*wrapper modules. They are moved to the internal PD repository, since they are not really maintained as part of the FlooNoC repository.