-
Notifications
You must be signed in to change notification settings - Fork 90
duc - Pipeline PhasedAccu for n>8 and allow non-log(2) values of n when n>8 #170
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
base: master
Are you sure you want to change the base?
Conversation
Looks good to me, nice to see tests extended as well. |
@@ -205,11 +205,13 @@ def __init__(self, width, constants): | |||
|
|||
### | |||
|
|||
self.latency = 2 if n > 8 else 1 |
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.
Latency should be 0 for comb.
@@ -223,11 +225,25 @@ def __init__(self, width, constants): | |||
if n > 5: | |||
ctx += o[5].eq(i + (i << 2)) | |||
if n > 6: | |||
ctx += o[6].eq(o[3] << 1) | |||
ctx += o[6].eq((i << 2) + (i << 1)) |
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.
Does this actually make a difference?
if n > 14: | ||
ctx += o[14].eq((i << 3) + (i << 2) + (i << 1)) | ||
if n > 15: | ||
ctx += o[15].eq(i + (i << 3) + (i << 2) + (i << 1)) |
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.
Can the entire list be generated programmatically?
Also I'd have thought Vivado would do these optimizations already if you simply write *3, *4, *5, etc.
Are these modifications compatible with https://github.com/quartiq/phaser ? |
This patch was added with the Artiq EFC LTC2K variant in order to get timing closure for n>8. We also needed non-log(2) phases so that requirement is also lifted with the patch.