-
Notifications
You must be signed in to change notification settings - Fork 182
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
umulp is more delay intensive than regular umul #1810
Comments
asap7 8-bit umul: xls/xls/estimators/delay_model/models/asap7.textproto Lines 18732 to 18746 in 7e3d4e8
asap7 8-bit umulp: xls/xls/estimators/delay_model/models/asap7.textproto Lines 19306 to 19320 in 7e3d4e8
|
Looks like this is the case too for sky130 too: 8-bit umul: xls/xls/estimators/delay_model/models/sky130.textproto Lines 18732 to 18746 in 7e3d4e8
8-bit umulp: xls/xls/estimators/delay_model/models/sky130.textproto Lines 19306 to 19320 in 7e3d4e8
|
looks like this actually come from codegen: umulp is simply substracting a fix offset from the
|
looks like this was introduced w/ af042f3#diff-a2fc2bd44970c5305b7655bcbce2d4e7f01015e489b78fe35bdc46dcfb3b00bd (and that before that one of the partial product was just 0). |
I think the change linked above was intended to be specific to simulation. Possibly the actual issue is that XLS currently outputs its simulation-only stand-in for umulp when targeting a PDK that does not provide partial-multiplication operations. |
Umulp enables splitting a multiply into a partial product (which produces two values) and the final accumulation. This can enable better scheduling because a pipeline register can appear in the middle of the multiply. However, this is only useful if you are using an IP libraries has a fast partial product and use the mulp_format flag in order to instantiate the IP block: xls/docs_src/codegen_options.md Line 274 in b959a4e
Otherwise XLS just emits something like |
Describe the bug
umulp
characterization show more delay thana * b
for asap7.Expected behavior
umulp
should take less time thata*b
Screenshots
a * b
yield the following delay preview:umulp(a, b)
yield the following delay preview:The text was updated successfully, but these errors were encountered: