cts: Deleted dangling dbModNet for top-level clock port.#8241
Conversation
- Fixes The-OpenROAD-Project#8166 Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
|
@oharboe Many hold buffers are inserted, possibly due to clock skew. I think the
|
|
@maliberty @jhkim-pii How can there be hold violations when there are no input pin timing constraints? |
|
This incantation(it is documented in the openroad bazel docs, just repeating here for convenience) will create a standalone issue: Untar and run: |
|
@oharboe I reproduced the bazel-orfs/mock-array issue locally, thanks to your documentation https://github.com/The-OpenROAD-Project/bazel-orfs?tab=readme-ov-file#make-issue-floorplan-example.
Hmm, I don't get it. Let me explain more about the issue. [ Before fix ]
[ After fix ] It inserted many hold buffers, and it issued RSZ-0060 error (max buffer count reached).
Thus, I believe no setup/hold violation result is wrong in the "before fix" case. Do you think there should be no hold violations? |
|
Yes: I expect no hold cells to be necessary for this design and indeed the test case is working as intended, if you insert more than a few hold cells, it should fail. I'm software engineer dabbling in EDA/hardware, but by the looks of it, the problem is the enormous amount of skew that this design has now. Try the same for master and you'll see a nearly horizontal line of the leaves of the clock tree. This design is intended to check that the clock tree can get little skew with macros and flipflops combined. |
|
Yes. The clock skew is bad.
|
|
Good place to start tomorrow :-) @maliberty Thoughts? |
|
@jhkim-pii please upload an image of the clock tree viewer so we can get a sense of the skew visually. |
|
Would it be helpful to have both OPENROAD_HIERARCHICAL=0/1 tests in OpenROAD? |
|
@oharboe Yes. It would be helpful. |
|
@arthurjolo please help @jhkim-pii with what is going wrong with cts. I'd like to merge a pr with reasonable results if it isn't a lot more effort |
|
Instance count is different. It is because there is no TAPCELL in the hierarchical flow.
It looks like TAPCELLs are inserted in floorplan stage. @maliberty @arthurjolo So this is not related to CTS. |
|
@arthurjolo However, this design shows poor CTS quality. It requires further investigation. |
|
@arthurjolo I created a new issue #8255 for the large clock skew issue. |
…ate/OpenROAD into secure-fix-cts-del-modnet Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
…id the RSZ-0060 (max buffer count reached) error - Due to the large clock skew, there are many hold violations. It raises RSZ-0060 (max buffer count reached) error. - This issue should eventually be resolved by improving the CTS engine. Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
|
The flat flow avoided the RSZ-0060 (max buffer count reached) error because many physical-only cells (TAPCELL) are counted wrongly. |
Reverted this because it is not necessary due to the code change (In hierarchical flow, |
|
clang-tidy review says "All clean, LGTM! 👍" |
…behavior b/w flat and hier flows. 2. Removed the temporary HOLD_SLACK_MARGIN as it is no longer needed. Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
…ate/OpenROAD into secure-fix-cts-del-modnet Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
maliberty
left a comment
There was a problem hiding this comment.
The code looks fine. I need








Problem
In hierarchical flow, a dangling
dbModNetw/o any load can hang on a clock port during CTS.In the post-CTS routing phase, STA must be performed after loading
4_cts.odb.However, the dangling
dbModNetblocks clock propagation on the clock port during STA, corrupting thereport_checksresults.Why did the dangling
dbModNetoccur?CTS steps:
dbModNetis made on the clock portSolution
dbModNeton the clock port because it is not needed (after CTS, the port drives just a few root clock buffers. NodbModItermload pin.)