-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
treewide: Preparation for v1.0.0
, add SV macros for type definitions and refactor module parametrization
#65
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fischeti
force-pushed
the
type-macros
branch
from
September 13, 2024 15:31
54f080d
to
33972e8
Compare
Congrats on this coming release, this is a really cool and exciting project |
Thanks @kgreig87. I am glad you enjoy it! |
…support bursts correctly
hw(rob): Rename `ReorderBufferSize` to `RoBDepth`
`IdIsPort` only decodes a single router port in the `dst_id` and was only used for verification purposes. The same functionality can be achieved with `SourceRouting` where `route_t` is a single port (i.e. `route_t == id_t`)
…ased routing tables
fischeti
force-pushed
the
type-macros
branch
from
September 17, 2024 08:29
84a86df
to
f226ac7
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Preparation for release v1.0.0
This PR introduces a lot of breaking changes to the way the SystemVerilog modules are parametrized. The reason for this drastic change is that a lot of features have been added to FlooNoC since the beginning including the automatic generation of networks with FlooGen. Some of the design decisions taken in the beginning of the development proved to be unsuitable when generating large networks.
For instance, the flit type packages in
hw
were auto generated with a python script and globally imported in the modules. When using FlooNoC as a library this is quite awkward and error-prone as the those packages need to be overwritten inside the.bender
folder. Therefore, the auto-generation of all the types was removed in this PR in favor of SystemVerilog macros and some helper functions in thefloo_pkg
.These breaking interface changes might be annoying, but the goal is that it will result in a release
v1.0.0
, which should stabilize the IPs. The changes are numerous and are given below:Added
Hardware
floo_pkg
was extended with helper functions to calculate the size of AXI payloads and mapping of AXI to Floo Channels.AxiCfg
describes all the necessary parameters needed for the type definitions of a bidirectional AXI interfaceRouteCfg
describes all the necessary routing information parameters required by the chimneys.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.)floo_test_pkg
now defines default configurations for all the new configuration structs that are used by the testbenches.FlooGen
data_width
anduser_width
fields forprotocols
are now also validated to be compatible with each other.*Cfg
's is now rendered by FlooGen, either in the*_noc_pkg
or in the*_noc
module itself.Changed
Hardware
floo_narrow_wide_*
modules and the corresponding testbenches were renamed tofloo_nw_*
to be more concise.typedef.svh
.*Cfg
's from thefloo_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.*_chan_t
type previously had its own name. This was unified topayload
since*_chan_t
already determines the type of the payload.InFifoDepth
andOutFifoDepth
to be more consistent (previouslyChannelFifoDepth
andOutputFifoDepth
).AxiCfg
structs to redefine the link types internally.ReorderBufferSize
parameters was shortened toRoBSize
.FlooGen
typedef.svh
instead of rendering them in pure SystemVerilog.nw
naming scheme.floo_*_noc
resp.floo_*_noc_pkg
which is more consistent since all other modules have thefloo_*
prefix.protocols
schema was adapted a bit to be more intuitive.type
field was renamed toprotocol
, which currently only acceptsAXI4
. A newtype
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 onlynarrow|wide
is allowed astype
values.direction
field in theprotocol
schema is no longer required, since the direction is determined when specifyingmgr_port_protocol
andsbr_port_protocol
.name
field must be unique now, since it is used bymgr_port_protocol
andsbr_port_protocol
to reference the exact protocol.Fixed
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.Removed
Hardware
typedef.svh
, the auto-generatedfloo_*_pkg
packages were removed from the repository. Furthermore, all the (global) imports of those packages in the modules were replaced by parameters.tb_floo_nw_chimney
was removed since it was neither used nor maintained anymore.IdIsPort
routing algorithm was removed since it can only be used for routes over a single router. The same functionality can be achieved with theSourceRouting
algorithm.FlooGen
typedef.svh
file. Further, the--only-pkg
and--pkg-outdir
flags were removed from the FlooGen CLI.floo_pkg
helper functions.