Skip to content
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

Support Tile Clusters (tree-like hierarchies) #3238

Closed
wants to merge 37 commits into from
Closed

Conversation

jerryz123
Copy link
Contributor

@jerryz123 jerryz123 commented Jan 31, 2023

This work substantially refactors the existing Tile/TilePRCIDomain/HasTiles/InstantiatesTiles code into a system that support recursive clusters of tiles.

This PR defines an Element as an abstract node in the hierarchy tree. Elements can be BaseTiles or Clusters, where BaseTiles are leaf nodes in the hierarchy, clusters are non-root nodes, and the BaseSubsystem is the root node.
BaseTile and Cluster will support deduplication.

Notably Clusters support recursive instantiation, a Cluster can contain Tiles or internal Clusters. The Cluster bus topology should be capable of both supporting hierarchical coherence, and the BaseSubsystems topology handle managing all coherence, depending on configuration variables.

This PR still requires more time. Some of the interrupt handling is not satisfying, and some decisions over clock/reset crossing ought to be addressed.

Type of change: other enhancement

Impact: API modification

Development Phase: implementation

Release Notes

@jerryz123 jerryz123 changed the title Support Tile Clusters (recursive subsystems) Support Tile Clusters (tree-like hierarchies) Jan 31, 2023
@sequencer
Copy link
Member

will this PR block the 3.6 bump?

@jerryz123
Copy link
Contributor Author

No. I don't think this PR should block anything, we should delay features while more critical things are going in.
(I certainly want to see more thorough testing before this goes in).

@sequencer
Copy link
Member

the semantic of hartid and tileid is different in MT cores(although there are no opensource MT core for now). This PR seems to remove the hartid, is this a desidered refactor?

@@ -2,15 +2,16 @@

package freechips.rocketchip.subsystem

import chisel3.Flipped
import chisel3.experimental.IO
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need in 3.6

@jerryz123
Copy link
Contributor Author

the semantic of hartid and tileid is different in MT cores(although there are no opensource MT core for now). This PR seems to remove the hartid, is this a desidered refactor?

tileId is static, and should only be referenced by generator (its the old "staticIdForMetadataUseOnly").
hartId should be set by IO to allow dedup.

Future work can allow a tile to support multiple hartid.

@sequencer
Copy link
Member

Great!

@jerryz123
Copy link
Contributor Author

Replaced by #3490

@jerryz123 jerryz123 closed this Sep 19, 2023
@jerryz123 jerryz123 deleted the clusters branch January 17, 2024 19:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants