You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
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)