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

Tile PRCI Domain Wrappers #2550

Merged
merged 12 commits into from
Jul 21, 2020
Merged

Tile PRCI Domain Wrappers #2550

merged 12 commits into from
Jul 21, 2020

Conversation

hcook
Copy link
Member

@hcook hcook commented Jul 11, 2020

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:

  • The layer has a diplomatically-derived clock and reset, which are used to drive the tile clock and reset.
  • The portion of TileLink clock crossings that are supposed to be in the tile clock domain are instantiated in this layer.
  • Interrupt synchronizers are instantiated in this layer.
  • Boundary buffers and isolation cells related to hierarchical P&R are to be instantiated in this layer.
  • In the future core-local interrupt handlers could be instantiated in this layer.

Related issue:

Type of change: other enhancement

Impact: API modification

Development Phase: implementation

Release Notes

  • All tiles are now instantiated inside of a wrapper that contains logic related to their power, reset, clock and interrupt domain. This change adds a level to the module hierarchy path to the tile.

@hcook hcook force-pushed the tile-clock-domain-wrappers branch from 6814c3b to 7e4fa8c Compare July 13, 2020 17:31
implicit val p = context.p
val tlBusToGetClockDriverFrom = context.locateTLBusWrapper(crossingParams.master.where)
domain.clockNode :=
crossingParams.injectClockNode(context) :=
Copy link
Contributor

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?

Copy link
Contributor

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?

Copy link
Member Author

@hcook hcook Jul 17, 2020

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])
Copy link
Contributor

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

Copy link
Member Author

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 :)

@hcook hcook force-pushed the tile-clock-domain-wrappers branch 2 times, most recently from f6da8b3 to 0776dfc Compare July 20, 2020 17:11
@hcook hcook force-pushed the tile-clock-domain-wrappers branch from 0776dfc to fd063e6 Compare July 20, 2020 21:11
Copy link
Contributor

@ernie-sifive ernie-sifive left a comment

Choose a reason for hiding this comment

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

Tests are successful.

@hcook hcook merged commit 6eb1a3d into master Jul 21, 2020
@hcook hcook deleted the tile-clock-domain-wrappers branch September 3, 2020 19:07
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.

3 participants