mpl: fix io blockages' micron -> dbu conversion and add tests#6834
Conversation
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
|
Running Secure-CI |
|
clang-tidy review says "All clean, LGTM! 👍" |
| = odb::Rect(block_->micronsToDbu(box.getX()), | ||
| block_->micronsToDbu(box.getY()), |
There was a problem hiding this comment.
The is a confusing API. Perhaps getCenterX/Y would make it more obvious.
|
I got one problem in Secure-CI: The macro placement is slightly different, because the 2x4 array is not being pushed to the right edge anymore, as it is correctly identifying the pin access blockage that lies there. (There are only unconstrained pins in this block and they're excluded from the top edge, meaning left/bottom/right have pin access blockages). Overall, the paths look relatively similar when comparing base/branch (I didn't compare many). However, paths that had their required hold time being met now are being violated due to a subtle increase in the required time: The problem seems to be related with the capture path and that could indicate a problem caused by CTS. However, apparently there are no hold violations just after CTS. I'll investigate the evolution of the hold violations along the flow. |
|
The investigation of the hold violations along the flow showed that these violations actually arise during detail route. This points in the direction of the necessity of having a post-drt repairing stage (there's already work being done in that regard). However, CTS results for this design are somewhat bad. Specially, because, as there's no insertion delay and we currently make the decision to split macros from regs when creating the clock tree based on it, we end up with a clock tree for both macros/regs. I opened #6845 for CTS (using .LEF instead of insertion delay as decision taker solves all the violations here). |


Resolve #6821
During the initialization of the Pusher class - which is the responsible for the boundary pushing step - we're messing up the creation of the dbu blockage by using the wrong mpl::Rect APIs.