-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
First try to purge out ClockGroup API #3582
base: dev
Are you sure you want to change the base?
Conversation
} | ||
|
||
/** Layers of hierarchy with this trait contain attachment points for TileLink interfaces */ | ||
trait HasTileLinkLocations extends HasPRCILocations { this: LazyModule => | ||
trait HasTileLinkLocations extends HasLocations with LazyScope { this: LazyModule => |
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 we dont need HasLocations
here.
@@ -38,19 +41,19 @@ trait HasTileLinkLocations extends HasPRCILocations { this: LazyModule => | |||
|
|||
/** Subclasses of this trait have the ability to instantiate things inside a context that has TL attachement locations */ | |||
trait CanInstantiateWithinContextThatHasTileLinkLocations { | |||
def instantiate(context: HasTileLinkLocations)(implicit p: Parameters): Unit | |||
def instantiate(context: HasTileLinkLocations with HasPRCILocations with LazyModule)(implicit p: Parameters): Unit |
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.
originally the
HasTileLinkLocations
couples HasPRCILocations
to much. It's a bad design pattern.
} | ||
|
||
/** Attachable things provide a standard interface by which other things may attach themselves to this target. | ||
* Right now the trait is mostly for backwards compatibility, and in case it eventually becomes valuable | ||
* to be able to define additional resources available to agents trying to attach themselves, other than | ||
* what is being made available via the LocationMaps in trait HasTileLinkLocations. | ||
*/ | ||
trait Attachable extends HasTileLinkLocations { this: LazyModule => | ||
trait Attachable extends HasTileLinkLocations with HasPRCILocations { this: LazyModule => |
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.
Maybe rename Attachable to TLAttachable
?
@@ -41,14 +41,14 @@ class Cluster( | |||
lazy val clusterId = thisClusterParams.clusterId | |||
lazy val location = InCluster(clusterId) | |||
|
|||
lazy val allClockGroupsNode = ClockGroupIdentityNode() | |||
// lazy val allClockGroupsNode = ClockGroupIdentityNode() |
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'm not so sure about this...
private val clockGroup = LazyModule(new ClockGroup(busName){ override def shouldBeInlined = true }) | ||
val clockGroupNode = clockGroupAggregator.node // other bus clock groups attach here | ||
val clockNode = clockGroup.node | ||
val clockNode = ClockAdapterNode() |
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.
Need to assert input to this clockNode to be 1? or just use FixedClockBroadcast
instead?
15c9041
to
ab61e47
Compare
38a8752
to
9505d87
Compare
9505d87
to
fdd303a
Compare
The Current ClockGroup API is misleading and is strange design pattern for clock doamins. This PR is used for purging out all the ClockGroup usage in rocket-chip, providing a clean API for ClockNode Attaching.