csr: add ability to express clusters #1659
Open
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.
This adds the ability to express clusters of registers. This can be very useful for peripherals with repeated groups of registers.
A
CSRCluster
class, emulating a simplified array, is added. Peripherals can add items to the cluster, and the CSRs will, for JSON, CSV, and HTML, be collected as normal.For SVD, the code is extended to be able to handle outputting clusters directly in the XML structure. This way, code generation tools like
svd2rust
can generate nested array structures, making ergonomics significantly better when working with peripherals.The code supports nesting of
CSRClusters
too.An example usecase:
I tried to make sure that the touched codebase was as small as possible, to minimize breakage of existing tools. As far as I can tell, everything that doesn't use
CSRCluster
should work as before with no changes.Best regards,
Lasse