Skip to content

v0.5.0

Latest
Compare
Choose a tag to compare
@fischeti fischeti released this 13 Sep 13:51
· 14 commits to main since this release

Added

  • Support for source-based routing algorithm in routers, chimnyes and floogen. The route is encoded in the header as a route_t field, 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. The floogen configuration 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 MaxUniqueids parameter. This will mitigate ordering of transactions from initially different IDs or endpoints at the expense of some complexity in the meta_buffer which then uses id_queue to 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_buffer module.
  • Added virtual channel router floo_vc_router and corresponding floo_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 floogen to define the direction of connections to/from routers with dst_dir and src_dir flags. This replaces the previous id_offset flag for that purpose. Specifying the direction of the connection is useful for mesh topologies with XYRouting, but also for tile-based implementation, where the order of the ports matters resp. needs to be known.
  • routers in floogen can no be configured with degree to overwrite the number of ports. This is manily useful for tile-based implementations, where all tiles should have identical routers.

Changed

  • floo_route_comp now supports source-based routing, and can output both destination ID and a route to the destination.
  • The chimneys have an additional port route_table_i to receive the pre-computed routing table that is generated by floogen.
  • System address map was renamed from AddrMap to Sam.
  • The destination field in the flit header have a new type dst_t which is either set to route_t for the new source-based routing algorithm, and id_t for all the other routing algorithms.
  • Bumped idma dependency to 0.6
  • Renamed rsvd field in flits to payload to better reflect its purpose.
  • Reordered directions in route_direction_e to 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 bidirectional flag for connections in floogen is set to true by 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_i in the chimneys should not throw an error anymore in elaboration.
  • The id_offset should not be correctly applied in the system address map. Before it resulted in negative coordinates.
  • The axi_ch_e types 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_arbiter when setting NumVirtChannels to 1, that caused issue when compiling with Verilator.
  • Fixes issue that the routing table was not renderred when IdTable was 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.