github pulp-platform/FlooNoC v0.6.0

latest releases: v0.7.0, v0.6.1
8 months ago

Added

Hardware

  • The floo_pkg was extended with helper functions to calculate the size of AXI payloads and mapping of AXI to Floo Channels. (#65)
  • Multiple configuration structs were introduced to enable a more flexible and non-verbose configuration of the FlooNoC modules. (#65)
    • The AxiCfg describes all the necessary parameters needed for the type definitions of a bidirectional AXI interface
    • The RouteCfg describes all the necessary routing information parameters required by the chimneys.
    • The ChimneyCfg describes all other parameters for the data path of the chimney (e.g. Mgr/Sbr port enable, number of oustanding transactions, RoB types & sizes, etc.)
  • The floo_test_pkg now defines default configurations for all the new configuration structs that are used by the testbenches. (#65)
  • Add floo_axi_router module, which is a wrapper similar to the floo_nw_router but for single-AXI configurations, and can be used in conjunction with floo_axi_chimney. (#69)
  • floo_nw_join now also allows to convert to a narrow AXI interface, which is useful for accessing peripherals for instance.
  • The atomic adapter in floo_nw_join can now be disabled with EnAtopAdapter.

FlooGen

  • The data_width and user_width fields for protocols are now also validated to be compatible with each other. (#65)
  • All the various *Cfg's is now rendered by FlooGen, either in the *_noc_pkg or in the *_noc module itself. (#65)
  • Added support for single-AXI configuration networks. (#69)
  • Support for negative increments when specifying a src_range or dst_range in the connections schema. (#77)
  • Add support for multiple non-contiguous address ranges for endpoints. (#80)
  • Added a sam_idx_e enum in the package, which allows to directly index into the system address map. (#111)

Changed

Hardware

  • The floo_narrow_wide_* modules and the corresponding testbenches were renamed to floo_nw_* to be more concise. (#65)
  • The flit type definitions are now implemented as SystemVerilog macros in typedef.svh. (#65)
  • The parametrization of the chimney modules has changed dramatically. They now use the newly introduced *Cfg's from the floo_pkg. In the narrow-wide chimneys, both datapaths now have their own configs (i.e. *CfgN and *CfgW), to reduce the verbosity of the module instantiation. (#65)
  • The payload field name in each *_chan_t type previously had its own name. This was unified to payload since *_chan_t already determines the type of the payload. (#65)
  • The input and output buffer FIFO depth of the routers were renamed to InFifoDepth and OutFifoDepth to be more consistent (previously ChannelFifoDepth and OutputFifoDepth). (#65)
  • The narrow-wide router wrapper now also requires the AxiCfg structs to redefine the link types internally. (#65)
  • The ReorderBufferSize parameters was shortened to RoBSize. (#65)
  • All testbenches were adapted to all changes. (#65)
  • All verification IPs were adapted to the new configuration structs. (#65)
  • Added default spill registers for outgoing AW requests in the chimneys. This is necessary since AXI allows to wait for AW and W to be valid before asserting the ready. AW and W beats are sent over the same channel, so this might lead to deadlocks otherwise. (#89)

FlooGen

  • The link typedefs are now renderd with the macros in typedef.svh instead of rendering them in pure SystemVerilog. (#65)
  • The template files were renamed to use the more concise nw naming scheme. (#65)
  • The generated modules and packages of FlooGen are now named floo_*_noc resp. floo_*_noc_pkg which is more consistent since all other modules have the floo_* prefix. (#65)
  • The protocols schema was adapted a bit to be more intuitive. (#65)
    • The type field was renamed to protocol, which currently only accepts AXI4. A new type field now is used by FlooGen to now where to attach the protocol in the network interface. Currently, FlooGen only supports the narrow-wide AXI configuration, hence only narrow|wide is allowed as type values.
    • The direction field in the protocol schema is no longer required, since the direction is determined when specifying mgr_port_protocol and sbr_port_protocol.
    • The name field must be unique now, since it is used by mgr_port_protocol and sbr_port_protocol to reference the exact protocol.
    • All examples were adapted to reflect those changes.
  • A FlooGen configuration file now requires a network_type field, to determine the type of network to generate. The options are axi for single-AXI networks and narrow-wide for the narrow-wide AXI configurations. (#69)
  • The system address map Sam is now sorted correctly and can be indexed with ep_id_e values. (#72)
  • id_offset was renamed to xy_id_offset, since this is now only applicable in XYRouting networks. An ID offset does not make sense for other types of routing algorithms. The use of id_offset is anyway not recommended anymore, since the direction of the connections can be specified in the connections schema. (#72)
  • Endpoint names in the ep_id_e enum, which are created as 2D arrays now have clearer naming scheme by prefixing them with X and Y. (#90)
  • The package and the top-module of the generated network are now seperated into its own modules floo_*_noc.sv and floo_*_noc_pkg.sv. (#110)
  • The --only-pkg and -only-top flags were added to the FlooGen CLI to omit the generation of the package resp. the top-module. (#110)
  • If --outdir resp. -o is not specified FlooGen will print the generated files to stdout instead of writing them to a file. (#110)

Fixed

  • A bug in the calcuation of the RoB offset in floo_rob was fixed. Previously, the allocation and the write process used the same counter in bursts for offset calculation, which resulted in wrong offsets. (#65)
  • Routers with XYRouting do now use the global id_offset, which was previously not accounted for (or had to be specified manually). (#72)
  • Fixed elaboration errors in the chimneys that occured. (#75)
  • Fixed Synopsys DC elaboration error due to concatenation in id_i port connection of chimneys and routers. (#103)
  • Undriven signals in floo_meta_buffer if AtopSupport is disabled. (#89)

Removed

Hardware

  • As the flit type definitions were moved to typedef.svh, the auto-generated floo_*_pkg packages were removed from the repository. Furthermore, all the (global) imports of those packages in the modules were replaced by parameters. (#65)
  • The testbench tb_floo_nw_chimney was removed since it was neither used nor maintained anymore. (#65)
  • The IdIsPort routing algorithm was removed since it can only be used for routes over a single router. The same functionality can be achieved with the SourceRouting algorithm. (#65)
  • The dma_mesh testbench was removed in favor of nw_mesh and axi_mesh which use generated networks with FlooGen. (#72)

FlooGen

  • The package generation was removed from FlooGen since it is now handled by the typedef.svh file. Further, the --only-pkg and --pkg-outdir flags were removed from the FlooGen CLI. (#65)
  • The calculation of link sizes and AXI to Floo channel mapping was removed from the FlooGen configuration file. This is now handled by the floo_pkg helper functions. (#65)

Don't miss a new FlooNoC release

NewReleases is sending notifications on new releases.