Skip to content

gui: display macro clock insertion latency in timing reports#9683

Merged
maliberty merged 7 commits intoThe-OpenROAD-Project:masterfrom
Pinata-Consulting:vibe-9682
Mar 12, 2026
Merged

gui: display macro clock insertion latency in timing reports#9683
maliberty merged 7 commits intoThe-OpenROAD-Project:masterfrom
Pinata-Consulting:vibe-9682

Conversation

@oharboe
Copy link
Collaborator

@oharboe oharboe commented Mar 7, 2026

Add source and target clock insertion delay columns to the timing paths table, hidden by default. The values come from PathEnd's sourceClkInsertionDelay/targetClkInsertionDelay (liberty max/min_clock_tree_path timing groups). Also annotate the clock summary row in the detail view with the insertion delay when non-zero.

Closes #9681

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds the display of source and target clock insertion delays to the timing reports GUI. The changes are well-implemented, adding new data members to TimingPath, plumbing the data from the STA engine, and displaying it in new columns in the timing paths table, which are hidden by default as intended. The clock summary row is also correctly annotated with this new information. I have one suggestion to improve the robustness of the code.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 7, 2026

clang-tidy review says "All clean, LGTM! 👍"

@github-actions
Copy link
Contributor

github-actions bot commented Mar 7, 2026

clang-tidy review says "All clean, LGTM! 👍"

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy made some suggestions

@github-actions
Copy link
Contributor

github-actions bot commented Mar 7, 2026

clang-tidy review says "All clean, LGTM! 👍"

Annotate pins in the Data/Capture Path Details views with the
internal clock latency from their Liberty cell's
max_clock_tree_path / min_clock_tree_path timing groups, shown
inline as [clk ins: <value>].

Closes The-OpenROAD-Project#9681

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
@github-actions
Copy link
Contributor

github-actions bot commented Mar 7, 2026

clang-tidy review says "All clean, LGTM! 👍"

@oharboe
Copy link
Collaborator Author

oharboe commented Mar 7, 2026

@maliberty something like this?

@oharboe oharboe closed this Mar 7, 2026
@maliberty
Copy link
Member

are you asking me to review this?

@oharboe oharboe reopened this Mar 9, 2026
@oharboe oharboe marked this pull request as ready for review March 9, 2026 14:56
@oharboe
Copy link
Collaborator Author

oharboe commented Mar 9, 2026

are you asking me to review this?

Yes please.. Of course I have no idea what I'm doing here. Claude might. What this PR offers is a demonstration of what I think would be a useful way to present this information for my use-case.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 9, 2026

clang-tidy review says "All clean, LGTM! 👍"

@oharboe oharboe requested a review from maliberty March 9, 2026 15:01
@github-actions
Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

oharboe and others added 2 commits March 10, 2026 17:04
Revert unrelated bounds-check change in timingWidget.cpp.
Highlight pins with clock insertion delay in blue so the
annotation is visually noticeable in the timing path details.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Update the documentation screenshot to show the [clk ins: 70.099]
annotation in blue text, making it visually distinct as requested
in review.

Cross-checked against Element_typ.lib: the max_clock_tree_path
cell_rise value is 70.09948, matching the GUI display of 70.099.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
@oharboe oharboe requested a review from maliberty March 10, 2026 16:43
@github-actions
Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@oharboe
Copy link
Collaborator Author

oharboe commented Mar 11, 2026

@maliberty unrelated CI errors, I think. These are GUI changes.

@maliberty
Copy link
Member

@luarss I see an rather uninformative message in the CI:

One or more checks failed:
- Documentation Checks failed

Please clarify what is going on and improve the message.

@oharboe
Copy link
Collaborator Author

oharboe commented Mar 11, 2026

@luarss I see an rather uninformative message in the CI:

One or more checks failed:
- Documentation Checks failed

Please clarify what is going on and improve the message.

@luarss like so? #9729

oharboe and others added 2 commits March 11, 2026 23:17
Revert timing_report_clk_insertion.png to unblock CI doc checking.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
@oharboe
Copy link
Collaborator Author

oharboe commented Mar 11, 2026

@maliberty automerge?

@luarss The doc CI problems is a separate concern, I have reverted doc updates from this PR.

@github-actions
Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@luarss
Copy link
Contributor

luarss commented Mar 12, 2026

@oharboe @maliberty I will be opening a separate PR to address the issues. Thanks for raising this.

@luarss
Copy link
Contributor

luarss commented Mar 12, 2026

Adding some postmortem here, looking at the failed runs - debug logs do appear in the Preprocess docs block

https://jenkins.openroad.tools/job/OpenROAD-Public/job/PR-9683-head/6/stages/?selected-node=1005

[2026-03-10T13:44:54.202Z] + make preprocess -C /OpenROAD/docs
[2026-03-10T13:44:54.202Z] make: Entering directory '/OpenROAD/docs'
[2026-03-10T13:44:54.202Z] ./src/scripts/link_readmes.sh && python3 src/scripts/md_roff_compat.py
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] ERROR: README.md not found in ../src/cmake
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] ERROR: README.md not found in ../src/dbSta
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] ERROR: README.md not found in ../src/dst
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] ERROR: README.md not found in ../src/ram
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] File linked successfully.
[2026-03-10T13:44:54.202Z] ant.md
[2026-03-10T13:44:54.202Z] Names: 1,        Desc: 1,        Syn: 1,        Options: 1,        Args: 1
[2026-03-10T13:44:54.202Z] Global Examples: None
[2026-03-10T13:44:54.202Z] Global See Also: None
[2026-03-10T13:44:54.202Z] Man2 successfully compiled.
[2026-03-10T13:44:54.202Z] cts.md
[2026-03-10T13:44:54.202Z] Names: 6,        Desc: 6,        Syn: 6,        Options: 6,        Args: 6
[2026-03-10T13:44:54.202Z] Global Examples: None
[2026-03-10T13:44:54.202Z] Global See Also: None
[2026-03-10T13:44:54.202Z] Man2 successfully compiled.
[2026-03-10T13:44:54.202Z] ./md/man2/dbSta.md doesn't exist. Continuing
[2026-03-10T13:44:54.202Z] dft.md
[2026-03-10T13:44:54.202Z] Names: 6,        Desc: 6,        Syn: 6,        Options: 6,        Args: 6
[2026-03-10T13:44:54.202Z] Global Examples: None
[2026-03-10T13:44:54.202Z] Global See Also: None
[2026-03-10T13:44:54.202Z] Man2 successfully compiled.
[2026-03-10T13:44:54.202Z] dpl.md
[2026-03-10T13:44:54.202Z] Names: 7,        Desc: 7,        Syn: 7,        Options: 7,        Args: 7
[2026-03-10T13:44:54.202Z] Global Examples: None
[2026-03-10T13:44:54.202Z] Global See Also: None
[2026-03-10T13:44:54.202Z] Man2 successfully compiled.
[2026-03-10T13:44:54.202Z] drt.md
[2026-03-10T13:44:54.202Z] Names: 3,        Desc: 3,        Syn: 3,        Options: 3,        Args: 3
[2026-03-10T13:44:54.202Z] Global Examples: None
[2026-03-10T13:44:54.202Z] Global See Also: None
[2026-03-10T13:44:54.202Z] Man2 successfully compiled.
[2026-03-10T13:44:54.202Z] ./md/man2/dst.md doesn't exist. Continuing
[2026-03-10T13:44:54.202Z] fin.md
[2026-03-10T13:44:54.202Z] Names: 1,        Desc: 1,        Syn: 1,        Options: 1,        Args: 1
[2026-03-10T13:44:54.202Z] Global Examples: None
[2026-03-10T13:44:54.202Z] Global See Also: None
[2026-03-10T13:44:54.202Z] Man2 successfully compiled.
[2026-03-10T13:44:54.202Z] gpl.md
[2026-03-10T13:44:54.202Z] Names: 4,        Desc: 4,        Syn: 4,        Options: 4,        Args: 4
[2026-03-10T13:44:54.202Z] Global Examples: None
[2026-03-10T13:44:54.202Z] Global See Also: None
[2026-03-10T13:44:54.202Z] Man2 successfully compiled.
[2026-03-10T13:44:54.202Z] grt.md
[2026-03-10T13:44:54.202Z] Names: 16,        Desc: 16,        Syn: 16,        Options: 16,        Args: 16
[2026-03-10T13:44:54.202Z] Global Examples: None
[2026-03-10T13:44:54.202Z] Global See Also: None
[2026-03-10T13:44:54.202Z] Man2 successfully compiled.
[2026-03-10T13:44:54.202Z] gui.md
[2026-03-10T13:44:54.202Z] Names: 60,        Desc: 60,        Syn: 60,        Options: 61,        Args: 61
[2026-03-10T13:44:54.202Z] Global Examples: None
[2026-03-10T13:44:54.202Z] Global See Also: None
[2026-03-10T13:44:54.202Z] Traceback (most recent call last):
[2026-03-10T13:44:54.202Z]   File "/OpenROAD/docs/src/scripts/md_roff_compat.py", line 233, in <module>
[2026-03-10T13:44:54.202Z]     man2()
[2026-03-10T13:44:54.202Z]   File "/OpenROAD/docs/src/scripts/md_roff_compat.py", line 111, in man2
[2026-03-10T13:44:54.202Z]     man2_translate(doc, path)
[2026-03-10T13:44:54.202Z]   File "/OpenROAD/docs/src/scripts/md_roff_compat.py", line 146, in man2_translate
[2026-03-10T13:44:54.202Z]     len(func_names)
[2026-03-10T13:44:54.202Z] AssertionError: Counts for all 5 categories must match up.
[2026-03-10T13:44:54.202Z] 
[2026-03-10T13:44:54.202Z]             Names: 60
[2026-03-10T13:44:54.202Z] 
[2026-03-10T13:44:54.202Z]             Descs: 60
[2026-03-10T13:44:54.202Z] 
[2026-03-10T13:44:54.202Z]             Synopsis: 60
[2026-03-10T13:44:54.202Z] 
[2026-03-10T13:44:54.202Z]             Options: 61
[2026-03-10T13:44:54.202Z] 
[2026-03-10T13:44:54.202Z]             Args: 61
[2026-03-10T13:44:54.202Z] 
[2026-03-10T13:44:54.202Z]             
[2026-03-10T13:44:54.202Z] make: *** [Makefile:62: preprocess] Error 1
[2026-03-10T13:44:54.202Z] make: Leaving directory '/OpenROAD/docs'

But still I can make it display something like this.

README.md
Names: 60,        Desc: 60,        Syn: 60,        Options: 61,        Args: 61
Global Examples: None
Global See Also: None
Traceback (most recent call last):
  File "/home/luars/OpenROAD/src/gui/test/gui_readme_msgs_check.py", line 17, in <module>
    man2_translate(readme_path, save_dir)
  File "/home/luars/OpenROAD/src/gui/test/md_roff_compat.py", line 168, in man2_translate
    len(func_names)
AssertionError: Counts for all 5 categories must match up in README.md:
  Names:    60
  Descs:    60
  Synopsis: 60
  Options:  61
  Args:     61

### headers without a ```tcl block (each ### must be a Tcl command):
  - ### Clock Insertion Latency in Timing Reports

Heading levels in this README:
  ##    top-level section (e.g. Commands, TCL functions, License)
  ###   individual Tcl command — must be followed by a ```tcl block
  ####  command sub-section (Options, Arguments, etc.)

@oharboe
Copy link
Collaborator Author

oharboe commented Mar 12, 2026

@rovinski Better?

image

Clock Insertion Latency Tooltip

When viewing timing path details, hovering over any pin of a macro
that has max_clock_tree_path or min_clock_tree_path defined in its
liberty model will show a tooltip with the clock insertion latency.

The tooltip displays:

  • The macro cell name
  • The liberty attribute (max_clock_tree_path for data paths,
    min_clock_tree_path for capture paths)
  • The delay value representing the internal clock tree delay
    to the macro's sequential elements

This delay can exceed the data path delay through the macro.
This is normal: the internal clock tree may be longer than
the combinational data path from flip-flop output to macro output pin.

Replace the inline "[clk ins: ...]" annotation and blue text coloring
with a tooltip on macro pins in the timing path detail view. The tooltip
shows clock insertion latency from the liberty model's max_clock_tree_path
(data path) or min_clock_tree_path (capture path) attribute.

The tooltip appears on any pin of a macro instance that has a clock port
with non-zero clkTreeDelay, so users see the information when hovering
over the data output pin where the macro's delay is visible. The tooltip
includes the macro name and explains that this is the internal clock tree
delay to sequential elements.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@oharboe
Copy link
Collaborator Author

oharboe commented Mar 12, 2026

@maliberty @vvbandeira macos ci download outage

@github-actions
Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@oharboe
Copy link
Collaborator Author

oharboe commented Mar 12, 2026

@maliberty @vvbandeira FYI

CI Failure Report: PR #9683 — Mac-Build

Summary

The Mac-Build GitHub Actions job failed due to a GitHub download outage (502 Bad Gateway) when fetching a Boost dependency. This is an infrastructure issue, not a code issue.

Links

What Failed

During Bazel analysis of //:openroad, the download of boost.iterator failed:

WARNING: Download from https://github.com/boostorg/iterator/archive/refs/tags/boost-1.89.0.tar.gz
  failed: class java.io.IOException GET returned 502 Bad Gateway or Proxy Error

ERROR: no such package '@@boost.iterator+//': java.io.IOException: Error downloading
  [https://github.com/boostorg/iterator/archive/refs/tags/boost-1.89.0.tar.gz]
  GET returned 502 Bad Gateway or Proxy Error

ERROR: //src/utl:ui depends on @@boost.iterator+//:boost.iterator in repository
  @@boost.iterator+ which failed to fetch.

ERROR: Analysis of target '//:openroad' failed; build aborted: Analysis failed
ERROR: Build did NOT complete successfully

Root Cause

GitHub returned 502 Bad Gateway for the Boost archive download. This is a transient GitHub infrastructure issue.

Other CI Status

Check Result
Jenkins pr-head SUCCESS
Jenkins pr-merge In progress (all completed stages passing)
GitHub Actions (12 checks) All SUCCESS except Mac-Build

Suggested Fix

Re-run the Mac-Build job. Optionally, add a mirror URL for boost.iterator in MODULE.bazel to improve resilience against single-source download failures.

@maliberty maliberty merged commit abd8278 into The-OpenROAD-Project:master Mar 12, 2026
15 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature request: display macro clock insertion latency in timing reports in GUI

4 participants