Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions flow/scripts/open.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ proc read_timing { input_file } {
if { $design_stage >= 4 } {
# CTS has run, so propagate clocks
set_propagated_clock [all_clocks]
Comment on lines 53 to 55

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

To ensure robustness in interactive sessions or when read_timing is called multiple times in the same persistent session (such as in the GUI or custom scripts), it is recommended to explicitly enable CRPR when $design_stage >= 4. Otherwise, if a pre-CTS design was loaded first (which disables CRPR), loading a post-CTS design later in the same session will leave CRPR disabled.

  if { $design_stage >= 4 } {
    # CTS has run, so propagate clocks
    set_propagated_clock [all_clocks]
    sta::set_crpr_enabled 1

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

That's a bridge too far, I don't think that's a real use-case.

} else {
# Pre-CTS there is no clock tree, so CRPR has no real launch/capture
# common-path delay to remove and its correction is ~0. On designs with
# high clock reconvergence the CRPR tag set can still grow to tens of GB
# and OOM the process. Skip it pre-CTS.
sta::set_crpr_enabled 0
}

if { $design_stage >= 6 && [file exist $::env(RESULTS_DIR)/6_final.spef] } {
Expand Down