From f953347c3941c28ae2c87198437631a2b9ebc5ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Wed, 11 Mar 2026 14:37:40 +0100 Subject: [PATCH 1/9] Add final check all drivers have parasitic annotation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin PoviĊĦer --- flow/scripts/final_report.tcl | 3 +++ flow/scripts/util.tcl | 31 +++++++++++++++++++++++++++++++ tools/OpenROAD | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/flow/scripts/final_report.tcl b/flow/scripts/final_report.tcl index 928e92bf2b..2567aa1433 100644 --- a/flow/scripts/final_report.tcl +++ b/flow/scripts/final_report.tcl @@ -53,6 +53,9 @@ if { } else { puts "IR drop analysis for ground nets is skipped because GND_NETS_VOLTAGES is undefined" } + + # Check all drivers have parasitic annotation with exception of those with no connected loads + check_parasitic_annotation } else { puts "OpenRCX is not enabled for this platform." puts "Falling back to global route-based estimates." diff --git a/flow/scripts/util.tcl b/flow/scripts/util.tcl index af92dbe0c2..53a0148e45 100644 --- a/flow/scripts/util.tcl +++ b/flow/scripts/util.tcl @@ -290,3 +290,34 @@ proc orfs_write_sdc { output_file } { } log_cmd write_sdc -no_timestamp $output_file } + +proc check_parasitic_annotation { } { + foreach scene [sta::scenes] { + set nmissing 0 + set example "NULL" + foreach pin [get_pins *] { + if { [$pin is_leaf] && [$pin is_driver] } { + if { ![sta::parasitics_annotated $pin $scene] } { + set has_loads false + set pin_iter [$pin connected_pin_iterator] + while { [$pin_iter has_next] } { + set other_pin [$pin_iter next] + if { [$other_pin is_leaf] && [$other_pin is_load] && $other_pin != $pin } { + set has_loads true + break + } + } + $pin_iter finish + if { $has_loads } { + set nmissing [expr $nmissing + 1] + set example $pin + } + } + } + } + if { $nmissing > 0 } { + error "Missing parasitic annotation in scene $scene on $nmissing \ + driver pins, for example [get_full_name $example]" + } + } +} diff --git a/tools/OpenROAD b/tools/OpenROAD index fe1aa0f9d0..6718108ced 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit fe1aa0f9d0254fac87b82c886c04ee1544e46885 +Subproject commit 6718108ced511e3aa5057ac7a52c95c299f3abe4 From 590b8159a1d62a6c45e77c8d5edb220688c43ae5 Mon Sep 17 00:00:00 2001 From: dsengupta0628 Date: Thu, 12 Mar 2026 21:55:23 +0000 Subject: [PATCH 2/9] fix missing para on dbterm Signed-off-by: dsengupta0628 --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 6718108ced..679ef5a056 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 6718108ced511e3aa5057ac7a52c95c299f3abe4 +Subproject commit 679ef5a0568c25e7515ae3ac0fcd5fe79b2a2d6c From 503c0d7e06394297d22a593c14e19926b34a1942 Mon Sep 17 00:00:00 2001 From: dsengupta0628 Date: Mon, 23 Mar 2026 20:22:09 +0000 Subject: [PATCH 3/9] update openroad- again! Signed-off-by: dsengupta0628 --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 73558abfb6..51a1bb5969 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 73558abfb6c4d8d99d31fb151d63845c9545b990 +Subproject commit 51a1bb59697acd55b75fef1cb21717bcaeeb22b2 From 176bd4bdd5b1be6b581443de05deeb83a5908cf8 Mon Sep 17 00:00:00 2001 From: dsengupta0628 Date: Mon, 23 Mar 2026 21:58:46 +0000 Subject: [PATCH 4/9] revert the proc to check missing para Signed-off-by: dsengupta0628 --- flow/scripts/final_report.tcl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/flow/scripts/final_report.tcl b/flow/scripts/final_report.tcl index 908af22b3f..a78791a043 100644 --- a/flow/scripts/final_report.tcl +++ b/flow/scripts/final_report.tcl @@ -54,9 +54,7 @@ if { } else { puts "IR drop analysis for ground nets is skipped because GND_NETS_VOLTAGES is undefined" } - - # Check all drivers have parasitic annotation with exception of those with no connected loads - check_parasitic_annotation + } else { puts "OpenRCX is not enabled for this platform." puts "Falling back to global route-based estimates." From fe4b43aecf60e75428ebbe4a02f4be0f895fbf9f Mon Sep 17 00:00:00 2001 From: dsengupta0628 Date: Wed, 25 Mar 2026 03:47:45 +0000 Subject: [PATCH 5/9] update openroad Signed-off-by: dsengupta0628 --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 51a1bb5969..ea8cf58229 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 51a1bb59697acd55b75fef1cb21717bcaeeb22b2 +Subproject commit ea8cf582291a65546bb23513f66d89f581e4b5af From 2f5d5917546ef90f53fcfbe69ef99a6c72150292 Mon Sep 17 00:00:00 2001 From: dsengupta0628 Date: Wed, 25 Mar 2026 04:10:31 +0000 Subject: [PATCH 6/9] revert the final_report.tcl to original Signed-off-by: dsengupta0628 --- flow/scripts/final_report.tcl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/flow/scripts/final_report.tcl b/flow/scripts/final_report.tcl index a78791a043..13f1ab19d1 100644 --- a/flow/scripts/final_report.tcl +++ b/flow/scripts/final_report.tcl @@ -53,8 +53,7 @@ if { } } else { puts "IR drop analysis for ground nets is skipped because GND_NETS_VOLTAGES is undefined" - } - + } } else { puts "OpenRCX is not enabled for this platform." puts "Falling back to global route-based estimates." From b17fc9a7bf59317394e3f94aba6d84745091f6bb Mon Sep 17 00:00:00 2001 From: dsengupta0628 Date: Wed, 25 Mar 2026 04:11:29 +0000 Subject: [PATCH 7/9] revert the final_report.tcl to original Signed-off-by: dsengupta0628 --- flow/scripts/final_report.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/scripts/final_report.tcl b/flow/scripts/final_report.tcl index 13f1ab19d1..d81acc986e 100644 --- a/flow/scripts/final_report.tcl +++ b/flow/scripts/final_report.tcl @@ -53,7 +53,7 @@ if { } } else { puts "IR drop analysis for ground nets is skipped because GND_NETS_VOLTAGES is undefined" - } + } } else { puts "OpenRCX is not enabled for this platform." puts "Falling back to global route-based estimates." From fac3fa8c053274b59454ff9b3e8aea325b6a9f22 Mon Sep 17 00:00:00 2001 From: dsengupta0628 Date: Mon, 18 May 2026 19:39:57 +0000 Subject: [PATCH 8/9] update OpenROAD for ORFS regoldening Signed-off-by: dsengupta0628 --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index d71d23e85a..32458ec66f 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit d71d23e85a400dd287413447c719d07a6ac887f1 +Subproject commit 32458ec66f3c31bfb9367cb30197ae19dfd6410b From d5b01c1909fef6178bbde50187d887669c11b1c8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 19 May 2026 19:15:43 +0000 Subject: [PATCH 9/9] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/swerv_wrapper/rules-base.json | 4 ++-- flow/designs/nangate45/swerv/rules-base.json | 2 +- flow/designs/nangate45/swerv_wrapper/rules-base.json | 2 +- flow/designs/sky130hd/gcd/rules-base.json | 4 ++-- flow/designs/sky130hd/microwatt/rules-base.json | 4 ++-- flow/designs/sky130hs/ibex/rules-base.json | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 84ec4c3fe6..2869bcbb7e 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -90,11 +90,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -80.0, + "value": -319.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -320.0, + "value": -47000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 8fc37572c7..8a92189f4b 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -94,7 +94,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -459.0, + "value": -516.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index 9c963666ec..9853c78a3e 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -94,7 +94,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -113.0, + "value": -127.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/gcd/rules-base.json b/flow/designs/sky130hd/gcd/rules-base.json index 6bd1ea5c05..876a7ee69c 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -90,11 +90,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -1.74, + "value": -1.86, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -81.2, + "value": -87.8, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 8ad564c390..ec37d15d8d 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -90,11 +90,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -1.34, + "value": -2.71, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -157.0, + "value": -336.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index e78b7f91e7..415ef1ae27 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -62,7 +62,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -7.77, + "value": -33.7, "compare": ">=" }, "globalroute__timing__hold__ws": {