Replies: 1 comment 4 replies
-
|
Perhaps things aren't quite working as you expect? Having tested this myself, it seems XLS's It seems XLS's This could be a sign that the delay model is falling short! But - if it's accurate, then I think you'll need to relax your target clock period, or find a better multiplier architecture for XLS to pipeline. For instance, you could try some number of steps of reductions from (a1<<32 + a0) * (b1<<32 + b0), either classical: or Karatsuba: EDIT: For reference, your decomposition is estimated under the ASAP7 delay model to have a critical path of ~37 ns. Two steps of classical reduction gets you down to something that schedules in 4 pipeline stages with 1000ps target clock period, with an unscheduled critical path of ~3.5 ns. (Karatsuba is cool, but you end up needing 3 steps of reduction to get to your target clock... and even so, you end up with a ~6.2 ns critical path and requiring 8 pipeline stages.) Alternatively, it would be possible for XLS to add a feature to pipeline large multipliers. This gets a little tricky, since it's (in general) unclear which architecture or cut-points would be best... but we could at least try to decompose a multiplication to smaller operations that each fit within the target clock period. If you'd like this, I'm sure we'd welcome a PR for it - or you could file a feature request! |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
-
@tspyrou @ollef @QuantamHD FYI
I was wondering if integer multiplication could be pipelined using Google XLS, but either we're doing something wrong or our expectations are wrong w.r.t. the Google XLS use-case.
Alas:
Initially I wanted to use Yosys+abc retiming to do this, but yosys+abc retiming runs up against limitations in how much pipelining it is able to take advantage of.
https://github.com/The-OpenROAD-Project/RegFileStudy/tree/main/multiplier
Beta Was this translation helpful? Give feedback.
All reactions