[Buffers] fix non-CFDFC paths having non-zero occupancy#979
Conversation
chore: add constraints 10 and 15
| auto latOrFail = | ||
| timingDB.getLatency(node.op, SignalType::DATA, targetPeriod); | ||
| if (succeeded(latOrFail) && *latOrFail > 0.0) | ||
| constPart += *latOrFail; |
There was a problem hiding this comment.
Where is II in the original constraint?
|
Another thing that came across: could you generate a |
|
Not related to the PR but we should remember to check if it helps |
|
Hi, turns out I thought adding the filtering was going to be enough so I kept the style where I formulated the constraint for all channels in a CFDFC. This is bad, since we emit one global equality per path pair, instead of one per CFDFC and a path shared by two CFDFCs with different IIs needs a separate constraint under each II, and the code was disregarding that. Also good catch on missing the II division, I think it was indirectly caused by the above. Now that we do per-CFDFC we can use the entries in Also tried the setting of |
Problem: The implementation of the FPGA24 MILP's were missing constraint (10) and (11) described in this paper, resulting in patterns that are not in CFC's have a non-zero occupancy, which makes no sense, because occupancy tries to cater for incoming tokens in a loop body. (Initiation Interval).
This PR: Adds the missing constraints and re-works the rest of the code to adapt, as well as explicitly ignore patterns in the occupancy LP that have forks that are not part of a CFC.