-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Tile PRCI Domain Wrappers #2550
Conversation
6814c3b
to
7e4fa8c
Compare
implicit val p = context.p | ||
val tlBusToGetClockDriverFrom = context.locateTLBusWrapper(crossingParams.master.where) | ||
domain.clockNode := | ||
crossingParams.injectClockNode(context) := |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the answer is "yes" based on my read but want to confirm: this supports injecting unique sequences of clock nodes per tile, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, hierarchically where do the injected clock nodes reside?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, and they reside in the new wrapper that is hierarchically now the parent of each tile.
tileAttachParams.zip(tiles).foreach { case (params, t) => | ||
params.connect(t.asInstanceOf[params.TileType], this.asInstanceOf[params.TileContextType]) | ||
tileAttachParams.zip(tile_prci_domains).foreach { case (params, td) => | ||
params.connect(td.asInstanceOf[TilePRCIDomain[params.TileType]], this.asInstanceOf[params.TileContextType]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it seems desirable that someday we might want to support more than 1 tile per PRCI domain wrapper
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I certainly wouldn't rule that out, but if those tiles share some resources like e.g. a shared cache probably all three of them live inside a ClusteredTilesWrapper, which might either have its own clock sink node or just be wrapped in one of these clock domain wrappers itself. Alternatively we can always (configurably?) make wrappers around these wrappers... put another way, maybe this wrapper is just a DevicesSubsystem
with a single tile "device" inside it, if you upstreamed that and we re-expressed it that way :)
f6da8b3
to
0776dfc
Compare
…group bundle names instead of indexes
0776dfc
to
fd063e6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tests are successful.
Tiles are now instantiated inside of a wrapper whose purpose is to contain logic related to their Power, Clock, Reset and/or Interrupt domain. In particular:
Related issue:
Type of change: other enhancement
Impact: API modification
Development Phase: implementation
Release Notes