-
Notifications
You must be signed in to change notification settings - Fork 53
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
Implement Static Groups #1403
Implement Static Groups #1403
Conversation
Über excited for this!!! Couple of questions
|
Intervals are closed on both sides for right now (i.e., %[2,2] = %2), although it would be quite easy to change if we wanted to. |
We should probably make them exclusive on the right side since people seem to expect end-exclusive ranges |
One very syntactic nitpick: The syntax Also, long term, we should convert the Apart from these two things, LGTM! |
Self { | ||
name, | ||
assignments: vec![], | ||
holes: smallvec![], | ||
attributes: Attributes::default(), | ||
latency, |
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 would've expected StaticGroup
s to not have a holes
field whatsoever since the latency
field tells you what the generated done
condition should look like
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.
Yeah, I think you're right. For go
holes, I realize that we probably don't need them at all. For done
holes, this relates do the point you made about the redundancy of static group g<4>
and g[done] = %4 ? 1'd1
, since they're really saying the same thing.
To your point on redundancy, I currently make the well-formed
pass check that the assignment to g
's done hole is exactly g[done] = latency ? 1'd1
.
It might be helpful so the group has no done holes: instead, it just has static group g<4>
to tell the static latency, and there is no assignment at all that says g[done] = ...
. This would make our syntax even more specific.
Right now, since the groups static groups are directly being turned into dynamic groups, we still have "wasted cycles" between groups. |
Yeah, that's what I thought too |
Very basic implementation of static groups. Syntax looks like
Some notes:
Group2Seq
is not enabled for static groups. Mainly since I'm not sure what latency to give the static groups once we have split them up. Seems likeGroup2Seq
needs to do a different sort of analysis forStaticGroups
when we split them up so we have that information.