[ENG-2040] set_path_margin implementation in OpenSTA#57
Conversation
Greptile SummaryThis PR implements
Confidence Score: 5/5The implementation is functionally correct and well-tested; the only findings are style inconsistencies in WriteSdc and a misleading test comment. The core correctness concern from earlier review rounds — that targetClkPathMargin would ignore -from/-through constraints — is properly addressed by using the path-aware Search::exceptionTo overload, and the test suite validates -from, -through, -to, and their combinations end-to-end. The sign-flip convention (negate margin for setup) is consistent with the golden output. sdc/WriteSdc.cc has a minor style inconsistency (gzprintf vs sta::print); test/set_path_margin.tcl has a misleading comment for the setup_through_r1 case. Important Files Changed
Reviews (4): Last reviewed commit: "Add JSON support and test for it" | Re-trigger Greptile |
|
@greptile please review again |
|
@stanminlee can you resolve the conflicts? |
|
@akashlevy yes, will do tmr |
|
So path margin is implemented as a timing exception? I'm not quite sure that that's the correct formulation. I would have thought it would be implemented similar to CRPR (clock reconvergence pessimism) as opposed to something like multicycle path... let me think about this some more... EDIT: ok I thought about it some more and now I see the motivation. It makes sense. Exceptions get applied to points in the circuit and are processed during reporting. Path margin is exactly the right use case for that, since it is applied at an endpoint. |
|
@greptile can you re-review this from scratch? |
Support for set_path_margin in OpenSTA
Overview of command
Main implementation details - full workflow
Various updates were made in some header files for class and function definitions.
Test case