Skip to content

Commit 64d013d

Browse files
committed
make: gui_ prerendering
less click and wait when the GUI opens for large designs clock tree prerendering is still missing, because there is no way yet to disable the clock tree rendering from .tcl after the clock tree has been rendered. Some progress added so that the user can tell what it is that is taking time. Also added a final gui::unminimize log item so the user knows when the GUI should have unminimized(which it doesn't on Ubuntu 24.04 with Wayland yet, known issue filed). make gui_route [deleted] estimate_parasitics -global_routing Populating timing paths...OK Prerendering Placement heatmap... Prerendering Routing heatmap... Prerendering RUDY heatmap... Prerendering Power heatmap... gui::select_chart "Endpoint Slack" gui::update_timing_report gui::unminimize The-OpenROAD-Project/OpenROAD#6074 Signed-off-by: Øyvind Harboe <[email protected]>
1 parent 13d79ed commit 64d013d

File tree

1 file changed

+63
-1
lines changed

1 file changed

+63
-1
lines changed

flow/scripts/open.tcl

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,74 @@ proc read_timing {input_file} {
6060
if {[env_var_equals GUI_TIMING 1]} {
6161
puts "GUI_TIMING=1 reading timing, takes a little while for large designs..."
6262
read_timing $input_file
63+
64+
gui::save_display_controls
65+
66+
set height [[[ord::get_db_block] getBBox] getDY]
67+
set height [ord::dbu_to_microns $height]
68+
set resolution [expr $height / 1000]
69+
70+
# FIXME reenable when there is a way to disable the rendered clock tree
71+
#
72+
# foreach clock [get_clocks *] {
73+
# if { [llength [get_property $clock sources]] > 0 } {
74+
# set clock_name [get_name $clock]
75+
# save_clocktree_image -clock $clock_name \
76+
# -width 100 -height 100 \
77+
# $::env(OBJECTS_DIR)/dummy.png
78+
# break
79+
# }
80+
# }
81+
82+
# FIXME IRDrop heatmap should be added, but it has to be skipped
83+
# when there is no IRDrop heatmap to be rendered.
84+
85+
set block [ord::get_db_block]
86+
set insts [$block getInsts]
87+
set placed 1
88+
foreach inst $insts {
89+
set status [$inst getPlacementStatus]
90+
# status is not in the list of PLACED, LOCKED
91+
if {[lsearch {PLACED LOCKED} $status] == -1} {
92+
set placed 0
93+
break
94+
}
95+
}
96+
97+
set have_routes [expr {$placed && [grt::have_routes]}]
98+
99+
foreach heatmap {Placement Routing RUDY Power} {
100+
if {[string equal $heatmap Routing] && !$have_routes} {
101+
# Skipping $heatmap heatmap, no routes available
102+
continue
103+
}
104+
if {[string equal $heatmap IRDrop] &&
105+
(![env_var_exists_and_non_empty PWR_NETS_VOLTAGES] ||
106+
![grt::have_routes])} {
107+
# Skipping $heatmap heatmap, no PWR_NETS_VOLTAGES available
108+
continue
109+
}
110+
if {[lsearch {RUDY Placement} $heatmap] != -1 && !$placed} {
111+
# Skipping $heatmap heatmap, not all instances are placed
112+
continue
113+
}
114+
puts "Prerendering $heatmap heatmap..."
115+
gui::set_heatmap $heatmap rebuild 1
116+
gui::dump_heatmap $heatmap $::env(REPORTS_DIR)/dummy.png
117+
}
118+
119+
log_cmd gui::select_chart "Endpoint Slack"
120+
log_cmd gui::update_timing_report
121+
122+
gui::clear_highlights -1
123+
gui::clear_selections
124+
gui::restore_display_controls
63125
}
64126

65127
fast_route
66128

67129
if {[env_var_equals GUI_SHOW 1]} {
68130
# Show the GUI when it is ready; it is unresponsive(with modal requesters
69131
# saying it is unresponsive) until everything is loaded
70-
gui::unminimize
132+
log_cmd gui::unminimize
71133
}

0 commit comments

Comments
 (0)