From 13d79edaad948dcfb38a04171a63ff443909bfd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Fri, 6 Dec 2024 07:49:48 +0100 Subject: [PATCH 1/4] openroad: bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index f6a30a60b4..ee29a2740e 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit f6a30a60b4cf31410ef35069985ae92cf249624d +Subproject commit ee29a2740ea97d086da420c5f12eae285c8022c2 From 64d013dc1e2342c980d3c2fb9eb1fa0923ebccdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 3 Dec 2024 17:52:19 +0100 Subject: [PATCH 2/4] make: gui_ prerendering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 https://github.com/The-OpenROAD-Project/OpenROAD/issues/6074 Signed-off-by: Øyvind Harboe --- flow/scripts/open.tcl | 64 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/flow/scripts/open.tcl b/flow/scripts/open.tcl index 64b7617da4..bcd8127250 100644 --- a/flow/scripts/open.tcl +++ b/flow/scripts/open.tcl @@ -60,6 +60,68 @@ proc read_timing {input_file} { if {[env_var_equals GUI_TIMING 1]} { puts "GUI_TIMING=1 reading timing, takes a little while for large designs..." read_timing $input_file + + gui::save_display_controls + + set height [[[ord::get_db_block] getBBox] getDY] + set height [ord::dbu_to_microns $height] + set resolution [expr $height / 1000] + + # FIXME reenable when there is a way to disable the rendered clock tree + # + # foreach clock [get_clocks *] { + # if { [llength [get_property $clock sources]] > 0 } { + # set clock_name [get_name $clock] + # save_clocktree_image -clock $clock_name \ + # -width 100 -height 100 \ + # $::env(OBJECTS_DIR)/dummy.png + # break + # } + # } + + # FIXME IRDrop heatmap should be added, but it has to be skipped + # when there is no IRDrop heatmap to be rendered. + + set block [ord::get_db_block] + set insts [$block getInsts] + set placed 1 + foreach inst $insts { + set status [$inst getPlacementStatus] + # status is not in the list of PLACED, LOCKED + if {[lsearch {PLACED LOCKED} $status] == -1} { + set placed 0 + break + } + } + + set have_routes [expr {$placed && [grt::have_routes]}] + + foreach heatmap {Placement Routing RUDY Power} { + if {[string equal $heatmap Routing] && !$have_routes} { + # Skipping $heatmap heatmap, no routes available + continue + } + if {[string equal $heatmap IRDrop] && + (![env_var_exists_and_non_empty PWR_NETS_VOLTAGES] || + ![grt::have_routes])} { + # Skipping $heatmap heatmap, no PWR_NETS_VOLTAGES available + continue + } + if {[lsearch {RUDY Placement} $heatmap] != -1 && !$placed} { + # Skipping $heatmap heatmap, not all instances are placed + continue + } + puts "Prerendering $heatmap heatmap..." + gui::set_heatmap $heatmap rebuild 1 + gui::dump_heatmap $heatmap $::env(REPORTS_DIR)/dummy.png + } + + log_cmd gui::select_chart "Endpoint Slack" + log_cmd gui::update_timing_report + + gui::clear_highlights -1 + gui::clear_selections + gui::restore_display_controls } fast_route @@ -67,5 +129,5 @@ fast_route if {[env_var_equals GUI_SHOW 1]} { # Show the GUI when it is ready; it is unresponsive(with modal requesters # saying it is unresponsive) until everything is loaded - gui::unminimize + log_cmd gui::unminimize } From b430537c7017c0734eea142f99d72eb30d9fe5a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 18 Dec 2024 12:42:03 +0100 Subject: [PATCH 3/4] make: gui_ prerendering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit delete clock tree commented out code for now, revisit later. Signed-off-by: Øyvind Harboe --- flow/scripts/open.tcl | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/flow/scripts/open.tcl b/flow/scripts/open.tcl index bcd8127250..3c50d96464 100644 --- a/flow/scripts/open.tcl +++ b/flow/scripts/open.tcl @@ -67,18 +67,6 @@ if {[env_var_equals GUI_TIMING 1]} { set height [ord::dbu_to_microns $height] set resolution [expr $height / 1000] - # FIXME reenable when there is a way to disable the rendered clock tree - # - # foreach clock [get_clocks *] { - # if { [llength [get_property $clock sources]] > 0 } { - # set clock_name [get_name $clock] - # save_clocktree_image -clock $clock_name \ - # -width 100 -height 100 \ - # $::env(OBJECTS_DIR)/dummy.png - # break - # } - # } - # FIXME IRDrop heatmap should be added, but it has to be skipped # when there is no IRDrop heatmap to be rendered. From d9b9cfac2f18fab108dfd2b8ff9bdd9af1fa0b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 18 Dec 2024 12:42:03 +0100 Subject: [PATCH 4/4] make: gui_ prerendering simplification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit simplify now that grt::have_routes checks if placement is done first. no need to save dummy.png to prerender. Signed-off-by: Øyvind Harboe --- flow/scripts/open.tcl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/flow/scripts/open.tcl b/flow/scripts/open.tcl index 3c50d96464..b8e00fe6eb 100644 --- a/flow/scripts/open.tcl +++ b/flow/scripts/open.tcl @@ -82,7 +82,7 @@ if {[env_var_equals GUI_TIMING 1]} { } } - set have_routes [expr {$placed && [grt::have_routes]}] + set have_routes [grt::have_routes] foreach heatmap {Placement Routing RUDY Power} { if {[string equal $heatmap Routing] && !$have_routes} { @@ -101,7 +101,6 @@ if {[env_var_equals GUI_TIMING 1]} { } puts "Prerendering $heatmap heatmap..." gui::set_heatmap $heatmap rebuild 1 - gui::dump_heatmap $heatmap $::env(REPORTS_DIR)/dummy.png } log_cmd gui::select_chart "Endpoint Slack"