Added
Hardware
- The
floo_pkgwas 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
AxiCfgdescribes all the necessary parameters needed for the type definitions of a bidirectional AXI interface - The
RouteCfgdescribes all the necessary routing information parameters required by the chimneys. - The
ChimneyCfgdescribes 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
- The
floo_test_pkgnow defines default configurations for all the new configuration structs that are used by the testbenches. (#65) - Add
floo_axi_routermodule, which is a wrapper similar to thefloo_nw_routerbut for single-AXI configurations, and can be used in conjunction withfloo_axi_chimney. (#69) floo_nw_joinnow also allows to convert to a narrow AXI interface, which is useful for accessing peripherals for instance.- The atomic adapter in
floo_nw_joincan now be disabled withEnAtopAdapter.
FlooGen
- The
data_widthanduser_widthfields forprotocolsare now also validated to be compatible with each other. (#65) - All the various
*Cfg's is now rendered by FlooGen, either in the*_noc_pkgor in the*_nocmodule itself. (#65) - Added support for single-AXI configuration networks. (#69)
- Support for negative increments when specifying a
src_rangeordst_rangein theconnectionsschema. (#77) - Add support for multiple non-contiguous address ranges for endpoints. (#80)
- Added a
sam_idx_eenum 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 tofloo_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 thefloo_pkg. In the narrow-wide chimneys, both datapaths now have their own configs (i.e.*CfgNand*CfgW), to reduce the verbosity of the module instantiation. (#65) - The payload field name in each
*_chan_ttype previously had its own name. This was unified topayloadsince*_chan_talready determines the type of the payload. (#65) - The input and output buffer FIFO depth of the routers were renamed to
InFifoDepthandOutFifoDepthto be more consistent (previouslyChannelFifoDepthandOutputFifoDepth). (#65) - The narrow-wide router wrapper now also requires the
AxiCfgstructs to redefine the link types internally. (#65) - The
ReorderBufferSizeparameters was shortened toRoBSize. (#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.svhinstead of rendering them in pure SystemVerilog. (#65) - The template files were renamed to use the more concise
nwnaming scheme. (#65) - The generated modules and packages of FlooGen are now named
floo_*_nocresp.floo_*_noc_pkgwhich is more consistent since all other modules have thefloo_*prefix. (#65) - The
protocolsschema was adapted a bit to be more intuitive. (#65)- The
typefield was renamed toprotocol, which currently only acceptsAXI4. A newtypefield 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 onlynarrow|wideis allowed astypevalues. - The
directionfield in theprotocolschema is no longer required, since the direction is determined when specifyingmgr_port_protocolandsbr_port_protocol. - The
namefield must be unique now, since it is used bymgr_port_protocolandsbr_port_protocolto reference the exact protocol. - All examples were adapted to reflect those changes.
- The
- A FlooGen configuration file now requires a
network_typefield, to determine the type of network to generate. The options areaxifor single-AXI networks andnarrow-widefor the narrow-wide AXI configurations. (#69) - The system address map
Samis now sorted correctly and can be indexed withep_id_evalues. (#72) id_offsetwas renamed toxy_id_offset, since this is now only applicable inXYRoutingnetworks. An ID offset does not make sense for other types of routing algorithms. The use ofid_offsetis anyway not recommended anymore, since the direction of the connections can be specified in theconnectionsschema. (#72)- Endpoint names in the
ep_id_eenum, which are created as 2D arrays now have clearer naming scheme by prefixing them withXandY. (#90) - The package and the top-module of the generated network are now seperated into its own modules
floo_*_noc.svandfloo_*_noc_pkg.sv. (#110) - The
--only-pkgand-only-topflags were added to the FlooGen CLI to omit the generation of the package resp. the top-module. (#110) - If
--outdirresp.-ois 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_robwas 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
XYRoutingdo now use the globalid_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_iport connection of chimneys and routers. (#103) - Undriven signals in
floo_meta_bufferifAtopSupportis disabled. (#89)
Removed
Hardware
- As the flit type definitions were moved to
typedef.svh, the auto-generatedfloo_*_pkgpackages 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_chimneywas removed since it was neither used nor maintained anymore. (#65) - The
IdIsPortrouting algorithm was removed since it can only be used for routes over a single router. The same functionality can be achieved with theSourceRoutingalgorithm. (#65) - The
dma_meshtestbench was removed in favor ofnw_meshandaxi_meshwhich use generated networks with FlooGen. (#72)
FlooGen
- The package generation was removed from FlooGen since it is now handled by the
typedef.svhfile. Further, the--only-pkgand--pkg-outdirflags 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_pkghelper functions. (#65)