-
Notifications
You must be signed in to change notification settings - Fork 33
Update and move hasher chiplet constraints #468
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
Conversation
cb48f93 to
3290e8e
Compare
adr1anh
left a comment
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 gave it another pass focusing on the actual constraints. I'm still confused about the overall constraints, even with the docs.
While I haven't fully thought things through, I think it would help if we state the constraints we apply at
- first row
- transition rows
- penultimate row
- last row
constraints/hasher.air
Outdated
|
|
||
| # Enforce that if any of f_abp, f_mpa, f_mva, f_mua flags is set to 1, the next value of s[0] | ||
| # is 0. | ||
| enf s[0]' * f_comp = 0; |
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.
If I understand correctly, if we're in the last row of an operation which carries over to the next block, then the next row (which is the first of the next block), we must perform an output?
I think I see now though. We're indicating with s[0] that this is a block in which we will output the value when we reach the end?
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.
Basically, if we are outputting a result in the current row then the next row should be the start of a new operation, which implies that s[0] must be 1 (note that s[0] partitions the hasher ops into two groups with the 1 group consisting of output ops).
If, on the other hand, the op of the next cycle is one of the absorption ops (which happen on rows 1 less than multiples of 8) then the s[0] in the next row (which is a multiple of 8 row) is set to 0 so that we prohibit any op which starts a (new) computation.
d11d150 to
0af9fa2
Compare
adr1anh
left a comment
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.
Looks good. We'll definitely need another more thorough audit of the actual contraints but for now it seems like they match the docs.
Describe your changes
Closes #467
Also includes #257
Checklist before requesting a review
nextaccording to naming convention.CHANGELOG.md