From a2ab812f2cc8ef79964ac47f741c498ef8c4f71d Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 24 Jul 2025 19:32:29 +0300 Subject: [PATCH 001/364] init Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index bd2d836824..a1aadb0409 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit bd2d8368242b11d73e68aef650ec12ef49158f8c +Subproject commit a1aadb0409332ae4aabbe3bcfb8488547a89c647 From c22b517ffd04024a2b2405a4a94ee4242f784030 Mon Sep 17 00:00:00 2001 From: Osama Date: Wed, 30 Jul 2025 16:34:14 +0300 Subject: [PATCH 002/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index a1aadb0409..17c073cb47 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit a1aadb0409332ae4aabbe3bcfb8488547a89c647 +Subproject commit 17c073cb47fa9265708e3e6759b0bd7fc6637ce2 From 27bc1ed90016715121f8e7ce849192772195045e Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 31 Jul 2025 13:54:29 +0300 Subject: [PATCH 003/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 17c073cb47..8e6140066a 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 17c073cb47fa9265708e3e6759b0bd7fc6637ce2 +Subproject commit 8e6140066aadf44c8d36d6ac98b9a697f3f8e4e0 From 7339e9360eae344783457bb320fff7ff970f6d65 Mon Sep 17 00:00:00 2001 From: Osama Date: Tue, 19 Aug 2025 20:49:29 +0300 Subject: [PATCH 004/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 8e6140066a..b8326c701c 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 8e6140066aadf44c8d36d6ac98b9a697f3f8e4e0 +Subproject commit b8326c701c7f452aa16065e229fcf5ff6c343d79 From 4695d2250fb2fc8f2671dada1139d28ddcdc78aa Mon Sep 17 00:00:00 2001 From: Osama Date: Wed, 20 Aug 2025 20:58:33 +0300 Subject: [PATCH 005/364] update OR: fix incremental pa updates Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index b8326c701c..4dcd0b61a6 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit b8326c701c7f452aa16065e229fcf5ff6c343d79 +Subproject commit 4dcd0b61a6a6e06d6df18cfad027743dc25e4250 From 472e9dfa5119c24278ad2e7960d6fab9123b1e5b Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 21 Aug 2025 15:40:48 +0300 Subject: [PATCH 006/364] update OR: fix wrong parallelism Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 4dcd0b61a6..208c3ed17d 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 4dcd0b61a6a6e06d6df18cfad027743dc25e4250 +Subproject commit 208c3ed17d46bdc1a5cbd4512a593efb6a463b4b From 4ea381185ba1790b6824ad2c33f3ba22022ef228 Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 21 Aug 2025 19:57:15 +0300 Subject: [PATCH 007/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 208c3ed17d..c94efe1786 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 208c3ed17d46bdc1a5cbd4512a593efb6a463b4b +Subproject commit c94efe1786b7db1a319d7eca0db9c9fd990722eb From 3fd5e5a37606b6bacdfe50153ee926bd3814acb1 Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 21 Aug 2025 21:31:07 +0300 Subject: [PATCH 008/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index c94efe1786..3f97889104 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit c94efe1786b7db1a319d7eca0db9c9fd990722eb +Subproject commit 3f9788910444274f28f5d9f28ce58da21477e2af From d03112a436a8babc319c159d0ec2889dcc3a076a Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 11 Sep 2025 11:47:34 +0300 Subject: [PATCH 009/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 3f97889104..6f3e96ba64 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 3f9788910444274f28f5d9f28ce58da21477e2af +Subproject commit 6f3e96ba645c03e7db5a730241529fb49964f701 From 6516dca4afd7ebf3e00ded94fd5fc3dd102bc583 Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 11 Sep 2025 19:08:02 +0300 Subject: [PATCH 010/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 6f3e96ba64..dee4e273a8 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 6f3e96ba645c03e7db5a730241529fb49964f701 +Subproject commit dee4e273a85c82d96f2418d57fa6fe510004f04d From ca88bfcd3ed163e6c079d14e9c5aeb38ef83aefb Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 9 Oct 2025 19:11:17 +0300 Subject: [PATCH 011/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index dee4e273a8..b37e2714ea 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit dee4e273a85c82d96f2418d57fa6fe510004f04d +Subproject commit b37e2714eaa61e90027db5c134a86d660a5cbb06 From 7052f71ff5a82ce193b46a67c20da0498f5ef952 Mon Sep 17 00:00:00 2001 From: Osama Date: Sun, 12 Oct 2025 15:45:06 +0300 Subject: [PATCH 012/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index b37e2714ea..57c5d25f09 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit b37e2714eaa61e90027db5c134a86d660a5cbb06 +Subproject commit 57c5d25f096d6e506513703bb8fac9979b8ac1ce From d5aad98e8cf02c363331094e898a1956e4fd16f6 Mon Sep 17 00:00:00 2001 From: Osama Date: Mon, 13 Oct 2025 17:21:07 +0300 Subject: [PATCH 013/364] update OR: near end fixes Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 57c5d25f09..a7fd2c1203 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 57c5d25f096d6e506513703bb8fac9979b8ac1ce +Subproject commit a7fd2c120308a1a55fad12692489cb92785a1cae From 4f6e64404b74c24efba9c14ce9fece02bfbd07fc Mon Sep 17 00:00:00 2001 From: Osama Date: Tue, 14 Oct 2025 16:23:46 +0300 Subject: [PATCH 014/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index a7fd2c1203..f4438650a1 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit a7fd2c120308a1a55fad12692489cb92785a1cae +Subproject commit f4438650a14bc71f98c3386a6c6aa8a18e7678ba From 68a67d9d13e89a6e5604f8091d8b540571d55086 Mon Sep 17 00:00:00 2001 From: Osama Date: Sun, 19 Oct 2025 16:59:33 +0300 Subject: [PATCH 015/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index f4438650a1..7427cbefe4 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit f4438650a14bc71f98c3386a6c6aa8a18e7678ba +Subproject commit 7427cbefe41f3f844b9845228fb1546ce3f9a492 From b9422a34a093c80a53cc3403b278988901cd960a Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 23 Oct 2025 18:16:26 +0300 Subject: [PATCH 016/364] update OR against base Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 7427cbefe4..f7bfa6c1ca 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 7427cbefe41f3f844b9845228fb1546ce3f9a492 +Subproject commit f7bfa6c1ca1744bcb857aa5103b1c7a3a162c545 From 06042cdff1b48f102903b14fc82ed36bdd0b655f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Mon, 27 Oct 2025 10:07:38 +0100 Subject: [PATCH 017/364] synth: add SYNTH_MOCK_LARGE_MEMORIES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- flow/designs/sky130hd/microwatt/config.mk | 5 +---- flow/scripts/synth.tcl | 14 ++++++++++++++ flow/scripts/variables.yaml | 16 ++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/flow/designs/sky130hd/microwatt/config.mk b/flow/designs/sky130hd/microwatt/config.mk index 5960708a65..f85384e3b8 100644 --- a/flow/designs/sky130hd/microwatt/config.mk +++ b/flow/designs/sky130hd/microwatt/config.mk @@ -36,7 +36,4 @@ export SETUP_SLACK_MARGIN = 0.2 # GRT non-default config export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/fastroute.tcl -# This is high, some SRAMs should probably be converted -# to real SRAMs and not instantiated as flops -export SYNTH_MEMORY_MAX_BITS = 42000 - +export SYNTH_MOCK_LARGE_MEMORIES = 1 diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index 9f69db3191..da41a099ef 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -55,6 +55,20 @@ if { !$::env(SYNTH_HIERARCHICAL) } { synth -flatten -run coarse:fine {*}$synth_full_args } + +if { $::env(SYNTH_MOCK_LARGE_MEMORIES) } { + foreach module [get_modules] { + foreach mem [get_memories $module] { + set size [memory_get $module $mem SIZE] + + if {$size > $::env(SYNTH_MEMORY_MAX_BITS)} { + memory_set $module $mem SIZE 1 + puts "Shrunk memory $mem in module $module from $size to 1" + } + } + } +} + json -o $::env(RESULTS_DIR)/mem.json # Run report and check here so as to fail early if this synthesis run is doomed exec -- $::env(PYTHON_EXE) $::env(SCRIPTS_DIR)/mem_dump.py \ diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 6309656e11..b456a5af26 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -177,6 +177,22 @@ SYNTH_MEMORY_MAX_BITS: default: 4096 stages: - synth +SYNTH_MOCK_LARGE_MEMORIES: + description: > + Reduce memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. + + This is useful to separate the concern of instantiating and placing + memories from investigating other issues with a design. + + Memories with a single 1 row will of course have unrealistically good + timing and area characteristics, but timing will still correctly terminate + in a register. + + Also, large port memories, typically register files, will still have the + retain a lot of the port logic that can be useful to investigate issues. + default: 0 + stages: + - synth SYNTH_HDL_FRONTEND: description: > Select an alternative language frontend to ingest the design. Available option From 9d98e8f3d9a60b9a095b1e1c8fadf422004af469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Mon, 27 Oct 2025 10:07:38 +0100 Subject: [PATCH 018/364] synth: support SYNTH_MOCK_LARGE_MEMORIES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- flow/scripts/synth.tcl | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index da41a099ef..9875aed67e 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -57,14 +57,19 @@ if { !$::env(SYNTH_HIERARCHICAL) } { if { $::env(SYNTH_MOCK_LARGE_MEMORIES) } { - foreach module [get_modules] { - foreach mem [get_memories $module] { - set size [memory_get $module $mem SIZE] - - if {$size > $::env(SYNTH_MEMORY_MAX_BITS)} { - memory_set $module $mem SIZE 1 - puts "Shrunk memory $mem in module $module from $size to 1" - } + memory_collect + foreach path [tee -q -s result.string select -list t:\$mem_v2] { + set index [string first "/" $path] + set module [string range $path 0 [expr {$index - 1}]] + set instance [string range $path [expr {$index + 1}] end] + + set width [rtlil::get_param -uint $module $instance WIDTH] + set size [rtlil::get_param -uint $module $instance SIZE] + set nbits [expr $width * $size] + puts "Memory $path has dimensions $size x $width = $nbits" + if {$nbits > $::env(SYNTH_MEMORY_MAX_BITS)} { + rtlil::set_param -uint $module $instance SIZE 1 + puts "Shrunk memory $path from $size rows to 1" } } } From 71fd6346acedf0a22a15387e9e9f1aacb891d498 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 5 Nov 2025 18:18:48 -0300 Subject: [PATCH 019/364] bump or Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 09a2160ebb..e95052c8cb 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 09a2160ebbd692a8ef53f2e2ce8d30722ba33f59 +Subproject commit e95052c8cbd82760ebf3d0ee76a4eb6e4191d673 From 337b799bdc586e234eaa14aa8bce679b0fd0896e Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 6 Nov 2025 04:08:36 +0000 Subject: [PATCH 020/364] update metrics of public designs Signed-off-by: Eder Monteiro --- .../asap7/swerv_wrapper/rules-base.json | 2 +- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 26 ++++++++++++++++--- flow/designs/nangate45/ibex/rules-base.json | 2 +- flow/designs/nangate45/swerv/rules-base.json | 4 +-- .../nangate45/swerv_wrapper/rules-base.json | 2 +- .../nangate45/tinyRocket/rules-base.json | 6 ++--- .../sky130hd/chameleon/rules-base.json | 4 +-- flow/designs/sky130hd/ibex/rules-base.json | 4 +-- .../sky130hd/microwatt/rules-base.json | 12 ++++----- flow/designs/sky130hs/jpeg/rules-base.json | 9 +++++-- .../designs/sky130hs/riscv32i/rules-base.json | 4 +-- 11 files changed, 50 insertions(+), 25 deletions(-) diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index cc3ca2ee86..9ab0dd64d9 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -175,7 +175,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -223000.0, + "value": -229000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index 5eca92e9cc..80265322ee 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -1,4 +1,24 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1499147.11, "compare": "<=" @@ -12,7 +32,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 86433, + "value": 86398, "compare": "<=" }, "detailedplace__design__violations": { @@ -76,7 +96,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 132, + "value": 134, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -112,7 +132,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 1059270, + "value": 1044676, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index 847d59d731..898249e544 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -140,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.93, + "value": -3.61, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 4f3e8e1226..996b2414ef 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -92,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -62.2, + "value": -63.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -140,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -72.3, + "value": -70.8, "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 4dcf9eb142..9acb7ea4b6 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -87,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -42.4, + "value": -43.1, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 770e842c4f..9df1f7815f 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -92,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -24.3, + "value": -27.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -140,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -27.5, + "value": -31.9, "compare": ">=" }, "finish__timing__hold__ws": { @@ -152,7 +152,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 63439, + "value": 63396, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index babe031688..bca31e9f48 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -94,7 +94,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 232, + "value": 169, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -126,7 +126,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 100, + "value": 146, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index 9a753c0380..8886088426 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 24, + "value": 18, "compare": "<=", "level": "warning" }, @@ -92,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9.3, + "value": -14.7, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 06eed0896c..7049db1d05 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -134,7 +134,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 2548, + "value": 2495, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -142,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -420.0, + "value": -399.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -162,11 +162,11 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1274, + "value": 1301, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -174,7 +174,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -121.0, + "value": -130.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -190,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -399.0, + "value": -375.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index ef42b4eb34..e8b5eaaafc 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,6 +1,6 @@ { "detailedroute__flow__warnings__count:DRT-0120": { - "value": 36, + "value": 18, "compare": "<=", "level": "warning" }, @@ -44,6 +44,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" @@ -89,7 +94,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 332, + "value": 336, "compare": "<=" }, "globalroute__timing__setup__ws": { diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index f996a8f5b2..f553a7735c 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -87,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -82.3, + "value": -176.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -135,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -15.6, + "value": -62.1, "compare": ">=" }, "finish__timing__hold__ws": { From fc3826ebe8e713546785694d7685699447f9d568 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 6 Nov 2025 04:15:21 +0000 Subject: [PATCH 021/364] update metrics for hercules_is_int Signed-off-by: Eder Monteiro --- .../rapidus2hp/hercules_is_int/rules-base.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 92c9989424..401978ff4c 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -173,35 +173,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -316.0, + "value": -282.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2040000.0, + "value": -2030000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -55.5, + "value": -48.6, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -484.0, + "value": -660.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -316.0, + "value": -282.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2040000.0, + "value": -2030000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -55.5, + "value": -48.6, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -484.0, + "value": -660.0, "compare": ">=" }, "finish__design__instance__area": { From 867f89558d1b357bedbfe128f1809ab286fc9411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Fri, 7 Nov 2025 15:34:31 +0100 Subject: [PATCH 022/364] synth: Fix foreach doing unwanted substitutions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Povišer --- flow/scripts/synth.tcl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index 9875aed67e..013f7b7198 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -58,7 +58,8 @@ if { !$::env(SYNTH_HIERARCHICAL) } { if { $::env(SYNTH_MOCK_LARGE_MEMORIES) } { memory_collect - foreach path [tee -q -s result.string select -list t:\$mem_v2] { + set select [tee -q -s result.string select -list t:\$mem_v2] + foreach path [split [string trim $select] "\n"] { set index [string first "/" $path] set module [string range $path 0 [expr {$index - 1}]] set instance [string range $path [expr {$index + 1}] end] From bf476442490c030705bb4c8866047921efae2cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Fri, 7 Nov 2025 15:40:12 +0100 Subject: [PATCH 023/364] lint nits MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 2 ++ flow/scripts/synth.tcl | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index dbf7d4bb62..277f674949 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -245,6 +245,7 @@ configuration file. | SYNTH_KEEP_MODULES| Mark modules to keep from getting removed in flattening.| | | SYNTH_MEMORY_MAX_BITS| Maximum number of bits for memory synthesis.| 4096| | SYNTH_MINIMUM_KEEP_SIZE| For hierarchical synthesis, we keep modules of larger area than given by this variable and flatten smaller modules. The area unit used is the size of a basic nand2 gate from the platform's standard cell library. The default value is platform specific.| 0| +| SYNTH_MOCK_LARGE_MEMORIES| Reduce memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. This is useful to separate the concern of instantiating and placing memories from investigating other issues with a design. Memories with a single 1 row will of course have unrealistically good timing and area characteristics, but timing will still correctly terminate in a register. Also, large port memories, typically register files, will still have the retain a lot of the port logic that can be useful to investigate issues.| 0| | SYNTH_NETLIST_FILES| Skips synthesis and uses the supplied netlist files. If the netlist files contains duplicate modules, which can happen when using hierarchical synthesis on indvidual netlist files and combining here, subsequent modules are silently ignored and only the first module is used.| | | SYNTH_OPT_HIER| Optimize constants across hierarchical boundaries.| | | SYNTH_RETIME_MODULES| *This is an experimental option and may cause adverse effects.* *No effort has been made to check if the retimed RTL is logically equivalent to the non-retimed RTL.* List of modules to apply automatic retiming to. These modules must not get dissolved and as such they should either be the top module or be included in SYNTH_KEEP_MODULES. The main use case is to quickly identify if performance can be improved by manually retiming the input RTL. Retiming will treat module ports like register endpoints/startpoints. The objective function of retiming isn't informed by SDC, even the clock period is ignored. As such, retiming will optimize for best delay at potentially high register number cost. Automatic retiming can produce suboptimal results as its timing model is crude and it doesn't find the optimal distribution of registers on long pipelines. See OR discussion #8080.| | @@ -284,6 +285,7 @@ configuration file. - [SYNTH_KEEP_MODULES](#SYNTH_KEEP_MODULES) - [SYNTH_MEMORY_MAX_BITS](#SYNTH_MEMORY_MAX_BITS) - [SYNTH_MINIMUM_KEEP_SIZE](#SYNTH_MINIMUM_KEEP_SIZE) +- [SYNTH_MOCK_LARGE_MEMORIES](#SYNTH_MOCK_LARGE_MEMORIES) - [SYNTH_NETLIST_FILES](#SYNTH_NETLIST_FILES) - [SYNTH_OPT_HIER](#SYNTH_OPT_HIER) - [SYNTH_RETIME_MODULES](#SYNTH_RETIME_MODULES) diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index 013f7b7198..279d4bcff3 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -61,14 +61,14 @@ if { $::env(SYNTH_MOCK_LARGE_MEMORIES) } { set select [tee -q -s result.string select -list t:\$mem_v2] foreach path [split [string trim $select] "\n"] { set index [string first "/" $path] - set module [string range $path 0 [expr {$index - 1}]] - set instance [string range $path [expr {$index + 1}] end] + set module [string range $path 0 [expr { $index - 1 }]] + set instance [string range $path [expr { $index + 1 }] end] set width [rtlil::get_param -uint $module $instance WIDTH] set size [rtlil::get_param -uint $module $instance SIZE] set nbits [expr $width * $size] puts "Memory $path has dimensions $size x $width = $nbits" - if {$nbits > $::env(SYNTH_MEMORY_MAX_BITS)} { + if { $nbits > $::env(SYNTH_MEMORY_MAX_BITS) } { rtlil::set_param -uint $module $instance SIZE 1 puts "Shrunk memory $path from $size rows to 1" } From e51137151398fe943683ab1d99c8876de070b4fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Sat, 8 Nov 2025 10:09:10 +0100 Subject: [PATCH 024/364] synth: mock memories doc and example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 4 +- flow/designs/sky130hd/microwatt/README.md | 178 ++++++++++++++++++ flow/designs/sky130hd/microwatt/config.mk | 21 ++- .../microwatt/histogram-mock-memory.png | Bin 0 -> 25357 bytes .../microwatt/histogram-sram-as-flops.png | Bin 0 -> 38747 bytes flow/scripts/variables.yaml | 20 +- 6 files changed, 217 insertions(+), 6 deletions(-) create mode 100644 flow/designs/sky130hd/microwatt/README.md create mode 100644 flow/designs/sky130hd/microwatt/histogram-mock-memory.png create mode 100644 flow/designs/sky130hd/microwatt/histogram-sram-as-flops.png diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 277f674949..5b8706574b 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -243,9 +243,9 @@ configuration file. | SYNTH_HIERARCHICAL| Enable to Synthesis hierarchically, otherwise considered flat synthesis.| 0| | SYNTH_HIER_SEPARATOR| Separator used for the synthesis flatten stage.| .| | SYNTH_KEEP_MODULES| Mark modules to keep from getting removed in flattening.| | -| SYNTH_MEMORY_MAX_BITS| Maximum number of bits for memory synthesis.| 4096| +| SYNTH_MEMORY_MAX_BITS| Maximum number of bits for memory synthesis. Ideally, real RAM or realistic fakeram should be used for RAMs much larger than 1024 bits. To temporarily ignore the RAM concerns and investigate other aspects of the design, consider setting `SYNTH_MOCK_LARGE_MEMORIES=1`, or adjusting `SYNTH_MEMORY_MAX_BITS`.| 4096| | SYNTH_MINIMUM_KEEP_SIZE| For hierarchical synthesis, we keep modules of larger area than given by this variable and flatten smaller modules. The area unit used is the size of a basic nand2 gate from the platform's standard cell library. The default value is platform specific.| 0| -| SYNTH_MOCK_LARGE_MEMORIES| Reduce memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. This is useful to separate the concern of instantiating and placing memories from investigating other issues with a design. Memories with a single 1 row will of course have unrealistically good timing and area characteristics, but timing will still correctly terminate in a register. Also, large port memories, typically register files, will still have the retain a lot of the port logic that can be useful to investigate issues.| 0| +| SYNTH_MOCK_LARGE_MEMORIES| Reduce memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. This is useful and convenient to separate the concern of instantiating and placing memories from investigating other issues with a design, though it comes at the expense of the increased accuracy that using realistic fakemem would provide. Memories with a single 1 row will of course have unrealistically good timing and area characteristics, but timing will still correctly terminate in a register. Large port memories, typically register files, will still have the retain a lot of the port logic that can be useful to investigate issues. Consider using SYNTH_KEEP_MODULES to keep the modules of the mocked memories so that code outside the mocked memories is not optimized as a consequence of mocking a memory, yielding better insight into issues running the rest of the design through the ORFS flow.| 0| | SYNTH_NETLIST_FILES| Skips synthesis and uses the supplied netlist files. If the netlist files contains duplicate modules, which can happen when using hierarchical synthesis on indvidual netlist files and combining here, subsequent modules are silently ignored and only the first module is used.| | | SYNTH_OPT_HIER| Optimize constants across hierarchical boundaries.| | | SYNTH_RETIME_MODULES| *This is an experimental option and may cause adverse effects.* *No effort has been made to check if the retimed RTL is logically equivalent to the non-retimed RTL.* List of modules to apply automatic retiming to. These modules must not get dissolved and as such they should either be the top module or be included in SYNTH_KEEP_MODULES. The main use case is to quickly identify if performance can be improved by manually retiming the input RTL. Retiming will treat module ports like register endpoints/startpoints. The objective function of retiming isn't informed by SDC, even the clock period is ignored. As such, retiming will optimize for best delay at potentially high register number cost. Automatic retiming can produce suboptimal results as its timing model is crude and it doesn't find the optimal distribution of registers on long pipelines. See OR discussion #8080.| | diff --git a/flow/designs/sky130hd/microwatt/README.md b/flow/designs/sky130hd/microwatt/README.md new file mode 100644 index 0000000000..62635bdb6c --- /dev/null +++ b/flow/designs/sky130hd/microwatt/README.md @@ -0,0 +1,178 @@ +# Mocking vs fake memories + +Configuring fake memories for this design would speed up the ORFS flow and increase accuracy of results, but some effort is required. Two methods for learning something about a design without setting up SRAM are explained here. + +## Synthesis with large flip flop memories + +By default `SYNTH_MEMORY_MAX_BITS=42000` since no fake memories have been configured for this example design. This is simple, but results in slow builds and unrealistically large amount of flip flops and singificantly slower timing than fakeram or real RAMs. + +![RAMs as flops histogram](histogram-sram-as-flops.png) + +## Results with `SYNTH_MOCK_LARGE_MEMORIES=1` + +To ensure a quick synthesis run and to better understand the design without being slowed down by large memory blocks, we set a `SYNTH_MEMORY_MAX_BITS=1024`. This helps us bypass potential memory-related issues and focus on other ORFS flow issues of the design. + +During synthesis, certain modules are reported in error messages when `SYNTH_MEMORY_MAX_BITS=1024` and `SYNTH_MOCK_LARGE_MEMORIES=0`. By explicitly listing these modules in `SYNTH_KEEP_MODULES`, we avoid further optimizations outside of the mocked memories that could obscure the behavior of the rest of the design. + +The goal of these settings is to enable a rapid exploration of the flow, providing insights into the design while minimizing complications from large memory structures. + +![Mocked memory histogram](histogram-mock-memory.png) + +## Other ways to speed up synthesis + +There is a small advantage in synthesis time for `SYNTH_MOCK_LARGE_MEMORIES=1`, it shaves off ca. 1 minute on a 3 minute build on a test on a laptop. However, larger designs can have synthesis run into hours if memories are not managed with a bit of care. + +For synthesis, yosys-abc actually takes most of the time and SRAMs don't generally change in a design, even if other RTL development continues. It is possible to keep the synthesized netlist for SRAMs list them in `SYNTH_BLACKBOXES` and simply concatenate the already built netlists onto the `1_synth.v` files before continuing the flow. + +If large modules that change rarely are kept in a large design and only a small part of the design changes during RTL development, then it is possible to set up a build flow that completes in minutes instead of hours. + +## A/B run times + +The difference in run-times for mocking and simply instantiating larger flip flop based RAMs is not large on this design, but on designs with bigger SRAMs, the difference can be substantial. + + make DESIGN_CONFIG=designs/sky130hd/microwatt/config.mk SYNTH_MOCK_LARGE_MEMORIES=1 FLOW_VARIANT=mock + make DESIGN_CONFIG=designs/sky130hd/microwatt/config.mk + +| Step | Mock RAM/s | Default/s | +|---------------------------|------------|-----------| +| 1_1_yosys_canonicalize | 4 | 4 | +| 1_2_yosys | 161 | 182 | +| 1_3_synth | | 1 | +| 2_1_floorplan | 72 | 83 | +| 2_2_floorplan_macro | 16 | 16 | +| 2_3_floorplan_tapcell | 1 | 0 | +| 2_4_floorplan_pdn | 7 | 9 | +| 3_1_place_gp_skip_io | 43 | 45 | +| 3_2_place_iop | 1 | 1 | +| 3_3_place_gp | 331 | 327 | +| 3_4_place_resized | 68 | 65 | +| 3_5_place_dp | 79 | 74 | +| 4_1_cts | 152 | 180 | +| 5_1_grt | 385 | 404 | +| 5_2_route | 3827 | 3960 | + +## `SYNTH_MOCK_LARGE_MEMORIES=1` worst ext_clk path + +``` +Startpoint: soc0/processor/icache_0/rams:1.way/cache_ram_0 + (rising edge-triggered flip-flop clocked by ext_clk) +Endpoint: soc0/processor/icache_0/_163_[147]$_DFFE_PP_ + (rising edge-triggered flip-flop clocked by ext_clk) +Path Group: ext_clk +Path Type: max + + Delay Time Description +--------------------------------------------------------- + 0.00 0.00 clock ext_clk (rise edge) + 4.07 4.07 clock network delay (propagated) + 0.00 4.07 ^ soc0/processor/icache_0/rams:1.way/cache_ram_0/CLK (RAM32_1RW1R) + 11.44 15.51 v soc0/processor/icache_0/rams:1.way/cache_ram_0/Do1[31] (RAM32_1RW1R) + 0.62 16.14 v soc0/processor/icache_0/rams:1.way/_43_/X (sky130_fd_sc_hd__mux2_4) + 0.42 16.56 v soc0/processor/icache_0/_2550_/X (sky130_fd_sc_hd__mux2_4) + 0.19 16.75 v place24125/X (sky130_fd_sc_hd__buf_12) + 0.15 16.90 v soc0/processor/decode1_0/_2318_/Y (sky130_fd_sc_hd__nand2b_4) + 0.38 17.27 v soc0/processor/decode1_0/_2375_/X (sky130_fd_sc_hd__or3_4) + 0.14 17.41 ^ soc0/processor/decode1_0/_2737_/Y (sky130_fd_sc_hd__nor2_4) + 0.07 17.48 v soc0/processor/decode1_0/_2738_/Y (sky130_fd_sc_hd__inv_2) + 0.19 17.67 ^ soc0/processor/decode1_0/_2740_/Y (sky130_fd_sc_hd__a21oi_4) + 0.24 17.91 v soc0/processor/decode1_0/_3744_/Y (sky130_fd_sc_hd__nand4b_1) + 0.16 18.06 ^ soc0/processor/decode1_0/_4248_/Y (sky130_fd_sc_hd__nand2b_1) + 0.16 18.22 ^ soc0/processor/_318_/X (sky130_fd_sc_hd__or2_4) + 0.05 18.27 v soc0/processor/icache_0/_2130_/Y (sky130_fd_sc_hd__nor2_4) + 0.09 18.36 ^ soc0/processor/icache_0/_2131_/Y (sky130_fd_sc_hd__nand2_4) + 0.05 18.41 v soc0/processor/icache_0/_2132_/Y (sky130_fd_sc_hd__a211oi_4) + 0.19 18.60 v rebuffer29423/X (sky130_fd_sc_hd__buf_12) + 0.11 18.72 ^ soc0/processor/icache_0/_2133_/Y (sky130_fd_sc_hd__nand2_8) + 0.06 18.78 v soc0/processor/icache_0/_2155_/Y (sky130_fd_sc_hd__inv_12) + 0.14 18.92 v place19388/X (sky130_fd_sc_hd__buf_12) + 0.14 19.06 v place19392/X (sky130_fd_sc_hd__buf_12) + 0.14 19.19 v place19394/X (sky130_fd_sc_hd__buf_12) + 0.16 19.35 v soc0/processor/icache_0/_2494_/X (sky130_fd_sc_hd__and2_4) + 0.00 19.35 v soc0/processor/icache_0/_163_[147]$_DFFE_PP_/D (sky130_fd_sc_hd__edfxtp_1) + 19.35 data arrival time + + 15.00 15.00 clock ext_clk (rise edge) + 3.42 18.42 clock network delay (propagated) + -0.25 18.17 clock uncertainty + 0.14 18.31 clock reconvergence pessimism + 18.31 ^ soc0/processor/icache_0/_163_[147]$_DFFE_PP_/CLK (sky130_fd_sc_hd__edfxtp_1) + -0.24 18.07 library setup time + 18.07 data required time +--------------------------------------------------------- + 18.07 data required time + -19.35 data arrival time +--------------------------------------------------------- + -1.27 slack (VIOLATED) +``` + +## `SYNTH_MOCK_LARGE_MEMORIES=0` worst ext_clk path + +As can be seen, there's no significant difference in the worst negative slack path for ext_clk. + +``` +Startpoint: soc0/processor/icache_0/rams:1.way/cache_ram_0 + (rising edge-triggered flip-flop clocked by ext_clk) +Endpoint: soc0/processor/icache_0/_163_[14]$_SDFFE_PP0P_ + (rising edge-triggered flip-flop clocked by ext_clk) +Path Group: ext_clk +Path Type: max + + Delay Time Description +--------------------------------------------------------- + 0.00 0.00 clock ext_clk (rise edge) + 4.04 4.04 clock network delay (propagated) + 0.00 4.04 ^ soc0/processor/icache_0/rams:1.way/cache_ram_0/CLK (RAM32_1RW1R) + 11.44 15.48 v soc0/processor/icache_0/rams:1.way/cache_ram_0/Do1[59] (RAM32_1RW1R) + 0.64 16.12 v soc0/processor/icache_0/rams:1.way/_76_/X (sky130_fd_sc_hd__mux2_4) + 0.36 16.48 v soc0/processor/icache_0/_2544_/X (sky130_fd_sc_hd__mux2_4) + 0.15 16.64 v place27067/X (sky130_fd_sc_hd__buf_6) + 0.06 16.70 ^ soc0/processor/decode1_0/_3560_/Y (sky130_fd_sc_hd__inv_4) + 0.16 16.85 ^ soc0/processor/decode1_0/_6875_/COUT (sky130_fd_sc_hd__ha_4) + 0.07 16.92 v soc0/processor/decode1_0/_3695_/Y (sky130_fd_sc_hd__nand2b_4) + 0.39 17.31 ^ soc0/processor/decode1_0/_3696_/Y (sky130_fd_sc_hd__nor3_4) + 0.20 17.51 ^ place24130/X (sky130_fd_sc_hd__buf_6) + 0.06 17.57 v soc0/processor/decode1_0/_5317_/Y (sky130_fd_sc_hd__nand2_4) + 0.30 17.87 ^ soc0/processor/decode1_0/_5318_/Y (sky130_fd_sc_hd__a21oi_4) + 0.19 18.06 ^ place23148/X (sky130_fd_sc_hd__buf_6) + 0.22 18.28 v soc0/processor/decode1_0/_6350_/Y (sky130_fd_sc_hd__nand4b_1) + 0.29 18.57 v place22875/X (sky130_fd_sc_hd__buf_6) + 0.10 18.67 ^ soc0/processor/decode1_0/_6854_/Y (sky130_fd_sc_hd__nand2b_4) + 0.15 18.82 ^ soc0/processor/_318_/X (sky130_fd_sc_hd__or2_4) + 0.12 18.94 ^ place22433/X (sky130_fd_sc_hd__buf_12) + 0.05 18.99 v soc0/processor/icache_0/_2130_/Y (sky130_fd_sc_hd__nor2_4) + 0.16 19.15 v place22148/X (sky130_fd_sc_hd__buf_6) + 0.08 19.23 ^ soc0/processor/icache_0/_2131_/Y (sky130_fd_sc_hd__nand2_4) + 0.07 19.30 v soc0/processor/icache_0/_2132_/Y (sky130_fd_sc_hd__a211oi_4) + 0.18 19.48 v place21617/X (sky130_fd_sc_hd__buf_12) + 0.11 19.59 ^ soc0/processor/icache_0/_2133_/Y (sky130_fd_sc_hd__nand2_8) + 0.06 19.65 v soc0/processor/icache_0/_2155_/Y (sky130_fd_sc_hd__inv_8) + 0.15 19.80 v place21391/X (sky130_fd_sc_hd__buf_12) + 0.13 19.93 v place21403/X (sky130_fd_sc_hd__buf_12) + 0.14 20.07 v rebuffer32771/X (sky130_fd_sc_hd__buf_4) + 0.19 20.26 ^ soc0/processor/icache_0/_2285_/Y (sky130_fd_sc_hd__mux2i_1) + 0.15 20.40 ^ place21348/X (sky130_fd_sc_hd__buf_4) + 0.04 20.44 v soc0/processor/icache_0/_2286_/Y (sky130_fd_sc_hd__nor2_1) + 0.00 20.44 v soc0/processor/icache_0/_163_[14]$_SDFFE_PP0P_/D (sky130_fd_sc_hd__dfxtp_1) + 20.44 data arrival time + + 15.00 15.00 clock ext_clk (rise edge) + 3.53 18.53 clock network delay (propagated) + -0.25 18.28 clock uncertainty + 0.14 18.42 clock reconvergence pessimism + 18.42 ^ soc0/processor/icache_0/_163_[14]$_SDFFE_PP0P_/CLK (sky130_fd_sc_hd__dfxtp_1) + -0.11 18.31 library setup time + 18.31 data required time +--------------------------------------------------------- + 18.31 data required time + -20.44 data arrival time +--------------------------------------------------------- + -2.13 slack (VIOLATED) +``` + +## Conclusion + +Above there's no visible difference in the Endpoint Slack histogram for the two approaches. In other words, the design doesn't appear to be terribly sensitive to how RAMs are mocked, other factors dominate and merit further investigation. + +ORFS is built on `make`, which shines for simple, fast flows. For larger, complicated, designs and with flows that take a long time to run, it is worth looking beyond `make` to [bazel-orfs](https://github.com/The-OpenROAD-Project/bazel-orfs) + + diff --git a/flow/designs/sky130hd/microwatt/config.mk b/flow/designs/sky130hd/microwatt/config.mk index f85384e3b8..89b2ce9a07 100644 --- a/flow/designs/sky130hd/microwatt/config.mk +++ b/flow/designs/sky130hd/microwatt/config.mk @@ -36,4 +36,23 @@ export SETUP_SLACK_MARGIN = 0.2 # GRT non-default config export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/fastroute.tcl -export SYNTH_MOCK_LARGE_MEMORIES = 1 +ifeq ($(SYNTH_MOCK_LARGE_MEMORIES),1) + # ca. 3 minutes to run make synth + # + # These module names comes from the error report when setting SYNTH_MEMORY_MAX_BITS=2048 + # and SYNTH_MOCK_LARGE_MEMORIES=0 + # + # Keeping them avoids mocking them away, which would lead to further optimizations + # that would obscure what is going on in the rest of the design. + export SYNTH_KEEP_MODULES=decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 \ + decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 \ + fpu \ + decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 \ + decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 \ + decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 + # The goal is to run through the flow quickly to learn what we can + # about the design without getting bogged down in memory issues. + export SYNTH_MEMORY_MAX_BITS ?= 1024 +else + export SYNTH_MEMORY_MAX_BITS ?= 42000 +endif diff --git a/flow/designs/sky130hd/microwatt/histogram-mock-memory.png b/flow/designs/sky130hd/microwatt/histogram-mock-memory.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6916c31947c4f031b35528a3bdec5255fc5e4d GIT binary patch literal 25357 zcmeFYXIxX;w&JPL5( zaP#r?c9DfR1-Q8QK%V#pQjVatfkE;IgKh=5JPLI8^|@f??(M?iwJUew+I6`LKEAS{e0CCUE_l z^mH0P+|$D+{!cfaqDm5647n<58|z6wzjnpAk;IIfKDdZ%hxRHd5NB$k8!#l%hxOK1-+SgpQY#dGccj_hHoaK1C|P-*)hHY^C8pGHYwF(TJo<=! zz`z}pYt8iWoS0(UNj{FJaf2z*&HD(@0?ry5q>&P~mQo4#e|%+#EhgG*a{p$E;6O-+ zy1+=K<+7gdc47+g=Zbt6g%Rk%c8JsR8k5*KhV$pgs(VE-)cjxUV$eH`v z)Ypw}q28R0930cz00z~w_BNtPvrfSVsAM1M;jNx;D%*}tCIo}s@5j>CYqX101}Xax za^$EsbP#o@OMbpU37yn!6Wn>xk!et4Q)rvg16Ai`65lIVYxHw-ys0W+jUM5csw3|! zdHq=5vYMn?9Z4eX%SMKMj@?>uCcwiqi}oKj01tIpar~Dsu4a zU9a-vnVN*%DOoy03F|WTNw1#wkF?(4DJ2AJOQ+JEkQ~R2R3=f>9NtqLBRxg4hSME# zYdU;5g%hw54+HBZbZsDv(H-m^7`7)_$0xhKinK&v8aIazwn78iW30>bw7B>0x=m>D z_9`F*Q=cJa3{WI7@O7Dn{fBLob8U9STF!4e;rn zro*arrL6rJsLeK{Vdoe&;v%Uj+__!_oZR5UbSL+fr;2_~$R8wQMIe}ku}b5<0+?sz zZk;53`&=q127~RZ;}=cp1<>J{y}J}i`rFf!`ty=eCrNeneI4)Q2YoE~qS8cj@*r4w zKIm{&CW*rK6ct-9iXe`yDc0(MsABsByG^hgQRoOd14-G~Bn>(DV9;s4@QBHw%aX&i zdvnF2C9eIujUj_#3l&`GEN)|_SMWs6h9jqMk+CX$aR%f$+rQ;)l|9bO(j+LQn(n&h#$ueE4HM4fDhB7Wtiw7+ zA>(ZLWzw3Ka{jT%&iFF;MU9A!0b$nEIV^f+594aa*Z^(4LAZ4>;(JDX%ir759#Ohn zh2r$=6J{=HXIw%wDq&dkY-QNiC4u{T2__y5G(AK!jQY|RG5oe?sxbTg2)phYzbLDd z8H$gtAg~z3)(IYaqA<;T*rnsHt!sxqT4=L{-J`80mIT(i2IhP#`ax#b6CSvhxf=LA zALLayB@Z*yaoN9IEc~f?@jY{Wh>JQDj?SdAU|V2I%%Pl^-vI7Y-<}Z8^hJ9NR+0A| zd0IywC|wpRAxK+lsYw&x8oB=@P^SlvP|26nA|~EjEmy*{l|Nb<)sbdo#>1ZoiZ+2w zE6n32nz4FV$Hbsu9LNbxE5?IMwQPNNEkx_&oK%Ig@H=)6G7?9o+81V3_G>yY&6|@E zfjE15@AfF^i+rT&s2AH2w5A{K;zb*!|K0UT)1PX*Ip|2p!eo2u=3BCdktaOVMt*jN}21(vB+KbG{_47;HDIt!WPy2599qFexMi~x@*KWRta*MoC%19QKLuBYOqRK!{D3E@fds##=ZAj@;u%75K8Zq^q4yQ#PfH#uD~!YPCsGGTpMEM}&E+wnT)D?>+>vV=NRW(J>Jb}Fwh zt1h#dUcTi4Q$?#&r0W>@ByVq@zJd0cCB~JXj%i?(5UgziTxdIVZa9QvaXwS;7>BNf z!xveV9V5yBvnPwaTnt5@Bg%Mr7!`dD2^+q=-4tGEt8bd_Q0;CFy=i*hOmMJp!&_!Q zMX$IdAytpEIxszXmz)p}^SkY84830IKs}o}{|r5qnk}ZSsk7Q_*dAvi(K<>{USUHD zYlhTR3qIyca^VQOAdiu8twQ_t@h$e`5@=~Ny0XJ{kt6Wtb0H3g{2@=Omqv{winY_+ z7<+8-TnacvgY4dS+}1liTX$J?N?ulVaH$d4HyVvx8Ep8f z&6SZ(XnE0utNiSuJJ1v^n2@BGZzh#o@`MtA>rNgTYTOVy6hy)OnNefh=}oI{?1ZEa zcsFSUbP4d8M$V^ji#D8o>r&b>N>O-kb(PIatVOCJmt ztC_W5gHyT-C0L3WIJGJwWXY{!;<%O~<)aX_i2_b6jnkB~ZJNvav0TwoAXGr?LXdD- zVQ!e4rBK#VzBL7A>$a%pTZjU0P$SlsUySeVPq@s@z)VJQN$xZz+HNBwUm#@b@6%r- z^Mh`%l{Fa;$zijt0yPg1UNviDJ&f`AfMJVhXVh1iX=Pw=wl9msCC`l)=Ok~(2uG5O z+%>ln>C**Krs(+>%v=|%U;*&sWb2)=T|UrStpFWQCoR;+HfO)i-5)*jw5$~!25@gF zEkXjZKOf={w7|UEN>Y#^7>FoQVToywl;X1Y3IL8qV5M!-r`&z8{yrDr^}S%`i@UVzISv8HI+-R zyy_j)r0CovOP$gs%`1rsXQp4CY^NZwabOMb^|h`NcCNfLeoA5?sUQYIrzdW`5zx(;;S&n-HLql6#7*;r7 zdvY8DgdhjUeU9j)U)HDpJrL0R-QbrkdI(UxK;y=L)>yWn9c5vqWYYr1UxSDAMqH#-i_Ak9>3jfLzoY!A+M5)C6h!Z;I1r)U>lUqC6a}zdGD;d2n8C>3w@PGTe87 zWk7C5NeYoQFRnB)lRpc55DCFum8DH(VJ6i5egW2HBZOb7@u|UkSkPzTK^;-82 zNW;R=EjdIbC71=RL?din&+(N>7_z}^>2^79k@MUg2_H6^o@BgEJ@K+k=^YV}yXM7lkgg8FrXIyZ1bn(D|Xrw6J-hxxKx8 z6b}IKZ9>Uo=<~4Fi_t}Vi~XQ1>^Qd};^r--$NRBL@YIt6{;M-}t8O&X5lpN;%Ask{ z%0m~@{RLs+<8GuMmjBh#WO+ovDZx3>P}Q2q0+ud&Pxu{xh)F1IBKe{Ds#lyR{96YV zVKxh?i9_)n^|w-8_o_gWXvNP7DFRB0X!fhOi{{I<3c#E|NqgzqN@aOX4f$#qqwwn$ z-L(&1YR!?^joUjtVRcE;)BsFre1ZSOTEzo<&bR~TN`L8xWUX>M6TPx&hL)}P`Kr0d zHw#hd)1aEls&iwl6;t}&)K+9qoh1+UOao8n^NF&KbG)&AKVoVOQ9L3C ztYbL^dp&F@arW1Pr)XG(JsdN0V9SjSMvi8zrhk&D5g{!EjG;R9xYeWkH z%`bqG2e$m*<l8 zWC3ej`2OndN1E##yn6V!)qPLdqJqh+{?xdbsQc zkmWwysOyC>Aj>$u>`&;mC$EtS8m7=PJA`Aj> z+W~PS*v1)BWEn=25_iXL5nvi_`_tJnMVD1pR#T3!ogzloP>)Y_r^xCPd&N!y<3|q0 zPmZnbl5ZC2ipL=8)l40{jPr+NGbokDH6^f%*gg+q6FrJ{)7Ovvl->Cfopups zn{c@cdnh@vsNYI-4D^!2zdm>0jWB0^m$U)veZ2h`#!siXPa+fKAa!M{5gt zFs(Qfv^0PRHC)j^)O#CE=06AoLci}CxMR&Uagn#F+Ra)sad7WU>Ne_;0`#_VH z<>s`F;!b-RWM?T{QgZFyBrH^&P%R(0_83cmi(glB4X$!?#@s4Q7_0`6&1@6;)>$#LIu|GV6x zNjIY$*rU@IZz%;d8CL8^^K_i#&rI9LG&Y$}r$4eK@kux)h{5Lu1;C$os*C5=u=C{b zjEb2)zKXtXWQFU)V7z;76+S#f)VFx^4`A{7r0;z*WfME=cJSVrJ6aI~-jiN+<_T)* z)Np!_0b*EdB~G+)py5>hmP5$oRt8u}iQl~9&aHEpt!lRVFE!>)qkfU`>HMVUw5MDa z7H;T-*y{TvV`nz`OUKHZPg|3MnjM5^Yp5wOcP_1kS&a=db5*)yPuJG8Wa~AaK zLK#60VXJyJu00)0R<7bFOG!y{|6hif9w1}xW@k@j>*+03x8~Ww7svu8u}8)|G0qJe z`;fI#l-mfL;c8`=(A9|dU&(dH2NS%^QZN6DR85!#?#Y0o2LLel>b=1I>fI9T0)vd` zMX;>{WlWw6D5g$SK?1pT#5xTxwsuaS1)ULvCMQODID(GU+ zKeTLCWTqZ~tQh^GOjxPJxn9O77Hrl+Sn&}&ag<73AIqeT>hN8VPUJInWi1T`pkS^!IBF#sUs znyMaeqdlH`PWFa($xyxK1~&!lLBQMdQyec@&(ueQ{UMXSLP|Iz)+b3a?y%R%N=3`S zsJB#vrXY6kffmw%Df4Z4V54P{73#xSfmmAsFG30a4491AxJOo?qq?*y zJlwF1F~Q}Y6=GY~L>yn;+<32Q1VE5u`uQ(ETq2Hl2W!?+uS?_`j_59 z`i;i*s@m@K8Af{b4KU<7NpZFE8eZC$CsUh0=#cBB;xHbu^0i1dLJ>INeUSrY zr=TISmG%}*`GjxEk)?{FWzq16U$LnCC7>&C@^e$b-aKC=W#raC z=@zy`PUUouYq)S06*~nM8nSe{@@q-+dY+I0r=Bv$Z+Sed%Tq-;vKRK#OYq1O3ORHN*+nFsq$iSGJFi(ZJIIseHWuYIN5|RX! zcA^+ANRbhJ!X{I5gR}zaEmf-U>dd7N`yx7iw5rya9yrBWe;tshfhYsBX=b8_6^ZWw zNvx&7<<~N5sNp)UGZMx<-0~KRq&ASG#IL(B`nY?mOWNDrTOYW&(~c6c#deJ1%z$vf zP}%3)39-HgEUF$WWf$ELvbQ5A&Ly1&p^j3=8TXJ^i+=Cd2Ci%oBV#+qo13W z-em{m>6!Ya#Lt(W4e&6zr*Rn8u`=o&`1)Y~5fAfPo)Ca@w+VEzLmQY6=qr%~cucy~ zy3xZ&H2cyaw#h{5-{_oTVxe(GsLV2TAZbLVF(^P=ZK>=nq1@4f zzprOM1fQ|gEv;K*T!Rnxnp#LB0LLnCmjYzc%lTUfyp~#KgsE$dY%i6UrJ$x&yZO{a z5T$tm5oVlw?w3s$E4BK-LXWZ**FkrKNom9{W#N*))SH1XWWeXSK$MdGifrlU2jb$j znIvRIaeflfB|y=>5aW=UCLk|o5Dr6}7EzIk3d5xy(0gB@Udv=kohdvKK?t-JjhLnP zcv`2|1h^#IcM4rG=t_3PD{v2|{RRN}`2{0pB=*=kr+)5Z(5piN4H%z@F6 zb@zX%K5yCVzjGMAe!yNFUp}2`(Yj=8>}xEZzlD2bA_s=hPJg{Ac(8)qMoibgQ+*d| z4rIaMH&}uRVvAy{XCsvsP8|m=mhG8!B?IcLDz#e@g(|d@EA)xhrT;w1=ami+>W#wt z5rAmw*~?uq4GXr$o$u@Gd4U9%Jn}C#90Ya&giHDN$q$AhV;7y=dhanZP8T~C{w#0@ zJ_QPzU(c<-a*3uXPMECRbpsgvsmdLN7JK*3%J|-%=K&^!$Vsp3C2o31wKAp`E0i8o zhptPg4}o1qOgMR|Oabt6JpF!d5arFg@W#m)OG&+agtiw}mR{w(j1%qNCfTP(r%LRH z?3%?f`#%pQkrrlb;mH{eGKDiRThg@_fHrSPJZJ*c0A!PfW=cjf=MWGEAD2lPj_-gk zw#N$(bp5}wx*RVMijz}{8iR${d-fBVGGR;CH)|HG(-fL~JtiD`z6VFIm8*mPNfY1iIThmmP!;F@SBhNtN_5PqujbY27r)ff z7vzWOvWe?_Y(|xV%>04Me%MR;4^HIozu}W*LYJQzKwTYDk~LUA55{=+1LTmMY@cg7e+X6ORU1r`Q3v`=BHmS%7eB8*23DZ+X1ds>@kk#OI!_9r^+v)>)fo* z6Sl!1Kf=qT6w8DpY7aK9yLl81pHpij)iUS*KIy)=ei8ug#`d}2@KKd3g|uG7c)MhY z6tjV5uW|hl;87yp+wH&}6g-bo$N!@Z=Atxov9df}^ZM-z{G;rPw0$Rw^wjFYO?gxR zr`5mJ0(jKJv+j;wJy5oTS1;ElnuNtofjEtDAkOpD152j-uJqMfN5?uBS5fA~5$Gnp zK&EIZ>yeO8@)}AYvDrN97%=E}q+U_OWp?e-^GyFvgd(i73zL#M;56R{nopXmz~0p| z{nFCnLh2~3N|PRFD+?(xpYVcxr!d^5Uy54zOFxR+{fX7a&rK*~z>Y=IBEG0p za$9;6zp}ED)p|hBg%1Etxi;oi=|aJ8VHRYXCaly4O%LgjV}%dam5= z4W29wr9nrlcf=r=qSxdDfw9(lRbWt-@$mET7bf+*!pR}r!se5Oz_mP;f}E2BzFoax z{=C6^yrRl-?lsVS$bA5#8_80Fk{VBj_{G()kMtD(&Uy=cE615%taV!`a__Dzad$0{ z_rB*Fo(B+K|FPf2@X0RL^)kA8OH;Ygp5DM=`^A4p>qCotk8eqf%O>|U(N~4HP%q88 zi2pMYH*kOVZ(xI*(1SR@qF4O`WRfc&(z{oCyrBD!xMOVRw*JlUk8aSZp?@nIcg7{j zgeQI~1Eicv7cdtPfWP7Mm5r_|60*x@Lx{u}z(dlkZraNWLE&Z*qQDS~D5;|%2~}?7 z{ZUeQ>b@e%2&NFzovhqQNwN!>?>DGpf7MiJQW0Wf-~t3}iU%+ykjMN4S?~NLZBjUV zfIDrfep!L20`bMt`smgL$qg-L&zNHR+y6-gB2H?4O9E8hq*yI70pb264S7FQ8q{+xr%mPJ{H4Um_9!tTIP zGIq|Xzakg0QeLMWGH^IRL>$~wX`u1M7ALho^IY2G*x2CA`~i>$;ghunMW5m+$@~Pm z8X~pQ7p_3O>}`td`-)*-jYpX$m>|9ChhKhm`vvD6K!`18W%2A8w9{nsO?*0I?MwQKL@$NU|KuTq=L`!(_mGk&YWpVe*UO zIpFM{UrLq8qTF!RZp5u(Q9G5I#5|MEPlb`GRO9B$A+mx0*cS1#mbDXzF2E>P)|b*P zns{Zf8^6EFiankeJX3`a8VsVZ<@UNq&VUc?L`c42tDkM3K zr?*^NI#|-z*E=?<3pm-Lj5_?qfy$uda0R$|dV8#Rm|EHuu;%@0TD5HFbEv*UczBWACCuA< z-qF9Jbr$h}hlx8g?!|1Vc;r5A3%=dxYIVhH9DC{)ly?th6a;k#>)3r*Q)fK`fO=T^ zfGI~rKGE-{8k1hTS5`dySy7c-*>x(kw_kRXB^y1K|4VIrlmfJ0h_M`auF+1(#m9y) zeVzJ}mX(lIBb?wf{Na~1RRRPGtLAHB(C-o2WAhb`2T%(DXk_r!(ViVEx-7Xpq1-^J z)K?Y2O9vrw7fW5UVoe=)e`x@9z=&zm)K8TFf{bec_piXhRy?w=^8iZ}-`QBRZE#S< zcg;%>s z9lU*o*YnAwg3hmMG4>;!5^V}CCxAw_S2HS;`z z_0h-O*Hhm%JRFC^Sw!GRvIiRCJLBUB3fwP@PXJTiSiZ3D(s7AW*p}2n$&^yv=D*Sp z%(Uz#x(C3`bY_PF}7rfQj!GJ=rhphbtq2j&q_;)e#b#f^1 zc;?FobCuXL2<)K=9xHck5f$KsPs=`?Dl{E+p3g3vZwNonHb6eG&UWbzcP8=4bw8MM zgcs#2Z;=tHG%smzxM?4Az<8i$G%pi^f2Tajipr!VR}T37tV_FIUvmos9H2i45c=LU zQiG0trbcRW=ZEx<^o~?x?2l~?b%WG@mo{ul#id7=p|9}9gD#|sFtbl1brr)*c;Jiu zb}S(9H_DGGw2l6i-H|T(9#qTkwo~N}T}X4A+8rIF5zBPW2QoqU6sMT%z9K=@?Ppf9VZ z$Ih(tJhzB)0Y#_>;FhOGMF5RYXk(c3UxcY)v}$lVg+)@R^Kb=mW$*_xPtgXBx!dgC z_Q?vo&kE@;_o^K>8mEG_Gi5o;LdTQaWUbBIdtSAhgG&p(8i$cKWbBg6aO$oGd%;^V zfaZK?Xz{{uaLQ^TvrwtDDD!erk>vE^PBx`i7d)=Wl|drW3&r}p(R=Pj*H?W(d*25u z80(Sy5xy>lduwmg)Pt5i$r%bx?Y5yua|D^NqkxqeE2!cTWIUttrQ96{tDA@L6XOne z#@#j(T1j&8w-uKhcIkPUJ2(>#9Szh6a+HH^{rzvPBIn)`T>iQ%93Cpi7~iLV^Pd|i z{qM2I!era@!2}2Q)#Rl5pq>wx$ALtpMP20bP?6`n+Oa@$miA$e{`UtvCiG;1l$2b1 ztcasMBvRR{wImZYW-EOtI{F+q4Hs0gRy*UKrY%eD)?LB=tEypyH%6iWKxr7>er*o@03@R4U%b*)mkKT2OlFL? zJoKp@>;^gG?TJ5yViz;^M(EJx8c)a)B7A|+yhkp%-qoO;L1~Co1v9%c!-?xa<=#7) z+O;>oqLz(MCQ{3?CLjDFLA^I8$(zqLwTMMMo{=kzxX~>~ux%*;IhTT$)~^g?nbOyW z(H(7AwZiH$`C?thySa4peFU2KwL!b4a|8D~eo5^;;H)@>@$JfJ=h0-JFEa2eXf{iY8qm99%{)~^0e;K#=r}#@eu#KF^-g!u5k}bkM1*mdE&7}EFlORJFRCoX0 z?13A^F>K-GhwANGONCt`v6wT;)s_h+-h19PA#vI>;L7gLn>RuAWL$<vzKX34vGhk8%6~DgY1pL6KDvk>O)Q|8>{6aIwLHz5#ySo2{jUb?= zy1YhO#KvaQ6xea(#&aR{Z}X5VNV4Sb%OCjStPi@MR>uLgRDhlHe+;bu!V~}BrT_D5 zypO7v;3zM+`im^C+Wjl7ek1i_?I8z6dS)k(dwQY1@VAo%4Jb9K|NS4*Jyhan`kAVi z#r|zlxB{3Du-xmTYA-alss@2^r-GP02hRgyfA=4#Y5Lvf@S04;5{O@CIGDe2s(h%MZKx zydf$H(In{xUy^X2@HFWI`P@tQVc+aybXmLCF5(S@?HlR~0gelN0LVMw80HV^sw(OW z*9D(9+^YKT6-zEa#Zs$h!rSbmC^2>AR5p{fy4|+1R8wDgg5&-jRur#i%6}{_Sg$`C zqVpv3N(f;hi5sjA)G0+UL;o>3>eeMfNEITjx?ImH&2ogeC0X)6u71!3!R zIgx?Q!IDj*_Gq(Acb~|JS3WC?-Sh%;cGWr>Y(6 zzWzT2N5d*Sv4CuyMgVC0ERwj^PQxamrn0T&`GLFwxpw=fvQLA(YJe~xbZ(?xs@1p+ zQzeA3y;xh=0CIB3!fOFzVs^0v=}q)qx7i=w_ECVe%;BnVw}~#wTbfw`@_M7BxWa#F z#91!-{O+NtVSuz2|FoD=HvCok!)Xnwm2CzN{%<8K-&o`3BRfo45cNa%AZb^OSi6Cw z5s}WFZ#AghEAR~Tl!l5@g??Y->?^P8^DNzDl5uA>p-x5(zv1kP+Ue>j)&39_w`VY= z@##^Jap{r&1*Lkssk=p57wpe)*3DxgJCX#rOf{Z(U0J0$f&$RJ18&~U1NQmirg9nz zg_@1F&Fo&7;`}!28*YL4-qxoh7TqAt%XA7J(U@m|!s8EF4>|@<#L(u`DeUWPN}q&c zIFxpJ@(E@&WOrsfJh6Qg5e^N8M~?iY?8srAx9UH!IcgEHo^))^zjG++ziQ9L?fdslQq94} zBLfH!GPIcLI00X%(t6h^2EK^SWZ)|0^^eec=<-c3tJ!XSw)BRY8g>s<8tE^~PBV3Q zCkaMhPPL2FVJU!@&@DXUq*s?J*eUxC47aM9{T}EbyP>I<(mT8kd1Ao$eNFM5bb#*^WYY5ydEQ7}5UKW}d;LBqh$8KlKl2HqLxz{qdI_mzl;{6JWl(!2@sZPK^$qKKGf*Wb zbTxZNP^`4OwL8kgfZP)G;cJNE>@(a^R|;uV9_+kz?bV0%-%4TEqlx$5CpX4P8FNb& z#V6++PlL`c(0|g?PHNf&KArrgvA7jB`&Fgz-O3v6Te_2H*Ea>e+D>?vldE84g!1#W zi))`f^Un?mkJhMQ%RpsYKL&L%u>GIn_7$vd8Xet zO$IW%ZG*`ptxzoZyw-w&{S)o*Z4O9Jm@&mZyAIyt?TXbY%-|G$!3#Ru3uT8y zL8%$Vy_u2K-u!wsb%D2isS7_nd+?tyo4uuC1ecvqk1}YFb(g;MRUM`@AquRbmIrl^SR1!?ohssWmQ#v$oS29prdH~>kmEWR z_V*o>NpiwYI}}DXy)fD*B`z1zBN29589WtGafE2ibI!VR<@4rHP6ET~q{lla1c>eSA0 zo!(FOLL`4`G<(H+N2roDzq?hQZo2aepHd~A?-(k{KC7?pBJ(h1=co9d3zd#15QUC-Z$2E-90+(TlsKf>j7!3b-7wnc@h7* zgAexg@1Gk3?an3ky*%MX$erJU10W*1$Mz5bw@05xJ{3D3Q~g|wD4Q+*h5JZ0;}zBs zofte^(k9wj%~r|iL~}ys5|6l_GkX-jozk(q5>0U$1 zs9>P4jwPo47D3GlJXs1fUwHS<0m$0^(dubLKC~lp^3N+*ww!Ha@7rKTF1mDE@PN2P zH>=W37n*IM0O?spOEGtggin7@|1oeOZ~hPO0(R%-wgt{{_;vpqFss`+)?MGLLltgQ zh0x?MFtL<%gIMv`tM06~o`jxU)tJ>^Q!g}KI7f|(X)!ut@3Nf`u{9b=#)PH zRlB+zyaQv_Z(jFCKGAuBxM(Siz*TvOyzqVP9a8Q|KNa`G?k4S}gSb{_?pO%Y$;s6| zU2R8$_#p8XA+jg)+aXQhFPm*ye_32fY@8R7*?poOZcDg9+Y^t3o<|EyRVa=;$p3uP zCAL-XepHXLiPGT{a{h%Q0A`90FvA(3*88}9DtN1*#-d20KieE)H#VZ#yijXm4A5FA z=b6>iJ0<~BlDvX{n{hvzznqXY{a&T81g4gXSwP!HYiiQXZWu`z4gNTK?eyuGw)|Yd zI9Mbff^uuS4N2Y2LxbKqOXOHcmkD0~!18}|j?r#dBBrzsD9BAwKAT#q-fwVyvCbfw-BTR>{*bXHm9&WNiig!U&7QHvJ|HEtcO z7-V}-+tkXjGGtIdY}!)fHK>Q6mSgjq6I^Dye0*(ReW#-uvfUP1G#fo=kH<2!imV56 zWFCRcoLx$DyY5GIiADobkC>N`(46RqsLePw{OL*mo=MrtV4}sN7Yz>C4iG!9$o$VB z4%g$-B$<{*<}vk@VAuXR52NvkbkeA>GMcU_EaubC$5R__j$ zbQ0~<9{x7ms5ssfdY00B?eK~YCBQT5O?^@75GjJk%dVFtl~uRYRi9UC|6?X9+PX1< zGj+u0HD}LbkXv%TXJ3+i2`Rf#$g3Mm-dP z`xZ6&u~Zg;y}?YMGhs;U_8#gPN|vz^xt*$(@n9BuB)$YhLYG4S zQnO#m)fpAO^e&E<*Xi4e@5biS@#~GH)8<*Ymd+0?7mwPmGt(hFr|PMc(T}IJ!!%=) z>(yeX6T7LWusdOVHkHDoCw7$!CSvWM*kA9?ZU2S=H3nbfN+o}!d<#3bwP>>e3tnX= zjA~;^3;wriFLoWC3=7bwNNQ5&R}7x0KD+oeJ3J%c(uG$yE=5(n9TW?3&3k{76>pzkNCg{PXlR~}ycv|nup^N)SL zR_bc_63^y8a+mc3r=!t7jDCyyd}5RD19%yF#dT|Tc+@vECL~BmM zNN@hm{q6Ll=1ASBki{#F7W@7kiLJU!w_Eole0;6GmsJ*y2wT>u z7$XlDNf&CXRxiloUxw#Yv8MMrWu}#j3rlgzK<2UZng3lcPH~n^|Q#_ z;-#s1A=lE0=u0&hMZ+h4M+y$bbv)Xia=JdDbH0o}@$EiCm#6d&w=pQsUJxTU;;ZPs z5yoyA5AZiapEt0yO|GuyCRJ$jMYAAM^5TjD8=0aa3NPkfR|JZ zWeTg7;hsn0W0kM^klLa=9ldJjgjJLit>`Pkhn;-C4^mEAe&dfM zM8sWjdl;~Z5`dTvc5ZWD?!QH@ejs=ELa)up!dRD~aDb|$APRKyq%bw+vQ*w|JPvPY z8tVJ#H&i_AY0MjUWa-A*+x>+r!i5ooIFzAl#~+-$Z<|tshc*4y(*Nj7kl#~EgWL;I9X5;ZXRUT<4?yi~jXO~ON|2kR45gH0mpeydXly2`=itC`N z1~;dwOfY6V5y06*Iv_enmvzO9L2mffx-rtt^3atfnic)k3a_x*e)UUkEW3hIW0rJO+7r zYuWO3@w&8X{5BVSAv8u~@%Ik~k7qm4e>mJUfOJ? zzUwFIMnq9{zYM3}eb8bBiK__O7&Wl7&sw>Q%AJOPlaq;#ETYT#yNf_WxdV#gvmK%W z#y0m)2S-=s`Nv9y5+y1bsHKSd9)xJFTtN=)Kufu!qenCUa>a?x##+fPq-AbR+6Vqy1c&a2Hl{BX_-VnsCztA&Jny=B^2m>2A)T}P46keBm+k2{^n_ zcm{5A>+O0YE3@+~Ocu*li{}LkcPA3^X3Q_e3B5#j$SR0xJYbzx6`W$7y3~YGn8}hz zOZpIPTwVWTJ0fn>$MZD>J*lbo_3t1e80kv=$q-X;_V|;2v-(v-*j08@v2`2a<29x0 zVakcC)lPNAl(9jUv*-42rc-raAJ$jvbc@r*f){$yTc&;(WHx^sdVFBvA0afEF?3-=9G{3hvLk^RYMAlP8-1w*yZ6^;e~@-k3YC<`nxCk~sQsvvC=xy5 zSQop%zi2y{w$7DUAm^sTgg-A6=!95WGQ>0v`y^EPi$YSoFTowPzs8>?zQm;w#VpxL z_@gPt8Es!m!nT$PF$FFB&VTRg8=SQ?bn1%FcugSX4OSxik!1GBBHtOhgn1HD@yrKf51<+bm<-??!PT||D&Z_bA>1Td9u8PlogUG=8g@dH-bbbNEp4vu%l zoOKW?)JJw+e6*&R;-xu$ycL_XVyf0ZZl5zac=Y?Ju5ddZMk zXgv5SD>F0J6dJxG*M~do#l5(H8*IZ!-f6zV*(}s6omlhE*TyQ@Hc>LZy4@AmdC%aX zMk7UC_uhW3)D3T2GEl7PamAOE zIv;EIXXI+V1_fD-#eenxc{s&e{a%glQA2h6JMqB}cJKF*UcE9qdkX*OpQ2p`)~!0& zx6XTg21XNZ+1hFTrDF4QD4)yUCu7TTSACBvMSL0jY|VWbwsJO1^kUnIBK?dp<;?-U zv3jMAr0F$5x8*C%@NJbVNOip_0c4h<+;h*njW_1&)UYlV6E9AE<#$+^wOmy50Hqnp z%RyPTcO914*a$x;Ci&9qAX5joA=1iqvhqf-U033rXA_qpSeq0%YaLb^lG^oYKNse1 zUv^9M`1N2#_x0bJUtwEK8o*)(wbAYDb&o*N^wvRI#J4@+&jG!W^qr+((l!0>&#Ud$ z`bhmqzEEOpnwP$s!uRL33-7akWbQ(C93!?@A#VvEURu{0_9C=m=tmqDVsDn7P_&DP zdv#Cz(>K{aXWv&?E6sSj{{GUtwfr$vv79uaV952TH~p;pvj9Y+lzeeD^I3z3n<#Yd zkWD5@?Oo}xccbc_>Z%ZUen-O9KTk8Ocd~E(BUT9-9=y@raiTC-#Bs9^`C9I4iu?vM z${>>tod->7zv)|8t_^Ul2x$w6pwpGlv$Jk)7^-ykbxB%bUxFX0d|wBjS#JD(vOFny z{j`T2TUp*2>ueqj3)}X6-HSJJ$ZooNjU}B4oyQsWP}9X81u6Jx+#CP;HZ2kDy!U3` znSa7pW1{e_>p;7*!Qi*qxtLU~Xgi%N6KHr076<#D>+L0{iJ@ukUHa2x8K8N6z#3kGt;B%P#6*}X|`IMY{%P8`_(HP@wqH>9a%<*>(F%<3e_C003(_lgS zNU?nz&g3)4GM$C-eFeRdUzN0XY^36U9c|pDSZ}{l7@w$gn)EZlNf0$$aC`~@tI%AyEnnA^u z;Nc(a5Pr*T!5_mh^+$<5F72F^;|VU0Lx*!mTTy5Ey{0wmGmSB_q*r{69`-HX5AJ9^ z!mR#mZ2W%erJ5{5yE9fUYe4qV>7WwJeeZao!A9SIYwtXRn&6rROnDJ`Y0^=uAfi$PLJ3_$AA!LHx_`x(K0SBI5%+v&ZUSqAhwUPSFPuiI=L=yRPwjuuj}jb`@tF1z*0ypt zpP8}RptlT8@0%)D-tXuqG?xqK78KxF3&*tAlw7bW-UZMlZ2VPn+NL;}Idllw{K zN}y(gEz{GuY~)-1K}fP{?8qKyJKXUkRIyp|$dH+<7kGZ5r+watMaFQBCD&&tr;9jJ z&I(#7n`q1X)Jxu!TvG~FliS}Xvthim5`G;1ZM^ZoWxzGXo|q~~FqQT(&^c8y9N`V? z&TEJBQGFnxi6I5JWA9&AnKge^Xp(c zDK9ruQeUDq6R1HkZ#iW&CAa_?%~Cq9HxK@?vpe9D#^*$hjV1Hzldf)7A5}lWVbxmT!&J=GIiqnoWCW9M^Xcn7wCEU z^*qb)L{(sT2nPlW6D_1@fjb#yx9CtZx!nHGXhg2R`fW;WD9UG5#~~Y_%~Qp9zKAinP;8%(Fr#Go^*Hy-{w;#-jp#YrV&&Fa3GJghO%f5$#kA`C;nn->1{+s_N} z5*C$&q0I0hHmzZXuS98gfisBK#h9OY`s9sWU)Rgl8tk*qFgXW4n{m4vF6?Atv)g^)i!fn=P`Zay7BOchE`edOp&&|?k zXa=tmT#RF|$;L^d)B+M^0Wp4aS-w;AZJ=gJQBl#(&dGe==X$Dx$D;4pr+dDB?Y=UC z;%ZcyeV)9#(7Phk5EW87v14tP*78&^2jM( zG+aAbU1`gzV>M*`MGX;od%UGxTr?uBK_gXhOYu!X1+_%6Z}R3=m6V``(|JrP`aBk^ zAyU+dYa56kElkT4IO|>*nt56v;sOTEy_5EP0i@yL8KW@a%Tcmu|78>PK&EQ3VK^7b zF8k)ht-r+hCR0)BxuXb{)gt2H@=XEK#G3WzGqUHyYR!f}Jo09t4R0UC0JYRD9k$@9O;^T1x4b7h!#YR936M)5S(k6s2Yv9^RT%r7PH!54H zgN}b}ifW1x@fEvhfW8vX6r5;dUVwe)-OFtVIye8scX11y=KeG`Y5j1%&FhSJpzlCE zQ+m-}N#9m~>9~&0z44SR+`x!*uLPWQTe=|FEWaS}z4t*WpLonDj@@@yzblK3g3PpO zD^K>2aCmeZ*fF2VxxRqWuH3s$YzRVYyuk~;&(AQK`RR6b8||AbXZp)u>x2t=&#?`| zj~0Rd#wsVnpgrOwHXb9l348swOIA|noVeg9pGMK@-u9`jDzNb~b-6f<+wKyHYUnwM&Ee-D?y*0IABrE@un)p^O zOUn-y2l9B2t9%x2+pXbP=uGt*C8$?PbE(86AmL-@w1Mf zw_oao2(xvZ6`+`QCeu~$`}UgyfsnV_Ui-%z)D~-Ltn$YVt9k1Ug=Jm`TxOJfPe?>2 zDuBcCZxZ1!ZE-Aex_n>89!U;@cN|-;B_t}PkMs?Tejg;2;o-?v_y_@aD%@>%sK11% z7!Xhfh;+%+JV;!kUB(KBUf0)ERXDFYhzX$x)%(VR;jU2me zb$&g)+29vnRk@b(2-J@w??aDJkvWG~yc-7g0_t&lX!RG};wtCn?3x4@B~Tpa!!e5Q z$Cvw^!5HtO>egO~_6ntOyI#3YvU^$6LZ|G|nD5m=-?oo9vnJ}F+;@iLY{=mN!Xv{E zZg$Eu(QiJpJ$;!ej>}z6m<;We-yU{nQrEv!6PA*dN6TDm0T-T$K zDyiz;K@uus{e@GWPpC%c$FC>`X4jy|N9>ZGeoIzqo;!-uhTcotkQ2A&5$N3K$X8_f zk5_LzHc0N94KPG znc>9%3+Mwg_d}avD-k!h_e#YPzRO(Wg z*OH0_fH&+NFgR)<+xU+Hd)KdJgOrx^fs|RyzH$|%kO;@K&(cT->eAOtq-`qWl`A1o z+lOw=`*PIRZ;EuDUP|j+xqCvuPgwq`EyP5Di&V_$r=IC8A)oMsYg&^=m?z!s3foj)M8h2v^N8SWZ+tFN{T*~=T@H0qbQ6p$Hc z*8F5_YhYXNW1w__s))LBpSDe`iT-g=lnN%sd__Udn$aRST@^pyP$IXz3}x|_$TKVs z*-lo!e4igE4i6}hoJ;RR#{#AQtXSl@FxHIF(f*iH z7dk}yh6R`SCqHAyS)b_FTam50-TREnkt1xhmnU@ z0W=9}DFUd}T48lIW`puw*BKe_?XewIPqWCKLo?k+N_595=r$3Fr|HNWhle|;6c zq)W}<*Fl2z4=`Fv6IMU4sxK9#F5HF^Y0yhKt_0r@{kp16llE|n;_1kXyF9ulueUq zTDX{KF59mTK(EE_Qan7cTTdv;p+}SA!IX^q#+{)rXIIZ$rw+!mC zMlVOuxdGgAUSj7p!pD^)v#M(5WYrpBEfwyUnH?C96_bYXg;J9@wR(R}oeFn*Tip2W zwET4~HzjbKBLS{x8R$~pZ+7*;{LC?xv_xW)FbZ>*J%0E`iAlI6k6$7P-WS-Ej2*zN zA_&zsbB{=ZtR5<#?pS!aQhnk_yfRs;&9&^dMclg-nj(fZl!Vc4Pp_I_jwME@9p6j1RXixVK$m{6c`tQ59{(?nP8Vuvy z$uINeMo14*N6R#b&Q&gFs@h-f#Vfl6j0z)sogN;XKU8ui=VX5uc6U!`<<%CKznCZ8 zt`XvMQR3TB2zR@w6?Rg}XZ^X*4!P&jf;pptu)wPCpQ`RrzmYdmy*hur_4t7;>e5y^()Wi9e3^@v(@pTFsYX4?>f;>(kMU&1goHg9r1m; ziB$e_r#BaS!H}Z2yyM}OsE+^_3a%F0JRK9UCWhj-1tq%!KVMH1rp0zg?(PhYKry(& z7-OTkh_9oePZGhm?j@KdU0tp>fD!TOD z2r6HYp+Oe)itk6&L!RZ2gSi;JMtO1oDD2Fm_29503}5drpnRw%A{c7u$|faVY3jhL zy1f_zsA}*F!Zy`1%Xr!Z#}iwkAKA`q6%_^ewkJ(I%14SjHU}p1*w zRyFZ^eC3#!)MnbGH+n*PDebRBB=)k=dGDKNs4kTnAUU8o&|gM-;)cYfJgY# zBQ7Itns6f2#u>D%gX+`hAvsu)iAhqUD?LM?W{=jjmau?*>eZB#HRUcDHH=WzC>eG+cklg5(MbO1*-m?a5Ir<`_s zH2oJcb8eb;Ib4Q$Fs7wMukj0?Y6|Y~LIJ8NDispBO|P6loVK~6D;vFu5rQtjFDbU) zOr4MsO7~Vvr}wa1ziKItPdnDwUjF8WETwyrszzx~X)gWF5{4C-5)Wntl%&ahnvH&6 zZKELjJ>WIu#Hyqrn0X#h1Bwlx5~-d!o4p(a>dw(WTGIFV@nqo^^*8AA_RAf;$^7+*+s{Rs+-wM7Z565XpYDQ99;kwxiYB$`QBqRrM&E zgRV8E=f_H^qd_x3e4XY(2VCa!x62AIpIt<;HKgDPL6Y)4oI5AOGuL6rY?$L#&DtMj zKYAO{Hnru{sOml&J=az{!^uoy7rHZYu-gI0^u$^ToBHg}g-bqp?^TV)x+2A&aOzA= zZqu=28^3d=8X8^X2W_cj^ANr&^3$WTu;29EOkNAmNi&Iuv4RADVLw6jdb>%tqix-I z5s(0LCdl-7ZuDVy`Jj&e1*_P;tq%(_;^>L4JozrpQ}$nX&c0I`6%ukWu?J3nmRpsh{-p{!@%@1q((;Xy#}#k=xq@#_NEM zC;DKrWrx~j26px8xFPE~KksxD%L%)G=J8T`9lwYhnpW__RQB|ycQQ(e=tbFl9_seD zD@Jhn@+do{w_qxRKR=|exT$n)g0F2R2ZE~Y`G?bIJ4)oy2|oNq$iOw zDfXh|RR(o?IM~teI3W3-WxW3Y>fJ6!zhK~+hToJ-(^>QN=E*d9cz9S64j%#Fti3a_ zo-ql}99s$~C0c$&Zll8^-DHopWt+3Pu4Tal0$&WgF;09Ux}LvvWvG}Iw*=D^y-HxP z+lBZ9EpumVG>%gCK7eBV*Bo96OXKy6#@8~kYp4!F*-X-N2mRs#ol5W1f`sp0@Rb|r z+-cl}SRN3nuq%$~BORqSX-eD+#^>Sd!qTl4))+j67cE2)+$1>}zmE*u*9;^;Sqe26 zREH2TKBd$_LbER{qx`Jj=K$xQ*M%e2f79HMqxdghzT{j_OWXhfT)dd}6z&*hCyE!g z>SS8ytmgnC))&SGdgXY(Jfn5Abjx9=(5gO!iocmbv}HXg%|zyo2Lk4%g8gKU_Y>M+ z$dp)MpH%zpm^`~n22d>2)#6ZVEug7(Bitfof7snlyJPQN)8K>EJwtYl1?7&BOI^Qy zV=7f0;RdYlJx*BneiX)~q_b^T(V$nyU~Kf%{}10&9-eEWf0En6cRLL)#I2_za}B@G zy9SU3jHzs9rR(yV+vr%4+U#DAHf(TzOjc|9dI!YTM-!Bj;gOF~_++!!@4hF-Dq*%6 z=pvcv$+4nqE2#m$lf%|EzMF#DK#7tJG#(Oe->B!lX&nKBpFB=Jyb!WEhyS4Cy>W0y zp?1H=g!s*IE+Z`0U)&4~UU{kgpCx+#2}<~H>x5d2F5L_$c>d3ffd3=1`ET3&|91ZG z>2o3_Hy__>O_0D14*HkWf85152LJauk{@_DctY_jiNJjm_5P7{jej00|C0IVH)WT9 kNhdX9{r|YRcujn%86wBC&Z>P@+I60TK}D zolvCrmJpB$~gjwOBm+d1mjKJ$v@-*)y{frlp~H`6A;* zDk`eW%1TdksHo1SQBnQz?flu}H#U2Ej>rH0^n9$WcmB8pp11zzxX$3EVCbdmYUAZ= z;Q^wub#ZkD@p@W$fIu#ucCKCXi<ce+i@PVMnZAYi$HxhgzqPMvp2t0TIt&<3)qPk6`{N$0IU)tKFe_HntOY7!deR(Pb z6e6$-nT|}qQ>%SG>x_2nU!0DWv3dvbH$e89*~f=ZN&9P`O*# zU_}V`5p$F9At9M-*;&79v!3M9q@5lEd-l|SQiMVra)6jP78-t_`Gt07DUrvx5E^x> zeV0;}r;5*dBwswmXYfLIAS*Z^a7_acv?;_3`A~dIce+p)$lIiQnD#c6`8R5V^dnj z-M-hzQ15w|hB67f%Icsa@ud0S^bNhNm;m+3Y~3*XDIl?!+0I0h_EkhX#_j`r*WW;q zCpNxt8tB9Yb#?UzgNy8{nkAiMu0=TyZtsP{EyJ=ep64ktCbZzUm6jg;qVahxR!%YM zezE*A9y)zYAx9L8F9qqneKy#8CC#2g7w1!p9?cJ%Z_NX{&V6$qBX(D+jV}g<=+14B z0>H1~GGEN^RK0<9Z58c(;2^^CV%L+r-H4YW1DxIlas`%ZClJ_^X}|2ackf%*g@Ywl zwqkfwL=FTZdFpk!N#{C>pHPsC@|3?GXmlQpXq>v@9$vka^Q^o=(FZPUnKOI^abHTA zL(#y0wQ!1Y_ucS0jiFj#Ff4waooQc2r&)$NAWZJpTs@a+5|i?=8+${KID#CLy7~v~ zjVSc6ndpPHsq>Qw96Q*jzv$f0VK#31r^XR(!5(}j>0(D?#eKyDM}|^;?=&`LkYexf zEPsl_P(D;R+e2Zroo%FyICvlFAEqc=ISs~r9oj<;V^U4olsRZG!15#$I@%uT*emP2 zVT)TclU|(1gRQ=9wtB66$iZF4m-KD*#OA(#dy9qP7l{qf;oSWaiV1TK12oN}ykew`X)8F!Y$khIrU+XZ&zSRP5tvUB9>xc+5FJ?)_} zb>a%Sm6rZ`iK@TRncl2?$qG+wi?Y1P-ZsXoJvQ{aJ~}CfuXJoh^Uyj?1!--6^MPnZ zm1{1ft%bu4AHLLJmMfZAmf)yC(e@*Y3_waMB*zzLchYh&MY8z@a;6CNOuoSt{ZoS6 z(Y>aE{xHH?cfgT_n6qD54O|RY#Bh^_o6oiWmk?1M6o3Lnbv4F8Rc1Y>?}c(XnDzq5 zveWs{?FX;gtOfHvE7PTqRcd1Zf5S)T*8z4zWfwVh)xEjCEj@c+liVF^VSQCi;!pVg z{5G)}A%|~LoUCwBs%~+ve>ZZT`qyw~nvE9~HZ_M?xbomkoJq^Azpt;awT6Lps z*Ny={e=FrOC600rjAUj`opkyQ?>k&%BYlk*4$>>MkVgA z-Wpwd=+IwbA61F(D=o>rX`zcd(#2#XLR`)+Osp`}3y{tc0}q&q-`rm_uNs=LPv&*n z9t}qWH{zz7dW&3PCPYj9&Axmt39B$0w63a^l-}C{cV%dLUHq$2r7LiKOo*ioMUz@G z04Coj!bF*ebNOBvZlno%t2-IMMTp6zh8ANLzT?h_`ko&$10oo5|gT>5%J$-Xq^uZ4xTKF1iXl23l0r689(#;)5R%mf=19MKij%cmK`Dzi%@R6@QKrq1#A4riANsBnO%5_ zWsR2(hDAiLG~h$Hl8$A3)Paw2&rs3*zB`&`DjgdsAK4gCetuQE=9~pfLkHV1P5g}= zB&S=8h=SQaajBSs;_AWuo?#LH@q%l3Mke6wXdrSjWM#LAXM~ z^LAtZui@Q}p}|?Q{@aB43P&f}8oCVxASSU3VvFL7^}-97N$n$-Xg0C~@+gb5IF8IY zz+myRT|HSho+m{6fymU$6>RRAXLBQYni`yEeK-nUANx<2`U8aG>x9L zY;XRXR}w=wb2+U}dzp8bAST!2_=qcB6$g?ONX!WUKQvH}TF-(}bHMDCu9_YCW>z9b zOSUiM-^%zbPO0(EL&Id$=$fi|l}*-mmj^)&X90l$A^KfKd_dLLhx_gk!~KF1}K8&m$YFo@HaUEwfCCewM~<9W}mO8eGCIYrn_`A&o^wYm8p@eA{v zl7RvPL%k)8M){6VPrBvs|8YYR3#I+v%@t>s-tXgFDv&ugRP35gd+4_-eFtdQRz zUgFHKzaojoPtX@PMXDoawlcH@LUI)v8Ij;xnN{@ZP~8{A|>r2GX2jydkIe zGz#WA2uCcXGuM?^)d(Fg5u1;qXRcuDdQx{*<`yNteH90MEYI$&mPy&~v!-Bu!hCqv z@*D7wAp^VGDNZQbW~lI#30J(4alZYtu&}bf!%&HC+b|b{BjdcyJrONVsOy<{m-ozZ z!>esbVdrDBKYt`CwY)qnJ$u%x@ERa}y(gc4W}>Ib zPGBz`9FSjFH#xb;WcVnnzQwT_9np@xRi1)Qif2=Oe4w86RrT;pgfNyAl#-(%qS7(l zq`n@MH}s*`$yqM*uo`j8IES-d9&o2maq3hfd}7VsStWfSnUrbK_91N~@hVcUjLU3+|XC9;N>IRB*;xu9ej!k8FS`qY=0>76omPj4}T)Q0c_ z1Ygc5a_zA;&&EHU6u`4@OyETI08B&Et=B+*he=j^J2k{@rkCNezICCr&pyFNb^6uS!wvoaG=&sV-Cn z5M!>ufu)8XlR|}2EkXVwdFa2hWT-Q>$SI9m+njL0%j;NAmZPjMg9Kh%WMO$`3i`k{ zg|SdUyK^G}IBz8R_T2&U%ZB;TX$zvBY@6b`i#eBZ<%>^>^(8X&u}uPg zhrr~!W4HFUv_F=456%-IDoXW=h${8LOr;>5 zgO+bZ6$~*urY}rWQ_-caX#`o_qqKRl;A}kFZ}U`eBK6yXP>hOLwdQrPOdXvRw2RS5 z(v2hH`2^0`gHfMdToJ&XGqW)QMtNC;(3K<`Eb?2?@I`S-vdtyvllryFmGLm-;{Emq zYkK~J%VW}IWovB7w@ep7f;ZB4Pp8>j5n?k)2`yh^`G^3t&8Wsa30?-JTuP^}`{NZn|@Wu(oxo`_GULnbF#U|?is zF8ZLvDg?nuerNqR2d$&1DWW8~_?r0@RG?qEjkKteX8hr!Oxbwpd9GR#DAz(sp`#F6 zT`-8&dG2KsYR*D=Lwdsn%cS#7@NHQnUE5v7yISc%w7_RlUCim#B+2RerBQkjpj4tc zt*;SZOB*^q=Mt+12JMAF)vdn|1saypJEB&*da8ss!>*9^{Q`aDM>N446vl!XchE|drlvk!Y zH-7C^EzIB*XG(csXv>Hrd(z;%nrB_RL`+uk`YUVqv2yR)YmAseA9RODW(OR&xRdb) zJ4OF#h*)x$Q5+IxGfW+Cwqud*qwbj=e=AS{Dy6&^Ed@K|9=3mI1ZGeUMSksnWPDRt zw-e)BG@y~>-@Ng3U1{b-OIG_O!hzfK@Z@7TTwJ$nQ~IXpx<`1g93vwPZgvuJlPT8Z zkj|Pq9d5VW(yBL{!r(2cb^mmM+FFNW+g1WfbW1tX!C09exsGVf417#63C<0yzP>YG z$7zfgdJM!!JQ2CY4&W>pDWJS(?5)djZ9UXGejkS$y zahjlDQKfxVw+~MvS4-JnRpF9eYdEaGEd)-dWnF$@g|zBF4^WZ#Cpu=q(~}({T6PZQGmQZ*4LZotN=0`XZ-bbHQ#RTdHNKSbGlK@p8tQuO8alyS zDKg$wvNtP?r_ER4r3|N2bFq^CV;YTjBupjydVm1NL9KmZnkvD&`uO0HD0tINIeVMx zXth`eJ&4)jH7WS!&PYX0>n#!AE_COcE@lv*$_12A9;a8C?J#tqFCip)Wq*%(xaAJJ zt7OkOFjH+1!Gai!LCFuYf8j}fHMoy{$|y&KIHwM)q|0pe5Dj6HwYc zDq|mRSVF&iRK!OO9el$#r81?U0EqLlN|u#3*yGnaQWS;l9&`s(z5sjFe$F9nvz!z0 zD~nFiS1YZi=T9i_pIk-Gn@lF_l9QMknhaU@3s9#*11*aDFKRV<*A2UVpU%D;q7b7;04s`NF*S}9@6m35DQ2&BagwY){6l{3kb%)sa zx)@(*6e$+5*;!jc^4jUs9QRp`y^N1Da`7dAAv>!VhAwXu-j2J|^Z;hqy6zANDwjRH zD>=!kKd=|GFOIF}iEWR6l{Ysq{KnHy)118NNDxG7Rf(F9uFK7?T)ez00(6O!9p+~G z!&(K>i%yiBnlJV4y*$93O0#OIGh4{CY;#GX{_LtOP@Az?p!f)oIS2Yb9+fe^U01!3h_y=(}}r=gzVbqN0bIzufE<>mWT90+}1=KJ5q( zu;+`9@psZVb+}c13)aSSx*$GD_bsE$1EWr#wIR|Y4qk?DucxFEymER6A*~RE{UjNe zUbw_aUUG2WU(>CZtw2kwKi!H>swpT7om{>r%0Y){2Ar$S z{@HJB*BJ8N@kDIKwigtckE2b%K?e%tqeBDR=%Zq9gmm#(Mmt&kz!OdK$}Eu|VjiiB z7IW+zQ(zoN6?UnR(~{P3Ny(YiYzAVq{Q$GD&N&IGrR!6N6Qv(N7eKmSl?f&;zyF}%IhWxLXjnt+?n{C7cRzP#UHtb z33)L5VSmD{;YinIWDO{jBTh|4=dmT-#yvJJWt-$uIXV3B-XgN_ezQNRT?*?D=;*BW zHajATbo;5%DJUx9$JQ@6Xl*?$y=sc8Uph>F|3%f;e8$VRyH%wr&xuB62psjP5>jwI zv2<(KORvPdsG>CemORgQe-SW+uC{jNt&ZpBNI*=X3ReT-^Sqw+5e>6&Ng zeBM8Aw2-taq2Hc1Xx&05^P#AUJqg> zoS<{Ktb?cmzrK_EJl@82-%pjkN1^TRkuXs#;%<*($J!!q^jc8xbdM@~N0PxlPf~LE z%EB;_R5CX|wr?7}uvlvy1ItF}s6t0a_{*iv>TY@18HxB7=J%ad*y&j|@m~7);$lZr z#c4%;R|&<;k$pd9dxy-#f40LP)amti@+6xs%-uDMitJu3#D2Jsdz`CgZobvk{OuxI z)?YzN-=z;@(6gGHa>$sp#KbCKexWDR4!duTV|hCsl&*KLB4g*kmc)e%^6uT4DREl( zn&I_zCtkPfjG2-a3ZIbAy6>HV5Q&u4idL+(uV|v{Cj9jtpW}93C*mI6N@wGBq~q$7 z%PfON%ZVGqbw11;_U&~K2BW%V54VKUhr_VSI>9@%JKvz1xZ+ot2NUWYq*ttR65k9`Gcqwu(tv;N#he2LU`+jR` zc`n~0f&L_RdU}b`Ges6T*^)a=EQ0jZI$ByO2JbUX36~f`Uj1;)%L>ZFU1Omz9S;)O zfPhI8AOcdnNTeB;I@hq_kyIaLVrpSNM5D#2%|k$io>xIH_n*>xrHQ%m(~p%@bYd+! zgolWvpl+cbK%~nBS0*BAcH(++_kQPmE8#l7G$Nnz3o9Xz@sQLf#QwT`0+m>tydd z%;QP=q-sL1R?+q#S*SatMque!JBWo3GT0jC1`0$_YT(^7L0o9hsQhBNbQor595fj% zpKjw|?KCpxeAV8@h;8*-2yzTR{-m4hOZ$Vg8#*1pdr-33u}g_uz4{GtnA;6}3OBYp zT{HGUHrYP4a~$cR`-V}Iq*m)gP}w87;JuIoJ|$y;`gBci)od8(IwQ9o1>3C+gIv*w4_zqq&0yDvh=SHX@1kci4N=W(0{|mz;P~NP1b-#oj)fs z`bu9N#XWg%Z$tyD0VBBA z@F=UE4b@OdURtNrk0VDSs@uf&(IkafY3`9HT`J^(o;QA_fTGExphNzvF01INZy% z^jg-WSM=mVbw(qTE74V2N-=*btWi|^?F*hVhP?TlxzjT!wm^PJo!}YSzu^cR_$Cs> zSSM;4q~hW`Pj$D#X2K0}bI>e3RZr)As@LW>O=BXCdQ2CNXc_T+Yr)orDa`C4?3>nV z4r#@OcMlHQW-Vz306`&DdYmI{3WpHM?m-3c&`n8wUOC2+saKcOnHlp{rs&e8{PZ-` zC5tjb-K~r>B$Q@7r?FW*=^_g?9HcE|TJeZ9*Lgs`JDw{KJy9>uGhx zMm}UA!NKzgAGj%ee#;l$=R`6MqS*j(47cAJq8}T3s7aKvdFzKKj1YpV%B@fq_BsT6 zd9WxYwTBR35|=6WKA*p?ltZI^xyUA|hilk5KLj(Er_IFG)>)kkJrqyk+)s5FnM6lt|=e_oQ1EmRqQhP2N3d4npdf%o*D+y}GQ|$ltUZf*>K& zOYX@|7Gf#Pi3ZOxX*8}Qi9j;U+8HWA`m+sqZf9ue6>gwNX9@7JPSTEqr-3s`^z7=g||7#c7RmYY`d=jX8fF1Kl=ADpFp_BXwPAhLH<(kJE znS6>s-i;|q@%=HzkV{S4$Ij7Q1!(2a>1cG}Qxgst8mkRKAAlu>N)Un>%BT;}Nc{tA zga?yKTj^hBska1@hEL~!afHKYu8BhY%gH23tIQ9(KFisAt(jOft`b5?i zKKkNznS1mRD@nS5ItN_%NLh@%Ij!$S;cahw6C;f?Ugp#)S!uKJG0jD>aN5zLW-C&m zb6kkS!1^h58yJ=bGl$o4~dN1Ed;d=Mb2W{?2u`PATrmt7WxlhG& z5MW=i=+%Jj7y1qpWmOy{-xQXwvBeoEb_ckYIUG__&b}7Wp>PleeOvgsrXG_4)n>fG&6A=JBI}VXjqCj11!4K8*Acdu2Y-F$LniiI+&ChbSKBz71{f@sB&z( zB7y7`KfXRR_6?!HSE6WVi5CheIien;Jy#tq0$bKeA&-Cc(9f!cdW;_p3sa99%LjCCoJtUmvtr zHQg!!N*Xp|y0CpN&NqCfk6D)r^+uZER?1J~Evoi$%EO;?P@|Ym_Im$*|bTaR|ZX3w%sI3HA@x)4?a=bA-HaFSb7YvfovvMy) zlRPT8Y$(r2f4CQs*!Cg_Uk=B{yORJ2on6U($7~&PVwL07;|BMo;9NRZd^NCM6)G+ z_I7laO*s!;L||Z`lgy11&Il|r376~Sb+O6DtD zZI&Nb8eW|K6}_%@{$Jay{88XA1Yg~ohK}%K4zknFRLRBb$;iMQT^}aH+;mHNrgv7*8fid{py;UMMr4Y ze@nK+kI?=6;vxut=l8HCu4d=tIHQgp(~Dmf{y7m;R0|poXv?CRFm~c^z-I}MX~hL< zf2Vld-f&7l-hlrrfy0;i|Krq-|IVC~;~YpYUdg8hJeACfhh?S`2q~H4?6Iu_~oMnDY!VxHJY>y-#;IL=}>e5gvJ$AN{7=k4Y`|GtI zUI=g3&N$V4!|*d;H$TnAOZ}Wd_lRgTI)I1gYd&Vu)>OLCdxHmyGJ~#I>($+=3om+{ zZiCurL_1uwPNF&S*;Ud1NM(8c$Fi1d;glczW7970=})BVVePtEnrL{RsdN1M zc{xZh&9Ej|Kf=nyp$|&~w-LB!R`2!%<1~#}VWZ3XPPCgXSFzmGcd`1$ z@4l=5Z1Z-_mw;Qr&)K)YkosPebl}bW(gd9#Hf|%81YCuReIv^Ed$V=vlO^iZ>7hT( zWBNW}nq}Z4RvVROcQ5+d(9rJeY(RyARtk&poVNp6u>Ru?H6`#Mb}g_2?!s%(Yck!z2|lqtMZ{X60YQ4U8(T@6`g$Hab3lpbwl2NMSl}~#k%~>&5J%#g=`DymP z2l$_foGhgW~t7m7ixJ1EiG!!5=nq^B#0I9S)A!<(^(>W~rAvH(rG zFnxO`tyhE9Qr|Gr%ZS>PJi^~g*~Y0F8@ZH{Lf)}AvUBa zqqknBL_tjCQ&0tI*k=hb@h)NLPBPMKK$^)#)|}s$x<)|idrCZ2@sl4q=zW94V9*nU z+>p50`?Mp)4f;>D(=^4H=NPa~6^l;HrrdotridNqI9FJmNaV*<<6-<63=BXB6_ z)?;tUO2t%zl7aBe(?s`IiXw}nrCb|n&1YLc6yiRa^bAWw+MYIKD4p{7NBONP!H{7K zFwj^(R$$DiD@XQpFqO&%=nmsY1~eUdSceu<2<_h$)$<9~6UF#7t)A9UT8Xdb%jdj* z%IEk$cfPg$Y_3y0dxt-|j)%%NF)6x$N0EL1u}AAO5Q|K6jdd|~xf40$X>H|As8KI(?dl)&?Zl8q+{b zdkv`L9Y1k82l|%f!yf6UK{dmi*p9Ty^;Z?qTvJqPZ&v}KLUclHPC zrZ9+ei22r}X5Y99YL{1}GYd!Gk4vpJ?T&p_TbpK?L!16C3!qkEc}dK_deIUW-5&3f z7~jsu;D0_dO{HRx;v9iLaK+%A^5yH`Ks3cjVT@+TipilU&`sb>0xVk)Ef$pK>E;<{ zrsMU)yagHKGoGc|wCPDgq9Jkpc zj&!Ffe%c^MeeJ8ty9o}kl+B3BBR7F=Y~-c%$r|}kX~#kzCG+JY@wUnCM@iY(-Bev= z)GaW;!zVF^?bym}dJvx`V-#;KU@dCP@_N*uu#`&~W53+{QEaqIStC!%@zY?2hoP8y zIa<7^?(+{F|CaW|I@bC+m+eIw#H?n_vMKjWz1Zq*mrw3`gcHASnwsga+$$+te2P%S z*(agg4^7i@3VF@G`Z>vX*WxWogo}O8@g8zHr>a8qV`RS9d9}kxDFhv3pJ&O_dO-#1 zd1gIBBYK7PW7S2+1n9QN0SHymgrR!OK}GSpYh{`hWw2UCGW*I-jCg{JwyFa501g}g zX4)+&Cg~LcAb^WoZy}E>qA1mmHe8}~C$DC038lu*%=5PDVjOyb1X{y>c>q4%U?H>< znZ0y7IAJedV!ciSSm!>&F`XFj9`6vDETio5iVSn6g-V#pSDr;;!ckW-;AZbIVC@Z!*}01{E`~+|ti&mS=aY8uBbZSC|FHUAm(P zSQC>kpP+NxEVDNT^F1nMhr@{f7zGqM3vegCc+h^7(Yo{bg+zewz;$D5cLO&qG6;+vII+}M+`H3F&!p!&2u_)7R?J^`imHZ2P8oiM`A{I*QH{hw%ExC)`p->K)a zjazG8?Eu*N(-V_0P+X^GMi0zg_vLO0$qEtY3hk=%7T1c9K!(S^-|^=S`qt=KdMDX?H$uAgA8p8wZeX zUZt4trVH14VvtaIYUqTwQWBr)Q_I7O7~4iBj$iEg=E~|;mUp*XWSzo@@)A%fh(0Jy zzbV)E<<7L@=Q>W@UtaijTd`E>ge1{(S8lcKWTd8=OzBS2~-U6Z&o5U{>;R!_(rtERL$F$^j zBybmikB(33zQoYqN#F~Ydfm9x*1};Llee3hyQ*JQCkX%|H)eON9 z;k)}^erHeLj{b+yi9>@d76@-L9|C-=F1U3q+skiRrJkaGby6rNE7qXKQws?O!^ZkR zDfK)`(Z~y0T|K_Ub@X4vG@zo!{@8!|ay_5s)clXG>7a%4z8!K(9HM<;m-%9`mZn)g zI+u*6)5hKPU3%ZcC?{m@TDK_|Y3#0jr5Vo^*uh5R0r}P!9XR~v!CU%c_tAY;#7);p z6kv9CR>I-t&70s(QFC*1f2NBUk2!Wuuf_vpLi4-D!ecM59p3Tp=kh|taq|Ct9-g&C zf?vpgRhs|5oe}?amkIuVgys2Bx$knn&oHsRRjyZ7Udcl+?(N$@?_Oj0{NT)Msx!@% zxHE|7hBfh(TJ_;dcM1!YvnOYT+~(`xr67U^qgQ{UeJeYjit&oK*1p2^_n$Si9NK~ zVi8cBV}4jU5R^E1^vcv@6;QL<4_Zx=mT65Ry-52oy@FJkNi;p#Ts~}8gc#`bP8`h5 zMK8=x2eB1(5c$P2>NqkFzlaIBX6kx2=4JMVMy<5($!#W^iWE)7i=6DrsgK7q%pM{ykQboop7w`}8%I3YDp%Fb zPiKhtJn#h7GQ5S5;NkxCV`sH1vR+kQ(?O2R>(igU->E+?qA|AOAW)F!CU`pxC@L7# z0^Z)&Ja7-k%f``|y6Mu1bg(I)i5q(hu6&fDTjEajP8Alfd^#%XT@5JW%y4duN z^GOk;eM)c!)?YNFKnvxbLcR*gBi=5JBCMiwwkIPnj9}8BL@!UB)6ZQ4CXn7Sl~Zsg z+eCykOKNPc+L7+aQg|k>nw3z{xCh8rKi-UC3b~F)md-LH(i)*HJ4;WDtuJ~$;t8E) z*7nJ{yg98=J+Z(b35=;Jhk`+V=D{)pd0usUzJR>-rAae4=A%h*Uws!C! zDWrtwQr#N_6_w+++V8zpl(om*69d1_znT`F#UNUtq(3M`E;zcExr*j4>c|zHRhQUg z!fwwX9NV$Pot+)f$Jyy$xd2WpZguJhl}!TxFI%HM6haJ@lqV&R6%pn<>s%wET-M4A zF7~9nILB3ti-W`rI``eOyiE?z_r~8AxuWu-|_WP5**m$#J9L@ zoO1Z3o3d*l0$sqUB!^7_lfLb4F)|v*jg_(0$Y2r?xE@Mp;&Wo_HE>)@6BH+BZe^uC zaMl}($h}|LncFm-Sw4lfVx*Z&8BdB=7GMLTU6LxCdtApw+0Uu5Bq+L8b8crK9xl!u zkV4L3k<+I}OCZ!gP1!F`bmU_#7tsEDa)ClnLFglt)Kl9~?eP*$cLW&7cQj?ZSahq&+@7wb9+;f1B@T1Tr-?ER;@gW{>ViXtl5hS)s?fvs8?Gk zw6N?2AFNcrKtxX9tJ6H&pVOy)I5AY8&HIO7Bkmg@+B!%n(FVnaH5zYDu0B4Cq??=_ z%p~(2Y4Ozs88I%xd5qK9BD)R`{U!Eo(|b!`wu{;OMs;OsI-R@oElx|eKh2DTy}s;5 z7_Sv7_TF-r@{uuOmp460LUjaac4?GVk+SJ%Otd+X=TYlLm8m6C_O{qr$uI=NO~zN|e6P#TNyPV#`A=y3+jSK zq=bK8z*RN%x6}qB2u58LNrD1V`#!e@Ff4RSB@SN_l24&T} zf`>ss(u{yqlO#<9?yuPNo{ZvyvqSxi9$$N8rkqgbVZUzsXR+mp-rlzE0^mDfNzmr$ zZAqH_XXsUipT;EK{umr8E_S%AyUN+Q(0r4WT!jsNxWXzs)`{4aBwT3fz zi6(lASIl%%Nszcw=f4qCO(~iged4Z;VkF0{e(o>YdU}HT*3pZl(xjc(V)*6G*JgV?FUT70|0LF{{unG3zq*QY zY;lJxV&78MdzD`hoNg;Y%OJh_p^iL3v-EBd`NkxRc*jW7Z3XxXVuL4^>^Y(*drA|&{&M)h3pySIz?GU8bH z;I_lAwgt>T&90f?oj9-ja?ftX`UrX(qxn4p#!h-%|S=#N6**c7+$Z-D{YJT8;2lC*2P*(A24NP{T9Z3a$%8#n!6;L3^3_xzN&4!<&ap=$9ULN?ZFk0I$%^G3N& zzXS(D2KOfLuzaJdNGe7A_RoI1t`sa^%J8t(IGVe;ouS|nt<^^kv?$94^G% zI+~iq4*z@6QNpBm#;4*r1s7(p9*v6A$LUKcs-cv|T%IFr^uoFAPM$Q(gUDa@v)?I2 zTmoekuNix{$@f-fsU;yIQWyt{y_?hWMnzzT{s-k$cFsQHv`vDRhA}++J@QT;L+E{Ri~|$ljbI;8)43tJ{f}D&RjE{#`D2489OQdfWndqv{DE`7H;1%%GC3QQ_LfATQ{ z8_)<_>+D$M##Rl}oSqe{wrDg_H}~Se@+3`*tJu``SC6}M{KE0 znK(G+02?9+?hOMM4;3N@pKfHx@21B$G7(noTs6Vt0~656%l=*<8O>e@N95Xq80Hg@bW7*5Jj0u)7Pkw%qub9Qe5`$MCdrYo zRSV~qP2*}PMcX@*Bg-kZBj#GUj$;=jR^ReT{XA}+ol&a4!Qj&X+dr_?=&;ZY$#X7& z>v_HD$#A6ex_LhSE)L&j;?M-1OXI)wFfr!|jN5#5U&zIvlb*)z(32h@aG3@gbv_DWhPwLK3FN+Ca zRSx%3PmAxjJaJMqJdH63pJfoqRzh|1pmxh8_LrjKBLyR$vJ#)NMh3_nKM>A!cZv06 z#PrzoQvc}cL&DXxF%D2tx|ELeXx!l~QL#L#{Zr(&$+)t^y{%1ipH<;N=E59c- zjugRz|9g7zxALg4apS7pUXb@JuZZz_GsaoV3~@mR?oi3>1H~X zlN_UG_>q)G*wMOa(D45LDBQYh{E*L}Yl5FZp;^RHBRU}U?S-#2I_#ms63CY93ExQ? z&+db#k~GuzHe?(eBBmakaNx41%EWd@@IC@axjO

YUhV8xT&BIZ4K85Pkf=p2Lj~ zW1bM#&m_x$HO9#FHqD;PE5ze9FHx?TTOuphi3fR}`)P`FApP99$`_XDm-wORbw_Fh zr8dpOx!mTbYONIine+2p#n>}cSAe6INt(3?Y<}qO&s6K0S!v+Lc0!{w!0~Ls?xg1d z5GvRz20oF*=SOF6!Or~v_?LI7;@L6AosYF1z1JhKSi4=G9{^P2=;Mt)(!XXsJ9@Dz zZaTqAcB_eJWnW#^_dq}bS2*uMs>=B1?9ZLu-S~lccaK#$?pR_z$EORy^)-9LX^lQw zD(DkMbVR`?zZLY{Sq*=t;0C9IvX0GYnvv1q$eRBNvPx${H}kWIBK7w5TA!uXDx&pb z_tD$y(FC=A6At@@Fjwe+80yLBU*oJ zKyrX)uP1%SAQ)9%Y&%osUApEuaqL zb}UJhX!8GP?>&H;TD!kd&+({7>QS0>6%YY|BUNft1fT6zNifsGuO7fOP33 zfgmMxh>C#JP(uf4p#+HZmhwgMy#F%a-20!o^WC{K_hrIPcFNw*Ue7AORi3qzntTac zMm87yYk}>inSBwJno3*1kS#t3*8+2 zBzeQ`=*{wCWb|6v-sCt;{TJIlyGG*AT3xr?F(AypGQ%E{pzYh|%<2MrJGi;I|Ah+A zC}d6)Im|k@diCygS02Y|?U0QKU+)FQbo(Kem&q9(eXSy01y|CW_tVmA956rA{%1b0 zT+WO_as_VZI39DeEn^EwX2kC?M+2?+TMtLA1Q!=&-&X%>;Pd!Q?6B6L@{yYyB`M!R+&xLwf9^GwH77=;&DG z;G9m*&K}NCI+e_iGA>!)q@J|Db?6;Xj5&8SC)cqA;qunhr3})WS;_>R9xTkQTORXt zZDYd?%hfydE~CR?ugI};s>fir>62H;G~a&M zZ2Leh?pETaL^P7*s@qa1X`i2!$__jT@7dt_=~p~!`lXzYu@`k~r~ND(dfpA#&N)Bb4_QbUe}Yw74M@lvzTE0@72B^3ep75U7zD z$T}V1OFpWEbkj5TV7k=O`dTr)z~YVgpv~Z$alM<}n}j=JL+Y%(Jiin%V&P$PvYBT` zsy9|05ETE3a>)2N ziQ;nY0cH858+0U)vCE{d`96mUzr6=fke$hz4);ImzFPNb!$!^I;Q07>sabmd)-#^K zQdxT!_7i||W*nECUs*;a=)6bm4S=t>b%K}5ui(`CS7l6@<~t9YYpPKK8fjE6*e&-h zgzQh(`_HBK439{E@%&ZZdiH67)g-u*GSg~U&{H*P^$ugD0EpoyF$N1dh8%JR)Su<1ASxa;J5?+-_hW}eB9{7-D2hYs%tD;gX#j|Q7k|uA+~Qo@9u=e7Vf=9gtr3&| z_+Mw#*94q%h&7pzfpIwpLIu0AVh%Kl`9(Vp`6w!&iXlcvDgR+nXKfG+Nb)B;JUs8~Q_!5x$Gx$4D~k$^BwW9IXYS4B{&_WzMTV&; zJH)bvw@E5G8(9u1g8);+tWadUYS0axw0AY8p{Jq}=B7(Ea5ZlNHg-qtM)Q`JcoR%B z;@OAPCjObtFse~yPd=+lGGuVt|JA{gqC+*o6Y*pp0O=V|nzXo<>23i!!PoEZh~G2N z%-?R7E;|2^AJ2bB!1-2-sP)P4tNQJ1)z!(5azR;&5KKbpJHlC-Da?U+f`Pg-o5wR9MXWvg&5x#^wgT(V3Cdwp!~fE%feAspUXMARnHqVzi=T z(i>aR*l6=}Bxl6m=M1;w7-KV2#Aib+0&zrnQw;kvGsoFaaw@+J&Lh3D@v~B(dPV=) zef_}hRI5{C@$uMo3@&rq^T~D zmYzoLjpk$()`m?<2@KPY9jXp zFSK4Lt{UGtRnD&Ve-zhr2J9urGVARX5XR*KR>q&F`XX0iI(`KbsOVU@p>p}&1^cxo zIT-qDW$YFR=2nq=I+z;na3hyApWXVS?SbCxUy-dz{yTfKY2rDd8lhFks@P$_uNHvN z(Ae2Rx9DHJl0KCEmDvR~`x|VM{b=vHo|ABPPw#~Pu|6>z zS+`Zd&WI61Frv_e`WQ9@ zd*;tYS5;EA+P?OUMDNH{*-1Xd+d) zhz?ERo!&MM%$_A0({;sO;7Kylod9HI1jSa$DmB0G9ve?x+Fiv^grj^IIQJ}FH97RG zlJp?!8LN=V9?S2aJk7j@D7~+84z=aQ$(FIR^=?)Fqzag+7dTP0_!S-OA8Uy(^jcy% z8aGA96K0Qhy(?f}zhyD>zA0{&?cl9z#l`7pB#xNXyEML?uyJjVZnV|Gj<|z{O}yg@UU6S- zAz>A#(Cnk9bLg6fotoQiA_vs3R-!S>EkV{P!`%f=-CsvrlpHfjY;v~Se&xgi@l<=~ zgZ_0zS89ahKP6)%9{smuOc6C1^Y^KIebjOqr#iO#eZ=k~NCu?YQG>(Ya5%!gHh(rp zat7t!UM-3t9(5-vQmz(DuuDlSsJY@^ESre;CN9M-Mx+TY18Q>OK?llG>ga{uG#Q89 z@AG9ZTCNM7$YRppjx_;J>C`W8E=d*Zobt@AtzbvpSwfQG zlK>uKEgA!($b7euX9UPn$epdSgsRvG;yvZ#UT3qG^>IbgVMzT}QGN?+xs?<{u3DrJ*SXSBcI zN_7C1zmq3uy`pdL0?)Jeg%s~IAGV0oKW4~Dhst14x5qcWv71frY$q9YY)%$$uy9d> zc{0i;8|Wu3fhVPklVgAdg`b(6WuzJH(4D75Z;Z9@uXK(aHJzhTk%s-(gwyG6G%g>a z$#$_G`&@XlEXQoi%$iI2gFvlBA-TuLCBcM<3<*Nr6Up3^0?SP6+3$}V_7!9rQ67E& zWE$06oYF_?DHIU2L#;)uQHLubw#9L0EM~UbG*pfsLX<7Xq#JF@SB_Q?daMX1fyxJa z+}>*m3zfU=-QGvd3d@Jl2SJ+whX0aYYI-ca&@yWTqnwfxynIr>xN5%&rUp98)3Wmc zzW2y>lxqRx_{ND?^`!;KWQLa5QAeh4TcwZo6u^VB7$6tgMPNLfwEU06&G4AzC-XC`I-otgiCxi}$l-+}SWhcclVBdMUDj$Bw- z)VDuAToh~gmgf+6H&GI!Ts6-3lV3gmX+zF(QTLRA|6Ol$=HDdv{{;z>9dAATrxxHl zWwH_Ty(FqOZUJ4@xccg4{QdhEn`^`Vym_4_eC)%SaBk*C+Yo(&dvhMYiO@tb)0SKX zK2ZHjpSj@TOW~`zFRcboHnW#i?@M3flyS{F3PpCaiB&avJK!=E95=J%eu&mL*2}*{ zjJorb_M+gayivDxZ6;WjGx|*i5e8V`$JI?yJk6Pl<~H{-i|BwgYO{Tq)<|d&@Xy;2l!{e#NXcOGVS{#FUhGlC$7VAOl#;l zWgVhJ84}VE6WrAh_4A7EUS^71(ooI0^T(O@{9`(0*PpHr!lgUmlNB%Wba(3nv^T`v z-tS5ys(Y=9P^aLG`a6nO=~MWhUQDRv_;QzFI)G@a)6Eh!`d9n{!na$Et2A$opJMns zoReHBysjR9o>}6&SWNS=N82=lz2x0TN$c7_&Wk*pOisB5GfXq4Vj|0{+HaG^wPVk` zS}+H;JT3d3rh_$d>Fgxu?{|+J`2_^B4y==D*~E-7*-9YcjO=VH*R=Tf_?4Y2{iJM);ZMV15i{Z4>pI_U<8-Ji1f7)5nW|_&_6)s%=dB!Diza~PjIhj+2D?t zY%!>go}PG(_QQu?k4(_ZcwTdZWw~ykzUUPVwq!{mt06%8`|)o7m4{Yg zaMTJsh^JXAwe4A|?}+eUMz9PAaL*XKc?}%OYtW6-mOOEe1~vURz$a>L-McFC|q3cKskSM4QYJ(3QG!k zfZF6PA4QhkYAD$qV=Tv3Zzb(b^G^EmkD4aXPvCJEc=R!9&tKJ6?Ys`Oc@)c{ zL$%9ZPZxeM-Y%*?-mR)X_EpIn?77<}g)a?dJQxL5v(Ki0QCtUK_9P7KAb(9N zebyde#O#e^h-~Wy4QQ3+WR@n3X0hbIS;$^+v0&;Dr#q2v4#HQZd#~rj$;y644q2RY z)8RVcH?{rUb4t>3mDaYd6Pg?gSX+J#K-YXVJT zq{xM1$cp|qp5jE=zTvNPOw~lE4@jZvx1bZ&w}apOO}f!f^rjCV0i%e? zUR#>mCO<9+9H~z6-J?#BGbFg=6JcFHQZN$V$(q|Wc3d_SvLMimqa>*9{<(a9;eNNq zaH41VYT5WCbh`R`q-we|=k8Iwsnp&>5Xifmn`8SaH!zxEDQ+6=>M_7q z4nW>qcyFS2@`&29*BUCQT&xT2bKkJs$lPyeNA^P5JR66X)@Q{fH+AWQ-begiwZB%| z`9#X)HM88@HELJTfL%6C^?`-#IxE(wHAdUUj(7E4oqI+dj)E%#NdPgaMQ$I5w>M&g zV)0ahqaVA*_>7(~`6Q95M|+IRt|(|rs!Wum0Ka&~d5PZmt3&A%wB>33qa_yC8=kp6t0XCUd7sU7Jll_GbfH{UF4&}MAc_xX!of~57wKrIysMF@ zIz3yT-6Q~O%?f1kx{S0v-gneI!Vt)V18jaEhvMRjS~M1;sdJ(1VJCn1o_ytPi-%_T9v%_=1%B6W&oREC4La1giLaZ zu=}HA6MBH(z$o`uDY9j8sUU+~NSO8OI#CCkr=vd2wyi?gB)^%ocgS2}ZYR z>NkG81+;+A?mXEW=k$l`uz+*X@s$*5iyX?OQqG*FXn?!;-}p|AxZh_!!55#H`t6&s z2?T`~p=GTT4wQ@B4T$qYOmyPn<8)oo4h);fAx>dLDEZE2fY_Hm=IbKsF6X?N<4LO03t~7YBqOtH z+{lsZa>>-FGeZU+CP@*X(%WF&@}UM&i{&cPds8Jb_d|pyoYT;Uqf`6DNNdz=WFO8z zvlO^wfE_c5q8-nBMY}I-nrJ6%zhvk}hcD>nj6dFaJ@sHiZV|yDt!K^P{x5j2fIa}f z+!nd3V0BQRr}S?b3UYoUnhO2C`?J=4SJ$((8%y}g7RSI$I!r)sK09r>b_|&-EbRwV3fBj3rDv3I_-s&BjRtrIvh4x*Pq+a>_ zeeJ8UL9a!&(ynaYp1DV}-#xrlFg0W)#Z0}IlBPV8zxV+cIxH%K*7K;r`1ZVf)d)+> zkWjI6S2BNVyiG-2vaiqjk;TOT<)}xy5j;7&wfo$)BJTseLB6AR_uRPEaFx}}SU`(s z17vK2gFL^`-~luRO@Gc^ie7I3uW-A}gRm^fD?L3v_V1oYT~yrh)q4CPyjsVZJy95{ zF(Q0bWk8mgldTtQR!;ZKa-+On+u&k!b<5IY`i*vSzkQ$fXdjxf^MeO=@e?Dy925z) zDa#8?oho>KwxOhE7P5zdd0oYeha8bD$Ag+m@Q56Frk-k+<6swf1KJCEUGy^GuqkXE zzc)86?t~*-28^uaUgK*-m>aMaUO%SNv+f5yOXtgf(6dw5z-z*fwEsovxIz;+;^qlM zHWoIfN3v+sQdMF{TMbozzDq+cd9!w}6Z0l=!1iZ6iN6ag|4^81&_ivygDYS@&>+@= zuZ4VHgkv^8ny<-TZw5BP$=K!m04FH+dcnSZ1aGMN22Vvr%#k&^b$W5Z^`;COmDpjo zC(797y=dze$0B~Aw)ygQdIfw#=vm`75fueCoxw(Nh9uwh#s<_4n=c`%dwSXXZRLYA zn%urdspguXs=F5sc!%=}Cw-h_9Bf~?j_1=VcBeI|h{)Q(=A=V>4f=ISm4pv|n--m|=7u5OS0D5g=$q)WBI_hP7B-*>|$1YfkAXpnIry;XKR{80};4zt>*m!6P&W}{ncyN1g)yj-NR6o36Xc4w2a>k^&d!|Q#Cf4X6zsFqA|-W2VZ;{y_SBcP_F2>aKr=QI?V!G7g^(sZiSn;&I?j=2voy747*Jwc|5I~ zn?P((3Tzmvg;Fkf;a+a~#hBfb_}N?F2T!*`TmF7Mmu>fl?2sFuGBBryzi{!m#8ANb z==G#j*X4}aKHd3eW}d6$yx*sDlAgjJ2Y-embRTujI=*}p9Nw>nuWtHry)^g)5}G70v?xyUE>0yO_+k5n0X#Xcl{%t~dpMMbBtfpy%!w7*N` z1gcmUhs%04kWjX(?fg{~JVGke+jZiC&{+MYCNNUYhJ5RLl02V${g!ae4?1%kh`z>W z&l^Id1Zz^+!O8RH>R@8}w5C^$3G)wo>sQM#9=%a*C<6qM<~m zq=-_Z9qHa8L`mhtd5Tip5Wg?D8=gfL@GOczW)-=0HB({zNeci$0Uf!P=QNA;@9ew( zG+uC!_VGD7&;3+JF`&0gS9{n1eG^DO7X?iBlF=Rr+Iit~vU0)4;F=p4{IpRG5|YGK zJnc4C8;rb1P}u#r5;Rgo!&Xk)u04u;$+yiAr?3AhK;IIQ>r*GS`3BFkFyZ@p%*wCQ z_vx&snaC^Q{_7f4dU(!x+_1RfIhDVzfU=1O?QOzMS01o?P8nIgrotgcPXT47*6z0p zuS2;d4Mg(Yhl5i8z||@pEZBFvqAJt|0ENJHQS26_rr{`}D{!s#VC2p>22@#M;RYbM zbTx9phXTFLpDA`l1v=qx6#2#jPhwnK>s0oPs^l4s80U4t4Wu-njerv~d`-i5L^#%**rAP2D?o=d&Ul`{o(W+hJ*d3ot=TN>2T018agdrUJ5P4~u zUA}aR0t`%U!DmRUsEoZ_H63`7dO3`b(29@>AbP#BBBh&qS0?9KmYr-la)SdS<^Q;` z`Zd9bV*BhI%0ITNLapBn#)SQI>yE*YJlQ#%Gbyl98Krt#|lpQDW0}V)f3!>hU5Q z#Fx{vVms&!6^0_Kr9G#TdWJ!ocUW`PP(+#|13}NJCzcJfe6c|E4HzdY! zV>f#dsAqlJq|9MWy`};6Vx9{RxWpC2EK`O1Nk>#C?5Rxv>=SqEZl3b6pbBq)kh9Dy z*}4b*&HG^us`1y*@o(e1cZa_!>Kw0toBw{CJjh)7?ndg`%qYR&;NirK(XD~ewO5oS z7i#TK;5Obkpsm^jlPeB0y~W89n4+`i4gt0{cQ}7m&~q6~uskw`6=J7zM)9@MNgigV zjFm4zNJp#g!7;{mm;PbCE?PJeYs!eFY`XXKT02V&`5r!vsKma-PB*LPZ0XhD7@fNm zWN{t~=NZ2m^bM4yOM)Z(cst{VWQ}jrPrwQIgB9G3bNSh1VgJ|orHd8Qd_AuAf*Zp` zSd|p+E_~bd6WkmfgA7{I*>m22c!g(CDOv4%G_M$}AIV#7UDmCCID&4qHL9|*}I zm_CX*b{W|+h*=%KCykl79yey_S0|Qb`y-Cg#wIdFz5Uimm7`v2S5a{>o5c-&{>5O# zKVhCTXEZuHJKIt&($V>>Rykm@%fvtp%oee;kN*{u_@BlHU%fo7x%%Ck z|3&QYe-?&}E-U@H3c#4Z@2rS)$PCTK!-vTj7R=fkk=7{+%e%B9dheEge*{ytLSX_= zU@F{+$5IsdzT z=B#>lr}ilJTouYGB;1d?ysXixSw}~6HMTwN5OG5X1b4d_#NyNYR0-k>rP;?T8g(oz zJNJoOB!3Xp^Ngc2!Emq(@S0{PCY2NpIXK%pxb3Y>s>FnA*}sHdGEz6u9ZJrT5w?jl z;?52NhPVJr2dHtsFiOO>SK|+I5oO2XoQK4tcTXaw<oPT zT$i|icH~46Z+4|)1|a1)bGb0hDhltCtQ)@myQhPoGbQ_hJ05LjBc3uD-@I7Z#T zDDoGhid+`oEz2VN;`6fr+Wo1BBs({sr0n{_flki;^+Q--&^`lcf$qb|2)*8}0WI1) z1PKe7jU7ZJ$p~Spo$Pg`bplFXxfX#|)i0x#UjwB%Oidq~`Q-5#b?k2pD61!@V`)5Z zJFoW70nnpUIS1X&h)!Uw5_p(JuV>?ISo{ajICr949?to{%Okwp!=KH98^W;q=83 z?AznqHR%b`zFzs3yE}{6`-W^41;VJ>nn#>5R8Jm zre_)b^LIXSDNR#U%DPj8K|6qu9iNPyM*@xss0Vv}L(gZax5trnbkRx|;-l7=Dh`4w z1j%wge3_{o4&EH$s&ARcHv6|o{REa~x%c(qbZp%}xKQls&lr7j)UC4Y?==q0{26qu z!WpU8g0ewH&IXSb)S@aM3RpGi8=8PSnRKBFYYDQv`bM$@2G?GXA$-1jl2YhfcZh8Y z19b7Rcg@<)C-Ie?GP75;373!@(jid16${8#bo?#)LYfzDNq98illlOlULKjrKGD2x zp+j~}XC-AJKOfVmP>OyKmk`{Na9|d#5mwzT_?mB-U48x^67L)CsNe_g1dX!j~ z)~*XRq8#QV>@AJ0Wma=Ux#n9 zWvVa8LGLW{g^)~BwAm|PqKs$NH>o%NK?q$X)LouWT|1!%4hs$ThhGO=R|zs9m*$vK z%J}4zY08<3MH;Gsy&ok<-;Kq&VH0ygjfk5IU0XB;+9Z>;X91i*g^}<|^D+s$wXtoC zw7X5-wzf)&@P^O9M-k>MvoD?%v zq88*~;1hG2u5oHhq&{qswo!zs+upN76BL8YqGFSA&RYw(if$+3n5Cg?t&?w{W;}nl zO9El{3}HqP^v&1O3XHmr5d8-K>#8akZ2z-;$0Wu<%XBS;6@&<@=ZQIEt@@?Le< zIC*#>o6f4RumVAQ9I{4L5d$>B_jn|BFy&J7&?5=Eo7L0Yfrs$5%DUlw6SJ}iyCN`Y zIBsvF#x+fXncBaZr>SMr*wIr@^7Mt?x^!p+afL6-C9ezzCKizJ51#}6*`*b&JnI6Nwbs7vBJd;Z-YhJ;M2Vo z%c0uxAN%O>jiGw)f-5~Kfe&?ee z$MK=U@y2UXb?0V%dM&uFNO`hmaq_jCpYt5C?8xG~+4bRtv{b2Y^B=>Hj}fa&AtSq9 z8huKy(14&w2f7dg-ZDkulTMmmY-*AP_#0RpVX9=UQIu#3$y>HcLzX!gqjI)h_#NsE z#1A673L0 zoU_4}*CLl$ng(Ee87VGXH#8#9x3Vs<dKHFMVe;2*hn#6R|cWq$cS&!Qwwn zwX}Ck!GnFeZ{BHYXm;xLoe$K4v3Jqa$NOJAAG@={N~(GGW>7mLUAA7`KQra2grq-s zFLC;41ZHjFzw6Bm36*1T*|JdC#lKXZF1Bft(Hu8E#7t@$d5teOBG-K%0yfK~`uP5K?PSU5zI45b}$KQ;Qz zqm;oPFUXxH7M`N_w*_apPj*`o2XIVSs+2>YId_i`uG#7~{E|Ji7hRcW3m5JIKwia= zKHBP}H>)tDXSf~>b`#!nKxFA-Uae3N136Exs9i+Q&n-<_70p}GEmcbG#HhaKqAv6mR~D$V z275^haz6^!>GWa-Y(WH*bRv4K?~!YW^1K%Lo~?ksm;6@KGw>T!eKddohlIrK-dz`4V$A2-|87yf;ioV)DP@%&PH{DO zrDNPQKx!Eg?K2wxX>C%f6qZ_JB zi}o3F)=YWoOGX=T1Ouy^Hei~Hi^kQ`AOx*)R|Nz)L*my;E4pUkV@l5xTAY5E8ay#| zdD_TBx50ETDYSpbzd4^JO_zJ}gTYB=3^YB_{5vu0p>N%RD*YN4AEAd&9vQ!r{$6&- z5NiJYJGYk8yZc((Rdqek^qnWRp_Q=h!od9(Y{R1K@wgUZ-3*COb-x+lOl>|Oa?>Uy zrTAT{FP{J-|Gq>YHwQ<E)abAdoZq!q`k zbunx3I3^@iuBrO4Bc@AApw&dZw&kQ|6Fi^)62mk2QO_U#LFJ}yzx@j-@~X^{>=e#3 zgfdk>8QR?mcONp%$BOVxCeInEH(Q0?lO5R>BWk(k!a0OGwV~5nmNK5EB zjEzL_;<8b{heOSv5zsZQ)YV8>CijP*cUoGa8FOjM@SsUjBMXv)C@=0ENz_q?K1uIV zsy1ARj5UbSz^u)Go_SYg4GEPrX9|5g`bm449bM-5_LS6Ib~)sahI4yKv`qHud@aaNzBTaIv)_5%`4N zO*PZK*Fzm5tRh1_{e9>Im&qEC*Skbl-;oWR3{90rV(NYPGJtt?u?nSKEFoFN&kpxl zYZ87C9CW5Y_^HSC}M(T6XbaHkWg&bp}Ynp@m z4n-0Y0_-g=p|e^XV_mPx{*HEX%t+Ny`}Cn=lD4I_x;xZsRzv*gnAN)dBsfKs8VPuR z-&X5K0mOSLv)@@JE6UHuk?$J;I0{6bxJvM+bx``nx9VRtT~o(*G?$Dzlnp&+N}7wf z)_SMn^T*^K#U<9Jk?%W6<+R?Uq9>`L?i!L-*4?6U0$S* z?d_0-7+M#t2aI=hDkV65hvtaT-!y_D9Gr0NJ>duS-cv=}UfX?U_e~JnY>Ri2Gcx=o zgly%jpqa_Ol?=-pitYNjyhe$h_VSB2t21?evq^xPi<<0Z)DDgKDqqII^;KbpHo_zVfCaMh z<*Z&Q+!&1rtiC9ExXfi=u$*=K_U6+&{OWmROaF%qMiTeMhQ5iTM?Uicu+w|GL3d&W zEDh$)VT{Mo8k}(~N*CP@JK$E*9_&R%9ib=st;MdR0ZQR*KFrO~cb7_WA=cP}@($-i zm1$$Z*Z3YTfu1acH09Z|1llGJn9dGynJI0*H(h@J!iHS)U?1H^>@4z$ZdUq$|Kcd- zvKjCamMFj>lp!lJa81Kc!1Y+`C=OgHbRC|acb(QG>W-gtE3Vp`|8i**+*BP(g`qRK z&c4U0-4Xi$7-Q# zHNN%MVi4D=X1C%Ft#;ZuYmcuksBCqYUW=KTb8iMp>Fl!(%}x8n!J^XeR7%s0<$-e? zO14c!+DG>#O$4F0<`y^dnKEXV9PF~qYmLKqOjGnnU~FOto38A`e6^O_<&U*gtZLsA$nWs@Q}LKE457 zrQQ*@zFoaSC!@sg!TZv*Ae4LC08s<1_0q-U0Ghz`{)|eO6!*jyNihA2SE1`Uk=M!f zS|Y6ETaM6$39t3)iveIA6qv0{=wi^)S1UwCoKhM6#@fxXP)mi{F`sFL+8km0&?A4w z)x7eY%=h$ZX%i9w$t_MhEt_tOMwJVm^3m^H{hgNC^j4Ro=Nd`^L{$$>O`un!YYOEG znzZc~S@x0IWhdJqA&srq%n&fVia$JL#aZZFexlgM2xx@-4%X~f94i`Pda##Ornbko zMCj?C15KhNg-p&0wiJ8}ckFz(ir8IR@vz$%HAt1-8)!g{R}v02F^tLu`jzfkL z&lSnG+I%2pn3S6;;_Efgk+na{tVHUu+vrIOZXuM%DK`Ntib+kFa^M9NgC)GsnPDSs zKb+@b-2*q5^EU~HJZ|P51N6Kx{d@Nmc9()Aq4ADgf4Uc6xL`c^_5g?1@1hA&417M( z236)x!=fV?&z;Tq=J*I1VNgL|842ZO7O_rU%HGd*0K+BNo9BQvBXZLH z8y?N&TD7IXK4Xljy6M|>vd@p=aLwldL`G4wR8dKBvx{KJC}w9FUtE~sduKG6F8Z@r zy^a#+gk2e1G3%!z5ic)43escr(Qu0q=;%sfTBCZjU`w&=Eb%@hQ~8=$2FHGjwGuq2 zGai`YbjjDSc=YrmRad}t`uKYk?>~P?Nu16Zhpr-P4-mOb)1__ zPg^|(?=WmcTj!Z239c@9T04)2M)IrtCOUzzzdHvuigh)Iw?(HqZ6z*EWD_w3$sRk6 z(u*@DG!=`rI_`$y*z!Y_Zd14ZS@lYLdB2s>*{b1cV5w^a|FUNrgo3D9Rx9aHsYRH5 za>+l7fb{neM%V5lh1j3Fcpii_z@x5FqTNSHsjs?S9y;Kx%F+Sql8%_sL7j^eDNh%B zo}gZ?C8}p*=|@~8?1WcqJvnx?@@ldd>N0K!uDze`DL-jxmVajQ`^P_53xY0G8@z6d zcXn{Xbmd6xWSFI&>~L%-)@WS}+D<;)c%(C#ATsnFm=t=}cL;S*0*Tb59@74ZU+0id zCq+JWtuj1toUwFZ%EJL4X>YN+j8#%Cf0$%UydnW?wx@k%!JkHT8%brMdWt(t)KUxW zNDyUewbyvt+5!bwh?fy18AulEjP@MieXe#S(|L^4g@y%UtG{Z`mW^noIBm@f90yE4 zpRXO03?FVV0-s|~?2&S_kkT4LgYr<2P2i)(`9ASZbX#*EKIX*77r{ZZcaYdC`vCfa zs=3PO%%Y|$2~t)%!!Q*VGyb&kpla8Bx?Zafnw(g{o4YCAD3X~HTfZ^s!U6CsuZn~u z3uW~}dM(9LRR2p=<=d_Xue$(g+OL#MP&W>ry5THg|F!&+XhUsK!7XI65c%s5k3{1i zqiMWZ5NXw zxipY~wF%rHZ$=@2s=v*!va@Co!}*ve7i~cUxkw^?=b!bDUd(X9I^63X`hGsUXkYPF zp;tX)f-55PXc}Apu1Zb|aj|HK|MvL?Aq0rV{22pTzP-0L_F&|`UbW4KyfqY- zia83^8&wgygyr2SQ8%E1qQ3HTX=YC61pjGjq-U45p~{<2HS(|v$MXL5acT)6-hUTu z;X*ARyOppezX)m$odvo8t15|ZtY#tM#wddz6x`(NL_!#A!}7pp6xDDBSfX_^%hnxK zdHwgI-SyGfgl)#x*fxL5@)Rpa$a@`W_h)9jErG=iGUZ5pK!&UGbDC&mzDZWOestK# zvDccKeMX`HJmYv)A7rBS4q4Y&yf#7C8K51loPhwPL^K3_*;yNEsrgJStsEn=m^2oe zw;!`i7B2IsL^P#Om*u_)T&#`rf9W#v9RLP5UXB%Uq*~M_yfthFG+7erQ}TOLS>^E` z2$xodhNaHh-I>-S4L(VQs>c?JD$x7kl!~_OA$P#hIBT>jwU`R2w+dkd6&3-{F1ew) z1n-!~Ov;+%b4IWRg?46(&bHUCjMoY};hG4jZzo#~XtR5Q9KX>BUrz{hID4UFqqTK! zm%hxH?~A%gbn5SXYcRJecqPlwzGFyy6Mk=Sq1mOgJHF>F>Ue%=>B!;%>ks(NZ?R#; zp}ck*Gzw1-Z+6?h7;CbF;2q{HpU#a?MyCE?O-mbof%>A<)1;L9WC(^jSVkuIX5tgHN?Zun3!|}_Xldl_fZULNTjtlaV04ZHA0XqKD zv_eNi35pow?WX0C<+713XpR`WqFK2WG{>jXBfXF@RIVsf2jE1;8KY(w#$zFmalz70vtv#OqCFj7Y*O_AbNEn}}fHZAx9g^~yua!5q``oEj zrh*(~*$bvraQx`BQ*!e(!C3cxUG5%yvZy7N@F%bwkN08<_x5)9%E3~MlO7d8ZHTTt zlhD8!M@+;20%Rm|k>L|{`NxV<`fi}{P2?3d?aT(N%tCsFeY}%q3f0C%A$f~Mf~JdR zHu&t#@cX9JGo7IXoG!NbsG|L5kN4(pYIM{$pN4kXYBldn{Y*Wb(Tp1YO*7)sk2Dl9 z=>O?zjQ?}l*8j37<=?0IpQWh(O|<_{F?5O-^r@z Maximum number of bits for memory synthesis. + + Ideally, real RAM or realistic fakeram should be used for RAMs + much larger than 1024 bits. + + To temporarily ignore the RAM concerns and investigate other + aspects of the design, consider setting `SYNTH_MOCK_LARGE_MEMORIES=1`, + or adjusting `SYNTH_MEMORY_MAX_BITS`. default: 4096 stages: - synth @@ -181,15 +188,22 @@ SYNTH_MOCK_LARGE_MEMORIES: description: > Reduce memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. - This is useful to separate the concern of instantiating and placing - memories from investigating other issues with a design. + This is useful and convenient to separate the concern of instantiating + and placing memories from investigating other issues with a design, + though it comes at the expense of the increased accuracy that using + realistic fakemem would provide. Memories with a single 1 row will of course have unrealistically good timing and area characteristics, but timing will still correctly terminate in a register. - Also, large port memories, typically register files, will still have the + Large port memories, typically register files, will still have the retain a lot of the port logic that can be useful to investigate issues. + + Consider using SYNTH_KEEP_MODULES to keep the modules of the mocked + memories so that code outside the mocked memories is not + optimized as a consequence of mocking a memory, yielding better insight + into issues running the rest of the design through the ORFS flow. default: 0 stages: - synth From 916b9de6d9bdbeb9dc34914abaa7b09628db86cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Sun, 9 Nov 2025 10:02:31 +0100 Subject: [PATCH 025/364] synth: keep mocked memories by default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 4 ++- flow/designs/sky130hd/microwatt/config.mk | 8 ----- flow/scripts/synth.tcl | 8 +++++ flow/scripts/variables.yaml | 39 ++++++++++++++++++++--- 4 files changed, 45 insertions(+), 14 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 5b8706574b..a945ac8f51 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -242,10 +242,11 @@ configuration file. | SYNTH_HDL_FRONTEND| Select an alternative language frontend to ingest the design. Available option is "slang". If the variable is empty, design is read with the Yosys read_verilog command.| | | SYNTH_HIERARCHICAL| Enable to Synthesis hierarchically, otherwise considered flat synthesis.| 0| | SYNTH_HIER_SEPARATOR| Separator used for the synthesis flatten stage.| .| +| SYNTH_KEEP_MOCKED_MEMORIES| Keeping the mocked memories(not flattening them), preserves some of the access logic complexity and avoids optimizations outside of the mocked memory.| 1| | SYNTH_KEEP_MODULES| Mark modules to keep from getting removed in flattening.| | | SYNTH_MEMORY_MAX_BITS| Maximum number of bits for memory synthesis. Ideally, real RAM or realistic fakeram should be used for RAMs much larger than 1024 bits. To temporarily ignore the RAM concerns and investigate other aspects of the design, consider setting `SYNTH_MOCK_LARGE_MEMORIES=1`, or adjusting `SYNTH_MEMORY_MAX_BITS`.| 4096| | SYNTH_MINIMUM_KEEP_SIZE| For hierarchical synthesis, we keep modules of larger area than given by this variable and flatten smaller modules. The area unit used is the size of a basic nand2 gate from the platform's standard cell library. The default value is platform specific.| 0| -| SYNTH_MOCK_LARGE_MEMORIES| Reduce memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. This is useful and convenient to separate the concern of instantiating and placing memories from investigating other issues with a design, though it comes at the expense of the increased accuracy that using realistic fakemem would provide. Memories with a single 1 row will of course have unrealistically good timing and area characteristics, but timing will still correctly terminate in a register. Large port memories, typically register files, will still have the retain a lot of the port logic that can be useful to investigate issues. Consider using SYNTH_KEEP_MODULES to keep the modules of the mocked memories so that code outside the mocked memories is not optimized as a consequence of mocking a memory, yielding better insight into issues running the rest of the design through the ORFS flow.| 0| +| SYNTH_MOCK_LARGE_MEMORIES| Reduce Yosys inferred memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. Yosys will generally infer memories from behavioral Verilog code, whether the memories are in standalone modules or instantiated within some larger module. fakeram and empty Verilog memories(blackboxes) of memories will not be inferred memories by Yosys and are therefore not affected by this variable. This is useful and convenient to separate the concern of instantiating and placing memories from investigating other issues with a design, though it comes at the expense of the increased accuracy that using realistic fakemem would provide. Memories with a single 1 row will of course have unrealistically good timing and area characteristics, but timing will still correctly terminate in a register. Large port memories, typically register files, will still have the retain a lot of the port logic that can be useful to investigate issues. This can be especially useful during development of designs where the behavioral model comes first and suitable memories are matched up when the design RTL is stable. A typical use case would be Chisel which will generate a behavioral model for a memories with the required clocks, ports, etc. in addition to a computer readable file with the specification of the memories that is used to [automatically](https://chipyard.readthedocs.io/en/stable/Tools/Barstools.html/) match up suitable memory macros later in the flow. During an architectural screening study, a large range of memory configurations can be investigated quickly with this option, without getting bogged down in the concern of how to realize the memories in silicon for emphemral RTL configurations that exist only long enough to run through the ORFS flow to create a table of some characteristics of a design configuration.| 0| | SYNTH_NETLIST_FILES| Skips synthesis and uses the supplied netlist files. If the netlist files contains duplicate modules, which can happen when using hierarchical synthesis on indvidual netlist files and combining here, subsequent modules are silently ignored and only the first module is used.| | | SYNTH_OPT_HIER| Optimize constants across hierarchical boundaries.| | | SYNTH_RETIME_MODULES| *This is an experimental option and may cause adverse effects.* *No effort has been made to check if the retimed RTL is logically equivalent to the non-retimed RTL.* List of modules to apply automatic retiming to. These modules must not get dissolved and as such they should either be the top module or be included in SYNTH_KEEP_MODULES. The main use case is to quickly identify if performance can be improved by manually retiming the input RTL. Retiming will treat module ports like register endpoints/startpoints. The objective function of retiming isn't informed by SDC, even the clock period is ignored. As such, retiming will optimize for best delay at potentially high register number cost. Automatic retiming can produce suboptimal results as its timing model is crude and it doesn't find the optimal distribution of registers on long pipelines. See OR discussion #8080.| | @@ -282,6 +283,7 @@ configuration file. - [SYNTH_GUT](#SYNTH_GUT) - [SYNTH_HDL_FRONTEND](#SYNTH_HDL_FRONTEND) - [SYNTH_HIERARCHICAL](#SYNTH_HIERARCHICAL) +- [SYNTH_KEEP_MOCKED_MEMORIES](#SYNTH_KEEP_MOCKED_MEMORIES) - [SYNTH_KEEP_MODULES](#SYNTH_KEEP_MODULES) - [SYNTH_MEMORY_MAX_BITS](#SYNTH_MEMORY_MAX_BITS) - [SYNTH_MINIMUM_KEEP_SIZE](#SYNTH_MINIMUM_KEEP_SIZE) diff --git a/flow/designs/sky130hd/microwatt/config.mk b/flow/designs/sky130hd/microwatt/config.mk index 89b2ce9a07..5365b178e6 100644 --- a/flow/designs/sky130hd/microwatt/config.mk +++ b/flow/designs/sky130hd/microwatt/config.mk @@ -42,14 +42,6 @@ ifeq ($(SYNTH_MOCK_LARGE_MEMORIES),1) # These module names comes from the error report when setting SYNTH_MEMORY_MAX_BITS=2048 # and SYNTH_MOCK_LARGE_MEMORIES=0 # - # Keeping them avoids mocking them away, which would lead to further optimizations - # that would obscure what is going on in the rest of the design. - export SYNTH_KEEP_MODULES=decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 \ - decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 \ - fpu \ - decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 \ - decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 \ - decode1_0_bf8b4530d8d246dd74ac53a13471bba17941dff7 # The goal is to run through the flow quickly to learn what we can # about the design without getting bogged down in memory issues. export SYNTH_MEMORY_MAX_BITS ?= 1024 diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index 279d4bcff3..018a6c399d 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -59,6 +59,7 @@ if { !$::env(SYNTH_HIERARCHICAL) } { if { $::env(SYNTH_MOCK_LARGE_MEMORIES) } { memory_collect set select [tee -q -s result.string select -list t:\$mem_v2] + set report_file [open $::env(REPORTS_DIR)/synth_mocked_memories.txt "w"] foreach path [split [string trim $select] "\n"] { set index [string first "/" $path] set module [string range $path 0 [expr { $index - 1 }]] @@ -71,8 +72,15 @@ if { $::env(SYNTH_MOCK_LARGE_MEMORIES) } { if { $nbits > $::env(SYNTH_MEMORY_MAX_BITS) } { rtlil::set_param -uint $module $instance SIZE 1 puts "Shrunk memory $path from $size rows to 1" + puts -nonewline $report_file "$module:\n width: $width\n size: $size\n" + if { $::env(SYNTH_KEEP_MOCKED_MEMORIES) } { + select -module $module + setattr -mod -set keep_hierarchy 1 + select -clear + } } } + close $report_file } json -o $::env(RESULTS_DIR)/mem.json diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index b5fa537e07..77281593d6 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -186,7 +186,15 @@ SYNTH_MEMORY_MAX_BITS: - synth SYNTH_MOCK_LARGE_MEMORIES: description: > - Reduce memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. + Reduce Yosys inferred memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. + + Yosys will generally infer memories from behavioral Verilog code, whether + the memories are in standalone modules or instantiated within some + larger module. + + fakeram and empty Verilog memories(blackboxes) of memories will not + be inferred memories by Yosys and are therefore not affected by + this variable. This is useful and convenient to separate the concern of instantiating and placing memories from investigating other issues with a design, @@ -200,13 +208,34 @@ SYNTH_MOCK_LARGE_MEMORIES: Large port memories, typically register files, will still have the retain a lot of the port logic that can be useful to investigate issues. - Consider using SYNTH_KEEP_MODULES to keep the modules of the mocked - memories so that code outside the mocked memories is not - optimized as a consequence of mocking a memory, yielding better insight - into issues running the rest of the design through the ORFS flow. + This can be especially useful during development of designs where the + behavioral model comes first and suitable memories are matched up + when the design RTL is stable. + + A typical use case would be Chisel which will generate a behavioral model + for a memories with the required clocks, ports, etc. in addition to a + computer readable file with the specification of the memories that + is used to + [automatically](https://chipyard.readthedocs.io/en/stable/Tools/Barstools.html/) + match up suitable memory macros later in the flow. + + During an architectural screening study, a large range of memory + configurations can be investigated quickly with this option, + without getting bogged down in the concern of how to realize the + memories in silicon for emphemral RTL configurations that exist + only long enough to run through the ORFS flow to create a table + of some characteristics of a design configuration. default: 0 stages: - synth +SYNTH_KEEP_MOCKED_MEMORIES: + description: > + Keeping the mocked memories(not flattening them), preserves some of + the access logic complexity and avoids optimizations outside + of the mocked memory. + default: 1 + stages: + - synth SYNTH_HDL_FRONTEND: description: > Select an alternative language frontend to ingest the design. Available option From da6546c4553872bd227357cb8f071a7368262907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Sun, 9 Nov 2025 11:35:07 +0100 Subject: [PATCH 026/364] synth: endpoint slack histogram for mocked memories MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- flow/designs/sky130hd/microwatt/README.md | 12 ++++++++++++ .../sky130hd/microwatt/mocked-histogram.png | Bin 0 -> 49037 bytes 2 files changed, 12 insertions(+) create mode 100644 flow/designs/sky130hd/microwatt/mocked-histogram.png diff --git a/flow/designs/sky130hd/microwatt/README.md b/flow/designs/sky130hd/microwatt/README.md index 62635bdb6c..ecfe109b2a 100644 --- a/flow/designs/sky130hd/microwatt/README.md +++ b/flow/designs/sky130hd/microwatt/README.md @@ -169,6 +169,18 @@ Path Type: max -2.13 slack (VIOLATED) ``` +## Histogram of mocked memories + +It can be useful to look at the Endpoint Slack Histogram of mocked memories to examine if some of the paths are overly optimistic with a single row mocked memory or if the paths through the memory has problems even with a single row memory: + +Create a path group for the memories in question: + + group_path -through *decode1_0* -name mocked + +Now that path group is in the dropdown in the Endpoint Slack Histogram: + +![Mocked memory Endpoint Slack Histogram](mocked-histogram.png) + ## Conclusion Above there's no visible difference in the Endpoint Slack histogram for the two approaches. In other words, the design doesn't appear to be terribly sensitive to how RAMs are mocked, other factors dominate and merit further investigation. diff --git a/flow/designs/sky130hd/microwatt/mocked-histogram.png b/flow/designs/sky130hd/microwatt/mocked-histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..ef34efd3b63334926b90fa4814989a7037164c24 GIT binary patch literal 49037 zcmeFYXH=6*v@py$9QBAI#{!55*Z}F$r3*;!HFTs)jRFDbDgsIo1wwDqNl2&x0)!|? z4I#A9ivpn+>4Xq?19-lBf86iSy=%Q|ec!szpFGcG_Ut`-cALFtKIm$z(9+zZp`xOq zRa1ScPepZ(nTm?KDl;gB_cja$<5COJ7dm;ay;NqN4ySB%#Gey3WaeHU}qOr`nr`OT7? z6E0Am7o_Bozt3L3-uRC$--KMw8mS6ijF;O*pvHcG{$PEEe6?}Ufcf{p<6>>KwT}a8 z{>3Ttn)&4PhGKyF7QWoUosb!mZI-Fdz zh2|g7kV%7@eW0R$_)m5mKDBtceXoj~&NpxNP^~U!YLcyh5iMEp{kH72Gr-s8Gs!61 z4av=xJ2KLnDnt+yq?}FDm`ebfb2O2!1^u`vXX;rEj>LakPg-nq32nLOeg^nsjyG8x z5E09Y-6qDhL@jR|g?a>_-NIr%9CzX4b8CtZ6F>*GI%)(pzZ_+E(ba^*sg051i)X-J zGpe3VTF`S@JZ^p@*bl!FpeD-7?B&xT_;hlSBAeWo^Mp{t_R`mXb`BT}U0eon-^FifSohfRxfHuSyGx|M zY}m5KwpgSUcdg1vU6JVL*MY%koRbPJ5*Fh++IK-6JTL2H;41p_h}{TAFbQJrK2$lQ z@JZYiHW|pL!BzNCgUu>;471eSQZ?lztjfc8;&N*Oxf(cG^wO>^&(C9gSa7t_Zw5qi zkf{{3i47jUR-hha#`O^MypMazEJ(C5K$IR-Uqp@JaGw2iw8_5(Q%>|vum^`UbBfMD z%ehw;^P*ISmSb!bMRNAV_?8F)&}-f=$czX1UvCC&q7%7)cq`eIPtsJWOA)d?n*pvZ zWfh*E>^o-e>9F*Z6eAXxk1rl9kp7{^c*(2my@QsiXbUX=7S1*8v>Fe*YkYwP*^fe} zb5r~FU@&O{?^&vq>M8olg0$*OlN2mL<(Xhesb-C z>dX1y-BS2drKKiVNuUn|GRS9%@IQQpBCpC@wlAjHQlH`SElyyH;WAhMmCUjj+7kU% znM=whS5cmx`=8SI<4io($&Ue9I|o=HV1yp9v!>@x#&-35iBuHXiUL;6EhBH?OJ0}M z_{Ta&6`E<9LvaUnF8KZ!Bcv6bmRZnKfCo(M49$EW-hzMR_)_8cS*!c#1Xf!Nq?(!$&W~Odc&MJmxPTD<@+TSX6()FcM`le0W+LV z%k^?0LyXjx2v1$kn2~>ipd0LGC|*pdrVw7;PvOhxe)yuRRmep=YM|Zw6&P91OV^vffO?eu&$gWsS5DkDy-}c-z3o+5YD@c4&M!k zO3Z-BLBlF-MI1+|WFCoWZhTzZJHv;Xyw!PZTqVnn)09A$Z@PFYaPAIK-_{Z`^f=WOo(?r!jp*q>*w|Gmb?6yILFI#Ca} zdiAPg$Wa3-?XCIj@-hz)2sA3v{Whs}vWPF(>;f-xk?ah+lcZuBJD8AnlR89gW+qVq z;7^~jIkZxT>$z&R(8ovhyQ^a=KTa0-EB{UFdx(#i`lL0rNsg4!7v{?{#Nd zV;pXVQ}B!#qWnSbBNZ)^*pnH&$g&OmFi>$T*Rye$E+}4jB?B{?TDEaW+)9_;`=>zs zWbS2*tx2lu$`nEvNjX5za2c-@i|bn32s5`!8d&3VMG#($6pO=-EXTI+~H(2i*nVQIy z4es3yi9z~dMz&fCDy=W;#(#?f3Ef3nUul5Cv26?W3uBAGcrWVaPd49OwxBHd<6N{> ziLm&dmNrlEM!_$Bo!rj8(6S_`g$%VJ{9CiXe<#u zXP+Qn;)fF{{Bh*CE~q!E6&IZs(p55)D8f*6yo@1_t!4-Ss)D@FA#beZ=l>kK@VSw_rG4?)h%nF2rbDXN@1e$!{Sa!^)H&8yxis`^eKVJ?lDX6af^PymkdutehFM zJ@@6^a%R-=mJ$9}psttBRPeq)+A7EBbAyG}A^bW4PlK44e2IN!?WGT=VJ@|kDxmZC z?ZKew`@ilDK5r|Ps&YKq^6%l({Bm)`-M{2$vg~OZUE6rMbCaOCl_6;|YsnUK(X5IH zAa6D&r5?Rfvb++Lm`k`KdZs<&jSK7BKXV=-TS|Ky*b5z6Av+o&M>=%)^&+MV>P5H# zC9~sZ4p_RJHXXezbmr%kdy=(`Op!;futf59>Gax$gc)+}ykK!ZU@Qe>RxzPN9>n#$ z9@SQ(OXMm|)vCAR%Zf2G;6^7-&lf!=SJO$Jfs@`W!xA8UncQln2VjhO?H=i)mVsDZqzwvUA$PqbTKjpy)iI|xsc@IHZRFN zH=qA!%W@HBA1rw*4HA8Ad+7V9C&(wUva)jA993xW;o_)xerBK)e-F{HA8`E&*3fQh zH#LNRF}d1nd1vXqmLcq^ydM(Tfk8*Vt^bJ6ndnvPPZdsurzJl$4;-gWa_7W>&|)!r zHB2t%`9+80mV`NT3sAjIe_~HnDXC8mv!h<~47{xK@CErXyHxr~kTP zeB7wa+m1GQuh3S1-Stv`H&UnA2>*oW&uI8TGGk{tiPV=UIPLA(?7ib|EFTsmO)#&G zUfMmjXuB3qT{PexIaz#>mfFa-%TZ~#LIN(zzuZ$%zGT6pD!azYZBqAzHNXqnM2Y9c z?4nZ_8!ukiAx4-R)wzm;7A7t6M@JS}M+|9jiv!6xl2mj4fLItTx!BJs)pdM!m)jmC zpVm(}A8xa-`4gPlBV&?($sbemLMiO>EAzBtjT*zpf`)QfCdi;sR41Yr))Bg_W%^ znf&jDAcvGy)ku;}t@^A^XJNWb!1G0L-n?6H$kL3{XpzfRHa|vQSU9S{xj*DX&Hlk^ z8fJDWC5GYn9}q-XzVzeGV#qqWK!qou^X`Of^>L!h3#j}-Ztv5eeKIxo3&#u&+5iPh zmciw=mw2#BoXz8+!*(FT=c%8BYQm0tT>ynjwZ zMD#D}(O;81{&fTa$@-tnv^?txaHWqB{1+6BtdJgc!8w<~vI{pB0w;L1WG4}J=AmYb zVS8+bcSFQY@9iyP%0ux1niAvLIw(Bn5+IN$~mLM$cppVrf@mU6J z#w6eLfxR6ak$edBXl%E!RR(W%!LDW@s_jn)@RuSj92A=iHJVOQGu!rICypxY=$QOL zUvbm9E#;+3RauBmke+SbAZk#RRVd*V2lOTEOPMIH$Q{jQv>Ik=hKD3W7U-HxS#%-bn1S7xm0I4XwM(6ExmWO&B1X{k4|bY`66$$e9g7VCF1p zbk!%KU@+)CZccOi(QD;$SxVW_LwPL>$BX)pT zGXu}!s)KsX!+7I({bm!}K3xqlVcUKV+xTfI;@&HQe<_huYUQs!;XglAjaM`j3c8ty zAwbGDB(LO)F2u7(vTRf-i}4l~({1;~>&WF>Vc*8d4Qw2M26@bW%2>!Xh^rcHszP+t z*Bf@DAkuQyavzVfQs==BqHb^bb&j=h;xB1;1xu9#Lv(BEI*F!vaqLEoj`T*L$(l8(+8om(N9=k3icS8=WjARBvk~5jc)xanrIVs*r0=)$%G2-i!n83BW zd^gMFL%!D-*%kgpCQd$pZL+~&Tj5ZP&8UawvdBaHCFSqS!;CtRF$;;{r*puJhvEE7P`e5@kae4&Y{IzJw$>? zR(=Eb0qbA|2tDy_57)SMcvDn9BpCTr#r29l=?T=HR=2);N5rSeX>{LA7~zEuLW_Zh&cB?fvs3SO)PUr6(UuQ z;>bqvqXF#Jr1BDOwK!XYTVF5%^F>3~T@8bF%}}~+e8m<`g5;oKHBjanJlr8(KdGsu zVyLcOMy{+b$q<`LFzS@o@2G$n=f3902Pu>Wj{=|<=)r{Xq10XZ1Xkj!T&v(m$Qca4 z@I%jz*(MR;?~%UxAnB#&=cJn0Kz*3#N1_LWW3{LxDJ0lHCd!l@JaoxR+u0nuw=HI zXPD58uT}SoG4)y+?OPHtNTO{alQJAHFBXLxVTue>I%!zT)op%Wjnovef51AF$af5} zAnkG!K8SOj<|T~JrLcO9CyxOJeF!{11DJT` z=2Pk}A*zghfga96>@Q!3j1s~LX?2!|-bbWzz3kMaOE??H%$9KkBSL>eL zj3m25gMHlcs$<4IOonJHGZO49hcX|pPE=Sjy2$2TQQ`xz)!Zm4{E;29Grx8z#j17P zhZ6oLEH}62VY&Az+(lMk_yZ7$7eBu9)?e#T4dC{fCN_F#3W(4z|N7({2T&f==Bi>5 zonr^L#66n1-sMRay8rrAkgZf+N=hfVD;NtAyEw5 z0qR+q>J7$Do#my6B}1%BUx-&@L=R97X6Q9nlyGgeG_P{sMet4d*3Y=u(jkPv8*jFI ziW`#q&2*A$3tX|%b5@o22^e|(>c)pFLHZ~Ax+mdw^js7B-8q58P3|>yH^{dJrS5LO z8;oh*mW{)|URdsK$Cnz6*6~iBo3;C3X!0t@?WYY*4Y7TwEsl7TYooT>UHVR1MABw{ zqqenJE28@S3#D6=n>&q-N71d&y@SN-b_3D7$cCWu#0*%zHjG^QvBfAGEP1YNajbNZ zdu55t=54w5$r;_Q7)C?T8%A^XS#Al3iWPR#UTX%)Ds1j-sU=-9AsBo$um1J768o)4 z+Dk(Ybk;B_S)YF;jd!`q z#9l9F`nu37Sy}lH6`h_tUdg>XqOeWAA3WwylkZ)lZBc%@5E)V001vPRH!ztxNdZVA zWY-EVAtC*8DJ%VqoS{bQKci~;#zNY7=9(rL#U?Gc9gXwReKTb0Xt{UgnYo!D19S5!&fO^u>vWFU2n)p7JF`$VJJ8@xs*){_@m%(}V#sY#*P zK7JiE1k;QI&~m_r?8fSg0d0SHTGTv|iA)(nt&Y_IMk*YP3N)Gem;O3Y?|RI0-si~O zXRJB`5-Q=`BHH?pjVwN1L!0ozPJc6pjbEQ4n!NeDI2?p*ZM$E z06N9CvT6)C-Zn(yC9BPfcS~s9G{Xb_`d8*xI*5Wx?CzEo>V*Os{aZ$45e~etvO@ZF z2D&e`2fk$V!*Ll4z4Z-|2N+r;y;s@!1Q2Wf8=BOB%G;W6vX8fhRCX1V^}H~ZLCt!A z)1{>o#FrYn+jy|VRLDJIbsCJYBMV4+!y?-0jGFYY{4v`0mFtOCW@@e$b*nR}ZAPRd zL@I-1AK{4b#{J5T`#k=M%>+fBb(P4y?sP3*$XQPKWueYeNqlMG1h0O<-fT73bYLxS zX69y@x?e*>g1~f1cRq<#l@H^l64&CQMw8#a;`}+HFk(~GPo4RANQ@|Sc_`Csmp7r_ zk;YLG?gHHH8+oOqWR_cq?>e5c59m%yd<6# zIQ5*zvTob*bM~n=JI*9*3nwRhD=A3e`V?-{UaWi{FI@e+rM1kkGV0pSI)r|d(ElW+ z^Ren0=!V5niCD=fxP!MWPt0^;d0_-M2X$R|3JUOnDY%DUb{(8CLk@ zOB;<#ku#0;&ca^N{u8o{HP1UzAL7~2+G909ol0_*O-`zFR3co4C(TBc0eU%Y)okur zdAsd!Lh?@``{HMXe=H^Yf;qGfW$`QRmq#fEz3hfw=#QoYC%pK9)D8{ik~!kA{yF}+ zzB%!-qBj0kk1dh2$%L|4Q;b z>T=SY>L#Vedrow<4ggh~vMNPh80X!R9k&pTBDHhz8(t8@4$bQD7mq}XZPq;Q4C$$a z47ruC1|7s%E#Ou28+aonKu-!~*mToeSS#A~=v|GBW|@J@8P%*Vt89go)O2x^VvNy) z+FVxeg~E;d5X@o+2TdniX_@5(`V@ceDw}rIeXT9d2A-_8)S?89gx!*4NI51*^qCST zu>ifCbhUtB7rxl`I${7WFF~wV?>#;$$QQOA>b8{;sjiN{eBUbgToA}(zGn0#B=S~* zdtUgYmuSGD6SrVVaU}8q_hCjDA?#Z&-h1OAXc@Rb_;#0j-k~2!-Ih=zFNOCM zhif$>&KLEMWi4g-tconOoFCmbzT`JG8D#5`+Ts~OcbaHsQkD9l&03#->0+OznA*-T z{*U@~MgQOh3k36|qJU+fo+S@*X?&M%dlO2+|Jv~#xKnypF@GSyn-Lq*5bHk|V1%nG z&3QZcH_HL16m`Z2$RHe7B2*D_6nf%!Q@??$Ch| zzlK(6V{3Wh4CrV+X^mBaQbASl9pD><kIuNdLpbf-S9Dvtb4hS3|eEnP|q zHtUnoWoZ6HBU_?Jo-!)@65F{2?)9(oxk~sT0Y~Yz3@pC+YMAv#ntQ@GbB;Wr5KEh$ zW{YU$nO{+=9|XagxqQVtTebOU5$J8*F|_HSJh0|6`^ahe}>665esFv>ry7gd!iz!Gt**|MhZ5$W&EYtH5Y}<;(EdUNZw(rcy}6r2hIRf5=33zQ5*Z{%aqskysWy z^Ku1);kS2`Jb5MZZJKxQFi>V-y;5Mu)_wkRpIua>F>i5?QK{<_QUL@|S}b`b1BQMZ z?$X=$5;Bv1gLUxcV{J?KEC?e+Cy>yM#JH#OYo?-U< zwL^&bk!z4d)%)O-gIcq{#0NrSWAJbJ+UVUid>b*AF>UC4S-{*vig?Hnq1J1(#~PM=C%CZ;dPhuXsm2-Wz7oW36`ES0DtJz4*r0ykL!pyv0i%k^5Wt6(EY{3-dVFuV? zePv=NR{!upUfj4td%JSA9iO;~aH}!?sDlowM`l=(0wH%ZbP|3V>NPV8;I|xhpYLW@ zyXbP7@cB1nhskBCF4f$o>S@7kb6FgJd6fj z&afU4a8`Z?ewpb<3tpxF37jwM3y6smlMu2}FJNSpv_bZuG{G)&k z+b&(zCnnNf%u5|@p~^jEI;H9{-u`7dQy3e?|r_pe` z^|dwH?YoqJr~>Q)Kit^Ol8NZ*5tnG5TnE4}GNVu^hsqKAa+BJJ%a&a(h)&1KjMGw!v5ivM|9?m2+N7-Zm*ENJ zR0fY4zhi#{cAys0>SOVfzYBy^FMxO4PQz>}s%JD!%BNi^EckCVwn@GG6vHe&`Jwsu zFlD)vYGj%?Ftb16cgv?sW&fSJsOO=_fS{nDM9}XVFjdW0JRU!A@LwJt`X3gBe?DJ7 zpEtj_=)BJHn`qzs_IA~JR=J^fG4G~k@T>H0=NP5o zH@QF7RQ`Sa&!?RJhlKv$0QVJDEdQ)mXJ6?n)#Xrs1JbP0%{5qZkfXCuI>G7P@u*mV z!VmlRCuQv){Ekw)Vc|Q;U)+ueZfl;K8qnT2*sH;g8qM9E zc=RWNTnMxZkY{TZF*~N+Ed=Sy z)wypM^*Nxt^N()?)xu*6e7PTL3@`*$?91T;cByGS(!CG$*_F8;ZAj4WFYu7@Zbc9W z&;DCZ$3hSjZrzV@f70yr_b5tjHWq&T&Urwe&n6!0nb#!jxRsizgK zN=UXm?L^#E{}b@11V_`|7SzG3LtYkVY2$vW^OkA!C&wVqj;~PE8K2c7wdnEB%nJBg zq{COUC+r%v&wCduE4Wk>qe$EHdTe+Wv!w!Rp{M{B#ATme4fI+sLHitd{wqH@A9Bm6 zO$NUK;~psctd2&T)qmuKm=&)KtQ6Vizs++m1a))xO?}tOgJptu7BF7;-Fu!G%==>6xQL?DY>%7!WM$oS@+%_@QdV6p2CKJDvXJjOxaY;~UHupPqeU&+W+hVnA z%HaNPQDWm}%n|QVm7}ztDgQ_#=Hy68MbxSB)UFL<{yvLYFR9&nDfECzknx6HEvBDr z%s@6HEUw-i>wVrb{Gevxx#i29B&WKmzhJCZn^oT*E-CB+d!~~GveKt*=>s(OyvsX9 ziyB#(^sHG}M~a+r*q(Q>>Mlp0Xcjw}XhGe1_zDp_!nl{dRl_sieLP1H) z@_lq-3to%gxT6EB8nNNL*EBom=aIFvEmIShnTSqf5=bErwI6~JIB~+Q! zAl3j8+}c~XCyqK#MfHf~m&&o~CAL^@2&*@A>nMG8ZYl55=i+57{HbL$l2<~CC-y;9%f04D z2?HFXg-8EkF5)eKdx5ti>m3@xX${yzjJ82)z=Bc)5}L$JE69d zbIPx!eyYFgPL~Xtpw&%B9TMU*q8^!14-|xO!h(V!R_*-&l(|tH+AHVYUWTq_oj2dc zcMiV8drw%F>Eq2;)K)DH8;u``4DrCo@kf0tBTrFmre8h-8*`9=gNJ$cvSI61#e4HC z2KXm z&*<2J4Qs$+E&^ca^{Olo#?TTFz=bQ8Lu@_cAtr$UEw}RNk6Jj*3=wDr^?-JNc0;F} zQq+qm9Rry`o0QBnF)KK=KSb%AoP_0(PK4bdzRLKg2&@YLkFa6_Dd==37nEYOd+*C1 zs$ZtqD~8}oion!TPlp8Qko_Bz*7P{>Y+LypqBtuSB6PbydhuMVN zOZK&IF#6=BwO$5aHi;v0K1WdS)1P9#^sq?<0qtd2od=gN^;VG^PR+l0M=_}OmniHp zqd?L<@b=eV;@hvH6l%)1TkfGRL@X4Og|~b63q^2q1z(q97l`4`&C1Q9s_Yp_&MhTC z5z?U&`{TNzCmY-@(zcL;s$cO&`jcjs_|m~;vtOMG;Qd)={K|HNRb(Jw%PG32?Pqz# z+?MW}*EA5u**FVVStHh8bymK|PuPNm^mr6z5{59=`DRy)Gg8A!T?=()ICr*nLU#_# zr;3iEBjVP^DY5nIF~<+@-`6f0@iU9L=@x2dR2YeIaByIRGBY#9$4&xni#FZa)bgeB zoQk=wMfjaRMJPZdGkbgcLyY0 zXNeiL+vKFa@JPWxg3mhVWO;_+?oI9YbkIi}k9$TQ%kknhJT{Cf77Ns_unE zmc^F2P_XPqaxjrkKmXP_sBUMy$BrI3+<|^;OyGd?Zkodx%xjCtvR+>0svKL3*|kKq z;hVnt$C)7G-aBYRV4aeOQdFn#be^`ANCkjmeNLYC{94CcQ}|P^%_ezwmR`VeAlV4w zqKH`UQ#T5Xo3x$LkLJGx=Uz$m5r;zS$G2noEfS*Nm0;Rux*Kkv4e`VAs#q#}h+Pb^ zB$EHB%0gGK%xLw2R}AZRWjM}X2}WI!`6RU?u>CS-WeR;(tzI_+GV_X^Z7c* zxZt}O$MQLFJy0G=Vle!9jbI3ME~AOPT|$Q*&cC3HH?(3DN1EB*V2Sq;H`lDPoxKNO z?1&Rz7K$@$3?z!+)+r-5N;;pd+$X7**w*xET~$$+^AG2yW+KbfJh@A9&Xq1q&CEO0 zo3-n9eYhU^i@T(WKXC>8?`m^3wchqpI?kX;3XMpzfW_U8EcW3OU>U8mbTWv0df!6M zUFOcvErija;D2KFe&-E9l`nosa@y3?;Zi_5m#l(HHDB+Aw5{cDY9Mgc!H61|bq%5( z%IGrML`Cat^+az>woj!#bh~}!R%hC(&>0J#tUVometsqr{`7Y5K?`PkE#-NOR2>Gb z$%n{#WE4Bt6|&RHKls|`mXw6{dLv0L#^MHFVUs9+5xn7_m)wkpR2clbo-uzjW1npp zVy$KjD*=h;2&ToAR)IBJ?uq}-lMVh~T~hhKvHv=mtLFbAqHy8=V;krHUAX@$<8hK( zIpIw0p2>NWm5INSzwUo6^Sw?*<;!%Idy<%j6$3}=FV@oHqJvu}wWz4Z!%UPZ4)x^u zUlBNE!++NvNPJ^}#9a3;Qc5x%1%EoYsMs5jga2Z50mSr3K8wuCpXO2huOlY? zBbLgqt%vKenv61T^L)>d>pd7Cf&JKQFgpPKWQ5GDdkhxyC)3y-nw1A@n_iI=kh^3zv91V z59FUCa7G#CO#gX9o@{i^F!Dx~2Oq=Jrvvw@->M^C-%E3&O?x8L90%qVR^v!P?(L~4 zsF?uUle!*E4K3g9P8nbK0%itwqzn6H%@bvjBnXcuE-%+>sT|l2FCCR2vB?Oxt!=0V z|7w=%>;HB0gq1gwzqj7ok&WXy-e4Tr4Gl@EiFP+THk-;t5~^E97PE_)NZXdBA3OiJ zuoed&^XQ;P(SAJf39tW9cjMKR(K%dMCOVH<&wm$>Q74Qf0YHx3gTb`mh1VGoZ)%J#p2B>v6=y1aaH!4Rk=dMeGShw z_ObbQif#5CF;iII^~t-!{NqxgeGC83YHJnMk!>W%Y{rC~sK&%tt40yNncWVlZb@Nb z4pH}>vwrWtw*pkRGCAie*rZ8#^>Cfc%zpmVqkHRa_NU5mSsH(oc|sFanZrM)cY9td zygv!Ysh-^Zu6**F{f{kWlS)OU`*->2g`bD-&aB}Lg|qma=I+_;o3Q@{|6kVq|5a?B zQp{I2y2MIaPU8YFUN4l#)p`+oSRb5WJ=ymeyec*KTKw40hh=i0)aztJ{2HsKW;e5W zc+^Bk5Jnd}tPIc*Fj;;Y+(SXKY_jtOye0T}L(dWP6!_S8W6A-&+o=(Jdc{t6(0u?E zJG*8&QM?CNohn+b#CDo{c8F(PiBZ$nS)Uo2+qC9Wg;{f++{LF#i}h@6J?P`L($~?) zw)ftz+!qJTi$^V~dD%}lK?NdkRX7qsZ zWHGgq`42ZF2#YnoKj>WJwKl(5U!NoubGk~m409;Ugq*Ku!}$#fXu%rqT>@~Z@p%OY zI({S?EsqKYnKr(#V&E&~EOty2%)K?PV2PU!DD6fcF5`)-6B(w)KuqmWqhLr-U%B5_ z-nZo#bN_W6&)ycfPAxht%I5}WVn<`+;ZaDyObrZW$!^TF26KpDXv3-ZqM%>V!d zQqn%M<5(<5TxxFbCJu=NhWfLHNbjJgvMOVF{iH9@T+gp>>Sy0-04c$X!RDwswVnD-NQpFeo5WV2hTd@j zCyJ7?)3svP2B1t|4Ta1`0H%_q*aGiG)fpGm7+bGDNggZ~_UdS(Q(e9k+`3ilgg2m@ z16ZRe<@3};bimFi{xeik*lF#D=D5waB+jZNFKGJv7rTHR6q+d6d36WD6&O zMi+inmLyy++}^uE;aIjcSVU~Fa^IJ6c2@XUSZBNO7kAzu+=$ud7HB<#ScsO90mw9R z^If0H6z&dkZ7qd`?+`2(;WZ8xV+X+EYFdo|*7l0Eyh&1@UByng=4qu>EQ6v-qw&bK zisemvpo|(j-)e5@hJce)ihdOU3pJN5Wef zI24~94e~mlGn=sNs$Hv7A!@hlSHIjRprw!b6&Vov@~zR#YIQ)OkBlp~rA9x+o-n5x zo=0sbKNxYZnHa2>bsa3xC+CN~>Ds$TRmQ$iNlV4-63VdVF1Uo)#>eHwRll4O-UO?{ z!LY5=43)zAt#aOCc4wy3_$z(nl74{Wy~U-4c7yw^4&y!Qc4tEQntQ&pwX-aGxGv5c zU-@fPU^Y3;T)z}=0LAwKp!tJCNoKIbIkMASKvr_yn+xAdjMh7IW4m;g7X+P4IXd!I zq#T~Y8-5maWytc48O0AU5`4wSld4gL4oP#$Z6|X7^{ZibAYMdPYON=((@tj5QcNxb zlNn;Nyorxt`NzOKd5Zi?uHt!S%sw3g_#=6yJqhZ|`2SS!=auEv|u6 z=F%EQC*&}VZhyuoW1U0vLE@FZl@1JlfK~uuk zZi*WDvnDpb&`Kw>_U^HatNIcq(Qz>{>3vL$?Aa~%hiYzaqxXRlwnO9lWRk(uVp#*I z^d~Z?jb&>o$z)`BU-&H6^!(o1*|W0q=F;X2dQmGi%|NRH7iNunNtO{f!8ZIh;l3E$ z$US(Ct!5CPB6a+$O?vzLbV*UQQ+>v6XK-m&0!#zsbkg%95Co86VFV*vC4@m4q8b*Tk00_yOMXT*r#fzghFwXG-lT9h1-^%K#`LNU**{_huB^hMZ<$am3F`kYJe+COuOW=>Wx$WIuI1z}CFYFHoS5yi7oJyGnu$_yaiwGP6K5FLijyS;;d?5HX|bk&}O-mW?G zTE-HCs|d}myq8+cyP2ao;~~cl16COHJz^uX?a&<*UeQHkrgJnWf1$mXz0iLd4fr3aOf2K50HK z-O1IvNvM!6qRKJHUO}q+6$yT)%!YYk@tnPo%^h=Kmm+4_bP_dwaex9x)syYXKMLK; zE96vLG8GI79t=vDS?aF$#2tzXTy|$pRYz-{9IvBD3A^dYJ}+e_-w#bSK)QkwCtd_= zr~7#otcXZ!VI;lU);%!kMmu>zya8({FR@>0u_s`FX*=wFqN2kt! zNSrcuE;p~dJhKH|e}^-RnB|vKbM!XXtlpRqR(kR`)$)nsl1W+Sujkj<9gH{Z>ywon z`#8>x#Yy_tIdt_@WM-czBNcNAWtjW1U5gqr;L8&sj*VN$8V5~@^%JG0x>1mRY41P9 z0s7BRbv?$oyUUm<@v1o>4(`ujMGCv^<)yKN@OMF&9k?I{4i5AwZoc8TD{%d~0n0z9 zXlNgvNPZTJ?{hUmdFD2MT2{9MPObz*bh+^T1k;ny6M1(Z2|6ZMZjFE3Mzxon%DdC4 zyfee4%gZOhZENdYab|r&wzfW!r_OSo2@t?L6f&=Zv~!lh&P3#IN-Lg>_IjRM$87~A zJVjm@A>t$L2d-Lo5rp@&z1GRdr3N-arcuXx@>Ej%r1V|uUJ*-oP((~D&)7-{c^3f)t}+`pds+b&@#IE$Ed*Euq(+` z`vhqjvGQ!w^6;sjv6!*4LlSj?ql3>pxwc>VTck;}bGi^V&87N@Wn!;ixzX=%&d$KKi!a}yGq@k92( zxOK0!==)y7HvL|k4zbE1XX^}z8-C15hg+k_hMSCYM0C+^eqp`T#KeSYd0k>FuJAOu zXr)StF}RBjTxZC^Z&5-)3#Oud#$zilIJ<+4A?*Pw3usI(-!YaSpm*&Ne60*)7l#AK&!@$XPC<4O_t_Q zj5)aE+^Ej(QSP(*ai{avct|_;`PundN$Y0?eFgQn3%G% ztUUDDl@16Mq$cHCH|BPVFIC#9zy7mrZsq1gd?+#R3&Y*2IZY=fnAXuAy`I-`zfpI( z7wPGE>P;y7$&GMuwzaI?48nq9OOj~syf!-fWow&P8B zB*m*`t))HfRckf+jlPuMIk(Qn2d6~m^oxv4i20vVAZ+QuMq>$S@fp6*@xC7`X}MoZ zasPcV3p`0c*5hWnT=H@z*@hJYG86BbQpYEjou5bnzC)k5jg4~|5J*lr6P<4T8%?F` zarhmKeI9;!z>jfUZxfw%ud4lhf&UvZ3AdD8>-m&yDi3?HTInwI`pi%IRYcOy>CmK+ zWy~i{_zr2YOXbO@&i%DM;5eLzq@)|OD(my9Vuk%uIQ~F8FAFKH>lEwj>MkyII8x{C zbe!kT?j|F9wl7o0qh!Z2HCOBgkM^z z=saPmQoCrtC+ojg4tTtPPTPFrNP0|l__uZ2PveJ?B#+WKSlR>9f`t{J39DK*s37a| zZRbRcg&&NK2nW|@1#*&^}SHv5F%O7jX z?|sjY{nU8ICf0@UOVpX^DzW-zdfWZ@!bfYpxanO>{;SZt?HpU@Y2r)BDtB@99&f&R zzk|8z(?%{t4%1~*+Tna#WQ5NyRbsWreISP#?otd;0CJnCOBmzb1ERSl;$U$if4W9X zjgwt=8AC7A;{jwxLsuaeVA5^Rc?R?|8khGpbMmApEbs3?1&4<{J(Ch{B*Ci6jPMIU zjh(WPKkAlLFV>?7|6V^V-4>GaSj?dyQ=drIfm5R$<@@M&LNU&>Ghc(sK*0w>a z-mvEu(n#&@9PCIzdDJ~13yICRB~qcbw%W5If0X@}7ACyBX_NHUIb|t+1zk@)ki$XC zMARAhMp(dO_wq!@p1%-z=+N^Z1{O)uJq^i*vcEB`X)Fys;yPJ&wkgV^l#^?ZJB*_+eW`^LPL=XTLS`OwS6&_k=fuUH@W86}P7y>0GL#Z%j( zlNe5pDV&Whdv9il9zY$ZOb;@+LwYB}n0AKCy)ziGVH^GGeEIIFtpTg@*tw^7qW31m z`C`+pjFcccM^E9BylpUEp_z-5saWuF{?8hLP{R^+P@wbTFmwP`TEu5#R9@!hw_h+d zNs1c+52-&=w>8*X-lW}``W)?Dnk+xEHkF9|6~aiu*1xUc7E=L5p~;4RS_-RRgThqG z%hLcNuN7C#hb5+s`T@1g%v%yExxaF!fSBrRRSA>iNb84f?^@6~qiWq8$NXDuXPz(1 zyOWiXe{JZ>;jv--ZNq>bFZMS5#hARUJT^|%@lzFs*oo?mxnW4bvVE*D1B0cVrId`b ze%xR&Rbh_zo?+qH<-*g93|JMzXJ+^)=aDs|{1wjlFSVe-^qMtmjpgb|tUhB6Y^^8N zPloKvAOdq+;|=@Fo9wfNW8+tK+qxuMPq8 zk%1=lqoU(?CF2G~#%^*l|B8HJEzeao8)>DAX19JCvz*?S)9w5z?E0?7R9CXM(l)m= zQA|HLe!*FERb>RNOvA!!TJK?=cX_7uZX4O-t_(YJPr;(^TV-gZ(ipv$n=I#_#r z{J2?X^7yVpOP%y*#9#5v$WJR+O9j49y%aIxOH(HcK+wYDK%O;ei_P~J< zW!8v665~1#@H6JvsSD)Ybo@Wjs#$(YWhID*zZkYnMtYJ&`MDD6kNuG}To;YGadD0L zRmGpJQXj}p3iAAXKNGxU%8kirEhRt;RdM=m z@4W*5W5v{=>am8zleR2m|G1}SXdBQqZ9Wo&i$BFuSGtPn;sIGqq63}VU(Z5G2k%t< zst*_uOm2>QAjHkJn~4&_Q`Kin=^I%gz?ftbt)!_p%1#?^NWr6?5jv1d%YRTfnB)u1 z?pDn=2m^7?9BW@*50`tfKl0zCULWBKMpedAIqzXF_i}<8-jTPR?hv({CoO1r?(cdX zj>qR+{z&A87#mkzDOLbOnjWIt`=7Ae^q!s!TN4>+aRQZL6PNNk<62}rx)YH z;80@1*ItvhCw0}J*m`7=sJIV(#Z~Kt#jJa}`hCFVT3Q5BHtPS4LM|-a-Wy;AUhMNV zt%;@eY5?dtmzzI87aTWu<}>s)##i2JGRf4T3{3fXR2!JuM+r;)uj{-0*TAPa_znqi zkE`ZV*piEzO^jG26-}xn7Zs`%7pfH%a+HFjdLU+fyC4_7u|!a)mnLW7F*-&U?MLUrW;->xEhzvGM$ULBYjua+>O87*4AKfDlA9gNxd^?un8nz4$#Ew zr75RDwU)iFyO-0V26(MC>s)3Bc*8up?i=^N6_4Luv<;(UPMLJvoRqmt&$E=--e*qM z8Cnj*Yfhz3cbfi0Yn zhvjK=3qK@uLi~%f1kGwQeu$QYghYq(3q5WS?lU+%$vZDZ_>S*yFmF5&lb`GldeC^) ziFDd*4y#B)b<@O7aZLd*7sF;gCeLf)2L|dbCO%#P^C7&t_QSX!7ZX<<2wQyr$VH86 zQ&o-ief>mJTppe1I0suHvd0dyRMos)bE%v6REcKpjSLceB2)|x?iGe$`txKh*u}iX za9myU)?cFjD9i!e)^B;+FEYL@w=H2BDAj+IW!&d`XYRe}J-a?DL!jMlx>iSb+5;=! z&fD+L4VUH@XOk<0CH!<0rIX72`WNag1cPqWv{+oOeuUz+$lH{tDA|(4)J4vlL#Bxn z9$D9I6ZuMx8>XEvbFX{!Yap%qyaKlD6> z&z0Jt@V$Tam^P!K9VKz-!4+~tAgJHOW7M->yM7eEB&`eWZviZ7I?hj@)Ju5Vw#p27 zrX|RRI-`$}`*yt$e<17M9!Gf2bjjNSu6VWQK zY|{&&*ADVNm!R3Y+&0J`ca@xe($&4x*tj#V-`^hv$dnud5)6pFk>JLF>LWH54F;Y1DwWD0B+jD&P_&+ zLT7I%hW~opwo=~AjHf;5I&%EfFMM)%qjRom;c}d5^Lx6$qqY{R0QsZORD0wff3T9P z3JZynWxXA@n6~eipKeEi6(WlH=m_bus|KDaS6Ag9FU(Z!aael1%>N@kwf6%{)-p`TUP%j1>uw~#WsV!D1~!v z_9Uu%g1hKjFMF=n0+*A?mpnc#0T#@icMd|7=2!l54o5%2#CCTEfx1_HDG&Du)maY< z1GPP6V2FUXV*Nj;7X~2=GCW&8ExZJB;kxa|qY~F@ zQ!xR*|HB1HN@q3tatPWDUSQqXPVv|$tlBGf1wTj(4_12eMUlb)=`%LIzesJAFjCv( zfnI!@z`@$xUi?xzjM9~Rvj5CGVk>SQ$2{Nf35a%U<)K9&YLIENYolg@6r9F`h>+t@Pt1Fgq% zt?4lrQ;WF(%2;70eo84AC9eLwY&eO%SOsWl`0n(d^9_`%!#tG#19-h%#@+iLAg>sN zoUwUQvu^!A_*^>V5^r6kN|^egb`4Cnp3r37BtoL6><11$W~QO-|TbbH1AkDRSHIWqs}Uh?0FCQP^LeKR}yeZ%>JkF|d}!nDh^SD}AW z&96Nie_pNd|5JwAQ=)FuV(q%jKYe!jVTOxzANq7VAe;?fr6ZE#f~NWTCDzRAeAl$e zW#y;iGZuA!J^cFrEz@pvVHrkGrdHZ)kOnGzeLm5q2?P3IWdIgfLiP&>^4|e}aBzB* z^M5!x|3zzqm8t%B*^m~8Fm2jM(e|jqVt1RI8_qo#nEI5;#Lc|^obeBdgzH}<5)N3^ z5FYO6akd$Hl>`>_T~Bw04lM-EXy;S}Imi9nDlx)XL5kw^XdowSs1G2wF|2 z)ry8`Fq2ieIYGJG1TkJjW?E8sEtjk7F@XVxjle|u`xi-BQ-_3!2)CU4$wApUbQ?0D7p7li)*(VwQs zx3K?c{)7H~yZC=J|382ERaJALe~teUWm9xh)m+%*nQiz*QT4k|0aE{-ox7Y|>c?}~ zuXm#NZTpW;Kj%quTK!)g-T%kJ`9FMlSPHBAC^+$mP)DFPJTuwQ&YvAMHD8ORA3 z10Uz#dY?_|EU&^p2UB(<>xvu9F3BdGll$#= z2cPPt;xA;s>O#EvTzd-V5z_+hpUnROoSen{ch_WZ$HI7cnHN{C`aU9Z7KhJgf2;ue zTd{|*c+WaA64I^FQBcC{_Xnr%N#+Sm$A4^D@7wpXs_5@MJvB-e*V${ z`R%)RS{>8Ev`bI@yWju!_VFF9{4L;3{HdjLje4s8W9SRQYIFw5V2dFfxB2||J)48d zb(Y9c-wwLIq<<{|J#^R^)vcCHD<5VO{P;W~9FNz!^5Zy9PuCBD>BN!#ciXQo^}jH7 z3T|?aDD*Q2o)T_fF7T^u@HsJTc_{^yBhd7uDD;1XM6-DDOLA{{`M}@neZhH9#;_R_ z$0FpliKQmXO4BP77en)ZTgM^w$fVbDrM&m_cY!6cS`r^bl0)PyK+`ep7h?>jGQINn z=`?tqgZ!^UmwD_KKW7W7F0q-;*B(d~?$ISQT)kGeyLC3& zRKZC(%@GYe(P-J-|4*&IqF`fV8+W#cE;L3@m1>()+p4IjG+7c66SF4!PbY}aT-Oe! zG{$v2peHn{XMBPBxRh?wM;iWz-5A0?J9(A0wL>FyQ|0;!ey`q+$x#tIR};VNQ98im zs9r1v|M>S@&=SeQHveO1Lwnk)xD#=@Vr{GO=BhE}2skn|10(PSF3~PS%Xy5+jM>N- zOV)2ex|XvI6bFJtLse}eN`s#mou04zVbYUMr!z7nk5)MHHu(qyeZkG{J-fmp^Ze{L z!`_7Sc3uGzvmoP4Y5W?u4s3phOFCZoMLWO-C326s=Lcl#a29!IG$`+F@>td>B=qtA zIl7YXY&uTYY@@fuERYyAt+-dxn@U158#%Wu+AjydkoWF9b)Syhl=@5RKGTqs7waxB z%pTe?z)YLXxo$@QbLw$mYWs}d=8qY^@W_FC=GNW8AeTZn4ra4$mgfT(X1_~F@l~kO zzL57+ZRN%2g=Y$w%x}=_*Sm*+mLEI!Y5Xj9ywYa%70mUotS_vO#U+0MCocziVto@& zicZP&0&oD~V)|Z#D-`M#<;NuY3J;0p1YGaC5-}}4kz6OfR|c;5 zc&HHCn-IpG04PLFV4o(U8`#j6Y5#`Y01Q?@C3>Gx%$bHE4erL^u6MMs3ZtyV zW+8#yHD(f)~wJ!Fx+gW}ZTdK*!6pFOAIw*N1nA1yV8o}9jckwD` z$LH0)fV4&QR)b`u8Sidb81k)^z%>8-k)s5>;4Oc$$S&`!Zqt)?h~D2@AHOMtnkeAY ziWcsfc<#inCo3;UI;hC!Y4E*ad!Eq&ZYNnY9tR{-=y8v~4NphTb|~F#;BP|w!l+WL z8B-A5(@4LF?}U86-tWfZ>`6o)+Sw)bev7($?@r(V_2g_!9^@gN++N-r@?{P;)8BcE31|}>pW}PyYGVK9*#crsj&Hto zaLDKOGNETgqVTVO#927Xo1O`F&2E2-p|?6OswQKRU0>SLpD~#CSJ-Qmzup~ ze0^3VAxc_(79C>K8=!<8jNxH{kWcz$h;3=@*Q!DPWbqF_orKwFv1iipeIc76{Sq)y z>U)?bAi{(vicc#66Q%V|+>?!bcll!@lAOCKBC3k)43;bEV#1?4X+c=UFYdWR01&V3 z3uV(1eJM&YaZ6^!Pu6t}^8&3p=GGC!@j;=li1ehUIt9^hIS2CXf6tr|YHh{4adZ3Q z0Ajl6$SwG8Y)`g@<}5daw6GqgpDTv?&=ZdZw%PN&(@IB5C$POPFo$m`)yqzrx0ZRY zUtErd^D%0aUoc;*dagltc_^_;^r|khxP^E)GY51^5Y;3fP60D^`CXp!AkKUcd3!fe zduJ|ybj0S@|6!t{n1~lwrqV36&;&A^?nbf#G)JXMzEN7%EgPPW)QRH`g^BfJA#}rC zX&PYLLUW!vZLXka?SWWF+_m5IrjLPe$nnG-!y=T6J>tD_#LD^g2Z8dfJ1wz}YF@GH zK)17~kgE@|UCxX7_tgi%>J}8%RIR&wcf4!|?E8l}z_{~dmd1ar7OKBc? z1GW}|iQb>H;E(8k|E3W1*Gbd2L!9YM80B@?W&X;v2N4dix`SHIO{%B9eE;wzSm{dD zd{y7D#UsY}tJ@pGu^@&BoTRlM!C%Yg)3c6$aC@og`OsGLccGh0`1c-3Dg|^7IYHXF zkD0!avsc9B7uyWE#EwJQq~Fq>n^5Dm($yxZn@)`=Uv<@zmGgbtc#BYNk&zq zYo=&JoBq+{o%}ifu0dwJAw@W3qmzmJnkIu_S>7iiO398pe8No+9;Oxk7U6T^#_SD~ zUHCe%M(;t9U*cjvtL2;v%n{<7QP0KVx7BvVWKEg1G$cHX%XzV6<6=Aa4V#2#%qab? zheJh8Ur*CQj@aP*?fC2&UyT!adA16uT2Q8h0TX~m;2$u)epq|F8ri8mXGCYb3X%0- zqE&TSyMzyXZ8ObLSQ~)zdlf#uf?+u>%PC|CeQlV*c#hQ7CH44C?1oPgxs*4A{oR+; z=}y=d2aqGM03}ZR^0wh!7Yb`y`oM=wMooPUHGHiYRLY#hLw!Nu0Wf)aFR z9x_C_sg<5#K1cfYJSUv6CvM-;CDyEboIVs>xtL{;P4>jgryMGLw|HMAD5^-n)<1kL z7Oe@mdxhE|@|vqTh{ic$<;<15zqd9)G*Pk0Rzg}=zrC|dqQPlC9g{A-fPbW4A?out(#R{n)pa$K zo&48iPu~n&Wo2PO3FTzou~DNWFIEJ&4(CM<+-2QN#(DP z(|r;rV#Bn$@WWoiIsb_$1NQCcU0BV{rmUtF*##v>*P$^QvJ5HS8oY&lI52~ z-$dqy65)MD2rL@sCb_?x>l9t5wwVuHR?>{0WRvsT$01aLzpCwd7l%JrY4E7V_`sf? z-i+m8XOw+)4qrKqEv}e$%{s9jBH9g1cypkSl(b{3dwc;_IFubMD_mLt|GYG-790o= z_+hLX7&T1FoBJ_XlT|#8nIfO{_!9NtBak)>wJ!DXoj`FF+20}GS{V7gjsF$yC(>jo z$gqr~g*?BLjKX41%}R%jfR=AW#FuG1pA2EMB*Bt?fpACC{p-(0{Lh zIN%$dm}3xM{;unUUo(sUigX$LHgkM!xWM$%oklUTa%OWVA}}!d4)34D7nY^Nqp#^_ zFwLZK3#zYQ{aPJtv-1$9#q?RO{av7MCz8@m=u74}FjkUlOiElr|*iJbSLyoHY{BYd)c@b*FiFZ$(J5SuN-(@_eTJlB* zlli=TR*|@xBbVO6kc+PFLJn1)$KPeQ3U%53MCMBMb}=-cpIM(8X+W%g<2EZnEePFg zsmOV2+Q<8Fd8cn$&fC2%mJ})7)u5bDTD+SEJIQ+HNi^*;}4DFfYEcq2LlDl6eadGU`gBUuyn} zIWImU)#iUm5Vi%3_@>*Pd^fhr|BB??sCVwmU9IN_IX~RdvQwopN{FVnLzHS;pdvJ% zA_Y{F+U6>oS~6C@l5bngUE%t!77ETbU8f0qIuLt(988{5otrzRuapTim~W2%d`hc{gP=noqKy8| znVhOFA}>%K%PmVu+zp<)>6(i}m+BOo~{wWCbW&U@1Nb4yqyjl3brhzxD0W zF5LbqDx$bK6M;>Rf_YRjOHuA1Bpoc)D^K}AAO>k?Z~*RxlS)WR@`W>ANGbsTNfR~2 zJiu>`?G=eEc?_{^X;HI=TL^3(s2>OHWgsFj!az)KsnF_kFHRfW0R*m-Rp0K3kMKuE z`$xL;_gC+zFp@{9xp6G0$G+KvY~uI`Yf(X)x^EcgQyq~6^NxQ#@3cwoEAZ>Wb9Vgz z#hrNOe{HtpeG#kEomCBG$p6D88!_{>9Au-ig+tIGGWIdVN z`=)QX9a5+}uRI^Tgv4bo3;94l!&}bxlpjvKJl<*zjC#IFT>ScB*H(>* zUoHqd1h5kzNkt$nU+(aSZ>um^;8j_N^Ruqap1#RIhKBr8mpG<})l-kll^pDNen`E& zzq%>5eIbC`1!zPm368~9>%_#3CnK`342q2s@=9`~d5NnIdymz}->P91Bd?#_bB(na z%w`^(_xf`}#IwkZSI3 z&CD5y5>+}9SggJX{2H=1P&+Z+*c7GxhKfr?3<-(+lXLgbd7}L^cXSW72uXk`m(ZmO z$+!Xa!?WZ|Z@IAIwvmF*#8zGnF&(I^ZfKKx%^IG0uWhwGkGxt`BXsRJ5pfvg!^~{) z1%Nck2pW|}R~Yj7f@nGa%sP^GN1UOvP0lfM2-QzR?N~w_w>*i=H{Zb2_A3syT+FMT zGg=?Bz?F+(Ba@6nAW~r#QJ;;{HTsN- z;`=Xi1alS9H^|Saa1mT`oVS$+$bGX!0|PD=0)jXntRAbQz83Ee{Sh{~-9YFZyf6haof&;eQ=)ZM8skYwyV?ol9`Y6YKlEvc@L>9T<|l(ZyLA$ezic z(4@Q31P;k8o~YQ_-6vA?kf+s{O*JZBu9Hl7)NP&)NH_F>Cg-_Vfqrn)YN3xgPB*uS z?+Ju^)GBRm0cFcdg#s?fsfZv$Vx1al#siJvL)Pg=^tGW|Z1! z->Yh($Q3hb2jOE*1k+Z!dVYo+8LGk+W|ElSR-xeok$@9AMf_LEM@)LWb8>4ZH}hMB z!)>@`%2vFUNq>d8P{``Ymda^WJC3h2x+qLK*1V(u5+w=U*s`oWev%bz}lQcga z!j^l&jf3QH>s*|Ny*`4mx)!ZD8m~ z(T}C$i6mGjQjGiqpSh=9%z*WYC*IOV*DDzHsk@4th6n?P*ej(h zWeE~XhL7c*4YB2~#B8u@Jd?MTOxZX+n9LqW)(V$<=EX5XD5+~GS!=v9UFlb5e>mCIX|5V;()==kchc-V0ui_%_TA6fKQLd( zF3dg>%1pn?+U2J~OJ^^~ula7huUj9M9fXME+8z2f!ocHKW2@(Ex{>>v>fWleL#4yS zsRjI843Eu^o)8(grhR2jdEhLR@Z zmae&zB}^X-C7b-i1t>}PH!etWKbn4=so7&J%0$C{7_S#h%#B1t?>*2q)VReWw^tK; ztU;46)9l_I5XYj@<~fOis7iO=-ZdJ$zdihFJ}%IrKFSDaK*dz&kYBGKuN-c*826mW zce^a&%0D;N;%d&1FuQ2SW7|{^IiX)qo|`fVet!jKI80ceRy~@O-Olayce+%As{~UV z^~JU?3o@i2&2v`XXQ8KBe~srVUq4>viP)qP8O609Sh-MmyeKq`pFM3`OliXQf3N}utcwLJd*_v1fAhJAj8xueWMRwb zEbt%OE(TysJ?7jL8|Y@e8d{wGSY#@3=$~BSdYb1k&oslFg{ex)Z<>s|J|KrwK`M~g z2Yu|04GhxQy2z2P&t$XM7d0c;-9BMAePARu1|^9>>wzCWL8WK&pp|xdOjd25iscyG zkw{}^P8NK)-5z6`k#Hkko^Y1C zUG2_taQeWxnlYHBZnZ%%r9jlfgm4&HfKRR7M5U|zf)JXzG?d1FJe*1%u;veF^Hfb4 zp9RGkdA(JAdA{`O)%jK8xZ}!*4N)fNwk*l2Ul$WHV9r(&}SJWx{QTfH@}NkSIR znjo6*$^$+t&0_hl)z}B+*zps{W-MB2VWkf<2QC-0^MGL|y`5ccG< ztHNPGVz1IGEBRR&m7+Z?qGaIk!FGN;x9R~nihNPOLCm{SfeYulZ+rmpa?Qb{oGpG< zWv{Pa&@(UDxT_Jl)tn*gvLqDv7@~n~IoR+e4FB@mIsRgt*k0eKg6MJC^*LvO$l?98 zwS{no$b&R3v$!@&KghI+Ly|UY_I7i&=G4tC+ZbN&aslT6;kl1tu=ypEF<>GRa`5a9 zI_7I$#}Rx_ERlP|-_%m7fj>eU*7AI-Ht}-h3`uSG$cp!Sm~CKA>)ZEfrY*lu-h_}M z5MZZ1^ONtgP#Uesw2&%)%rVO3G!alTQ_SQQL@th#mRXkdX7!&#HZ~%RO_sSGvtGhx z5lD{`A2|#{Cc2~&W^z|F(ENqTsXHRrZ`i$E?O37MftN0%1yy=rz!!kM2ib8A*jDMV z<9a6&R)~-Sdr^{6bU7vx)yY}pD{5duk!t~r_JeS3dEgHN5tb8wYmPg(ux1(en@8oEN2adQ=GH64vJ(-`NK5vbyYJx00kj@6BffArDp1@kf;y4W_|AS5$=NNwZ5zB$>ust?kbNgs~W@4$2YA$KcUp!eaPtv0Dy z((Q>gL5B1F}XSoZ|Ji!kXxvt$l%CgumA+O_B@0O zU~ChS?dO_n!t7+ci45lLIbF=M#$)$~&nzp!(~8X(ADJZMu0A3Zr#~lOb7ZX~ef3wwTm?6&3k=JdGKQJ|ZMzM5Fr z0^Wg6J8zkzy1Ch$<^9+MlSWUaA$lPmT{x@2Haz?3N=WCN-vW?>Bu@+tr|cQxD;eT9 zipK@6IEmY3#TY*4)Sed$Vw0Xx<;F})9$s^n9~O8AmOSBj7Id^uGWXJ4%9$9>UbG?K zhED<|GWjv7RCTnD*6r`9<5#KRV>6I$XPuvYE*YIXP)Pn(KhAYwFQ}QpnKAvF>ttNR z%%;%~otTlmZKXrWRRQ4+xvStdj@NpcfMz)hBhNOO3qO%%od9(>6%zjD^B~P)1tZ{X zT*G8>&~(4G4m+j8@tN3RSAP5!#+xDQUNkb;*7XS|>b>-LG<%L}L|M=U?ts=n3AIR$ zM0`2h=0cPfu&^B=@j?-IiIgu)HPB9wI7RxP`tYU0^j@XQpd84nY=!`9L`5W=!ECee z#k;REAwB#kD%8O*UFA_U@LjlKX(ZZv?isONwB7-|1mm#P*GI9O`Lt0?KOxw&xM9;# zZ`E-%a~Y+k#E)PiX?lG`oPeuin3Wg$7LcV8JwG2Pa)_d_%}=9vW=a|J(PlGW>;?Ob5HDWOu`#~u-x zVfEyY0j74vc~Y`C84%pJVigAuQBvkwE7nDPSel?>;>G@L2H$ZAdp1Ifo`m*6iexSAt zOuCFOkbl@SGs1uw%8Rio#n;DV-41ude7~w{P_G|m--kbcN2WPXt{GguNmudy>9UM_x?Qzf%YI@vg7+M9L5#hdsVfG6Bpca-yodbt#*;x55xz0tYrSfAbZJ_3~)Aa`%hZWZpp@btDKDd(RU}BtQRc%i`JU zr-Uf2bxmw*@QVF%=J#yrUO&A3w;nFUH)9MAFR9jBEN82`$5}m!+hHjf6OFs&mefEw zCqMBW#M zyNGVo+Tz9ZMn77C!d`2@SPMw@<#5%3!x(qLzvQL z%I3QYo0$ueB7asF$yGLLxA$eD>Oiw`; zareWLLC5y+%+bWn=R-kBxRSp48Yce7{f-(;MJdbzuE`v?be@L04pL-g9?0i8=Cydf za@jl;2^!V?C8ORkr_N4sbdN_$2&$dY`QzPd<}L@zNvrT0V(C))6nDPGy*(c|w=k)m z?m{DCS{~Yrq>p(RzdZ31xi7SAkePjrjhD{4z+gYqyn zf#i+sp#aNQ;nYJH~jog0s>Z4N%>z4T|m5+c7j^9h&8abi!t z(>y-Miz9Bl=R(V(M(kh5^9zVW8_r%uXDBIQVbd-pXo%R%t|7GXlQ-7*OvLf{66yg27IQ5reR{_RT$2&|9P7u8yg@3xyv0mXrLAA z)SclQhZeegagBWMf~*bAt)A8*dovvFml&0m0c3kwmn11-6uhl0!j(B1;qy%Y0ef^H zMYOPQ0$|EwD19)pUE6ZL)HsG&sbp z@Bq|tcXx{SArDHlnz&l40wfxjC)!nfnbkWq&B?4V`+cUvLoClIFSVQ-fKC+UB0G7s zvcW8aeFkQ1$WQLZPYl)iquQsUNUY4tSUAIeBf&ieY6W*FL2uSlho<>tOyQ&UKoGy+ zQPBJwkj*`VHHn!El>P8gAcgXN__I-`4GL*OfBwb%_LLKWgwZoBr~3O)1>5P9j{c14 z#{|UVbm@($!sr)#yCg-`?bWW%Ma@*IRBY@41s3iYF_MUA1?`ZlJ&)%Eh&Y>qhO1kp zHu{qhh%{Q^JGzTeJtpI?PkDz+*}lE=KqW=gq?5vo8YJ#1&(G4^)lyH7(Bm`IOi&Xw zuQVEUzo|d(63frPhgMtPKNDfOH|05rV~XdK&lc|mzoh5FzEBZu?hM3jL_3mwt;B99 z5?HOBmLn7y*SqNqq;DFs!YJer3J@wy>Poh|g) ze8N=+&U0BQ0IU1N`YC>hCWq}u-J%A=Jd1+N9?kkw$|3^)$FB@FGk~vw!*LN{?D`Gi zbF5}sWW8$y&x?J@hk0=L0pV3$_)CM0tvO42K0?1dYUJBn}3R zf`W#w+NVr6h&;TklF~feFO?v%eKA&kQVf()z4@T!?|Br!#;l&fBaBf7=a3$TBaAF# zlKO(dk@HQ(P_jBHrk6%2L&j$c0~#QA3WP%w#%)VG!!)*NHiF90%7_SsfN*b?t~n%9 zRA($XimPA4p}MXV_bbg-zt8qdIJO;_bY3Utyk_*tXNvX}Kl4A;;iM?PqzSE8@UTRT zTxt=8g%jUHOLv0Yl}Oy_IBN3xtsRhHlggJ`JH@< zfNpz)u6HGz^gT=HIz`(?AUnV2{N$Ui6}fs6io^y3*6HO(ID0@T*{7)={C&a9NGypuP7rn2MJFd_vLP;I>hWYFBXxErDBGTrn^2|%m}nN_mFc; zh!WreqEa`Y(=OHZEY!=X(99in}hjU154`;TkY*G7?jm@`KSwr}Xa4_n70Qbj87ZJYVRLG#N*t$=6p1ouOpl|YHJwS38A8#cHj9j|8sP?hftd@HgT?q@!MEnIz~_cNTOTcT@hRC`!QUg)(RQ@M zjYv>5ww!)P-G0czAjIrg49ni;y=SZ3*7OEoAPF#>=dd;`MH5V(RNvja4UOzcxUmF= zPg9FC>LPzt2Rl`7;||`IAUE-9CxEW_n3KMl_FZ0;bPD9%`S@wHnab)a$M&Tn{-n|; zIeTHurfa@FK^jD#MRg?22LqBa0f)Hpm5iy*7K7V!Gjkuj^+I^SC-}vqwN*eRaVBTI z#Lz;Q?5Tz}(-*C36rc0FnE6tWI~Vx+ma?VVWm2tayiRFekZS#6;)NQCC`3-(1M+J& zPv;dHfhcwjv$SY==$~``2vuYJjYd|uU z?;Fx_Ig6vu!^b2wZ$h_xrG#Yco~728w&KJqWji}A<{;bfL?t{inozNO(*-FX$sf&C zVec8Ve-4ANP!1U^*uAKxmCp`>`OgVS*=@t>i%~6f>q=BD> z348+U+%c~$gzp}t==f4)49(OqaMRs(nitX=aQB1$&AKQISBO;%==s`h5*OZ}K^PPS zo>7~e51etNA!V40ac?2+s^qcVrM+uB_;m6P%5&0sk3*pVHNCx`n9uzmvq@sA`jiH- zaV`N7S!KB&IWH*`M$1CEe;$J)L|W{Of_L z*bFWkOxmy1i8B%#fJWp9q613#USsrNs};pKx!cG$ZTnJoa`Cbd;ZudVb>m!LvkzBe z0vzSK!+E+?$88Q_+6s$cmknDs-{HMYk-&hR2aY@@F3~M<`H>M7hVwYL>@M!)dMivk-}qYDZaJk|Y$8Pprc^uzULm zhFU|YxV^UVsP3Qt_-OT=baB{H*^%~&GR!SsOxJMw;`Gzp^jb$mF=c%j^47w|xebpO zo#m9pfQZZXc<^%`_%0qF+3`CwYKu;UG}GyTFD3IQROWUMLzBMdBJ3Qw+srwvVhmU# zMqJHDR2;;o>vxOAM6*pvFs?8Qa6pWV{WCJ4P-!xHW!^1l8cvR4`(n}jTiGiw9v=}I z1tcss3_qqSw{;#L{YQjbriJyxbM5cN@AuPMzblUt1h+?Xq`T%w)uURbXd`IRL*j=F zd*B_4)k4$rFa1Q_v**_p2_bqyph+Z z(lWXJA37bcvji(qnVj8k#nsAn2L4-n=M~jd7wvm2$R{d@1(d2HT|m0@CcT#sAataK zUJ`0RDIy>sCG_3`frQ?hf`EYZ9-0CH={2E;i+tyvGw#zJ;X7_X#u3S?Te%(PR=$S($t1w->@+kiGg@CZ>hV)#7(qZJ%tXzZ+S@ zIf#42v~tnd#r|HW`gy0?=7$2dTt`Z!u78cKxGq*+$gl66YI9=)gsA~n5*~Nmu+3Qg ztUPu9+vQ{V-RNb8;esp)OS`|RYBBkj1z6u(dx9@A9M7=h$yi@Om)!;C8a1T+uPXn8 zBu^o^2@X1@R-GU3W_$4H8=G zy1B+I2wUvV%p|j3>lkg+wM$X9$ccGtX>DV!25PHs-yr9fsSbZi!#3}QqXxnQ<9C#f zUCh*D7U;j5?yf-H@Q`B_t^V%lb`~8PhzjF!oBy~mch7{q|KdUZCavi_)x5io?Yy&s z8 z+e;lfBY0YxscwD!St~k^cUBhGuqo+t*BR`MD`@W;X$4sM?M<3z12ykbPGWmB%9X2& zjN6_PmvN1yGa&BeSoY=AO&MfOJS~In=J-Wgyb<@c9~RbW^yCI#K20RoHCoZHJH2zG z6~hr5o2m83BZ0{|-karv9Dn*8U2$ls$~ntpbcE*`DoeHe`^$MJ4}8>{Jni;jEb`me zWXXNU0eRh5@ie0Dbm9GX?Gw-9k+UBqWJPqwd*IALA9qbqFD^$n`)%;$%t!n<#jo$P ztGKN$v!wd?t-E^tUO=aguWS$htful)W-aK45Js4XO94!z^%%2)5p(PHaE%U9rP-j& z9J8&F4+El)zN=p2JbBa$mBLap?YLC6WnG@M`PpXm#DhT~Bf57|GiOS4^rv$~bul-c zs4jNuRzNt6_(V1R`_~%4ZntGb$lQClCB2x6ZoU$Pdo;q{z>W3#J>pP9<5m5c>m4-@ zwxL`q+S}O0S0G5n_cO;QJOwn6@a0ZSR=e4%B4HT5kJKD0kevZRs;3@m7!FG3xR>H|5CnuLCe8ZoT zMU4+cezNruOARAyCew5%oUwToWC+iFpG)kM{Y6>nP8(7ZVJ#TvK zK(OSP)`LmomTt9+(10BH9ys%J$RBQh94bl?;?nc+xMgqD)T=$-%kDnG?XxGaEn7Q0 z&T9M8$hdt*GSEaUG&<$P^%k9z+D9HMFJI&%kIrGUD8~$o(Q~s$aVNTp5(<2=@|SnT z`vyw4@7?P=_#rFmxs`V*{{2*$<}sYW|1>HpD!DK4{#0NNt1V{ik;-M(>)?BNp<55? z&`dQi%XXW=2Ll4Btq5J!Ehp=xKR~s@fCegHEu>8?%*?enMHO8Z{*W;u|H<^%A2Ht| ziyCu@L!)8p2JS?WUjXN9B7+&&iO#`68Ae+ZjV2qw!sO80qkyxU4hy3~oQ3X47NAgd zJK&ls@CoRcPMvI~1LH}T$*^pE#{xfnPk$ClBI>guFMh!XM_O46u2~*%>@oG^q^lM? z67lQCg{Sz1YI%qp4Ai8366yU@>s!{e;1Q)>oRNJEvp9ahIH90d(sX*Gk6tKdv`%y# z=2viBv2td{PD3Q{p3Pan-1ro=aXzz{EW}a7P+Qn%`g`C11)sB8L8RKNVi8^Qq!k%1 zb@t5P-j=4oaP23X^}7|pKb9BpuXD!U;8|Gp<88YUYIn?+4a0rl`*HH2ef+jJO(%PY zXn4fL8Up1`Z)n{MS>0V9XetJEBbt}@Yqh==t$LO`F|#(rAJeJ%Tvu)00dNJKM#%C?}`!+>vQ&UbC?lkkaOB_(Bo6Ez4leb>?c`~=5uJNRtYgV#Fu{)O-jrrwjUA3-y` zAEqPFGCD-3_5707yGk!=M`ycxhIomT-qye z?*hlGmv%W{;dv!JPl63D*!E;K-9C04a1GB#n zkAcQtBIgw)@bvvZwg5Zv6iXpLviTRz1z&fN|76D_!1-tTO`}+c1w2~#tZr+HQlI)a zRlj@tO;)ba!bOe`oh1dGF0Shq%b7l|>+;51L`XtMY*;Z)tR0be& zVq@(!?hms(lVr>~?X35VmIy&)zY%Zo_K&Co29rMgG>K}NB0Y!^@A@IQ^IIIk8@}`9 zAD1!>iYi?#z~HLKK<$FxwT|&yGz*_1M~KAfx7C)j7L7gzj3inx?hjcH0##}CZyX9W zC+FT@cuGB#K(EV1@ztAp1nq};2>U0y1G%)vsgNDq_-Ji#r~6Ho;ma@|mXdqqpK4w5 z6|2YnW)Ro7F8JRgi|P{43b?FFquXAJwjM96q24=Opa{Y3W?5tI8xt322w$eF^~2js zi#3sk$G#vckVPyWb0NdU`^lE$w|S%C3`^b(Rv8u_W$DH91k#$4xzjN#Ia3Wm!L>N6 zb_~bpS(b#-L+{Qq&rRu#M(%|!@*XBn3TUTLX&e3(M$Uum(W}j!GdIr9bU~8lU$G}8 znDeJ&d{cQtzjXd#*kq;RO3fP1^TLzQIZ!4LiHc7aD=J;j=SOy@9yj>$GgJmI8xTTj;vM#dEvK8_gdLt% zP96K}1(g3yUYL6;oShqXzf{;gjkfRhZPI`SP{v%)nt;*q=?|-e`C1x%PJuOEzYYr3$nAH7t@W~zY38T zk&6RP51uuLQa%rU@Xu{UIHg_83(iLr@eG{oS^U?eeQuM!&;~rx3OALKdZq}^;g@E6 zL8|>?SmjxyN!u2I@J#B(O_@68!tIHlWO1{;1LD40%zURi!Ydx>SoAe_l0x)$ZUCdu zDNrl@5*F*wEipTH(veUFh-j@`n`*#%AQXq)i~?xg0Wmpq(HEipONCz>O6}ZA@6!?d zPt(looT$4P8XH-dUs&I@z(d;weIasbcIdU5KN zRUYfobZ_qG(yi-(yZi5uBkh{nx$43&#Li=bP*CYU@8CvM3d|1<;xTO8`0^l*X?isuY@8Ly9*seSZj+>BtYcm;(xfAY^&`a= zAPe7f7|68dOQH7jbDJp`NIa!?wf6k7 ziD%0S$O3AAI;Ks^kvMhTDFXj01x1`nwl_RQ)qReud)!*~1JlEsc=X&wmIf!%4cQ8%lEUHJImwAVYf}%(7&=xMGFWOUOcT?ILbVe0$aK09$kig<=&zLfkYRQuz4UX)W#w%E zTRMbZwP*H)a&Kpd?cpy)cUz)ClOH^M$RI4N-v~urZY=S7Y~-tuPj$$| zhK6?KLa$w>!>KY)IRw1(6w0{UJw4j2Z<=h49{X;?U@5E*3X}+FXq))kNPeaUxzFi~fD#&~G8a?hN^Tl2+e z4nE)BNiI>gDqm*^TU>Vth4aSPXM;rCT5t{Na_bfSgy@I1-(wQ9yP@GJ9tZE4#jW|6 zTb0+wwt1+3Xel$+{7f9nFuuZ36a4_|3SK{&;F+4XawGjKOMXe-rVYNrSYE!o`;8y` ziziuCuA=b@4NXL(akEYS7tf?a&BoThZu9kFklhvd`tRxgC0Kg@zdqx?J1+daM=g~6&%jKFWTh)eM@xVho74LFztju(bLmU&0NxW{hVeC3(yj9jC;fU3FdRv4{Tu@IidQA@SvJmauh2cfK6T>$>KD>H+^BeV@DYq%@8b za4$h6p^8R^Bb!QN;6nYra{re9zZW8APLMUvRdeM7v6k(!oQ%ZI!j#sR%dMy%?N(*% zxy0sz`~ki;p-$GG2!gbOQtyG`P+<7c!l#mei!qPo{eOsSlF$#6o0D*L)`H}kF+XfO zrtfZE0oaM8YI*|8cnl;DxY)OmS{T=3iBcz+iZnf^z_vu`(?07;B@M$mOYt1LQs|)3 zDKw?VzZUOcTF{LOdY3qRelk7z=(1StMJN|AP5Q8H=@;7XL&(xLT!q;(#qagBC3GfU z#e{H;J$^t|xFWATmI<2M>G_Y2mLyQv_o&!ov9|ipVD%||s^5`H^OGl8T=qH>L?DPo zkGmVx~0)eX?@+(FpDrP#ZF(x zt&MLXL1*(cJabkfA*MjvAw7-AGNq4sLH*{`_)VW1)IBelO$AcwOd>1Re1s0|h9mlL z*%L&t8t;}sx+vSJvZ%Ge@5q_yu0rJE<_%7fMyptnTDm+dMAM_>0*cDLDuPTS*jOoU zVt(?l9OHq>7cuw0$mg}Yn%$SESG^>(J)^o`dxS>Mi{o^q@-5Uv5MJKB6A^{C0?2y_ zAt}uqZ^gR~HBlDcaD=9nT-17L3JVqZ8$KS+;uvN)))*+0+Lz!t&su#@FGO5(=%w5d z82HHJREs}UP{SZA%~@6V@C&WM8Tx9#uW_us54aj-HV;I`H_OCT^fM`h}C1fYfPohHMpaQX2b<=`Y6=3)*4!h_~J+JcF0-6?%4UK zk%%YQ%~<@PPAdn!>Zq^$V2Dq zZYV5LWMv?RmuU>Z-QOBp>_oLd4~NxHtBog71~BSk zhxgGlGk&_y>S}WQ>t-)fMUH1l)-=Txy~Sp*z`Sr1`g$V;^t`wvg+eKc1>8P;CDmKc-uNTH88?LB0$NC^yEj!kkZz%O3`i>R>a@e zymyInP3I@jF)`0$*yrt?(;7|O@Q0qwtvsWstsVx9lryJTJk zypx@AT>_Y7TSR=G~?#B+|F1+}pch?h1OSXrX| z*iD*Ia|S+&o|4Zes;ina!|{aYR&mLx7}4A~Y5-?ZV2hKRn@0lh+a8#rS{|`w^aIH^ zAE~`=a~-?6@RDj?3gBlI6{XK)U~%9o9`M+9?--SN(FVm;pp#~nwxB{%{KEC!W8Ypi zPIpu>d&0rE7QKraKxQ>LT;&$KIyda%LnmDc;@fPdUVkXVm7E6=;YLMST7TXQg{8pi z@j3Mu(^W1zC{L z4wW!POa-^6xF~mH=SB}8(+4Aax50L`Qk(0Cqdn8oQ+={27$o|{fdkocrv`kQavRAY zX}~$HI+PtR0UB@|3kv2D#3^(Qg?*21~pjPzA%B5!pcg^1H&BoYnia<`reI!qDsIgeFLOAg3REgy5 z0J;(doVGWE_mI#?aLLEqXe36ox7u-9`yTgx<43{u9B&&Z@^LH2r^A}uekp|_+w%6k zQTI|r>k2md(^OhTCft;#6Py$Fdn*rS`^8Uip~Tb%D;3t&Mfo)sq6z)pl;`#SF;MJk z9`}UPM25I%)md{&c=}naNxJ_!?R35O8etgGaMFgr)E#Ewol;QJs9yGHgV>UW>0O zrGgXJzvM6fZ8NcQ_JReky^9Hdy20A@K@Do9D5la!J$@i-NqC8oI@6h|_HQY<=4Mq> z+^+V!XlvxcGbK6xoC~);Z&*5%xmGtl-XH@n2eLEEOlYVUvnZ44S<>>WKcN;cE?vXl z9fdp314a`x@68KnIo|jgt8DvgG!CPC^04m&757mxo%bEopZ!?X?y;KZwVqTA?zblA zfximK`at(n(900ys2Fz#+^&eiUBte_UL*gr3R%6^$&VEY9Uz0ZzF0VNfiIignuV>b ztTXaVnnRRpxRZk-+$8~BLQ||I%5HmrjvgJ7WU?nCZNZh|%B=6E7SL?A4$XWU=rM>@ z4q5BHP6a4B(S!}7GH!(=G5FJkwqpWVL)meD2IkVWls6B^6{j`gf-1$DVM}rBTQ!QS zQN=1THo7=GIkAYHX6P!id|APGebDGI+Ikb-stbU#`E%SP+mJK})q{^UIa?g)bwA+k z;u_r9RnR@mHGMSJropTvy$#Drx;Ms;Tek#HRbPhLP1l=?R>t;vanxG#=X#Y)GLO8R z@|Q2Rr9Hoy9LsPNduXaFg#hy2$q|c=>cX?P?P2@fNUT?@yQ)DU_)Sti%uK#AsVHk{nY|s!n11FZv(jL zeg#I-erV5Ih~IYZKA;Debr>VjyIsi-@fC)gym}LH@#)G@-m@4aa6hu$L*{yR3XKx7 zn-5woJ5h6g^z)MTSkeZ=iaj%XAM3w8=1L!5jUb;CpDYigmRLc}($ua6##VbSk~e5( zhrA%2qoa18V@FcD=r#s4C++r?pt`Ee&$S*$f6@#a?XWln!4x5np)O zea=6Tbr~|vj?Upy!-#N$oY~zR2Gk1)L;Ra_DL>|Mk60Il(;NH zW;I%t5s`4Po>k64w$^4jZ(ZE)bgVy{3ed5QA$rWNr{`!xJ64_dQvA<&f%##)a!AAa zQFd;HVnexQPz?rL=zXKL(RXx`N@q-&9#d;y8p||0S+6BI1q3cqZ$(c9kUVxikL~F~ zO?bA>`yKseTe+FY#YQKdw@BIDqHip~dJrUEMS~7$?cm5o&A7=0IGN<%n4|D%h7_W= zrgJR=2!+QHp6t(cXzW?mSAIeQ+EFn7cw35{}iv^y?P(LI@e7vh)IO!W$ z_!DrLOq;$`Xy4$^3Gj*S)ru-uZ}4Y4-+x)z1Z#e$qCDzdtfmyU0)eRn!241ay!Z0N z&e{c>0xGzS8xH<4w+vi(z%)N25%Bb#=mg)H}g>0Q_R76B^8Uz3=oqA~izn{oT zVrp7Hix8eZzR5J{7vFWr&2XnO+U->Nwrkkx$4EQ0<(}?&_j+|%Tttp&BJj6%AHPTU zb7QrYnb30Dq`ZVk`E@f}Ay|_as>M`T=e*s$H*L4^dG|{jpn`EL6duzO-=Jhzl#Z+ zG~e(qC%FK3LqO_yA~)X^@smi3eTwhK@Dk#aXD)y3uvz3Q6GniUMQpAP*A$oWC{yZz zVr976q43e=Zk_78S0cX5>ed?E^{HxmJ06Laee{?&`9r1!D=G24e5F6NPf~;Otnu-+ z2oEkn6TRc^t^PZD9qDRc(h-OmURs>QTwRi?^3xk}Gvc%HO)F_!lO7tH@7xaK5p3$^ zu6k^MXsbxzhH&@DG~>C4NFU^-@Di|(ex#~?-^Gz&@xGy|w0N>!R3Ja2_@{N{yGpCq z>{V+=YfL9hg{d{<-db{-PU46M61)uEf1b^3<*fD#xchkZOd;x-9q5a|cK&x%c}2Z@ zm4+eQ8p2GS?D&s)ce$*R=s^}u3yxdtOEJGS22ng}xZJ7B9IfO!!%dRy;Tdz|(MFRz z)#;TYwH6ZCmlBbB?;tWN`>Y+r*2XQyi3+;0g0s^T+w*I)C4l7^!hL;+oU)!)TYZBLExm*q1Q&g3G{P|RN%xh7wEM*3JAon%_Y!m<2BrJ|#BcmulvXn_Li zyQRMYIC`-Yo0#o1Qv!idM1PE3Jo~5JiYu$^bpV}y#aohC9q|CyI7(DYmYV=aelqgx zOXpo`DiU~!o&nc%>rnW}q26TjOfk}@$lb91NFg8X*;vkEsB-bDWX=4T{`^K9Un>%F zta+n-vD*CHe>PqTok6cHlg4YfWK*fnR5>+h#-T6;W)FZg`b%J81F-%Ti2d_+TC9C> z%J`pNxmAa^aprpI1Zc89v@{3IL@zmCd&ri1K_jHyw<)-KY8uPnR;8rwgy!w&STkDt zJd#pa=hZzsa!#>bq;^~KJS&JWP$*+kpm{|TeqUAL>P#X^EZ>3cr8M?sNatUD5Ov&r?01>@`QFl>_S8b+xln$E+*q}x)ShM|E{WRCw*YeM5 z&()*ZobTX#t#VST9GMUl&Pb&xKeq;oQc1iqz$Lws>f4P$fc8>4hE zRa~fmk}qD&ObD!0VLWuweM5kAB?75EC|y2nZD)IdB8B()9f377P24t7LxHGMi@B}uKRUp4Yi;j$7eEfy^27fogUsQk=qa^MtiHi0K<@mbw zSx{rOh+JcAu+aKi^b^6kQNrwL-Y-E?3!5wT0-_zNDH^J!SE#LaL%S0dsx2|AJ%>E< zWrfu~6NW;FKDV);aJQ(bc?iEoiGgeOF%(R%E#3M?})U$M>^O~tSIV7 zMK(^MQo=H0EI#!!x5$T%qDBrBX6|A4I7-4DI}4$+zZ48}`_s0GVKtZ%&y!XJ8b`wM zjVoGtBEZ;G1Eyn+j-EUXjZ(RlTTA3-4YZw z539lc^!J_&X{gOfa-?e99&_N+DLxg_YM^nx0PGo@w|JB=4 z_X7(=3*AF^zoY@B(k Date: Mon, 10 Nov 2025 07:58:32 +0100 Subject: [PATCH 027/364] docs: add some tips on large designs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/LargeDesigns.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 docs/user/LargeDesigns.md diff --git a/docs/user/LargeDesigns.md b/docs/user/LargeDesigns.md new file mode 100644 index 0000000000..b3926905c8 --- /dev/null +++ b/docs/user/LargeDesigns.md @@ -0,0 +1,26 @@ +# Tips on building large design + +Large designs can quickly result in unmanageable turnaround times for tweaking and fixing if the design contains behavioral memory models, because these memories are by default translated to flip flops. + +ORFS has a `SYNTH_MEMORY_MAX_BITS` that limits the size of inferred memories that are translated to flip flops to avoid doomed synthesis runs that will "running forever", instead ORFS will error out early, normally within minutes. + +Behavioral models of memories are used in simulation and FPGA tools oftentimes automatically combine hard memory macros with some extra logic to match the behavioral model. OpenROAD does not do such automatic memory inference and matching against real memories or fakemem. + +## Doing a screening build + +Before deciding how to set up a flow, it is useful to do a "screening build". All we're intersted in here is to know which modules we have and their relative sizes. This can help us identify memories that have not been successfully inferred by Yosys, which will manifest itself as very long synthesis times and appear in the OpenROAD hierarchical view with a large number of instances. + +The [minimal build configuration](flow/designs/asap7/minimal/README.md) + can be useful to do a screening build. + +Options useful for a screening build are, check out [config.mk](flow/designs/asap7/minimal/config.mk): + +- `SYNTH_HIERARCHICAL=1` and `SYNTH_MINIMUM_KEEP_SIZE=0`, to see all modules in the hierarchical OpenROAD view +- `SYNTH_MEMORY_MAX_BITS=1024`, set a low threshold initially to get an error with list of memories in the system that will need to be dealt with in some way +- `SYNTH_MOCK_LARGE_MEMORIES=1` enabled after first seeing the error report with memories. This sets the number of rows in memories larger than `SYNTH_MEMORY_MAX_BITS` to 1, so that synthesis will complete. + +## Next steps on memories + +- If you're taping out, write some wrapper Verilog for real memories. +- fakemem can be a good option if available for your PDK. fakemem also needs manually written Verilog wrappers, just like real memories. +- For architectural exploration, `SYNTH_MOCK_LARGE_MEMORIES=1` could give you adequate timing accuracy and is convenient. From 142751da2f392e6d948a4bee7b667fe4eade4e11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Mon, 10 Nov 2025 16:42:09 +0100 Subject: [PATCH 028/364] slang: add SYNTH_SLANG_ARGS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes #3644 Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 2 ++ flow/scripts/synth_preamble.tcl | 2 +- flow/scripts/variables.yaml | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index dbf7d4bb62..bfb74679b0 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -248,6 +248,7 @@ configuration file. | SYNTH_NETLIST_FILES| Skips synthesis and uses the supplied netlist files. If the netlist files contains duplicate modules, which can happen when using hierarchical synthesis on indvidual netlist files and combining here, subsequent modules are silently ignored and only the first module is used.| | | SYNTH_OPT_HIER| Optimize constants across hierarchical boundaries.| | | SYNTH_RETIME_MODULES| *This is an experimental option and may cause adverse effects.* *No effort has been made to check if the retimed RTL is logically equivalent to the non-retimed RTL.* List of modules to apply automatic retiming to. These modules must not get dissolved and as such they should either be the top module or be included in SYNTH_KEEP_MODULES. The main use case is to quickly identify if performance can be improved by manually retiming the input RTL. Retiming will treat module ports like register endpoints/startpoints. The objective function of retiming isn't informed by SDC, even the clock period is ignored. As such, retiming will optimize for best delay at potentially high register number cost. Automatic retiming can produce suboptimal results as its timing model is crude and it doesn't find the optimal distribution of registers on long pipelines. See OR discussion #8080.| | +| SYNTH_SLANG_ARGS| Additional arguments passed to the slang frontend during synthesis.| | | SYNTH_WRAPPED_ADDERS| Specify the adder modules that can be used for synthesis, separated by commas. The default adder module is determined by the first element of this variable.| | | SYNTH_WRAPPED_MULTIPLIERS| Specify the multiplier modules that can be used for synthesis, separated by commas. The default multiplier module is determined by the first element of this variable.| | | SYNTH_WRAPPED_OPERATORS| Synthesize multiple architectural options for each arithmetic operator in the design. These options are available for switching among in later stages of the flow.| | @@ -287,6 +288,7 @@ configuration file. - [SYNTH_NETLIST_FILES](#SYNTH_NETLIST_FILES) - [SYNTH_OPT_HIER](#SYNTH_OPT_HIER) - [SYNTH_RETIME_MODULES](#SYNTH_RETIME_MODULES) +- [SYNTH_SLANG_ARGS](#SYNTH_SLANG_ARGS) - [SYNTH_WRAPPED_ADDERS](#SYNTH_WRAPPED_ADDERS) - [SYNTH_WRAPPED_MULTIPLIERS](#SYNTH_WRAPPED_MULTIPLIERS) - [TIEHI_CELL_AND_PORT](#TIEHI_CELL_AND_PORT) diff --git a/flow/scripts/synth_preamble.tcl b/flow/scripts/synth_preamble.tcl index a372312757..bc76211583 100644 --- a/flow/scripts/synth_preamble.tcl +++ b/flow/scripts/synth_preamble.tcl @@ -47,7 +47,7 @@ proc read_design_sources { } { # slang requires all files at once plugin -i slang yosys read_slang -D SYNTHESIS --keep-hierarchy --compat=vcs \ - --ignore-assertions --no-implicit-memories --top $::env(DESIGN_NAME) \ + --ignore-assertions {*}$::env(SYNTH_SLANG_ARGS) --top $::env(DESIGN_NAME) \ {*}$vIdirsArgs {*}$::env(VERILOG_FILES) {*}[env_var_or_empty VERILOG_DEFINES] # Workaround for yosys-slang#119 setattr -unset init diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index a7adc03f56..0277889e5f 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -184,6 +184,12 @@ SYNTH_HDL_FRONTEND: command. stages: - synth +SYNTH_SLANG_ARGS: + description: > + Additional arguments passed to the slang frontend during synthesis. + stages: + - synth + default: "" SYNTH_BLACKBOXES: description: > List of cells treated as a black box by Yosys. With Bazel, this can be used From 7793a2c16505f9b37362af5a3a26b10271479b3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Mon, 10 Nov 2025 17:47:21 +0100 Subject: [PATCH 029/364] rapidus: disable implicit memories for now MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- flow/designs/rapidus2hp/hercules_idecode/config.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flow/designs/rapidus2hp/hercules_idecode/config.mk b/flow/designs/rapidus2hp/hercules_idecode/config.mk index b61cc8e3a7..7d7c396680 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/config.mk +++ b/flow/designs/rapidus2hp/hercules_idecode/config.mk @@ -29,3 +29,5 @@ export SKIP_LAST_GASP ?= 1 export CELL_PAD_IN_SITES_GLOBAL_PLACEMENT = 0 export CELL_PAD_IN_SITES_DETAIL_PLACEMENT = 0 + +export SYNTH_SLANG_ARGS = --no-implicit-memories From 2f84d03e9b8c765f319200cb65ed84c79270bcc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Mon, 10 Nov 2025 07:58:32 +0100 Subject: [PATCH 030/364] docs: add some tips on large designs, review followup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 2 +- flow/scripts/variables.yaml | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index a945ac8f51..d5c54ca65a 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -242,7 +242,7 @@ configuration file. | SYNTH_HDL_FRONTEND| Select an alternative language frontend to ingest the design. Available option is "slang". If the variable is empty, design is read with the Yosys read_verilog command.| | | SYNTH_HIERARCHICAL| Enable to Synthesis hierarchically, otherwise considered flat synthesis.| 0| | SYNTH_HIER_SEPARATOR| Separator used for the synthesis flatten stage.| .| -| SYNTH_KEEP_MOCKED_MEMORIES| Keeping the mocked memories(not flattening them), preserves some of the access logic complexity and avoids optimizations outside of the mocked memory.| 1| +| SYNTH_KEEP_MOCKED_MEMORIES| When `SYNTH_MOCK_LARGE_MEMORIES=1`, setting this to 1, will keep mocked memories (not flattening them). This preserves some of the access logic complexity and avoids optimizations outside of the mocked memory.| 1| | SYNTH_KEEP_MODULES| Mark modules to keep from getting removed in flattening.| | | SYNTH_MEMORY_MAX_BITS| Maximum number of bits for memory synthesis. Ideally, real RAM or realistic fakeram should be used for RAMs much larger than 1024 bits. To temporarily ignore the RAM concerns and investigate other aspects of the design, consider setting `SYNTH_MOCK_LARGE_MEMORIES=1`, or adjusting `SYNTH_MEMORY_MAX_BITS`.| 4096| | SYNTH_MINIMUM_KEEP_SIZE| For hierarchical synthesis, we keep modules of larger area than given by this variable and flatten smaller modules. The area unit used is the size of a basic nand2 gate from the platform's standard cell library. The default value is platform specific.| 0| diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 77281593d6..cef5c496f8 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -230,9 +230,11 @@ SYNTH_MOCK_LARGE_MEMORIES: - synth SYNTH_KEEP_MOCKED_MEMORIES: description: > - Keeping the mocked memories(not flattening them), preserves some of - the access logic complexity and avoids optimizations outside - of the mocked memory. + When `SYNTH_MOCK_LARGE_MEMORIES=1`, setting this to 1, + will keep mocked memories (not flattening them). + + This preserves some of the access logic complexity and + avoids optimizations outside of the mocked memory. default: 1 stages: - synth From 6f5080472cd6833a8efda6aafab1decb3fdd5fc7 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 11 Nov 2025 13:08:38 -0300 Subject: [PATCH 031/364] use latest openroad Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index f2403abf9f..3bcda7705d 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit f2403abf9f3076c50104f0f17ccf4f6e2f79acff +Subproject commit 3bcda7705ddc41ad40037e49a2ff9505d38ee04f From 126fc1339b634d733af540db457b75f8720643ec Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 11 Nov 2025 13:09:29 -0300 Subject: [PATCH 032/364] use Yosys 0.59 Signed-off-by: Eder Monteiro --- tools/yosys | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/yosys b/tools/yosys index 75eff54b31..26b51148a8 160000 --- a/tools/yosys +++ b/tools/yosys @@ -1 +1 @@ -Subproject commit 75eff54b316911f8a9aba6c8cb5c6637b76f2956 +Subproject commit 26b51148a80ea546481cf4f0516be97e4ba251cc From 235d7d39b9261a350556e032fa9bb26dc75f0603 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 11 Nov 2025 16:57:18 -0300 Subject: [PATCH 033/364] bump or Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index f2403abf9f..33a0582d43 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit f2403abf9f3076c50104f0f17ccf4f6e2f79acff +Subproject commit 33a0582d4305d57e30efdb99a24d6cf775448d79 From 16d397d2879acf06b99d25c015122e56640cd877 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 11 Nov 2025 20:26:21 +0000 Subject: [PATCH 034/364] update metrics for public designs Signed-off-by: Eder Monteiro --- .../asap7/swerv_wrapper/rules-base.json | 6 ++-- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 24 ++++++++++++-- .../nangate45/ariane133/rules-base.json | 6 ++-- flow/designs/nangate45/jpeg/rules-base.json | 19 +++++++----- .../nangate45/mempool_group/rules-base.json | 18 +++++------ .../nangate45/swerv_wrapper/rules-base.json | 17 ++++------ flow/designs/sky130hd/ibex/rules-base.json | 14 ++++----- flow/designs/sky130hd/jpeg/rules-base.json | 19 +++++------- .../sky130hd/microwatt/rules-base.json | 31 ++++++++----------- flow/designs/sky130hs/jpeg/rules-base.json | 13 +++++--- .../designs/sky130hs/riscv32i/rules-base.json | 18 +++-------- 11 files changed, 95 insertions(+), 90 deletions(-) diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index cc3ca2ee86..7745b2fb93 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -171,11 +171,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -441.0, + "value": -526.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -223000.0, + "value": -227000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -183,7 +183,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -86400.0, + "value": -91800.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index 5eca92e9cc..ddb5e449ad 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -1,4 +1,24 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1499147.11, "compare": "<=" @@ -76,7 +96,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 132, + "value": 133, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -112,7 +132,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 1059270, + "value": 1055630, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index dad310eeb7..4a7002ea14 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -1,6 +1,6 @@ { "detailedroute__flow__warnings__count:DRT-0120": { - "value": 11, + "value": 12, "compare": "<=", "level": "warning" }, @@ -25,7 +25,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 11, + "value": 12, "compare": "<=", "level": "warning" }, @@ -135,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -88.9, + "value": -107.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 04f21b34aa..8fe9d1785b 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -14,6 +14,11 @@ "compare": "<=", "level": "warning" }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -82,7 +87,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -35.6, + "value": -35.5, "compare": ">=" }, "cts__timing__hold__ws": { @@ -98,11 +103,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.17, + "value": -0.153, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -43.2, + "value": -44.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -114,7 +119,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 634316, + "value": 631314, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -134,7 +139,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7.87, + "value": -9.03, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -146,11 +151,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.159, + "value": -0.153, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -41.1, + "value": -42.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 6496f27877..40bd3633f7 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -54,11 +54,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 270, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:STA-0450": { "value": 1, "compare": "<=", @@ -79,6 +74,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:GRT-0273": { + "value": 20, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -122,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -12700.0, + "value": -12300.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -142,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -12500.0, + "value": -10200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -182,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.6, + "value": -2.98, "compare": ">=" }, "finish__timing__setup__ws": { @@ -190,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -12500.0, + "value": -10400.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 3bc1adbc01..f052e2a41b 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -24,11 +24,6 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GRT-0115": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -72,7 +67,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -36.7, + "value": -33.1, "compare": ">=" }, "cts__timing__hold__ws": { @@ -92,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -33.3, + "value": -48.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -104,7 +99,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4181462, + "value": 4051905, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -132,7 +127,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.893, + "value": -0.422, "compare": ">=" }, "finish__timing__setup__ws": { @@ -140,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -127.0, + "value": -89.4, "compare": ">=" }, "finish__timing__hold__ws": { @@ -148,7 +143,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -5.39, + "value": -17.7, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index 9a753c0380..1cb898efab 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 24, + "value": 8, "compare": "<=", "level": "warning" }, @@ -25,7 +25,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 6, + "value": 4, "compare": "<=", "level": "warning" }, @@ -48,7 +48,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 171628, + "value": 169780, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -68,11 +68,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.683, + "value": -1.2, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -3.56, + "value": -12.6, "compare": ">=" }, "cts__timing__hold__ws": { @@ -104,7 +104,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 752600, + "value": 750043, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -152,7 +152,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 187501, + "value": 183819, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index d24108ab8a..bd723558f8 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 63, + "value": 68, "compare": "<=", "level": "warning" }, @@ -24,13 +24,8 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GRT-0115": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 21, + "value": 17, "compare": "<=", "level": "warning" }, @@ -73,7 +68,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.321, + "value": -0.309, "compare": ">=" }, "cts__timing__setup__tns": { @@ -89,15 +84,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 100, + "value": 206, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.477, + "value": -0.465, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -20.8, + "value": -4.75, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -121,7 +116,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 102, + "value": 117, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index d33120ac5c..fb6d61fc8c 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -55,12 +55,7 @@ "level": "warning" }, "flow__warnings__count:PDN-0110": { - "value": 123, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0115": { - "value": 1, + "value": 139, "compare": "<=", "level": "warning" }, @@ -123,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.36, + "value": -3.7, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -409.0, + "value": -616.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -139,15 +134,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 2373, + "value": 3103, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.53, + "value": -3.87, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -429.0, + "value": -693.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -167,11 +162,11 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 3, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1594, + "value": 1477, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -179,23 +174,23 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -95.2, + "value": -116.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -3.25, + "value": -3.14, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -458.0, + "value": -454.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -2.49, + "value": -4.16, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -436.0, + "value": -765.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index ef42b4eb34..fc445ba3f0 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,6 +1,6 @@ { "detailedroute__flow__warnings__count:DRT-0120": { - "value": 36, + "value": 66, "compare": "<=", "level": "warning" }, @@ -9,6 +9,11 @@ "compare": "<=", "level": "warning" }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "finish__flow__warnings__count:GUI-0076": { "value": 1, "compare": "<=", @@ -35,7 +40,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 9, + "value": 11, "compare": "<=", "level": "warning" }, @@ -89,7 +94,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 332, + "value": 253, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -117,7 +122,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index 4bfd0a6b94..5f65718d64 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "finish__flow__warnings__count:GUI-0076": { "value": 1, "compare": "<=", @@ -29,11 +24,6 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GRT-0115": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:DRT-0349": { "value": 10, "compare": "<=", @@ -73,11 +63,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.617, + "value": -0.957, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -26.8, + "value": -25.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -97,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -25.8, + "value": -111.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -145,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10.5, + "value": -33.2, "compare": ">=" }, "finish__timing__hold__ws": { From f0b3f21666b6cc41c30dcf34f8c64fe6272db1aa Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 11 Nov 2025 20:36:33 +0000 Subject: [PATCH 035/364] update metrics for private designs Signed-off-by: Eder Monteiro --- flow/designs/gf12/ariane/rules-base.json | 22 +++++------------ flow/designs/gf12/ibex/rules-base.json | 6 ++--- .../gf12/swerv_wrapper/rules-base.json | 16 ++++++++++--- .../hercules_idecode/rules-base.json | 24 ++++++------------- .../hercules_is_int/rules-base.json | 16 ++++++------- 5 files changed, 37 insertions(+), 47 deletions(-) diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index 8bb5c35f3d..e30e9f9999 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 23, + "value": 24, "compare": "<=", "level": "warning" }, @@ -64,18 +64,8 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GPL-0998": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0999": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 23, + "value": 24, "compare": "<=", "level": "warning" }, @@ -127,7 +117,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -715.0, + "value": -8180.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -159,11 +149,11 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 3507181, + "value": 4359055, "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 2, + "value": 0, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -187,7 +177,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -600.0, + "value": -1510.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/ibex/rules-base.json b/flow/designs/gf12/ibex/rules-base.json index 1a32ce6fdf..cd62681c10 100644 --- a/flow/designs/gf12/ibex/rules-base.json +++ b/flow/designs/gf12/ibex/rules-base.json @@ -122,7 +122,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -271.0, + "value": -4100.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,7 +134,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 161696, + "value": 160478, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -182,7 +182,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 7960, + "value": 7871, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index dc48ffae02..dbe27afe20 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -4,6 +4,16 @@ "compare": "<=", "level": "warning" }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "detailedroute__flow__warnings__count:DRT-0120": { "value": 3, "compare": "<=", @@ -121,7 +131,7 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -75.0, + "value": -216.0, "compare": ">=" }, "cts__timing__hold__tns": { @@ -177,7 +187,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -53200.0, + "value": -54400.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -193,7 +203,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -765.0, + "value": -620.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index 3f4565daf8..a77f00185d 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -79,11 +74,6 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GRT-0115": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalplace__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -173,7 +163,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -212.0, + "value": -229.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -181,11 +171,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -17.9, + "value": -12.5, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -64.2, + "value": -50.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -193,11 +183,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -340.0, + "value": -218.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -607000.0, + "value": -649000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -209,11 +199,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -340.0, + "value": -218.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -607000.0, + "value": -649000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 92c9989424..5da0012591 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -153,11 +153,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -390.0, + "value": -371.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -3510000.0, + "value": -3310000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -173,7 +173,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -316.0, + "value": -245.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -181,15 +181,15 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -55.5, + "value": -54.4, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -484.0, + "value": -1210.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -316.0, + "value": -245.0, "compare": ">=" }, "finish__timing__setup__tns": { @@ -197,11 +197,11 @@ "compare": ">=" }, "finish__timing__hold__ws": { - "value": -55.5, + "value": -54.4, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -484.0, + "value": -1210.0, "compare": ">=" }, "finish__design__instance__area": { From a677a330b68a577704296f63971b9de7b7792c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 11 Nov 2025 22:10:49 +0100 Subject: [PATCH 036/364] asap7/minimal: make SDC_FILE can be overridable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- flow/designs/asap7/minimal/config.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/designs/asap7/minimal/config.mk b/flow/designs/asap7/minimal/config.mk index ce53e6c2aa..11d23b5b61 100644 --- a/flow/designs/asap7/minimal/config.mk +++ b/flow/designs/asap7/minimal/config.mk @@ -1,5 +1,5 @@ export DESIGN_NICKNAME = minimal -export SDC_FILE = $(FLOW_HOME)/designs/asap7/minimal/empty.sdc +export SDC_FILE ?= $(FLOW_HOME)/designs/asap7/minimal/empty.sdc export PLATFORM = asap7 # Faster build and more information in GUI with hierarchical synthesis export SYNTH_HIERARCHICAL ?= 1 From 992cb34e3d8a26592cab401897e8599de5c7ed0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 11 Nov 2025 22:10:49 +0100 Subject: [PATCH 037/364] asap7/minimal: make more overridable variables and faster gpl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit disable timing/routing driven gpl for these screening builds Signed-off-by: Øyvind Harboe --- flow/designs/asap7/minimal/config.mk | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/flow/designs/asap7/minimal/config.mk b/flow/designs/asap7/minimal/config.mk index 11d23b5b61..acc8d8fc1a 100644 --- a/flow/designs/asap7/minimal/config.mk +++ b/flow/designs/asap7/minimal/config.mk @@ -15,9 +15,11 @@ export CORE_UTILIZATION ?= 10 export PLACE_DENSITY ?= 0.20 # This won't work with an empty .sdc file -export SKIP_REPORT_METRICS = 1 +export SKIP_REPORT_METRICS ?= 1 # Faster build, remove these in your own config.mk -export SKIP_CTS_REPAIR_TIMING = 1 -export REMOVE_ABC_BUFFERS = 1 -export SKIP_INCREMENTAL_REPAIR = 1 +export SKIP_CTS_REPAIR_TIMING ?= 1 +export REMOVE_ABC_BUFFERS ?= 1 +export SKIP_INCREMENTAL_REPAIR ?= 1 +export GPL_TIMING_DRIVEN ?= 0 +export GPL_ROUTING_DRIVEN ?= 0 From 9b7803bff914144cbfb538d4854e5c2309862793 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 13 Nov 2025 01:36:16 +0000 Subject: [PATCH 038/364] bump or again Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 1c3f6b5b6b..26fc54d0d4 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 1c3f6b5b6b28405248452248e8e1a7082bd99934 +Subproject commit 26fc54d0d4b7ebd44d1b16dc7dc9747eaed35159 From 7e98f38db3dd99a31887333cac3eb7a6eddf587e Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Sat, 15 Nov 2025 15:51:33 +0000 Subject: [PATCH 039/364] test new max slew fixing Signed-off-by: Cho Moon --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 3bcda7705d..f2529a687c 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 3bcda7705ddc41ad40037e49a2ff9505d38ee04f +Subproject commit f2529a687cfac77e0ef392dffcdcdaf0fb0a6ae4 From 34fb69a52ef452ccdc0c20e60011b8e9b54bcdd1 Mon Sep 17 00:00:00 2001 From: Osama Date: Sun, 16 Nov 2025 17:07:40 +0200 Subject: [PATCH 040/364] update OR Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 26fc54d0d4..5b739f1254 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 26fc54d0d4b7ebd44d1b16dc7dc9747eaed35159 +Subproject commit 5b739f1254fdb2de5ce7f052251dd48d976ff284 From 710c7b95922e6dbdc9f8811f136468ce59df9ac8 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Mon, 17 Nov 2025 09:45:47 +0900 Subject: [PATCH 041/364] Used the latest OR w/ remove_buffer fix Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 3bcda7705d..7bc521f36a 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 3bcda7705ddc41ad40037e49a2ff9505d38ee04f +Subproject commit 7bc521f36a34c986885473856e9f5b464093e38a From a554209b6bf8ca46d12b65929959b820e725232b Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Mon, 17 Nov 2025 14:23:45 +0900 Subject: [PATCH 042/364] Updated rules-base.json Signed-off-by: Jaehyun Kim --- flow/designs/asap7/aes/rules-base.json | 5 --- flow/designs/asap7/aes_lvt/rules-base.json | 5 --- flow/designs/asap7/cva6/rules-base.json | 7 +--- flow/designs/asap7/ethmac/rules-base.json | 8 ++--- flow/designs/asap7/ethmac_lvt/rules-base.json | 18 +++------- flow/designs/asap7/gcd-ccs/rules-base.json | 5 --- flow/designs/asap7/gcd/rules-base.json | 5 --- flow/designs/asap7/ibex/rules-base.json | 5 --- flow/designs/asap7/jpeg/rules-base.json | 10 ++++++ flow/designs/asap7/jpeg_lvt/rules-base.json | 19 ++++------ flow/designs/asap7/mock-alu/rules-base.json | 8 ++--- flow/designs/asap7/mock-cpu/rules-base.json | 10 +++--- .../asap7/riscv32i-mock-sram/rules-base.json | 5 +++ flow/designs/asap7/riscv32i/rules-base.json | 5 +++ .../asap7/swerv_wrapper/rules-base.json | 5 +++ flow/designs/gf180/ibex/rules-base.json | 4 +-- flow/designs/gf180/jpeg/rules-base.json | 5 +++ flow/designs/gf180/riscv32i/rules-base.json | 13 +++---- flow/designs/ihp-sg13g2/aes/rules-base.json | 2 +- flow/designs/ihp-sg13g2/gcd/rules-base.json | 2 +- flow/designs/ihp-sg13g2/ibex/rules-base.json | 25 +++++++++++++ flow/designs/ihp-sg13g2/jpeg/rules-base.json | 5 +++ .../ihp-sg13g2/riscv32i/rules-base.json | 35 +++++++++++++++++++ flow/designs/ihp-sg13g2/spi/rules-base.json | 17 +-------- flow/designs/nangate45/aes/rules-base.json | 10 +++--- .../nangate45/ariane133/rules-base.json | 5 +++ .../nangate45/ariane136/rules-base.json | 5 +++ .../nangate45/black_parrot/rules-base.json | 14 ++++++-- .../nangate45/bp_be_top/rules-base.json | 5 +++ .../nangate45/bp_fe_top/rules-base.json | 14 ++------ .../nangate45/bp_multi_top/rules-base.json | 7 +++- .../nangate45/dynamic_node/rules-base.json | 4 +-- flow/designs/nangate45/ibex/rules-base.json | 5 +++ flow/designs/nangate45/jpeg/rules-base.json | 13 ++++--- .../nangate45/mempool_group/rules-base.json | 9 +++-- flow/designs/nangate45/swerv/rules-base.json | 9 ++--- .../nangate45/swerv_wrapper/rules-base.json | 5 +++ .../nangate45/tinyRocket/rules-base.json | 5 +++ .../hercules_is_int/rules-base.json | 8 ++--- flow/designs/sky130hd/aes/rules-base.json | 10 +++--- .../sky130hd/chameleon/rules-base.json | 2 +- flow/designs/sky130hd/ibex/rules-base.json | 2 +- flow/designs/sky130hd/jpeg/rules-base.json | 5 +++ .../sky130hd/microwatt/rules-base.json | 7 +++- .../designs/sky130hd/riscv32i/rules-base.json | 12 ++++++- flow/designs/sky130hs/gcd/rules-base.json | 5 +++ flow/designs/sky130hs/jpeg/rules-base.json | 5 +++ .../designs/sky130hs/riscv32i/rules-base.json | 5 +++ 48 files changed, 252 insertions(+), 147 deletions(-) diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index 7f4b87c4a3..3b5e5e8ae0 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -59,11 +59,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/asap7/aes_lvt/rules-base.json b/flow/designs/asap7/aes_lvt/rules-base.json index df847fc63e..11d4ab1f30 100644 --- a/flow/designs/asap7/aes_lvt/rules-base.json +++ b/flow/designs/asap7/aes_lvt/rules-base.json @@ -49,11 +49,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/asap7/cva6/rules-base.json b/flow/designs/asap7/cva6/rules-base.json index 7da3b02522..8b8af964b5 100644 --- a/flow/designs/asap7/cva6/rules-base.json +++ b/flow/designs/asap7/cva6/rules-base.json @@ -69,17 +69,12 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GPL-0302": { + "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", "level": "warning" diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 93515aa3e8..377752b451 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -59,13 +59,13 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, + "flow__warnings__count:STA-1212": { + "value": 1001, "compare": "<=", "level": "warning" }, - "flow__warnings__count:STA-1212": { - "value": 1001, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, "compare": "<=", "level": "warning" }, diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index 6a381588d6..52d48426d4 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -14,11 +14,6 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -64,23 +59,18 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, "compare": "<=", "level": "warning" }, diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index 1a8ed5e6a3..ab48974cbf 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -54,11 +54,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index 3c2f48b99a..e008dfe2a4 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -54,11 +54,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index 7862350d54..7a9eb74f59 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -59,11 +59,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/asap7/jpeg/rules-base.json b/flow/designs/asap7/jpeg/rules-base.json index 410c5a7ec2..2454601363 100644 --- a/flow/designs/asap7/jpeg/rules-base.json +++ b/flow/designs/asap7/jpeg/rules-base.json @@ -24,6 +24,11 @@ "compare": "<=", "level": "warning" }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "finish__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", @@ -59,6 +64,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/asap7/jpeg_lvt/rules-base.json b/flow/designs/asap7/jpeg_lvt/rules-base.json index fd18f817d5..029170e994 100644 --- a/flow/designs/asap7/jpeg_lvt/rules-base.json +++ b/flow/designs/asap7/jpeg_lvt/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -59,13 +54,13 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, + "flow__warnings__count:STA-1212": { + "value": 1001, "compare": "<=", "level": "warning" }, - "flow__warnings__count:STA-1212": { - "value": 1001, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, "compare": "<=", "level": "warning" }, @@ -74,12 +69,12 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:GRT-0246": { + "globalroute__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", "level": "warning" diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 8e66545cb5..24119bbecc 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -59,13 +59,13 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, + "flow__warnings__count:STA-1212": { + "value": 1001, "compare": "<=", "level": "warning" }, - "flow__warnings__count:STA-1212": { - "value": 1001, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, "compare": "<=", "level": "warning" }, diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index e97ac72424..180a46a0f9 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -109,11 +109,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 424, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", @@ -129,6 +124,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 7ee997a952..d40cd662a5 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -59,6 +59,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index 0e59537c0a..090ab6bdec 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -64,6 +64,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 7745b2fb93..fcd6cd9bcc 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -54,6 +54,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 41a6f790b3..753f018c24 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 12, + "value": 21, "compare": "<=", "level": "warning" }, @@ -40,7 +40,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 6, + "value": 7, "compare": "<=", "level": "warning" }, diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index 2d1ce84cae..6487f8f34e 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -29,6 +29,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { "value": 48, "compare": "<=", diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index e14cde7ba4..91bbd61edb 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -1,9 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:DRT-0349": { "value": 8, "compare": "<=", @@ -34,13 +29,13 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, "compare": "<=", "level": "warning" }, diff --git a/flow/designs/ihp-sg13g2/aes/rules-base.json b/flow/designs/ihp-sg13g2/aes/rules-base.json index ee69fbc018..4abcec0829 100644 --- a/flow/designs/ihp-sg13g2/aes/rules-base.json +++ b/flow/designs/ihp-sg13g2/aes/rules-base.json @@ -140,4 +140,4 @@ "value": 1054989, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/gcd/rules-base.json b/flow/designs/ihp-sg13g2/gcd/rules-base.json index 03134bc6fe..5ee3051616 100644 --- a/flow/designs/ihp-sg13g2/gcd/rules-base.json +++ b/flow/designs/ihp-sg13g2/gcd/rules-base.json @@ -145,4 +145,4 @@ "value": 7693, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index e0fdfc5027..e994f0eff1 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -1,4 +1,29 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 305820.24, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index ddb5e449ad..34808de897 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -14,6 +14,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0349": { "value": 10, "compare": "<=", diff --git a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json index 0e911b7b11..8063b1004d 100644 --- a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json +++ b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json @@ -1,4 +1,39 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:FIN-0010": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 151466.57, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/spi/rules-base.json b/flow/designs/ihp-sg13g2/spi/rules-base.json index 9f5cac13a7..c74b659746 100644 --- a/flow/designs/ihp-sg13g2/spi/rules-base.json +++ b/flow/designs/ihp-sg13g2/spi/rules-base.json @@ -19,16 +19,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 25, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:FIN-0010": { "value": 12, "compare": "<=", @@ -39,11 +29,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2232.28, "compare": "<=" @@ -160,4 +145,4 @@ "value": 2767, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index db6b3d1039..5e9e464ee1 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -1,4 +1,9 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "detailedroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -24,11 +29,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 270, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 4a7002ea14..87da011faf 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -24,6 +24,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { "value": 12, "compare": "<=", diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 1ea2f44672..8986744514 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -34,6 +34,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { "value": 3, "compare": "<=", diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index 46a193c331..c5da81d2d8 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -14,6 +14,11 @@ "compare": "<=", "level": "warning" }, + "detailedroute__flow__warnings__count:GRT-0281": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "finish__flow__warnings__count:GUI-0076": { "value": 1, "compare": "<=", @@ -39,8 +44,8 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 270, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 2, "compare": "<=", "level": "warning" }, @@ -54,6 +59,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index a044639fc3..1d85553b0c 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -34,6 +34,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index ade82f774e..8cf7139a36 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -1,9 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -34,17 +29,12 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 270, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { + "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0062": { + "globalroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", "level": "warning" diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index ed866dfbda..58183e8b46 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "cts__flow__warnings__count:RSZ-2021": { - "value": 102, + "value": 110, "compare": "<=", "level": "warning" }, @@ -44,6 +44,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { "value": 3, "compare": "<=", diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 35130f0f63..8933670fde 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -29,8 +29,8 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-1041": { - "value": 270, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, "compare": "<=", "level": "warning" }, diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index 847d59d731..77ec70bfe8 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -24,6 +24,11 @@ "compare": "<=", "level": "warning" }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "floorplan__flow__warnings__count:RSZ-0075": { "value": 191, "compare": "<=", diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 8fe9d1785b..b2443ae1cb 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 1, + "value": 2, "compare": "<=", "level": "warning" }, @@ -39,11 +39,16 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:DRT-0120": { + "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -87,7 +92,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -35.5, + "value": -37.9, "compare": ">=" }, "cts__timing__hold__ws": { @@ -155,7 +160,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -42.0, + "value": -43.2, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 40bd3633f7..ef56f9a4d2 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -59,6 +59,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { "value": 2, "compare": "<=", @@ -142,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10200.0, + "value": -10300.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -190,7 +195,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10400.0, + "value": -12500.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 3357474ccb..c550d32e98 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -29,12 +29,7 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GRT-0115": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0704": { + "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", "level": "warning" @@ -150,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -38.3, + "value": -39.1, "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 f052e2a41b..e3a1feae49 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -24,6 +24,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 770e842c4f..0abf6cd71f 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -29,6 +29,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 5da0012591..077aaf15f9 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -173,7 +173,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -245.0, + "value": -290.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -185,11 +185,11 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1210.0, + "value": -1520.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -245.0, + "value": -290.0, "compare": ">=" }, "finish__timing__setup__tns": { @@ -201,7 +201,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -1210.0, + "value": -1520.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hd/aes/rules-base.json b/flow/designs/sky130hd/aes/rules-base.json index 246b465db1..58d7c8e294 100644 --- a/flow/designs/sky130hd/aes/rules-base.json +++ b/flow/designs/sky130hd/aes/rules-base.json @@ -4,6 +4,11 @@ "compare": "<=", "level": "warning" }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "finish__flow__warnings__count:GUI-0076": { "value": 1, "compare": "<=", @@ -19,11 +24,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 99830.94, "compare": "<=" diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index babe031688..8924190d16 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, + "value": 3, "compare": "<=", "level": "warning" }, diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index 1cb898efab..5d08837ec2 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 8, + "value": 12, "compare": "<=", "level": "warning" }, diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index bd723558f8..41fded0ba2 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -24,6 +24,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { "value": 17, "compare": "<=", diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index fb6d61fc8c..3c40d56a3e 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -59,6 +59,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { "value": 1, "compare": "<=", @@ -166,7 +171,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1477, + "value": 1508, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index e980b235a6..ce1a41c510 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -4,6 +4,11 @@ "compare": "<=", "level": "warning" }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "detailedroute__flow__warnings__count:DRT-0349": { "value": 10, "compare": "<=", @@ -19,7 +24,12 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GRT-0115": { + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { "value": 1, "compare": "<=", "level": "warning" diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index ea813033a3..393ee1a33b 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -9,6 +9,11 @@ "compare": "<=", "level": "warning" }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index fc445ba3f0..3dad92744a 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -39,6 +39,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { "value": 11, "compare": "<=", diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index 5f65718d64..c29aa8f33a 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -24,6 +24,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0349": { "value": 10, "compare": "<=", From bd965b68a99454b081b1f90446eb9b958c3cdfd4 Mon Sep 17 00:00:00 2001 From: chrisgelinek-rl Date: Mon, 17 Nov 2025 03:43:45 +0000 Subject: [PATCH 043/364] Update global_place.tcl Signed-off-by: chrisgelinek-rl Signed-off-by: Christian Gelinek --- flow/scripts/global_place.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/scripts/global_place.tcl b/flow/scripts/global_place.tcl index 715b0bdae0..ef130951b3 100644 --- a/flow/scripts/global_place.tcl +++ b/flow/scripts/global_place.tcl @@ -16,7 +16,7 @@ if { $::env(GPL_TIMING_DRIVEN) } { if { ![env_var_exists_and_non_empty FOOTPRINT] } { if { !$::env(DONT_BUFFER_PORTS) } { puts "Perform port buffering..." - buffer_ports + buffer_ports {*}[env_var_or_empty BUFFER_PORTS_ARGS] } } From d6ce5c278fffe91e663e68b670bfe39cb7928649 Mon Sep 17 00:00:00 2001 From: chrisgelinek-rl Date: Mon, 17 Nov 2025 03:52:07 +0000 Subject: [PATCH 044/364] Update variables.yaml Signed-off-by: chrisgelinek-rl Signed-off-by: Christian Gelinek --- flow/scripts/variables.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 39d85cc92a..a99c50cf30 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -397,6 +397,11 @@ DONT_BUFFER_PORTS: stages: - place default: 0 +BUFFER_PORTS_ARGS: + description: > + Specify arguments (such as -buffer_cell) to the buffer_ports call during placement. + stages: + - place REMOVE_ABC_BUFFERS: description: > Remove abc buffers from the netlist. If timing repair in floorplanning is From b3e9de86b68c5aee89f178ed72d8e22abaaab1a2 Mon Sep 17 00:00:00 2001 From: chrisgelinek-rl Date: Mon, 17 Nov 2025 03:54:03 +0000 Subject: [PATCH 045/364] Update floorplan_to_place.tcl Signed-off-by: chrisgelinek-rl Signed-off-by: Christian Gelinek --- flow/scripts/floorplan_to_place.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/scripts/floorplan_to_place.tcl b/flow/scripts/floorplan_to_place.tcl index 544e8db7d2..b405ed1bd0 100644 --- a/flow/scripts/floorplan_to_place.tcl +++ b/flow/scripts/floorplan_to_place.tcl @@ -240,7 +240,7 @@ if { $::env(GPL_TIMING_DRIVEN) } { if { ![env_var_exists_and_non_empty FOOTPRINT] } { if { ![env_var_equals DONT_BUFFER_PORTS 1] } { puts "Perform port buffering..." - buffer_ports + buffer_ports {*}[env_var_or_empty BUFFER_PORTS_ARGS] } } From 4afb24e26f7693cfc2fc10581c85a651a23401bb Mon Sep 17 00:00:00 2001 From: chrisgelinek-rl Date: Mon, 17 Nov 2025 03:57:46 +0000 Subject: [PATCH 046/364] Update FlowVariables.md Signed-off-by: chrisgelinek-rl Signed-off-by: Christian Gelinek --- docs/user/FlowVariables.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index ad77d19688..1f1de7c9eb 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -129,6 +129,7 @@ configuration file. | DFF_LIB_FILES| Technology mapping liberty files for flip-flops.| | | DIE_AREA| The die area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2).| | | DONT_BUFFER_PORTS| Do not buffer input/output ports during floorplanning.| 0| +| BUFFER_PORTS_ARGS| Specify arguments to the buffer_ports call during placement. Only used if DONT_BUFFER_PORTS=0.| | | DONT_USE_CELLS| Dont use cells eases pin access in detailed routing.| | | DPO_MAX_DISPLACEMENT| Specifies how far an instance can be moved when optimizing.| 5 1| | EARLY_SIZING_CAP_RATIO| Ratio between the input pin capacitance and the output pin load during initial gate sizing.| | From 342ed31524d46f84dfc59c67477694073bcdaafe Mon Sep 17 00:00:00 2001 From: chrisgelinek-rl Date: Mon, 17 Nov 2025 05:08:32 +0000 Subject: [PATCH 047/364] Made description match FlowVariables.md Signed-off-by: chrisgelinek-rl Signed-off-by: Christian Gelinek --- flow/scripts/variables.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index a99c50cf30..1e07b8f3f8 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -399,7 +399,7 @@ DONT_BUFFER_PORTS: default: 0 BUFFER_PORTS_ARGS: description: > - Specify arguments (such as -buffer_cell) to the buffer_ports call during placement. + Specify arguments to the buffer_ports call during placement. Only used if DONT_BUFFER_PORTS=0. stages: - place REMOVE_ABC_BUFFERS: From 6b54a55df67174ae3aef10eb54bfe8d986d30c10 Mon Sep 17 00:00:00 2001 From: Christian Gelinek Date: Mon, 17 Nov 2025 17:24:08 +1030 Subject: [PATCH 048/364] Fixed FlowVariables.md Signed-off-by: Christian Gelinek --- docs/user/FlowVariables.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 1f1de7c9eb..2b18f5deed 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -102,6 +102,7 @@ configuration file. | ADDITIONAL_LIBS| Hardened macro library files listed here. The library information is immutable and used throughout all stages. Not stored in the .odb file.| | | BALANCE_ROWS| Balance rows during placement.| 0| | BLOCKS| Blocks used as hard macros in a hierarchical flow. Do note that you have to specify block-specific inputs file in the directory mentioned by Makefile.| | +| BUFFER_PORTS_ARGS| Specify arguments to the buffer_ports call during placement. Only used if DONT_BUFFER_PORTS=0.| | | CAP_MARGIN| Specifies a capacitance margin when fixing max capacitance violations. This option allows you to overfix.| | | CDL_FILES| Insert additional Circuit Description Language (`.cdl`) netlist files.| | | CELL_PAD_IN_SITES_DETAIL_PLACEMENT| Cell padding on both sides in site widths to ease routability in detail placement.| 0| @@ -129,7 +130,6 @@ configuration file. | DFF_LIB_FILES| Technology mapping liberty files for flip-flops.| | | DIE_AREA| The die area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2).| | | DONT_BUFFER_PORTS| Do not buffer input/output ports during floorplanning.| 0| -| BUFFER_PORTS_ARGS| Specify arguments to the buffer_ports call during placement. Only used if DONT_BUFFER_PORTS=0.| | | DONT_USE_CELLS| Dont use cells eases pin access in detailed routing.| | | DPO_MAX_DISPLACEMENT| Specifies how far an instance can be moved when optimizing.| 5 1| | EARLY_SIZING_CAP_RATIO| Ratio between the input pin capacitance and the output pin load during initial gate sizing.| | @@ -370,6 +370,7 @@ configuration file. ## place variables - [BALANCE_ROWS](#BALANCE_ROWS) +- [BUFFER_PORTS_ARGS](#BUFFER_PORTS_ARGS) - [CELL_PAD_IN_SITES_DETAIL_PLACEMENT](#CELL_PAD_IN_SITES_DETAIL_PLACEMENT) - [CELL_PAD_IN_SITES_GLOBAL_PLACEMENT](#CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) - [CLUSTER_FLOPS](#CLUSTER_FLOPS) From 32f643afaf8b5f304ab7dc513501413afded7eb4 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Tue, 18 Nov 2025 14:44:18 +0000 Subject: [PATCH 049/364] update metrics for mpl changes nangate45/swerv_wrapper: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -33.1 | -60.3 | Failing | | globalroute__timing__setup__ws | -0.1 | -0.208 | Failing | | globalroute__timing__setup__tns | -48.5 | -62.0 | Failing | | detailedroute__timing__hold__tns | -0.422 | -4.39 | Failing | | finish__timing__setup__tns | -89.4 | -114.0 | Failing | | finish__timing__hold__tns | -17.7 | -5.95 | Tighten | nangate45/tinyRocket: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -11.3 | -17.9 | Failing | | globalroute__timing__setup__ws | -0.134 | -0.129 | Tighten | | globalroute__timing__setup__tns | -24.3 | -22.4 | Tighten | | finish__timing__setup__tns | -27.5 | -27.3 | Tighten | asap7/swerv_wrapper: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 55898 | 55869 | Tighten | | detailedroute__route__wirelength | 1610613 | 1585423 | Tighten | | finish__timing__setup__ws | -526.0 | -305.0 | Tighten | | finish__timing__setup__tns | -227000.0 | -88100.0 | Tighten | | finish__timing__hold__tns | -91800.0 | -115000.0 | Failing | gf12/tinyRocket: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -314.0 | -872.0 | Failing | | globalroute__timing__setup__ws | -56.6 | -48.1 | Tighten | | globalroute__timing__setup__tns | -471.0 | -168.0 | Tighten | | detailedroute__timing__hold__tns | -636.0 | -1290.0 | Failing | gf12/bp_single: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__flow__warnings__count:DRT-0120 | 4 | 2 | Tighten | | globalroute__flow__warnings__count:DRT-0120 | 4 | 2 | Tighten | | cts__timing__hold__ws | -100.0 | -200.0 | Failing | | cts__timing__hold__tns | -400.0 | -1360.0 | Failing | | detailedroute__timing__setup__ws | -166.0 | -139.0 | Tighten | | detailedroute__timing__setup__tns | -675.0 | -524.0 | Tighten | | detailedroute__timing__hold__tns | -10700.0 | -8390.0 | Tighten | | finish__timing__setup__ws | -130.0 | -109.0 | Tighten | | finish__timing__setup__tns | -434.0 | -409.0 | Tighten | | finish__design__instance__area | 480134 | 480077 | Tighten | Signed-off-by: Arthur Koucher --- .../asap7/swerv_wrapper/rules-base.json | 15 ++++--- flow/designs/gf12/bp_single/rules-base.json | 39 ++++++++----------- flow/designs/gf12/tinyRocket/rules-base.json | 18 +++++++-- .../nangate45/swerv_wrapper/rules-base.json | 12 +++--- .../nangate45/tinyRocket/rules-base.json | 8 ++-- 5 files changed, 51 insertions(+), 41 deletions(-) diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index fcd6cd9bcc..1eb5e13acc 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -49,6 +49,11 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:PDN-0110": { + "value": 110, + "compare": "<=", + "level": "warning" + }, "flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", @@ -88,7 +93,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 55898, + "value": 55869, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -144,7 +149,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1610613, + "value": 1585423, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -176,11 +181,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -526.0, + "value": -305.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -227000.0, + "value": -88100.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -188,7 +193,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -91800.0, + "value": -115000.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index a910d71ac4..e33b66838c 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -9,6 +9,11 @@ "compare": "<=", "level": "warning" }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:STA-1551": { "value": 40, "compare": "<=", @@ -20,7 +25,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 4, + "value": 2, "compare": "<=", "level": "warning" }, @@ -84,11 +89,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-0231": { - "value": 8, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:PDN-1031": { "value": 1, "compare": "<=", @@ -119,13 +119,8 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GRT-0115": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0704": { - "value": 1, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 4, "compare": "<=", "level": "warning" }, @@ -135,7 +130,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 4, + "value": 2, "compare": "<=", "level": "warning" }, @@ -211,11 +206,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -100.0, + "value": -200.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -400.0, + "value": -1360.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -255,11 +250,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -166.0, + "value": -139.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -675.0, + "value": -524.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -267,15 +262,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -10700.0, + "value": -8390.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -130.0, + "value": -109.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -434.0, + "value": -409.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -287,7 +282,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 480134, + "value": 480077, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index ab08c7504d..63344e6d25 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -54,11 +54,21 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0142": { "value": 5, "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "placeopt__flow__warnings__count:RSZ-0095": { "value": 1, "compare": "<=", @@ -97,7 +107,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -314.0, + "value": -872.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -113,11 +123,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -56.6, + "value": -48.1, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -471.0, + "value": -168.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -157,7 +167,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -636.0, + "value": -1290.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index e3a1feae49..bb22b425dc 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -72,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -33.1, + "value": -60.3, "compare": ">=" }, "cts__timing__hold__ws": { @@ -88,11 +88,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.1, + "value": -0.208, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -48.5, + "value": -62.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -132,7 +132,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.422, + "value": -4.39, "compare": ">=" }, "finish__timing__setup__ws": { @@ -140,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -89.4, + "value": -114.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -148,7 +148,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -17.7, + "value": -5.95, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 0abf6cd71f..f5b2fd1611 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -77,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -11.3, + "value": -17.9, "compare": ">=" }, "cts__timing__hold__ws": { @@ -93,11 +93,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.134, + "value": -0.129, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -24.3, + "value": -22.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -145,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -27.5, + "value": -27.3, "compare": ">=" }, "finish__timing__hold__ws": { From 772a9e2a0e0ba0bdc9a9700c25782c51f5d86105 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Wed, 19 Nov 2025 09:45:24 -0300 Subject: [PATCH 050/364] update OR Signed-off-by: Arthur Koucher --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 7bc521f36a..507120376b 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 7bc521f36a34c986885473856e9f5b464093e38a +Subproject commit 507120376bd7562ab188162ad37d684da97d5ba7 From d2220c91c4cd65cc694ce2a646f1cc064ea4ee9f Mon Sep 17 00:00:00 2001 From: Miguel Dalberto Date: Tue, 18 Nov 2025 19:28:52 -0300 Subject: [PATCH 051/364] always run cleanup and reporting once tests stage is reached Signed-off-by: Miguel Pedro --- jenkins/public_nightly.Jenkinsfile | 26 +++++++++++++++----------- jenkins/public_tests_all.Jenkinsfile | 22 +++++++++++++--------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/jenkins/public_nightly.Jenkinsfile b/jenkins/public_nightly.Jenkinsfile index faea6431e4..02c1261812 100644 --- a/jenkins/public_nightly.Jenkinsfile +++ b/jenkins/public_nightly.Jenkinsfile @@ -55,18 +55,22 @@ node { buildBins(DOCKER_IMAGE, '--local --no_init --latest'); } - stage('Run Tests') { - if (env.CHANGE_BRANCH && env.CHANGE_BRANCH.contains('ci-dev')) { - runTests(DOCKER_IMAGE, 'dev'); - } else { - runTests(DOCKER_IMAGE, 'nightly'); + try { + stage('Run Tests') { + if (env.CHANGE_BRANCH && env.CHANGE_BRANCH.contains('ci-dev')) { + runTests(DOCKER_IMAGE, 'dev'); + } else { + runTests(DOCKER_IMAGE, 'nightly'); + } + } + } catch (e) { + throw e + } finally { + stage ('Cleanup and Reporting') { + env.CHANGE_BRANCH = 'nightly' + env.BRANCH_NAME = 'nightly' + finalReport(DOCKER_IMAGE); } - } - - stage ('Cleanup and Reporting') { - env.CHANGE_BRANCH = 'nightly' - env.BRANCH_NAME = 'nightly' - finalReport(DOCKER_IMAGE); } } diff --git a/jenkins/public_tests_all.Jenkinsfile b/jenkins/public_tests_all.Jenkinsfile index 03810b505c..267804ea5a 100644 --- a/jenkins/public_tests_all.Jenkinsfile +++ b/jenkins/public_tests_all.Jenkinsfile @@ -52,16 +52,20 @@ node { buildBins(DOCKER_IMAGE); } - stage('Run Tests') { - if (env.CHANGE_BRANCH && env.CHANGE_BRANCH.contains('ci-dev')) { - runTests(DOCKER_IMAGE, 'dev'); - } else { - runTests(DOCKER_IMAGE, 'pr'); + try { + stage('Run Tests') { + if (env.CHANGE_BRANCH && env.CHANGE_BRANCH.contains('ci-dev')) { + runTests(DOCKER_IMAGE, 'dev'); + } else { + runTests(DOCKER_IMAGE, 'pr'); + } + } + } catch (e) { + throw e + } finally { + stage ('Cleanup and Reporting') { + finalReport(DOCKER_IMAGE); } - } - - stage ('Cleanup and Reporting') { - finalReport(DOCKER_IMAGE); } } From 4ce32ebdb7ef4ec4e6ea54de137140e6833958c6 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Wed, 19 Nov 2025 21:11:46 +0000 Subject: [PATCH 052/364] designs/gf12/bp_dual/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__flow__warnings__count:DRT-0120 | 54 | 55 | Failing | | globalroute__flow__warnings__count:DRT-0120 | 54 | 55 | Failing | | placeopt__design__instance__area | 836829 | 835155 | Tighten | | placeopt__design__instance__count__stdcell | 908653 | 902982 | Tighten | | cts__design__instance__count__setup_buffer | 79013 | 78520 | Tighten | | cts__design__instance__count__hold_buffer | 79013 | 78520 | Tighten | | cts__timing__setup__ws | -193.0 | -100.0 | Tighten | | cts__timing__setup__tns | -4660.0 | -400.0 | Tighten | | cts__timing__hold__ws | 0.0 | -114.0 | Failing | | cts__timing__hold__tns | 0.0 | -422.0 | Failing | | globalroute__timing__hold__ws | -2.0547 | -111.0 | Failing | | globalroute__timing__hold__tns | -2.0547 | -413.0 | Failing | | detailedroute__route__wirelength | 12984371 | 11876263 | Tighten | | detailedroute__timing__setup__ws | -307.0 | -191.0 | Tighten | | detailedroute__timing__setup__tns | -2500.0 | -883.0 | Tighten | | detailedroute__timing__hold__tns | -2850.0 | -4230.0 | Failing | | finish__timing__setup__ws | -216.79 | -165.0 | Tighten | | finish__timing__setup__tns | -1441.656 | -701.0 | Tighten | | finish__timing__hold__tns | -443.0 | -403.0 | Tighten | | finish__design__instance__area | 851537 | 849384 | Tighten | Signed-off-by: Matt Liberty --- flow/designs/gf12/bp_dual/rules-base.json | 56 +++++++++++++---------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/flow/designs/gf12/bp_dual/rules-base.json b/flow/designs/gf12/bp_dual/rules-base.json index ab5e433780..d807bb9bb1 100644 --- a/flow/designs/gf12/bp_dual/rules-base.json +++ b/flow/designs/gf12/bp_dual/rules-base.json @@ -4,7 +4,7 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:RSZ-0062": { + "cts__flow__warnings__count:RSZ-0066": { "value": 1, "compare": "<=", "level": "warning" @@ -20,7 +20,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 54, + "value": 55, "compare": "<=", "level": "warning" }, @@ -74,8 +74,8 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-0231": { - "value": 8, + "flow__warnings__count:PDN-0195": { + "value": 26, "compare": "<=", "level": "warning" }, @@ -109,13 +109,18 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 4, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:STA-1551": { "value": 40, "compare": "<=", "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 54, + "value": 55, "compare": "<=", "level": "warning" }, @@ -129,6 +134,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:STA-1551": { "value": 40, "compare": "<=", @@ -149,11 +159,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 836829, + "value": 835155, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 908653, + "value": 902982, "compare": "<=" }, "detailedplace__design__violations": { @@ -161,27 +171,27 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 79013, + "value": 78520, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 79013, + "value": 78520, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -193.0, + "value": -100.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -4660.0, + "value": -400.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": 0.0, + "value": -114.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": 0.0, + "value": -422.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -197,15 +207,15 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -2.0547, + "value": -111.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -2.0547, + "value": -413.0, "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 12984371, + "value": 11876263, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -221,11 +231,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -307.0, + "value": -191.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -2500.0, + "value": -883.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -233,15 +243,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -2850.0, + "value": -4230.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -216.79, + "value": -165.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1441.656, + "value": -701.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -249,11 +259,11 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -443.0, + "value": -403.0, "compare": ">=" }, "finish__design__instance__area": { - "value": 851537, + "value": 849384, "compare": "<=" } } \ No newline at end of file From 2ffab8b026a22df9825550099389a3ea8b497d85 Mon Sep 17 00:00:00 2001 From: vvbandeira <9001905+vvbandeira@users.noreply.github.com> Date: Thu, 20 Nov 2025 08:11:43 +0000 Subject: [PATCH 053/364] [BOT] Update OpenROAD submodule Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 507120376b..d6e98657f1 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 507120376bd7562ab188162ad37d684da97d5ba7 +Subproject commit d6e98657f1f54376c555fdcc830bb888bccd2bec From 9e1e608d80aa3f00b2516270ad9da0d64ceb991a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 20 Nov 2025 10:25:53 +0000 Subject: [PATCH 054/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 103 +-------- flow/designs/asap7/aes-mbff/rules-base.json | 94 +-------- flow/designs/asap7/aes/rules-base.json | 104 +-------- flow/designs/asap7/aes_lvt/rules-base.json | 81 +------ flow/designs/asap7/cva6/rules-base.json | 112 +--------- flow/designs/asap7/ethmac/rules-base.json | 122 +---------- flow/designs/asap7/ethmac_lvt/rules-base.json | 110 +--------- flow/designs/asap7/gcd-ccs/rules-base.json | 87 +------- flow/designs/asap7/gcd/rules-base.json | 91 +------- flow/designs/asap7/ibex/rules-base.json | 102 +-------- flow/designs/asap7/jpeg/rules-base.json | 99 +-------- flow/designs/asap7/jpeg_lvt/rules-base.json | 90 -------- flow/designs/asap7/mock-alu/rules-base.json | 107 +--------- flow/designs/asap7/mock-cpu/rules-base.json | 198 +----------------- .../asap7/riscv32i-mock-sram/rules-base.json | 103 +-------- flow/designs/asap7/riscv32i/rules-base.json | 105 +--------- .../asap7/swerv_wrapper/rules-base.json | 85 -------- flow/designs/asap7/uart/rules-base.json | 85 -------- flow/designs/gf180/aes-hybrid/rules-base.json | 64 +----- flow/designs/gf180/aes/rules-base.json | 76 +------ flow/designs/gf180/ibex/rules-base.json | 80 +------ flow/designs/gf180/jpeg/rules-base.json | 45 ---- flow/designs/gf180/riscv32i/rules-base.json | 56 +---- .../designs/gf180/uart-blocks/rules-base.json | 30 --- flow/designs/ihp-sg13g2/aes/rules-base.json | 33 +-- flow/designs/ihp-sg13g2/gcd/rules-base.json | 32 +-- .../i2c-gpio-expander/rules-base.json | 85 -------- flow/designs/ihp-sg13g2/ibex/rules-base.json | 27 +-- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 25 --- .../ihp-sg13g2/riscv32i/rules-base.json | 35 ---- flow/designs/ihp-sg13g2/spi/rules-base.json | 30 --- flow/designs/nangate45/aes/rules-base.json | 47 +---- .../nangate45/ariane133/rules-base.json | 40 ---- .../nangate45/ariane136/rules-base.json | 58 +---- .../nangate45/black_parrot/rules-base.json | 82 +------- .../nangate45/bp_be_top/rules-base.json | 64 +----- .../nangate45/bp_fe_top/rules-base.json | 46 +--- .../nangate45/bp_multi_top/rules-base.json | 75 +------ .../nangate45/dynamic_node/rules-base.json | 51 +---- flow/designs/nangate45/gcd/rules-base.json | 45 +--- flow/designs/nangate45/ibex/rules-base.json | 61 +----- flow/designs/nangate45/jpeg/rules-base.json | 64 +----- .../nangate45/mempool_group/rules-base.json | 99 +-------- flow/designs/nangate45/swerv/rules-base.json | 45 ---- .../nangate45/swerv_wrapper/rules-base.json | 40 ---- .../nangate45/tinyRocket/rules-base.json | 45 ---- flow/designs/sky130hd/aes/rules-base.json | 31 +-- .../sky130hd/chameleon/rules-base.json | 56 +---- flow/designs/sky130hd/gcd/rules-base.json | 59 +----- flow/designs/sky130hd/ibex/rules-base.json | 42 +--- flow/designs/sky130hd/jpeg/rules-base.json | 45 ---- .../sky130hd/microwatt/rules-base.json | 101 +-------- .../designs/sky130hd/riscv32i/rules-base.json | 61 +----- flow/designs/sky130hs/aes/rules-base.json | 45 +--- flow/designs/sky130hs/gcd/rules-base.json | 62 +----- flow/designs/sky130hs/ibex/rules-base.json | 65 +----- flow/designs/sky130hs/jpeg/rules-base.json | 55 ----- .../designs/sky130hs/riscv32i/rules-base.json | 44 +--- 58 files changed, 207 insertions(+), 3817 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 4f12b227fb..75fdc401cd 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 43, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 19, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2130.06, "compare": "<=" @@ -147,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10500.0, + "value": -10400.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -159,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 55890, + "value": 55719, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -191,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -127.0, + "value": -106.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8360.0, + "value": -7200.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 8d36181dd2..7ebe11e453 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" @@ -142,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2430.0, + "value": -2420.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -190,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -848.0, + "value": -846.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index 3b5e5e8ae0..e8f25a4c33 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" @@ -98,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 2177, + "value": 2162, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -118,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -43.9, + "value": -34.8, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -793.0, + "value": -599.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -138,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -54.9, + "value": -47.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2160.0, + "value": -2150.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -186,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -43.1, + "value": -38.1, "compare": ">=" }, "finish__timing__setup__tns": { @@ -202,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 2278, + "value": 2272, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/asap7/aes_lvt/rules-base.json b/flow/designs/asap7/aes_lvt/rules-base.json index 11d4ab1f30..179dc34085 100644 --- a/flow/designs/asap7/aes_lvt/rules-base.json +++ b/flow/designs/asap7/aes_lvt/rules-base.json @@ -1,79 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1920.63, "compare": "<=" @@ -83,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 1987, + "value": 1981, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -139,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 69277, + "value": 68956, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -187,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 2026, + "value": 2017, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/asap7/cva6/rules-base.json b/flow/designs/asap7/cva6/rules-base.json index 8b8af964b5..7d8f917a42 100644 --- a/flow/designs/asap7/cva6/rules-base.json +++ b/flow/designs/asap7/cva6/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0366": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0473": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 18784.414249, "compare": "<=" @@ -128,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -50.8, + "value": -50.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -201.0, + "value": -200.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -148,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -54.4, + "value": -50.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -254.0, + "value": -201.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -196,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -56.3, + "value": -50.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -257.0, + "value": -200.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 377752b451..44a406480e 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8450.0, "compare": "<=" @@ -108,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 8676, + "value": 8668, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 69601, + "value": 69466, "compare": "<=" }, "detailedplace__design__violations": { @@ -120,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 6052, + "value": 6040, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 6052, + "value": 6040, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -125.0, + "value": -122.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2530.0, + "value": -2190.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -148,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -144.0, + "value": -136.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3740.0, + "value": -3110.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -184,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1650.0, + "value": -1380.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -196,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -127.0, + "value": -126.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2599.45, + "value": -2350.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index 52d48426d4..7dceebacc0 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 788, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8418.677166, "compare": "<=" @@ -128,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -38.4, + "value": -35.8, "compare": ">=" }, "cts__timing__setup__tns": { @@ -148,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -46.6, + "value": -42.3, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -506.0, + "value": -475.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -196,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -38.1, + "value": -31.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -343.0, + "value": -296.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index ab48974cbf..5304a3195e 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 508, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" @@ -185,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -684.0, + "value": -632.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index e008dfe2a4..0316999284 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 508, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" @@ -117,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -419.0, + "value": -411.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -137,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -551.0, + "value": -521.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -185,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -402.0, + "value": -397.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index 7a9eb74f59..b4ea6c4248 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2612.69, "compare": "<=" @@ -118,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -213.0, + "value": -207.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -94400.0, + "value": -72300.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -138,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -214.0, + "value": -211.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -99700.0, + "value": -90200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -186,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -193.0, + "value": -177.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -53400.0, + "value": -46900.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/jpeg/rules-base.json b/flow/designs/asap7/jpeg/rules-base.json index 2454601363..7f279fef1d 100644 --- a/flow/designs/asap7/jpeg/rules-base.json +++ b/flow/designs/asap7/jpeg/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 7008.24, "compare": "<=" @@ -123,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -50.8, + "value": -38.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -153.0, + "value": -140.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/asap7/jpeg_lvt/rules-base.json b/flow/designs/asap7/jpeg_lvt/rules-base.json index 029170e994..c122ecacbe 100644 --- a/flow/designs/asap7/jpeg_lvt/rules-base.json +++ b/flow/designs/asap7/jpeg_lvt/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 7047.572508, "compare": "<=" diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 24119bbecc..5b1f30a4bc 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1665.04, "compare": "<=" @@ -127,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -19200.0, + "value": -16300.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -143,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -310.0, + "value": -309.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -23300.0, + "value": -19100.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -175,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -255.0, + "value": -254.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -14900.0, + "value": -12200.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -195,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -20500.0, + "value": -17200.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index 180a46a0f9..f48d6b927a 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -1,194 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 696, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 7302.54, "compare": "<=" @@ -222,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -3130.0, + "value": -2260.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -242,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3830.0, + "value": -2710.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -274,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -2630.0, + "value": -1840.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -290,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3620.0, + "value": -2590.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index d40cd662a5..323b57ca27 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1640.0, "compare": "<=" @@ -159,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 73967, + "value": 73748, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -191,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -109.0, + "value": -101.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1870.0, + "value": -430.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -207,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 2277, + "value": 2270, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index 090ab6bdec..1e5c546a54 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2908.684535, "compare": "<=" @@ -123,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -86.2, + "value": -82.9, "compare": ">=" }, "cts__timing__setup__tns": { @@ -143,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -83.9, + "value": -77.1, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -17300.0, + "value": -280.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -191,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -119.0, + "value": -55.2, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -25000.0, + "value": -209.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 1eb5e13acc..da8f9e65a7 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 110, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 53459.06, "compare": "<=" diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index bea3214abc..d3766d6d6b 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 795, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 83.24, "compare": "<=" diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index f8f13bb56c..39d9abcfa8 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 489779.41376, "compare": "<=" @@ -58,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 653324, + "value": 652854, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 21930, + "value": 21903, "compare": "<=" }, "detailedplace__design__violations": { @@ -82,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -160.0, + "value": -136.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -102,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -187.0, + "value": -157.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -83.5, + "value": -71.3, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -146,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -1.3, + "value": -1.28, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -181.0, + "value": -154.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index 45b5deead7..9015724720 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -1,64 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 620000.0, "compare": "<=" @@ -68,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 807422, + "value": 806649, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 24309, + "value": 24289, "compare": "<=" }, "detailedplace__design__violations": { @@ -92,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -126.0, + "value": -108.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -112,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -149.0, + "value": -125.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -124,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1375727, + "value": 1368635, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -144,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -64.1, + "value": -56.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -160,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -141.0, + "value": -119.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -172,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 853113, + "value": 849171, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 753f018c24..68d4080cb3 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -1,66 +1,6 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 21, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 643, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { - "value": 719000.0, + "value": 717000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -68,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 756103, + "value": 748819, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 16806, + "value": 16536, "compare": "<=" }, "detailedplace__design__violations": { @@ -80,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 1461, + "value": 1438, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1461, + "value": 1438, "compare": "<=" }, "cts__timing__setup__ws": { @@ -92,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -44.8, + "value": -4.88, "compare": ">=" }, "cts__timing__hold__ws": { @@ -108,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.893, + "value": -0.854, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -93.6, + "value": -7.82, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -124,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1457917, + "value": 1428792, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -160,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -52.5, + "value": -4.28, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index 6487f8f34e..fe53818414 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -1,49 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 144, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 48, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2161429.49, "compare": "<=" diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 91bbd61edb..6123190530 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -1,44 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 54, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 355874.87, "compare": "<=" @@ -52,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 9602, + "value": 9586, "compare": "<=" }, "detailedplace__design__violations": { @@ -68,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.726, + "value": -0.5, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2.23, + "value": -2.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -88,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.795, + "value": -0.5, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2.3, + "value": -2.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -104,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 817804, + "value": 813705, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -136,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.834, + "value": -0.522, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.38, + "value": -2.04, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/uart-blocks/rules-base.json b/flow/designs/gf180/uart-blocks/rules-base.json index 73dca907ee..3b196671a5 100644 --- a/flow/designs/gf180/uart-blocks/rules-base.json +++ b/flow/designs/gf180/uart-blocks/rules-base.json @@ -1,34 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 61300.0, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/aes/rules-base.json b/flow/designs/ihp-sg13g2/aes/rules-base.json index 4abcec0829..d7720ece1e 100644 --- a/flow/designs/ihp-sg13g2/aes/rules-base.json +++ b/flow/designs/ihp-sg13g2/aes/rules-base.json @@ -1,31 +1,6 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:FIN-0010": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { - "value": 217000.0, + "value": 214000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -33,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 203465, + "value": 201011, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 18984, + "value": 18625, "compare": "<=" }, "detailedplace__design__violations": { @@ -137,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 1054989, + "value": 204800, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/gcd/rules-base.json b/flow/designs/ihp-sg13g2/gcd/rules-base.json index 5ee3051616..440aa3d02a 100644 --- a/flow/designs/ihp-sg13g2/gcd/rules-base.json +++ b/flow/designs/ihp-sg13g2/gcd/rules-base.json @@ -1,34 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:FIN-0010": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 6828.9632, "compare": "<=" @@ -38,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 7382, + "value": 7380, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json index b8120e3c61..7eb677d84f 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:PAD-0033": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0347": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0189": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 286097.29, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index e994f0eff1..bfa56b95ae 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -1,29 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 305820.24, "compare": "<=" @@ -37,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 20731, + "value": 20659, "compare": "<=" }, "detailedplace__design__violations": { diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index 34808de897..8ffc9a170d 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -1,29 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1499147.11, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json index 8063b1004d..0e911b7b11 100644 --- a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json +++ b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json @@ -1,39 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:FIN-0010": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 151466.57, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/spi/rules-base.json b/flow/designs/ihp-sg13g2/spi/rules-base.json index c74b659746..69325cffd1 100644 --- a/flow/designs/ihp-sg13g2/spi/rules-base.json +++ b/flow/designs/ihp-sg13g2/spi/rules-base.json @@ -1,34 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:FIN-0010": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2232.28, "compare": "<=" diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index 5e9e464ee1..e88d5ec9ac 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 23300.0, "compare": "<=" @@ -43,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 26064, + "value": 26018, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -83,19 +48,19 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0685, + "value": -0.0595, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.799, + "value": -0.622, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0441, + "value": -0.0419, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.171, + "value": -0.166, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -135,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.08, + "value": -1.02, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 87da011faf..8d0f5910b7 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -1,44 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 825864.85, "compare": "<=" diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 8986744514..2caeee6894 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0441": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 845982.06, "compare": "<=" @@ -86,11 +36,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.747, + "value": -0.693, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -5.49, + "value": -3.4, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -138,11 +88,11 @@ "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -0.326, + "value": -0.3, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.49, + "value": -1.2, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index c5da81d2d8..25b04ba3d8 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -1,74 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 42, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0281": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 321, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 44, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 42, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 777884.7342, "compare": "<=" @@ -78,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 775367, + "value": 774940, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -150,19 +80,19 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -4.94, + "value": -2.23, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -266.0, + "value": -3.13, "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -0.885, + "value": -0.312, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -15.7, + "value": -1.23, "compare": ">=" }, "finish__timing__setup__ws": { @@ -182,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 789561, + "value": 788956, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 1d85553b0c..d0382b68c8 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 13, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 268204.56, "compare": "<=" @@ -78,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.333, + "value": -0.294, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -19.9, + "value": -16.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -98,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.335, + "value": -0.3, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19.8, + "value": -16.9, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -114,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2566212, + "value": 2504235, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -146,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.392, + "value": -0.366, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -28.7, + "value": -24.3, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 8cf7139a36..7768629404 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -1,44 +1,4 @@ { - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 241575.35, "compare": "<=" @@ -88,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0931, + "value": -0.09, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.367, + "value": -0.36, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -140,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8.97, + "value": -7.01, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index 58183e8b46..d7a629b01b 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -1,69 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-2021": { - "value": 110, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 365, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 46, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 586679.15, "compare": "<=" @@ -129,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4180077, + "value": 4162196, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -145,19 +80,19 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -6.13, + "value": -3.93, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -607.0, + "value": -163.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -1.48, + "value": -1.13, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -105.0, + "value": -72.3, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 8933670fde..897131ff70 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 25515.12, "compare": "<=" @@ -109,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 229884, + "value": 229747, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -141,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.454, + "value": -0.453, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.86, + "value": -1.81, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 1fb1bc7827..2fa320caff 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 725.6, "compare": "<=" @@ -67,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.569, + "value": -0.566, "compare": ">=" }, "cts__timing__hold__ws": { @@ -87,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.695, + "value": -0.672, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -99,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4628, + "value": 4615, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -131,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0774, + "value": -0.0772, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.629, + "value": -0.621, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index 77ec70bfe8..2755dcf22d 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -1,51 +1,6 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 191, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { - "value": 32643.82, + "value": 32500.0, "compare": "<=" }, "constraints__clocks__count": { @@ -53,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 32826, + "value": 32579, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -73,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.12, + "value": -0.114, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.45, + "value": -0.444, "compare": ">=" }, "cts__timing__hold__ws": { @@ -109,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 307535, + "value": 294417, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -141,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.133, + "value": -0.131, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.93, + "value": -0.969, "compare": ">=" }, "finish__timing__hold__ws": { @@ -157,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33700, + "value": 33455, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index b2443ae1cb..9ae51245c4 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -1,64 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 102576.23, "compare": "<=" @@ -112,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -44.3, + "value": -43.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -144,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -9.03, + "value": -7.59, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index ef56f9a4d2..d6c2408c2a 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0345": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0273": { - "value": 20, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0450": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 271098.37, "compare": "<=" @@ -179,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -8320.0, + "value": -7110.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -187,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -2.98, + "value": -1.54, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index c550d32e98..63b29d0d98 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 178043.59, "compare": "<=" diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index bb22b425dc..8e27a1bb8c 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 724516.2, "compare": "<=" diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index f5b2fd1611..52b5ed0556 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" diff --git a/flow/designs/sky130hd/aes/rules-base.json b/flow/designs/sky130hd/aes/rules-base.json index 58d7c8e294..1c13ee5747 100644 --- a/flow/designs/sky130hd/aes/rules-base.json +++ b/flow/designs/sky130hd/aes/rules-base.json @@ -1,29 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 99830.94, "compare": "<=" @@ -73,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.272, + "value": -0.225, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.0, + "value": -0.9, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -89,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 961372, + "value": 897106, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index 8924190d16..3c1c011cdc 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -1,54 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ORD-2011": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 27373.26, "compare": "<=" @@ -94,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 232, + "value": 194, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -114,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 784325, + "value": 771372, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -162,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 6532057, + "value": 6531954, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/gcd/rules-base.json b/flow/designs/sky130hd/gcd/rules-base.json index 849724e2bd..39e47c38b4 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 939, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2760.0, "compare": "<=" @@ -73,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.45, + "value": -2.39, "compare": ">=" }, "cts__timing__setup__tns": { @@ -93,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.66, + "value": -2.58, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -125,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -2.2, + "value": -2.15, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -106.0, + "value": -89.2, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -141,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -2.51, + "value": -2.43, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -122.0, + "value": -102.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -157,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 5494, + "value": 5492, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index 5d08837ec2..30f5be0f54 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 153658.0, "compare": "<=" @@ -104,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 750043, + "value": 749863, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index 41fded0ba2..2be593e938 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 68, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 17, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 463729.45, "compare": "<=" diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 3c40d56a3e..fd1da8beb1 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 139, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" @@ -147,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -693.0, + "value": -692.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -183,7 +88,7 @@ "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -3.14, + "value": -3.13, "compare": ">=" }, "detailedroute__timing__hold__tns": { @@ -195,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -765.0, + "value": -757.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index ce1a41c510..c29ec91b42 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 70778.51, "compare": "<=" @@ -73,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -1.85, + "value": -1.59, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -36.5, + "value": -21.9, "compare": ">=" }, "cts__timing__hold__ws": { @@ -93,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.07, + "value": -1.88, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -105.0, + "value": -64.9, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -125,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -0.903, + "value": -0.867, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -6.99, + "value": -4.19, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -141,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -1.85, + "value": -1.72, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -53.2, + "value": -28.7, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index e5449e13d3..07fcc1a062 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 134349.28, "compare": "<=" @@ -63,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.357, + "value": -0.18, "compare": ">=" }, "cts__timing__setup__tns": { @@ -83,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.585, + "value": -0.337, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -5.4, + "value": -3.24, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -131,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.313, + "value": -0.229, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.34, + "value": -0.789, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 393ee1a33b..3f6ed631fc 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 153, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 4532.91, "compare": "<=" @@ -98,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.635, + "value": -0.627, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -114,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 15082, + "value": 14922, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -130,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -0.341, + "value": -0.326, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7.52, + "value": -7.01, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -150,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -15.2, + "value": -15.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -162,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 8200, + "value": 8163, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index cdc5c20e37..58c43ba284 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -1,51 +1,6 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { - "value": 214573.94, + "value": 214000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -53,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 232924, + "value": 231603, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -73,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.629, + "value": -0.384, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2.53, + "value": -1.46, "compare": ">=" }, "cts__timing__hold__ws": { @@ -93,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.95, + "value": -0.726, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -250.0, + "value": -70.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -109,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 845495, + "value": 827164, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -141,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.859, + "value": -0.575, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -85.9, + "value": -8.93, "compare": ">=" }, "finish__timing__hold__ws": { @@ -157,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 250383, + "value": 245144, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index 3dad92744a..62e19dd1d1 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,59 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 66, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index c29aa8f33a..d9d85cd5e3 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 97352.63, "compare": "<=" @@ -92,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -111.0, + "value": -51.9, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -140,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -33.2, + "value": -26.7, "compare": ">=" }, "finish__timing__hold__ws": { From 3b18b383c5d76e5ed43b8fbd19c44feb5be809d4 Mon Sep 17 00:00:00 2001 From: Osama Date: Thu, 20 Nov 2025 14:53:16 +0200 Subject: [PATCH 055/364] update OR: merge master Signed-off-by: Osama --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 5b739f1254..db27130b7c 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 5b739f1254fdb2de5ce7f052251dd48d976ff284 +Subproject commit db27130b7c591a37269594b9b91e2c4bb8a3c2be From 8eac304f226b53139e21d71551705a5c3a133844 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Thu, 20 Nov 2025 18:04:06 +0000 Subject: [PATCH 056/364] update OR Signed-off-by: Arthur Koucher --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index d6e98657f1..f5093cadd0 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit d6e98657f1f54376c555fdcc830bb888bccd2bec +Subproject commit f5093cadd0c1a28728e1976808083d2724daf965 From 1fcd8001921bc4432ac5fdbbcd5749e04c699a70 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Thu, 20 Nov 2025 18:27:13 +0000 Subject: [PATCH 057/364] new private metrics for mpl changes gf12/bp_single: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__flow__warnings__count:DRT-0120 | 2 | 4 | Failing | | globalroute__flow__warnings__count:DRT-0120 | 2 | 4 | Failing | | placeopt__design__instance__area | 472038 | 471924 | Tighten | | cts__timing__hold__tns | -1360.0 | -2280.0 | Failing | | globalroute__timing__hold__tns | -1280.0 | -2020.0 | Failing | | detailedroute__timing__setup__tns | -524.0 | -1710.0 | Failing | | detailedroute__timing__hold__tns | -8390.0 | -7140.0 | Tighten | | finish__design__instance__area | 480077 | 479804 | Tighten | gf12/ariane: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__flow__warnings__count:DRT-0120 | 24 | 25 | Failing | | globalroute__flow__warnings__count:DRT-0120 | 24 | 25 | Failing | | cts__timing__setup__tns | -8180.0 | -725.0 | Tighten | | globalroute__timing__setup__ws | -210.0 | -209.0 | Tighten | | detailedroute__route__wirelength | 4359055 | 4021827 | Tighten | | detailedroute__timing__hold__tns | -1510.0 | -2390.0 | Failing | gf12/ca53: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__hold__tns | -1410.0 | -992.0 | Tighten | | detailedroute__timing__hold__tns | -102000.0 | -198000.0 | Failing | Signed-off-by: Arthur Koucher --- flow/designs/gf12/ariane/rules-base.json | 27 ++++++++++++++++----- flow/designs/gf12/bp_single/rules-base.json | 21 ++++++++++------ flow/designs/gf12/ca53/rules-base.json | 19 +++++++++++++-- 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index e30e9f9999..a18d176ce5 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -1,11 +1,16 @@ { + "cts__flow__warnings__count:CTS-0179": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 24, + "value": 25, "compare": "<=", "level": "warning" }, @@ -64,8 +69,13 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 24, + "value": 25, "compare": "<=", "level": "warning" }, @@ -79,6 +89,11 @@ "compare": "<=", "level": "warning" }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "placeopt__flow__warnings__count:RSZ-0095": { "value": 1, "compare": "<=", @@ -117,7 +132,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -8180.0, + "value": -725.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -133,7 +148,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -210.0, + "value": -209.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -149,7 +164,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4359055, + "value": 4021827, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -177,7 +192,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1510.0, + "value": -2390.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index e33b66838c..daf7423871 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -25,7 +25,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, + "value": 4, "compare": "<=", "level": "warning" }, @@ -130,7 +130,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, + "value": 4, "compare": "<=", "level": "warning" }, @@ -159,6 +159,11 @@ "compare": "<=", "level": "warning" }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "placeopt__flow__warnings__count:RSZ-0095": { "value": 1, "compare": "<=", @@ -178,7 +183,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 472038, + "value": 471924, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -210,7 +215,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -1360.0, + "value": -2280.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -230,7 +235,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1280.0, + "value": -2020.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -254,7 +259,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -524.0, + "value": -1710.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -262,7 +267,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -8390.0, + "value": -7140.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -282,7 +287,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 480077, + "value": 479804, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 5072be0104..37a00d878e 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -9,6 +9,11 @@ "compare": "<=", "level": "warning" }, + "detailedroute__flow__warnings__count:GRT-0281": { + "value": 18, + "compare": "<=", + "level": "warning" + }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -69,6 +74,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0120": { "value": 65, "compare": "<=", @@ -79,6 +89,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:GRT-0281": { + "value": 9, + "compare": "<=", + "level": "warning" + }, "placeopt__flow__warnings__count:RSZ-0020": { "value": 1, "compare": "<=", @@ -141,7 +156,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1410.0, + "value": -992.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -173,7 +188,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -102000.0, + "value": -198000.0, "compare": ">=" }, "finish__timing__setup__ws": { From 3549720205248adf43e8b2791caf180b93817f48 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Thu, 20 Nov 2025 19:38:09 +0000 Subject: [PATCH 058/364] rebased public PDK designs Signed-off-by: Cho Moon --- flow/designs/asap7/aes-block/rules-base.json | 21 ++++------- flow/designs/asap7/ethmac_lvt/rules-base.json | 21 +++++++---- flow/designs/asap7/ibex/rules-base.json | 15 +++----- .../asap7/swerv_wrapper/rules-base.json | 13 ++----- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 7 +--- .../nangate45/bp_fe_top/rules-base.json | 13 +++++-- .../nangate45/swerv_wrapper/rules-base.json | 15 +++----- .../nangate45/tinyRocket/rules-base.json | 13 ++----- .../sky130hd/chameleon/rules-base.json | 20 +++++----- flow/designs/sky130hd/ibex/rules-base.json | 16 ++++---- flow/designs/sky130hd/jpeg/rules-base.json | 22 +++++------ .../sky130hd/microwatt/rules-base.json | 32 ++++++++-------- .../designs/sky130hd/riscv32i/rules-base.json | 30 +++++++-------- flow/designs/sky130hs/ibex/rules-base.json | 37 ++++++------------- flow/designs/sky130hs/jpeg/rules-base.json | 23 +++++------- .../designs/sky130hs/riscv32i/rules-base.json | 12 +++--- 16 files changed, 135 insertions(+), 175 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 4f12b227fb..bb7e411a91 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -24,11 +24,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "finish__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", @@ -50,12 +45,12 @@ "level": "warning" }, "flow__warnings__count:PDN-0110": { - "value": 43, + "value": 45, "compare": "<=", "level": "warning" }, "flow__warnings__count:PDN-0195": { - "value": 19, + "value": 38, "compare": "<=", "level": "warning" }, @@ -123,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -160.0, + "value": -155.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13300.0, + "value": -13700.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -147,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10500.0, + "value": -12300.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -159,7 +154,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 55890, + "value": 55867, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -191,11 +186,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -127.0, + "value": -110.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8360.0, + "value": -7620.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index 52d48426d4..02bab0512e 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -14,18 +14,18 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:GRT-0246": { + "detailedroute__flow__warnings__count:DRT-0120": { "value": 1, "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, "compare": "<=", "level": "warning" }, @@ -74,6 +74,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:FLW-0010": { "value": 1, "compare": "<=", @@ -128,7 +133,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -38.4, + "value": -37.5, "compare": ">=" }, "cts__timing__setup__tns": { @@ -152,7 +157,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -506.0, + "value": -568.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -196,7 +201,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -38.1, + "value": -37.3, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index 7a9eb74f59..0b4ec60b2c 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -24,11 +24,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "finish__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", @@ -122,7 +117,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -94400.0, + "value": -82600.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -138,11 +133,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -214.0, + "value": -211.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -99700.0, + "value": -95000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -186,11 +181,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -193.0, + "value": -180.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -53400.0, + "value": -54900.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 1eb5e13acc..ec4463b68b 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -19,11 +19,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "finish__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", @@ -93,7 +88,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 55869, + "value": 55868, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -149,7 +144,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1585423, + "value": 1582515, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -185,7 +180,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -88100.0, + "value": -68300.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -193,7 +188,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -115000.0, + "value": -123000.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index 34808de897..fb343c464a 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -4,11 +4,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:IFP-0028": { "value": 1, "compare": "<=", @@ -101,7 +96,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 133, + "value": 138, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 8cf7139a36..92109b2d4d 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -1,10 +1,10 @@ { - "detailedroute__flow__warnings__count:GRT-0246": { + "cts__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { + "detailedroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", "level": "warning" @@ -39,6 +39,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 241575.35, "compare": "<=" @@ -92,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.367, + "value": -0.364, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -140,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8.97, + "value": -13.2, "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 bb22b425dc..841fe5b1ac 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -68,11 +63,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.1, + "value": -0.237, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -60.3, + "value": -81.5, "compare": ">=" }, "cts__timing__hold__ws": { @@ -92,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -62.0, + "value": -66.2, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -132,7 +127,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -4.39, + "value": -0.552, "compare": ">=" }, "finish__timing__setup__ws": { @@ -140,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -114.0, + "value": -116.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index f5b2fd1611..dc5ad10f21 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -77,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -17.9, + "value": -17.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -97,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -22.4, + "value": -22.2, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -129,7 +124,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -0.378, + "value": -0.345, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -145,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -27.3, + "value": -29.3, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index 8924190d16..c7ed5bb866 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -5,12 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:GRT-0243": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, + "value": 2, "compare": "<=", "level": "warning" }, @@ -45,7 +40,12 @@ "level": "warning" }, "globalroute__flow__warnings__count:GRT-0243": { - "value": 2, + "value": 3, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, "compare": "<=", "level": "warning" }, @@ -94,7 +94,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 232, + "value": 306, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -114,7 +114,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 784325, + "value": 777867, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -142,7 +142,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.4, + "value": -4.01, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index 5d08837ec2..a6bd27438f 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -14,11 +14,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:IFP-0028": { "value": 1, "compare": "<=", @@ -39,6 +34,11 @@ "compare": "<=", "level": "warning" }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 153658.0, "compare": "<=" @@ -68,11 +68,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -1.2, + "value": -0.93, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -12.6, + "value": -8.3, "compare": ">=" }, "cts__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9.3, + "value": -11.3, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index 41fded0ba2..3cc5486666 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 68, + "value": 54, "compare": "<=", "level": "warning" }, @@ -14,11 +14,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:IFP-0028": { "value": 1, "compare": "<=", @@ -30,7 +25,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 17, + "value": 18, "compare": "<=", "level": "warning" }, @@ -44,6 +39,11 @@ "compare": "<=", "level": "warning" }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 463729.45, "compare": "<=" @@ -89,15 +89,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 206, + "value": 162, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.465, + "value": -0.414, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -4.75, + "value": -3.02, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -121,7 +121,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 117, + "value": 123, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 3c40d56a3e..689342658e 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -10,7 +10,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 6, + "value": 5, "compare": "<=", "level": "warning" }, @@ -24,11 +24,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -89,6 +84,11 @@ "compare": "<=", "level": "warning" }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "placeopt__flow__warnings__count:RSZ-0095": { "value": 1, "compare": "<=", @@ -123,11 +123,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -3.7, + "value": -3.39, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -616.0, + "value": -623.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -139,11 +139,11 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 3103, + "value": 2718, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -3.87, + "value": -3.36, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -171,7 +171,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1508, + "value": 1534, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -179,7 +179,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -116.0, + "value": -155.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -187,15 +187,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -454.0, + "value": -442.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -4.16, + "value": -3.52, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -765.0, + "value": -734.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -203,7 +203,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -7.77, + "value": -5.71, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index ce1a41c510..50ab05ada0 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -5,7 +5,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, + "value": 4, "compare": "<=", "level": "warning" }, @@ -14,11 +14,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:IFP-0028": { "value": 1, "compare": "<=", @@ -30,7 +25,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, + "value": 2, "compare": "<=", "level": "warning" }, @@ -44,6 +39,11 @@ "compare": "<=", "level": "warning" }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 70778.51, "compare": "<=" @@ -73,11 +73,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -1.85, + "value": -1.66, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -36.5, + "value": -38.6, "compare": ">=" }, "cts__timing__hold__ws": { @@ -93,11 +93,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.07, + "value": -1.9, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -105.0, + "value": -85.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -125,11 +125,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -0.903, + "value": -0.714, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -6.99, + "value": -4.12, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -141,11 +141,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -1.85, + "value": -1.76, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -53.2, + "value": -31.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index cdc5c20e37..085a947888 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -4,21 +4,11 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:DRT-0349": { "value": 10, "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:IFP-0028": { "value": 1, "compare": "<=", @@ -29,11 +19,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:DRT-0349": { "value": 10, "compare": "<=", @@ -45,7 +30,7 @@ "level": "warning" }, "synth__design__instance__area__stdcell": { - "value": 214573.94, + "value": 214000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -53,7 +38,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 232924, + "value": 230821, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -73,11 +58,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.629, + "value": -0.478, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2.53, + "value": -1.72, "compare": ">=" }, "cts__timing__hold__ws": { @@ -93,11 +78,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.95, + "value": -0.548, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -250.0, + "value": -23.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -109,7 +94,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 845495, + "value": 834929, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -117,7 +102,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { @@ -141,11 +126,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.859, + "value": -0.38, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -85.9, + "value": -1.43, "compare": ">=" }, "finish__timing__hold__ws": { @@ -157,7 +142,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 250383, + "value": 248742, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index 3dad92744a..b9ce72c17d 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,6 +1,6 @@ { "detailedroute__flow__warnings__count:DRT-0120": { - "value": 66, + "value": 27, "compare": "<=", "level": "warning" }, @@ -9,16 +9,6 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -45,7 +35,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 11, + "value": 9, "compare": "<=", "level": "warning" }, @@ -54,6 +44,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" @@ -99,7 +94,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 253, + "value": 299, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -127,7 +122,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index c29aa8f33a..6210e8e29d 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -9,7 +9,7 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { + "detailedroute__flow__warnings__count:GRT-0243": { "value": 1, "compare": "<=", "level": "warning" @@ -72,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -25.8, + "value": -19.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -88,11 +88,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.05, + "value": -1.3, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -111.0, + "value": -95.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -136,11 +136,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.859, + "value": -1.13, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -33.2, + "value": -36.0, "compare": ">=" }, "finish__timing__hold__ws": { From 5a57911ef70f4cc598ef3a35a22131089aa3ad30 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 20 Nov 2025 20:05:47 +0000 Subject: [PATCH 059/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 4 ++-- flow/designs/asap7/riscv32i-mock-sram/rules-base.json | 2 +- flow/designs/asap7/swerv_wrapper/rules-base.json | 4 ++-- flow/designs/nangate45/ariane133/rules-base.json | 2 +- flow/designs/nangate45/ariane136/rules-base.json | 2 +- flow/designs/nangate45/bp_be_top/rules-base.json | 6 +++--- flow/designs/nangate45/bp_multi_top/rules-base.json | 4 ++-- flow/designs/nangate45/swerv_wrapper/rules-base.json | 4 ++-- flow/designs/nangate45/tinyRocket/rules-base.json | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 75fdc401cd..acaaeafdd7 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -24,7 +24,7 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1398, + "value": 1737, "compare": "<=" }, "cts__timing__setup__ws": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -146.0, + "value": -178.0, "compare": ">=" }, "globalroute__timing__setup__tns": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 323b57ca27..012f176a8b 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -540.0, + "value": -1540.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index da8f9e65a7..97121ea666 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -96,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -305.0, + "value": -395.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -88100.0, + "value": -111000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 8d0f5910b7..d9c55d20f8 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 7160156, + "value": 8368533, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 2caeee6894..abb0ba0b38 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -40,7 +40,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -3.4, + "value": -7.13, "compare": ">=" }, "globalroute__antenna_diodes_count": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index d0382b68c8..0ae60c8f65 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -16.4, + "value": -20.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -16.9, + "value": -19.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -24.3, + "value": -32.8, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index d7a629b01b..d8735eace0 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -80,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -3.93, + "value": -10.9, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -163.0, + "value": -816.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index 8e27a1bb8c..e8ce645402 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -4.39, + "value": -5.02, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -114.0, + "value": -120.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 52b5ed0556..179039854b 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -17.9, + "value": -26.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -22.4, + "value": -28.7, "compare": ">=" }, "globalroute__timing__hold__ws": { From 11dce9e95967ff77ac75039d06d4949c13f485cc Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Thu, 20 Nov 2025 20:34:09 +0000 Subject: [PATCH 060/364] added conversion for time and cap units for PDK 0.15 Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/cva6/constraint.sdc | 11 +++++++++-- flow/designs/rapidus2hp/cva6/constraint_demo.sdc | 9 --------- flow/designs/rapidus2hp/cva6/opt_constraint.sdc | 9 --------- flow/designs/rapidus2hp/ethmac/constraint.sdc | 11 +++++++++++ flow/designs/rapidus2hp/gcd/constraint.sdc | 4 ++++ flow/designs/rapidus2hp/hercules_idecode/prects.sdc | 8 ++++++-- flow/designs/rapidus2hp/hercules_is_int/prects.sdc | 8 ++++++-- .../rapidus2hp/hercules_is_int/prects_prop.sdc | 8 ++++++-- flow/designs/rapidus2hp/ibex/constraint.sdc | 4 ++++ flow/designs/rapidus2hp/ibex/constraint_pos_slack.sdc | 4 ++++ flow/designs/rapidus2hp/jpeg/jpeg_encoder15_7nm.sdc | 4 ++++ 11 files changed, 54 insertions(+), 26 deletions(-) delete mode 100644 flow/designs/rapidus2hp/cva6/constraint_demo.sdc delete mode 100644 flow/designs/rapidus2hp/cva6/opt_constraint.sdc diff --git a/flow/designs/rapidus2hp/cva6/constraint.sdc b/flow/designs/rapidus2hp/cva6/constraint.sdc index 743e092ac3..159a0649cc 100644 --- a/flow/designs/rapidus2hp/cva6/constraint.sdc +++ b/flow/designs/rapidus2hp/cva6/constraint.sdc @@ -1,9 +1,16 @@ # Derived from cva6_synth.tcl and Makefiles +source $::env(PLATFORM_DIR)/util.tcl + set clk_name main_clk set clk_port clk_i set clk_ports_list [list $clk_port] set clk_period 1125 -set input_delay 0.46 -set output_delay 0.11 + +convert_time_value clk_period + +set input_delay [convert_time_value 0.46] +set output_delay [convert_time_value 0.11] + + create_clock [get_ports $clk_port] -name $clk_name -period $clk_period diff --git a/flow/designs/rapidus2hp/cva6/constraint_demo.sdc b/flow/designs/rapidus2hp/cva6/constraint_demo.sdc deleted file mode 100644 index f263502816..0000000000 --- a/flow/designs/rapidus2hp/cva6/constraint_demo.sdc +++ /dev/null @@ -1,9 +0,0 @@ -# Derived from cva6_synth.tcl and Makefiles - -set clk_name main_clk -set clk_port clk_i -set clk_ports_list [list $clk_port] -set clk_period 1380 -set input_delay 0.46 -set output_delay 0.11 -create_clock [get_ports $clk_port] -name $clk_name -period $clk_period diff --git a/flow/designs/rapidus2hp/cva6/opt_constraint.sdc b/flow/designs/rapidus2hp/cva6/opt_constraint.sdc deleted file mode 100644 index b0692f6387..0000000000 --- a/flow/designs/rapidus2hp/cva6/opt_constraint.sdc +++ /dev/null @@ -1,9 +0,0 @@ -# Derived from cva6_synth.tcl and Makefiles - -set clk_name main_clk -set clk_port clk_i -set clk_ports_list [list $clk_port] -set clk_period 1013.87619516354 -set input_delay 0.46 -set output_delay 0.11 -create_clock [get_ports $clk_port] -name $clk_name -period $clk_period diff --git a/flow/designs/rapidus2hp/ethmac/constraint.sdc b/flow/designs/rapidus2hp/ethmac/constraint.sdc index b31a5f1280..72510532cb 100644 --- a/flow/designs/rapidus2hp/ethmac/constraint.sdc +++ b/flow/designs/rapidus2hp/ethmac/constraint.sdc @@ -1,7 +1,12 @@ +source $::env(PLATFORM_DIR)/util.tcl + set top_clk_name wb_clk_i set clk_period 875 set clk_io_pct 0.2 set clk_port [get_ports $top_clk_name] + +convert_time_value clk_period + create_clock -name $top_clk_name -period $clk_period $clk_port set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $top_clk_name \ @@ -12,6 +17,9 @@ set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $top_clk_name \ set tx_clk_name mtx_clk_pad_i set tx_clk_port [get_ports $tx_clk_name] set tx_clk_period 300 + +convert_time_value tx_clk_period + create_clock -name $tx_clk_name -period $tx_clk_period $tx_clk_port set mtx_non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] \ $tx_clk_port] @@ -23,6 +31,9 @@ set_output_delay [expr { $tx_clk_period * $clk_io_pct }] -clock $tx_clk_name \ set rx_clk_name mrx_clk_pad_i set rx_clk_port [get_ports $rx_clk_name] set rx_clk_period 110 + +convert_time_value rx_clk_period + create_clock -name $rx_clk_name -period $rx_clk_period $rx_clk_port set mrx_non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] \ $rx_clk_port] diff --git a/flow/designs/rapidus2hp/gcd/constraint.sdc b/flow/designs/rapidus2hp/gcd/constraint.sdc index 03f95bb865..486ff7fa86 100644 --- a/flow/designs/rapidus2hp/gcd/constraint.sdc +++ b/flow/designs/rapidus2hp/gcd/constraint.sdc @@ -1,3 +1,5 @@ +source $::env(PLATFORM_DIR)/util.tcl + current_design gcd set clk_name core_clock @@ -5,6 +7,8 @@ set clk_port_name clk set clk_period 100 set clk_io_pct 0.2 +convert_time_value clk_period + set clk_port [get_ports $clk_port_name] create_clock -name $clk_name -period $clk_period $clk_port diff --git a/flow/designs/rapidus2hp/hercules_idecode/prects.sdc b/flow/designs/rapidus2hp/hercules_idecode/prects.sdc index 81fbee7ddf..15b6a6fdf9 100755 --- a/flow/designs/rapidus2hp/hercules_idecode/prects.sdc +++ b/flow/designs/rapidus2hp/hercules_idecode/prects.sdc @@ -1,12 +1,16 @@ +source $::env(PLATFORM_DIR)/util.tcl + #set sdc_version 2.1 set sdc_version 1.4 current_design hercules_idecode set clk_period 250 +convert_time_value clk_period + set_max_fanout 32 [current_design] -set_load 10 [all_outputs] -set_max_capacitance 10 [all_inputs] +set_load [convert_cap_value 10] [all_outputs] +set_max_capacitance [convert_cap_value 10] [all_inputs] create_clock -name "clk" -add -period $clk_period \ -waveform [list 0.0 [expr 0.5*$clk_period]] [get_ports clk] diff --git a/flow/designs/rapidus2hp/hercules_is_int/prects.sdc b/flow/designs/rapidus2hp/hercules_is_int/prects.sdc index 934de6be54..51ed806dd5 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/prects.sdc +++ b/flow/designs/rapidus2hp/hercules_is_int/prects.sdc @@ -1,12 +1,16 @@ +source $::env(PLATFORM_DIR)/util.tcl + #set sdc_version 2.1 set sdc_version 1.4 current_design hercules_is_int set clk_period 250 +convert_time_value clk_period + set_max_fanout 32 [current_design] -set_load 10 [all_outputs] -set_max_capacitance 10 [all_inputs] +set_load [convert_cap_value 10] [all_outputs] +set_max_capacitance [convert_cap_value 10] [all_inputs] create_clock -name "clk" -add -period $clk_period \ -waveform [list 0.0 [expr { 0.5 * $clk_period }]] [get_ports clk] diff --git a/flow/designs/rapidus2hp/hercules_is_int/prects_prop.sdc b/flow/designs/rapidus2hp/hercules_is_int/prects_prop.sdc index acdd9ba08c..60e7b5814f 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/prects_prop.sdc +++ b/flow/designs/rapidus2hp/hercules_is_int/prects_prop.sdc @@ -1,12 +1,16 @@ +source $::env(PLATFORM_DIR)/util.tcl + #set sdc_version 2.1 set sdc_version 1.4 current_design hercules_is_int set clk_period 250 +convert_time_value clk_period + set_max_fanout 32 [current_design] -set_load 10 [all_outputs] -set_max_capacitance 10 [all_inputs] +set_load [convert_cap_value 10] [all_outputs] +set_max_capacitance [convert_cap_value 10] [all_inputs] create_clock -name "clk" -add -period $clk_period \ -waveform [list 0.0 [expr { 0.5 * $clk_period }]] [get_ports clk] diff --git a/flow/designs/rapidus2hp/ibex/constraint.sdc b/flow/designs/rapidus2hp/ibex/constraint.sdc index e697ef2300..26620f6aee 100644 --- a/flow/designs/rapidus2hp/ibex/constraint.sdc +++ b/flow/designs/rapidus2hp/ibex/constraint.sdc @@ -1,3 +1,5 @@ +source $::env(PLATFORM_DIR)/util.tcl + set clk_name core_clock set clk_port_name clk_i set clk_period 590 @@ -5,6 +7,8 @@ set clk_io_pct 0.2 set clk_port [get_ports $clk_port_name] +convert_time_value clk_period + create_clock -name $clk_name -period $clk_period $clk_port set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] diff --git a/flow/designs/rapidus2hp/ibex/constraint_pos_slack.sdc b/flow/designs/rapidus2hp/ibex/constraint_pos_slack.sdc index d714d428ae..6226d2121c 100644 --- a/flow/designs/rapidus2hp/ibex/constraint_pos_slack.sdc +++ b/flow/designs/rapidus2hp/ibex/constraint_pos_slack.sdc @@ -1,8 +1,12 @@ +source $::env(PLATFORM_DIR)/util.tcl + set clk_name core_clock set clk_port_name clk_i set clk_period 1468 set clk_io_pct 0.2 +convert_time_value clk_period + set clk_port [get_ports $clk_port_name] create_clock -name $clk_name -period $clk_period $clk_port diff --git a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_7nm.sdc b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_7nm.sdc index 9f0d6c6a9b..43391b7424 100644 --- a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_7nm.sdc +++ b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_7nm.sdc @@ -1,3 +1,5 @@ +source $::env(PLATFORM_DIR)/util.tcl + current_design jpeg_encoder set clk_name clk @@ -5,6 +7,8 @@ set clk_port_name clk set clk_period 425 set clk_io_pct 0.2 +convert_time_value clk_period + set clk_port [get_ports $clk_port_name] create_clock -name $clk_name -period $clk_period $clk_port From ab7cb9995cf0f50648d0345572c653a396c29ea2 Mon Sep 17 00:00:00 2001 From: vvbandeira <9001905+vvbandeira@users.noreply.github.com> Date: Fri, 21 Nov 2025 08:11:44 +0000 Subject: [PATCH 061/364] [BOT] Update OpenROAD submodule Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index f5093cadd0..6aa854f4a1 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit f5093cadd0c1a28728e1976808083d2724daf965 +Subproject commit 6aa854f4a151725f8f088862cca21451d1324862 From cccf3dcf3d6c25c9ea92fa62f3bddb5bed1b30c3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 21 Nov 2025 09:45:42 +0000 Subject: [PATCH 062/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 16 ++++++------ .../asap7/riscv32i-mock-sram/rules-base.json | 4 +-- flow/designs/asap7/riscv32i/rules-base.json | 2 +- .../asap7/swerv_wrapper/rules-base.json | 2 +- .../i2c-gpio-expander/rules-base.json | 2 +- .../nangate45/ariane133/rules-base.json | 2 +- .../nangate45/black_parrot/rules-base.json | 10 +++---- .../nangate45/bp_fe_top/rules-base.json | 4 +-- .../nangate45/bp_multi_top/rules-base.json | 4 +-- .../nangate45/swerv_wrapper/rules-base.json | 10 +++---- .../nangate45/tinyRocket/rules-base.json | 4 +-- .../sky130hd/microwatt/rules-base.json | 26 +++++++++---------- 12 files changed, 43 insertions(+), 43 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index acaaeafdd7..a96d36b5e7 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 7216, + "value": 7215, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 10646, + "value": 10627, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,7 +20,7 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 926, + "value": 924, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -160.0, + "value": -152.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13300.0, + "value": -10600.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10400.0, + "value": -9920.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 55719, + "value": 53138, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -7200.0, + "value": -6350.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 012f176a8b..0022598cab 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -577.0, + "value": -549.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -430.0, + "value": -401.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index 1e5c546a54..bd167d5dd8 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 74871, + "value": 74292, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 97121ea666..50c594252c 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -108,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -115000.0, + "value": -57500.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json index 7eb677d84f..25ed544149 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 953, + "value": 951, "compare": "<=" }, "detailedplace__design__violations": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index d9c55d20f8..63ea5f709b 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -107.0, + "value": -27.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index 25b04ba3d8..9d692ccb04 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 774940, + "value": 774593, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 7048481, + "value": 6985506, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -2.23, + "value": -2.22, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -3.13, + "value": -3.12, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -112,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 788956, + "value": 788531, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 7768629404..3c89c91288 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1659471, + "value": 1658769, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -7.01, + "value": -3.47, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index d8735eace0..63ecc89170 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -88,11 +88,11 @@ "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -1.13, + "value": -0.278, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -72.3, + "value": -7.83, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index e8ce645402..f65979e690 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -60.3, + "value": -44.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.208, + "value": -0.181, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -62.0, + "value": -38.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -104,11 +104,11 @@ "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.127, + "value": -0.12, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -5.95, + "value": -1.6, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 179039854b..2e067198f4 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -96,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.139, + "value": -0.131, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -27.3, + "value": -25.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index fd1da8beb1..6aed5a60fa 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 5444158, + "value": 5444020, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -3.7, + "value": -2.29, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -616.0, + "value": -307.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,15 +44,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 3103, + "value": 1321, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -3.87, + "value": -2.42, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -692.0, + "value": -365.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -76,15 +76,15 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1508, + "value": 1278, "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -1.52, + "value": -1.41, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -116.0, + "value": -44.5, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,15 +92,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -454.0, + "value": -408.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -4.16, + "value": -2.41, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -757.0, + "value": -354.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -108,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -7.77, + "value": -4.12, "compare": ">=" }, "finish__design__instance__area": { From e59c3842d140258a686f51e88ddfde176020bbee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 11:37:32 +0000 Subject: [PATCH 063/364] build(deps): bump actions/checkout from 5 to 6 Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/black.yaml | 2 +- .github/workflows/github-actions-cron-test-installer.yml | 2 +- .github/workflows/github-actions-cron-update-OR.yml | 2 +- .github/workflows/github-actions-cron-update-yosys.yml | 2 +- .github/workflows/github-actions-cron-util-test.yml | 2 +- .github/workflows/github-actions-lint-tcl.yml | 2 +- .github/workflows/github-actions-manual-update-rules.yml | 2 +- .github/workflows/github-actions-on-push.yml | 2 +- .github/workflows/github-actions-publish-docker-images.yml | 6 +++--- .github/workflows/github-actions-update-rules.yml | 2 +- .github/workflows/github-actions-yaml-test.yml | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/black.yaml b/.github/workflows/black.yaml index bcca7ef110..65a69b50e8 100644 --- a/.github/workflows/black.yaml +++ b/.github/workflows/black.yaml @@ -5,5 +5,5 @@ jobs: lint: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: psf/black@stable diff --git a/.github/workflows/github-actions-cron-test-installer.yml b/.github/workflows/github-actions-cron-test-installer.yml index fd16918e50..9500f1a570 100644 --- a/.github/workflows/github-actions-cron-test-installer.yml +++ b/.github/workflows/github-actions-cron-test-installer.yml @@ -30,7 +30,7 @@ jobs: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - name: Check out repository code - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 1 submodules: recursive diff --git a/.github/workflows/github-actions-cron-update-OR.yml b/.github/workflows/github-actions-cron-update-OR.yml index 29ebac9589..1784acb15e 100644 --- a/.github/workflows/github-actions-cron-update-OR.yml +++ b/.github/workflows/github-actions-cron-update-OR.yml @@ -10,7 +10,7 @@ jobs: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - name: Check out repository code recursively - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive - name: Pull changes in OpenROAD submodule diff --git a/.github/workflows/github-actions-cron-update-yosys.yml b/.github/workflows/github-actions-cron-update-yosys.yml index 22d1caff51..11bab5fe55 100644 --- a/.github/workflows/github-actions-cron-update-yosys.yml +++ b/.github/workflows/github-actions-cron-update-yosys.yml @@ -11,7 +11,7 @@ jobs: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - name: Check out repository code recursively - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive fetch-depth: 0 diff --git a/.github/workflows/github-actions-cron-util-test.yml b/.github/workflows/github-actions-cron-util-test.yml index 9afdae08ca..e2636fc7ad 100644 --- a/.github/workflows/github-actions-cron-util-test.yml +++ b/.github/workflows/github-actions-cron-util-test.yml @@ -20,7 +20,7 @@ jobs: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - name: Check out repository code - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 1 submodules: recursive diff --git a/.github/workflows/github-actions-lint-tcl.yml b/.github/workflows/github-actions-lint-tcl.yml index 4b34d73322..8371f2a913 100644 --- a/.github/workflows/github-actions-lint-tcl.yml +++ b/.github/workflows/github-actions-lint-tcl.yml @@ -13,7 +13,7 @@ jobs: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install Dependencies run: | diff --git a/.github/workflows/github-actions-manual-update-rules.yml b/.github/workflows/github-actions-manual-update-rules.yml index f5ea682ef7..8a3b92b5c8 100644 --- a/.github/workflows/github-actions-manual-update-rules.yml +++ b/.github/workflows/github-actions-manual-update-rules.yml @@ -14,7 +14,7 @@ jobs: fail-fast: false steps: - name: Check out repository code recursively - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 - uses: actions/setup-python@v6 diff --git a/.github/workflows/github-actions-on-push.yml b/.github/workflows/github-actions-on-push.yml index a4cba86dd8..c14161c221 100644 --- a/.github/workflows/github-actions-on-push.yml +++ b/.github/workflows/github-actions-on-push.yml @@ -11,6 +11,6 @@ jobs: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - name: Check out repository code - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: run security_scan_on_push uses: The-OpenROAD-Project/actions/security_scan_on_push@main diff --git a/.github/workflows/github-actions-publish-docker-images.yml b/.github/workflows/github-actions-publish-docker-images.yml index 5a7d60a975..ef64cc8e30 100644 --- a/.github/workflows/github-actions-publish-docker-images.yml +++ b/.github/workflows/github-actions-publish-docker-images.yml @@ -30,7 +30,7 @@ jobs: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} timeout-minutes: 600 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Set environment variables run: echo "IMAGE=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV @@ -64,7 +64,7 @@ jobs: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - name: Check out repository code - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 1 submodules: recursive @@ -113,7 +113,7 @@ jobs: tool-cache: false - name: Check out repository code - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 1 submodules: recursive diff --git a/.github/workflows/github-actions-update-rules.yml b/.github/workflows/github-actions-update-rules.yml index 9350ed41c8..6f85145a7d 100644 --- a/.github/workflows/github-actions-update-rules.yml +++ b/.github/workflows/github-actions-update-rules.yml @@ -11,7 +11,7 @@ jobs: fail-fast: false steps: - name: Check out repository code recursively - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Git prep diff --git a/.github/workflows/github-actions-yaml-test.yml b/.github/workflows/github-actions-yaml-test.yml index ad54a2625f..65d073f577 100644 --- a/.github/workflows/github-actions-yaml-test.yml +++ b/.github/workflows/github-actions-yaml-test.yml @@ -10,7 +10,7 @@ jobs: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 1 sparse-checkout: | From 9c25b5c9ea0462962006ff28836d696e8c1383c6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 22 Nov 2025 05:20:40 +0000 Subject: [PATCH 064/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 90 --------------- flow/designs/asap7/ethmac_lvt/rules-base.json | 105 ------------------ flow/designs/asap7/ibex/rules-base.json | 85 -------------- flow/designs/asap7/mock-alu/rules-base.json | 8 +- .../asap7/swerv_wrapper/rules-base.json | 75 ------------- flow/designs/gf180/aes-hybrid/rules-base.json | 8 +- flow/designs/gf180/aes/rules-base.json | 2 +- flow/designs/gf180/ibex/rules-base.json | 4 +- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 20 ---- .../nangate45/bp_fe_top/rules-base.json | 35 ------ flow/designs/nangate45/ibex/rules-base.json | 2 +- flow/designs/nangate45/jpeg/rules-base.json | 8 +- .../nangate45/mempool_group/rules-base.json | 2 +- .../nangate45/swerv_wrapper/rules-base.json | 35 ------ .../nangate45/tinyRocket/rules-base.json | 40 ------- .../sky130hd/chameleon/rules-base.json | 50 --------- flow/designs/sky130hd/ibex/rules-base.json | 42 +------ flow/designs/sky130hd/jpeg/rules-base.json | 45 -------- .../sky130hd/microwatt/rules-base.json | 95 ---------------- .../designs/sky130hd/riscv32i/rules-base.json | 45 -------- flow/designs/sky130hs/ibex/rules-base.json | 30 ----- flow/designs/sky130hs/jpeg/rules-base.json | 50 --------- .../designs/sky130hs/riscv32i/rules-base.json | 40 ------- 23 files changed, 18 insertions(+), 898 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index e18491e234..8cd9239896 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 16, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 64, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2130.06, "compare": "<=" diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index e112b3b90d..2bff44a0f6 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -1,109 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 788, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8418.677166, "compare": "<=" diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index 9cab44c4b5..a3cb790651 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2612.69, "compare": "<=" diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 5b1f30a4bc..2407fa7784 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -16300.0, + "value": -16900.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19100.0, + "value": -19700.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -12200.0, + "value": -12300.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17200.0, + "value": -17500.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index e898657026..d377a384b1 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -1,79 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 53459.06, "compare": "<=" diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 39d9abcfa8..b71cf9ca41 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -136.0, + "value": -138.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -157.0, + "value": -160.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -71.3, + "value": -74.1, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -154.0, + "value": -156.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index 9015724720..291704ba03 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -56.0, + "value": -57.9, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 68d4080cb3..1632156fc8 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -7.82, + "value": -18.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4.28, + "value": -8.87, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index fb343c464a..5dc32c7dc2 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -1,24 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1499147.11, "compare": "<=" diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 5e65d736c6..3c89c91288 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -1,39 +1,4 @@ { - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 241575.35, "compare": "<=" diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index 2755dcf22d..89dde3024e 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.969, + "value": -1.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 9ae51245c4..ac69795ed6 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -37.9, + "value": -41.9, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -43.5, + "value": -46.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7.59, + "value": -10.2, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -43.2, + "value": -45.9, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index d6c2408c2a..ab214eb6ec 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7110.0, + "value": -8530.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index 0e9d64dee1..25d9470468 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 724516.2, "compare": "<=" diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 42dd045295..f0a6729246 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index e7c590ae6c..c4661daa0b 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -1,54 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ORD-2011": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 27373.26, "compare": "<=" diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index 4351874c9d..ee6c85daf5 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 153658.0, "compare": "<=" @@ -155,4 +115,4 @@ "value": 183819, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index 3cc5486666..26464fcbc9 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 54, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 18, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 463729.45, "compare": "<=" diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 61989b9566..a6a0e2b4ac 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 166, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 9464062c25..2af3fa1337 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 70778.51, "compare": "<=" diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index a9f35d243d..1327cfcdb8 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -1,34 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 214000.0, "compare": "<=" diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index b9ce72c17d..eedad7b9d8 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,54 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 9, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index 6210e8e29d..23daa085e6 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 97352.63, "compare": "<=" From b63f92928333fe6039e57bd7daf369f037be524e Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sat, 22 Nov 2025 16:21:01 +0000 Subject: [PATCH 065/364] designs/gf12/bp_single/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__ws | -200.0 | -198.0 | Tighten | | cts__timing__hold__tns | -2280.0 | -2090.0 | Tighten | | detailedroute__timing__setup__tns | -1710.0 | -1460.0 | Tighten | | detailedroute__timing__hold__tns | -7140.0 | -12100.0 | Failing | Signed-off-by: Matt Liberty --- flow/designs/gf12/bp_single/rules-base.json | 23 ++++----------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index daf7423871..fa7a4596b6 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -24,11 +24,6 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 4, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:DRT-0142": { "value": 5, "compare": "<=", @@ -129,11 +124,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 4, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:DRT-0142": { "value": 5, "compare": "<=", @@ -144,11 +134,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:RSZ-0066": { "value": 1, "compare": "<=", @@ -211,11 +196,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -200.0, + "value": -198.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -2280.0, + "value": -2090.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -259,7 +244,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1710.0, + "value": -1460.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -267,7 +252,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -7140.0, + "value": -12100.0, "compare": ">=" }, "finish__timing__setup__ws": { From 3019ef03f2ca2be39574f6d72e1bd115d8812c7b Mon Sep 17 00:00:00 2001 From: ajay18434 Date: Mon, 24 Nov 2025 13:08:31 +0530 Subject: [PATCH 066/364] Updated BuildWithDocker documentation Signed-off-by: ajay18434 --- docs/user/BuildWithDocker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/BuildWithDocker.md b/docs/user/BuildWithDocker.md index 4825ebd5fd..d8b5508423 100644 --- a/docs/user/BuildWithDocker.md +++ b/docs/user/BuildWithDocker.md @@ -109,7 +109,7 @@ docker run --rm -it \ -v ${HOME}/.Xauthority:/.Xauthority \ --network host \ --security-opt seccomp=unconfined \ - openroad/flow-$OS_NAME-builder + openroad/orfs ``` Running GUI with Docker on Mac OS X users, refer [here](https://cntnr.io/running-guis-with-docker-on-mac-os-x-a14df6a76efc). From 064945b90e29bf1e20139e121fd204c611416746 Mon Sep 17 00:00:00 2001 From: ajay18434 Date: Mon, 24 Nov 2025 13:42:41 +0530 Subject: [PATCH 067/364] Revert "Updated BuildWithDocker documentation" This reverts commit 4829a1864ef78d19dcb32a71eaa58e8049ab9df4. Signed-off-by: ajay18434 --- docs/user/BuildWithDocker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/BuildWithDocker.md b/docs/user/BuildWithDocker.md index d8b5508423..4825ebd5fd 100644 --- a/docs/user/BuildWithDocker.md +++ b/docs/user/BuildWithDocker.md @@ -109,7 +109,7 @@ docker run --rm -it \ -v ${HOME}/.Xauthority:/.Xauthority \ --network host \ --security-opt seccomp=unconfined \ - openroad/orfs + openroad/flow-$OS_NAME-builder ``` Running GUI with Docker on Mac OS X users, refer [here](https://cntnr.io/running-guis-with-docker-on-mac-os-x-a14df6a76efc). From 33d202a38d3da8da2c17ef345ce9e1f2304e3c70 Mon Sep 17 00:00:00 2001 From: ajay18434 Date: Mon, 24 Nov 2025 16:48:17 +0530 Subject: [PATCH 068/364] Updated docker command Signed-off-by: ajay18434 --- docs/user/BuildWithDocker.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/user/BuildWithDocker.md b/docs/user/BuildWithDocker.md index 4825ebd5fd..0b0ee9de4f 100644 --- a/docs/user/BuildWithDocker.md +++ b/docs/user/BuildWithDocker.md @@ -71,7 +71,7 @@ You can restrict the number of CPUs with the `-t|--threads N` argument: The binaries are only available from inside a Docker container. Here is an example of starting a container from the created Docker image. ``` shell -docker run --rm -it -u $(id -u ${USER}):$(id -g ${USER}) -v $(pwd)/flow:/OpenROAD-flow-scripts/flow openroad/flow-ubuntu22.04-builder +docker run --rm -it -u $(id -u ${USER}):$(id -g ${USER}) -v $(pwd)/flow:/OpenROAD-flow-scripts/flow openroad/orfs ``` Then, inside docker: @@ -109,7 +109,7 @@ docker run --rm -it \ -v ${HOME}/.Xauthority:/.Xauthority \ --network host \ --security-opt seccomp=unconfined \ - openroad/flow-$OS_NAME-builder + openroad/orfs ``` Running GUI with Docker on Mac OS X users, refer [here](https://cntnr.io/running-guis-with-docker-on-mac-os-x-a14df6a76efc). From f3315e0d1f36cbaef8efbafa8f04952bccc5abe1 Mon Sep 17 00:00:00 2001 From: vvbandeira <9001905+vvbandeira@users.noreply.github.com> Date: Tue, 25 Nov 2025 08:11:47 +0000 Subject: [PATCH 069/364] [BOT] Update OpenROAD submodule Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 8d5bf8ac79..b577013518 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 8d5bf8ac7977ba654a5570380fdb89d7750304bf +Subproject commit b5770135188ae633c16dd6e7f40037a453d61ec8 From 0676f1c32e23ed3565ed3a0d0b58f7e452a4bab1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Nov 2025 10:15:49 +0000 Subject: [PATCH 070/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-mbff/rules-base.json | 12 ++++++------ flow/designs/asap7/aes/rules-base.json | 10 +++++----- flow/designs/asap7/aes_lvt/rules-base.json | 2 +- flow/designs/asap7/ethmac/rules-base.json | 12 ++++++------ flow/designs/asap7/jpeg/rules-base.json | 4 ++-- flow/designs/asap7/mock-alu/rules-base.json | 2 +- .../designs/asap7/riscv32i-mock-sram/rules-base.json | 2 +- flow/designs/asap7/riscv32i/rules-base.json | 2 +- flow/designs/asap7/uart/rules-base.json | 2 +- flow/designs/gf180/aes-hybrid/rules-base.json | 2 +- flow/designs/gf180/aes/rules-base.json | 6 +++--- flow/designs/gf180/ibex/rules-base.json | 4 ++-- flow/designs/gf180/jpeg/rules-base.json | 2 +- flow/designs/gf180/riscv32i/rules-base.json | 4 ++-- flow/designs/ihp-sg13g2/aes/rules-base.json | 6 +++--- flow/designs/nangate45/aes/rules-base.json | 12 ++++++------ flow/designs/nangate45/ariane133/rules-base.json | 2 +- flow/designs/nangate45/black_parrot/rules-base.json | 2 +- flow/designs/nangate45/bp_be_top/rules-base.json | 6 +++--- flow/designs/nangate45/bp_multi_top/rules-base.json | 10 +++++----- flow/designs/nangate45/dynamic_node/rules-base.json | 10 +++++----- flow/designs/nangate45/ibex/rules-base.json | 4 ++-- flow/designs/nangate45/mempool_group/rules-base.json | 6 +++--- flow/designs/nangate45/swerv/rules-base.json | 8 ++++---- flow/designs/sky130hs/aes/rules-base.json | 8 ++++---- flow/designs/sky130hs/gcd/rules-base.json | 12 ++++++------ 26 files changed, 76 insertions(+), 76 deletions(-) diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 7ebe11e453..24610bec12 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -40.1, + "value": -38.2, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -749.0, + "value": -551.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -51.5, + "value": -49.6, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2420.0, + "value": -1910.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -41.5, + "value": -36.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -846.0, + "value": -611.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index e8f25a4c33..0a70858229 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -599.0, + "value": -493.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2150.0, + "value": -1930.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -38.1, + "value": -36.7, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -693.0, + "value": -537.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 2272, + "value": 2269, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/asap7/aes_lvt/rules-base.json b/flow/designs/asap7/aes_lvt/rules-base.json index 179dc34085..96354b8561 100644 --- a/flow/designs/asap7/aes_lvt/rules-base.json +++ b/flow/designs/asap7/aes_lvt/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 1981, + "value": 1978, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 44a406480e..5733a3751a 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 8668, + "value": 8665, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 69466, + "value": 69423, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 6040, + "value": 6037, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 6040, + "value": 6037, "compare": "<=" }, "cts__timing__setup__ws": { @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2190.0, + "value": -2080.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2350.0, + "value": -2280.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/jpeg/rules-base.json b/flow/designs/asap7/jpeg/rules-base.json index 7f279fef1d..e37358b06a 100644 --- a/flow/designs/asap7/jpeg/rules-base.json +++ b/flow/designs/asap7/jpeg/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -36.3, + "value": -34.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -153.0, + "value": -136.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 2407fa7784..b4b0525b34 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -309.0, + "value": -307.0, "compare": ">=" }, "globalroute__timing__setup__tns": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 0022598cab..faa0aabdea 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1540.0, + "value": -703.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index bd167d5dd8..c11063fdde 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 74292, + "value": 74215, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index d3766d6d6b..6d47a52d3b 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -658.0, + "value": -651.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index b71cf9ca41..845a5bc1cd 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 652854, + "value": 650139, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index 291704ba03..b254af6021 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 24289, + "value": 24274, "compare": "<=" }, "detailedplace__design__violations": { @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -108.0, + "value": -107.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.12, + "value": -1.09, "compare": ">=" }, "globalroute__timing__setup__tns": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 1632156fc8..eddefe1b6a 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -4.88, + "value": -4.47, "compare": ">=" }, "cts__timing__hold__ws": { @@ -112,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 800080, + "value": 799557, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index fe53818414..c7b36b7de5 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2810762, + "value": 2803717, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 6123190530..1eb94ef725 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 9586, + "value": 9581, "compare": "<=" }, "detailedplace__design__violations": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 813705, + "value": 809768, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/ihp-sg13g2/aes/rules-base.json b/flow/designs/ihp-sg13g2/aes/rules-base.json index d7720ece1e..57d55ca0cb 100644 --- a/flow/designs/ihp-sg13g2/aes/rules-base.json +++ b/flow/designs/ihp-sg13g2/aes/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 201011, + "value": 200905, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 18625, + "value": 18614, "compare": "<=" }, "detailedplace__design__violations": { @@ -112,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 204800, + "value": 204761, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index e88d5ec9ac..f7eab80885 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -52,19 +52,19 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.622, + "value": -0.553, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0419, + "value": -0.0412, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.166, + "value": -0.164, "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 288398, + "value": 288386, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.02, + "value": -0.718, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 26342, + "value": 26325, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 63ea5f709b..5e5b66c358 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -27.1, + "value": -19.7, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index 9d692ccb04..f08e1868eb 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 774593, + "value": 774576, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 0ae60c8f65..7e7d2d4cc3 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -20.8, + "value": -16.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19.0, + "value": -16.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -32.8, + "value": -25.9, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index 63ecc89170..a5347d14e0 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -28,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -4.6, + "value": -4.59, "compare": ">=" }, "cts__timing__setup__tns": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -4.71, + "value": -4.7, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -84,15 +84,15 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -816.0, + "value": -760.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -0.278, + "value": -0.277, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -7.83, + "value": -7.5, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 897131ff70..0811328a9c 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.482, + "value": -0.468, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1.81, + "value": -1.79, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.463, + "value": -0.453, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.78, + "value": -1.75, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.453, + "value": -0.445, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index 89dde3024e..e6c757aa75 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.114, + "value": -0.11, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.444, + "value": -0.44, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index ab214eb6ec..0e7df7610d 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10300.0, + "value": -10100.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.54, + "value": -1.4, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -12500.0, + "value": -10300.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 63b29d0d98..6bcbc827d2 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -28.8, + "value": -24.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -32.8, + "value": -24.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -6.48, + "value": -5.94, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -39.1, + "value": -25.4, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index 07fcc1a062..a7da9270ef 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.18, + "value": -0.16, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.584, + "value": -0.58, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.337, + "value": -0.307, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.229, + "value": -0.206, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 3f6ed631fc..56cf8f8635 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.627, + "value": -0.611, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19.1, + "value": -18.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 14922, + "value": 14773, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -96,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.552, + "value": -0.513, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -15.0, + "value": -14.8, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 8163, + "value": 8160, "compare": "<=" } } \ No newline at end of file From 913153e3adf906a86b08003de6a2d25ee88d6d00 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Tue, 25 Nov 2025 17:34:05 +0000 Subject: [PATCH 071/364] Update gf tinyRocket & bp_dual bp_dual needs more investigation of the degradation. designs/gf12/tinyRocket/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 16726 | 16686 | Tighten | | cts__timing__setup__ws | -47.4 | -40.0 | Tighten | | cts__timing__setup__tns | -8400.0 | -160.0 | Tighten | | globalroute__timing__setup__ws | -48.1 | -40.0 | Tighten | | globalroute__timing__setup__tns | -168.0 | -160.0 | Tighten | | detailedroute__timing__hold__tns | -1290.0 | -1190.0 | Tighten | | finish__timing__hold__tns | -160.0 | -345.0 | Failing | | finish__design__instance__area | 17355 | 17222 | Tighten | designs/gf12/bp_dual/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__flow__warnings__count:DRT-0120 | 55 | 57 | Failing | | flow__warnings__count:PDN-0195 | 26 | 9 | Tighten | | globalroute__flow__warnings__count:DRT-0120 | 55 | 57 | Failing | | cts__timing__hold__ws | -114.0 | -100.0 | Tighten | | cts__timing__hold__tns | -422.0 | -400.0 | Tighten | | globalroute__timing__hold__ws | -111.0 | -100.0 | Tighten | | globalroute__timing__hold__tns | -413.0 | -400.0 | Tighten | | detailedroute__timing__setup__ws | -191.0 | -294.0 | Failing | | detailedroute__timing__setup__tns | -883.0 | -2720.0 | Failing | | detailedroute__timing__hold__tns | -4230.0 | -3650.0 | Tighten | | finish__timing__setup__tns | -701.0 | -1720.0 | Failing | | finish__timing__hold__tns | -403.0 | -400.0 | Tighten | Signed-off-by: Matt Liberty --- flow/designs/gf12/bp_dual/rules-base.json | 37 +++++++++----------- flow/designs/gf12/tinyRocket/rules-base.json | 26 +++++--------- 2 files changed, 24 insertions(+), 39 deletions(-) diff --git a/flow/designs/gf12/bp_dual/rules-base.json b/flow/designs/gf12/bp_dual/rules-base.json index d807bb9bb1..5494fc074e 100644 --- a/flow/designs/gf12/bp_dual/rules-base.json +++ b/flow/designs/gf12/bp_dual/rules-base.json @@ -4,11 +4,6 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:STA-1551": { "value": 40, "compare": "<=", @@ -20,7 +15,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 55, + "value": 57, "compare": "<=", "level": "warning" }, @@ -75,7 +70,7 @@ "level": "warning" }, "flow__warnings__count:PDN-0195": { - "value": 26, + "value": 9, "compare": "<=", "level": "warning" }, @@ -120,7 +115,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 55, + "value": 57, "compare": "<=", "level": "warning" }, @@ -134,13 +129,13 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, + "globalroute__flow__warnings__count:STA-1551": { + "value": 40, "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:STA-1551": { - "value": 40, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, "compare": "<=", "level": "warning" }, @@ -187,11 +182,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -114.0, + "value": -100.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -422.0, + "value": -400.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -207,11 +202,11 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -111.0, + "value": -100.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -413.0, + "value": -400.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -231,11 +226,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -191.0, + "value": -294.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -883.0, + "value": -2720.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -243,7 +238,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -4230.0, + "value": -3650.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -251,7 +246,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -701.0, + "value": -1720.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -259,7 +254,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -403.0, + "value": -400.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index e8dfd25b68..21178b8633 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -1,9 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:DRT-0142": { "value": 5, "compare": "<=", @@ -64,11 +59,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "placeopt__flow__warnings__count:RSZ-0020": { "value": 1, "compare": "<=", @@ -88,7 +78,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 16726, + "value": 16686, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -108,11 +98,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -47.4, + "value": -40.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -8400.0, + "value": -160.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -128,11 +118,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -48.1, + "value": -40.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -168.0, + "value": -160.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -172,7 +162,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1290.0, + "value": -1190.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -188,11 +178,11 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -160.0, + "value": -345.0, "compare": ">=" }, "finish__design__instance__area": { - "value": 17355, + "value": 17222, "compare": "<=" } } \ No newline at end of file From 2c952b387e37684d1766fd8b14c96b72a9544d6b Mon Sep 17 00:00:00 2001 From: Jonas Gava Date: Tue, 25 Nov 2025 21:06:41 +0000 Subject: [PATCH 072/364] update rules for Rapidus gcd and ethmac Signed-off-by: Jonas Gava --- flow/designs/rapidus2hp/ethmac/rules-base.json | 6 +++--- flow/designs/rapidus2hp/gcd/rules-base.json | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 07c37fcdc2..b141e837ce 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -152,7 +152,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1570.0, + "value": -1660.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -168,7 +168,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1570.0, + "value": -1660.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -180,7 +180,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 3619, + "value": 3616, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index 2f65077d72..9ac321cc3d 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -143,11 +143,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -38.2, + "value": -36.5, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -471.0, + "value": -510.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -159,11 +159,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -38.2, + "value": -36.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -471.0, + "value": -510.0, "compare": ">=" }, "finish__timing__hold__ws": { From c3842f817d55a24ed0b47ba707fc379245049d7b Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 26 Nov 2025 11:33:41 +0000 Subject: [PATCH 073/364] master version Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index b577013518..19294a8c77 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit b5770135188ae633c16dd6e7f40037a453d61ec8 +Subproject commit 19294a8c77a6663a307fc5622bbbd82bd428cf1c From eb0759600d6b5ef6317af057137dd5b2db0d2425 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 26 Nov 2025 11:38:30 +0000 Subject: [PATCH 074/364] extend instance size by average pin density Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 19294a8c77..307a5bc24c 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 19294a8c77a6663a307fc5622bbbd82bd428cf1c +Subproject commit 307a5bc24cc0486c22cca9b49f7c471d7b8232d6 From eb85664557b3cd7166b0d29424236615efc0c592 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 26 Nov 2025 11:48:14 +0000 Subject: [PATCH 075/364] master version Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 307a5bc24c..19294a8c77 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 307a5bc24cc0486c22cca9b49f7c471d7b8232d6 +Subproject commit 19294a8c77a6663a307fc5622bbbd82bd428cf1c From 355cd0439d86b918d00e9ce1493d5aaf0ce3b904 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Wed, 26 Nov 2025 15:33:06 +0000 Subject: [PATCH 076/364] Tighten up ng45/ariane133 Shorter clock period Constraint IOs Use utilization based floorplan Signed-off-by: Matt Liberty --- flow/designs/nangate45/ariane133/ariane.sdc | 14 ++- flow/designs/nangate45/ariane133/config.mk | 6 +- .../nangate45/ariane133/rules-base.json | 117 +++++++++++++++--- 3 files changed, 117 insertions(+), 20 deletions(-) diff --git a/flow/designs/nangate45/ariane133/ariane.sdc b/flow/designs/nangate45/ariane133/ariane.sdc index afdb3c3501..5d4d3da203 100644 --- a/flow/designs/nangate45/ariane133/ariane.sdc +++ b/flow/designs/nangate45/ariane133/ariane.sdc @@ -3,4 +3,16 @@ set sdc_version 2.0 # Set the current design current_design ariane -create_clock -name "core_clock" -period 4.0 -waveform {0.0 2.0} [get_ports clk_i] +set clk_name core_clock +set clk_port_name clk_i +set clk_period 3.0 +set clk_io_pct 0.2 + +set clk_port [get_ports $clk_port_name] + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [all_inputs -no_clocks] + +set_input_delay [expr $clk_period * $clk_io_pct] -clock $clk_name $non_clock_inputs +set_output_delay [expr $clk_period * $clk_io_pct] -clock $clk_name [all_outputs] diff --git a/flow/designs/nangate45/ariane133/config.mk b/flow/designs/nangate45/ariane133/config.mk index 1de1c20457..3d2c212106 100644 --- a/flow/designs/nangate45/ariane133/config.mk +++ b/flow/designs/nangate45/ariane133/config.mk @@ -12,12 +12,12 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/ariane133/ariane.sdc export ADDITIONAL_LEFS = $(PLATFORM_DIR)/lef/fakeram45_256x16.lef export ADDITIONAL_LIBS = $(PLATFORM_DIR)/lib/fakeram45_256x16.lib -export DIE_AREA = 0 0 1500 1500 -export CORE_AREA = 10 12 1448 1448 +export CORE_UTILIZATION = 40 +export CORE_ASPECT_RATIO = 1 +export CORE_MARGIN = 5 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl export MACRO_PLACE_HALO = 10 10 -export TNS_END_PERCENT = 100 export SKIP_GATE_CLONING = 1 diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 5e5b66c358..8806343824 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0011": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0323": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0998": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0999": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 825864.85, "compare": "<=" @@ -28,19 +113,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.2, + "value": -0.695, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.8, + "value": -1580.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.2, + "value": -0.15, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -0.8, + "value": -0.6, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,23 +133,23 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.2, + "value": -0.657, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.8, + "value": -1220.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.2, + "value": -0.15, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.8, + "value": -0.6, "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8368533, + "value": 8166072, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -84,31 +169,31 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -0.8, + "value": -53.9, "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -0.2, + "value": -0.155, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.8, + "value": -0.655, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.264, + "value": -0.753, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -19.7, + "value": -1470.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.2, + "value": -0.15, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.8, + "value": -0.6, "compare": ">=" }, "finish__design__instance__area": { From 36dfd44092972992c35ac64778767ca7277da110 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Wed, 26 Nov 2025 21:08:45 +0000 Subject: [PATCH 077/364] remove extract_fa for module swap Signed-off-by: Cho Moon --- flow/scripts/synth.tcl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index 018a6c399d..d3c1774955 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -120,7 +120,11 @@ renames -wire opt -purge # Technology mapping of adders -if { [env_var_exists_and_non_empty ADDER_MAP_FILE] } { +if { + [env_var_exists_and_non_empty ADDER_MAP_FILE] && + ![env_var_exists_and_non_empty SYNTH_WRAPPED_OPERATORS] && + ![env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] +} { # extract the full adders extract_fa # map full adders From 3928d89f16f48f8db0ac5194d7d8d4b0f2bfc2bb Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 27 Nov 2025 15:32:06 +0000 Subject: [PATCH 078/364] use latest drt-incremental-pa Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index b577013518..314897874c 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit b5770135188ae633c16dd6e7f40037a453d61ec8 +Subproject commit 314897874c4043d68061843d3f4b84998d3f85bc From f5005098a2088baacdf748488b4184f2cd98d796 Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Thu, 27 Nov 2025 17:52:57 +0000 Subject: [PATCH 079/364] feat: make MIN_PLACE_STEP_COEFF and MAX_PLACE_STEP_COEFF tunable with validation Signed-off-by: Jack Luar --- flow/scripts/global_place.tcl | 19 +++++++++++++++++++ flow/scripts/variables.yaml | 24 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/flow/scripts/global_place.tcl b/flow/scripts/global_place.tcl index ef130951b3..b5a465b706 100644 --- a/flow/scripts/global_place.tcl +++ b/flow/scripts/global_place.tcl @@ -33,6 +33,25 @@ if { $::env(GPL_TIMING_DRIVEN) } { } } +# Parameters for phi coefficients in global placement +# Validate phi coefficient constraints before using them +if { [info exists ::env(MIN_PLACE_STEP_COEF)] && [info exists ::env(MAX_PLACE_STEP_COEF)] } { + set min_phi $::env(MIN_PLACE_STEP_COEF) + set max_phi $::env(MAX_PLACE_STEP_COEF) + + if { $min_phi > $max_phi } { + utl::error GPL 200 "MIN_PLACE_STEP_COEF ($min_phi) cannot be greater than MAX_PLACE_STEP_COEF ($max_phi)" + } +} + +if { [info exists ::env(MIN_PLACE_STEP_COEF)] } { + lappend global_placement_args -min_phi_coef $::env(MIN_PLACE_STEP_COEF) +} + +if { [info exists ::env(MAX_PLACE_STEP_COEF)] } { + lappend global_placement_args -max_phi_coef $::env(MAX_PLACE_STEP_COEF) +} + proc do_placement { global_placement_args } { set all_args [concat [list -density [place_density_with_lb_addon] \ -pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \ diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 1e07b8f3f8..014cd79bf8 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -571,6 +571,30 @@ GPL_ROUTABILITY_DRIVEN: stages: - place default: 1 +MIN_PLACE_STEP_COEF: + description: > + Sets the minimum phi coefficient (pcof_min / µ_k Lower Bound) for global + placement optimization. This parameter controls the step size lower bound + in the RePlAce Nesterov optimization algorithm. Lower values may improve + convergence but can increase runtime. + Valid range: 0.95-1.05 + default: 0.95 + stages: + - place + tunable: 1 + type: float +MAX_PLACE_STEP_COEF: + description: > + Sets the maximum phi coefficient (pcof_max / µ_k Upper Bound) for global + placement optimization. This parameter controls the step size upper bound + in the RePlAce Nesterov optimization algorithm. Higher values allow more + aggressive optimization but may risk divergence. + Valid range: 1.00-1.20 + default: 1.05 + stages: + - place + tunable: 1 + type: float CAP_MARGIN: description: > Specifies a capacitance margin when fixing max capacitance violations. This From fd684a889e70daf00062d860aaddb4d7669fe55d Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Thu, 27 Nov 2025 17:57:00 +0000 Subject: [PATCH 080/364] chore: update FlowVariables Signed-off-by: Jack Luar --- docs/user/FlowVariables.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 2b18f5deed..a9f6380837 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -168,11 +168,13 @@ configuration file. | MACRO_WRAPPERS| The wrapper file that replaces existing macros with their wrapped version.| | | MAKE_TRACKS| Tcl file that defines add routing tracks to a floorplan.| | | MATCH_CELL_FOOTPRINT| Enforce sizing operations to only swap cells that have the same layout boundary.| 0| +| MAX_PLACE_STEP_COEF| Sets the maximum phi coefficient (pcof_max / µ_k Upper Bound) for global placement optimization. This parameter controls the step size upper bound in the RePlAce Nesterov optimization algorithm. Higher values allow more aggressive optimization but may risk divergence. Valid range: 1.00-1.20| 1.05| | MAX_REPAIR_ANTENNAS_ITER_DRT| Defines the maximum number of iterations post-detailed routing repair antennas will run.| 5| | MAX_REPAIR_ANTENNAS_ITER_GRT| Defines the maximum number of iterations post global routing repair antennas will run.| 5| | MAX_REPAIR_TIMING_ITER| Maximum number of iterations for repair setup and repair hold.| | | MAX_ROUTING_LAYER| The highest metal layer name to be used in routing.| | | MIN_BUF_CELL_AND_PORTS| Used to insert a buffer cell to pass through wires. Used in synthesis.| | +| MIN_PLACE_STEP_COEF| Sets the minimum phi coefficient (pcof_min / µ_k Lower Bound) for global placement optimization. This parameter controls the step size lower bound in the RePlAce Nesterov optimization algorithm. Lower values may improve convergence but can increase runtime. Valid range: 0.95-1.05| 0.95| | MIN_ROUTING_LAYER| The lowest metal layer name to be used in routing.| | | OPENROAD_HIERARCHICAL| Feature toggle to enable to run OpenROAD in hierarchical mode, otherwise considered flat. Will eventually be the default and this option will be retired.| 0| | PDN_TCL| File path which has a set of power grid policies used by pdn to be applied to the design, such as layers to use, stripe width and spacing to generate the actual metal straps.| | @@ -382,8 +384,10 @@ configuration file. - [IO_PLACER_H](#IO_PLACER_H) - [IO_PLACER_V](#IO_PLACER_V) - [MATCH_CELL_FOOTPRINT](#MATCH_CELL_FOOTPRINT) +- [MAX_PLACE_STEP_COEF](#MAX_PLACE_STEP_COEF) - [MAX_REPAIR_TIMING_ITER](#MAX_REPAIR_TIMING_ITER) - [MAX_ROUTING_LAYER](#MAX_ROUTING_LAYER) +- [MIN_PLACE_STEP_COEF](#MIN_PLACE_STEP_COEF) - [MIN_ROUTING_LAYER](#MIN_ROUTING_LAYER) - [PLACE_DENSITY](#PLACE_DENSITY) - [PLACE_DENSITY_LB_ADDON](#PLACE_DENSITY_LB_ADDON) From 65b736e95892d66f6a03c7a178386355b7d07303 Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Thu, 27 Nov 2025 17:58:57 +0000 Subject: [PATCH 081/364] chore: fix tclint Signed-off-by: Jack Luar --- flow/scripts/global_place.tcl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/flow/scripts/global_place.tcl b/flow/scripts/global_place.tcl index b5a465b706..3c332f7f33 100644 --- a/flow/scripts/global_place.tcl +++ b/flow/scripts/global_place.tcl @@ -35,12 +35,15 @@ if { $::env(GPL_TIMING_DRIVEN) } { # Parameters for phi coefficients in global placement # Validate phi coefficient constraints before using them -if { [info exists ::env(MIN_PLACE_STEP_COEF)] && [info exists ::env(MAX_PLACE_STEP_COEF)] } { +if { [info exists ::env(MIN_PLACE_STEP_COEF)] \ + && [info exists ::env(MAX_PLACE_STEP_COEF)] } { set min_phi $::env(MIN_PLACE_STEP_COEF) set max_phi $::env(MAX_PLACE_STEP_COEF) if { $min_phi > $max_phi } { - utl::error GPL 200 "MIN_PLACE_STEP_COEF ($min_phi) cannot be greater than MAX_PLACE_STEP_COEF ($max_phi)" + utl::error GPL 200 \ + "MIN_PLACE_STEP_COEF ($min_phi) cannot be greater than \ +MAX_PLACE_STEP_COEF ($max_phi)" } } From 2a5ee401798db12cea91ab55aa9d928e76043732 Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Thu, 27 Nov 2025 18:03:35 +0000 Subject: [PATCH 082/364] fix tclfmt Signed-off-by: Jack Luar --- flow/scripts/global_place.tcl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/flow/scripts/global_place.tcl b/flow/scripts/global_place.tcl index 3c332f7f33..3606785d9c 100644 --- a/flow/scripts/global_place.tcl +++ b/flow/scripts/global_place.tcl @@ -35,8 +35,10 @@ if { $::env(GPL_TIMING_DRIVEN) } { # Parameters for phi coefficients in global placement # Validate phi coefficient constraints before using them -if { [info exists ::env(MIN_PLACE_STEP_COEF)] \ - && [info exists ::env(MAX_PLACE_STEP_COEF)] } { +if { + [info exists ::env(MIN_PLACE_STEP_COEF)] + && [info exists ::env(MAX_PLACE_STEP_COEF)] +} { set min_phi $::env(MIN_PLACE_STEP_COEF) set max_phi $::env(MAX_PLACE_STEP_COEF) From 7bcd78dca6ececca1f3486119a3ec838c177164b Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Thu, 27 Nov 2025 18:28:59 +0000 Subject: [PATCH 083/364] fix idecode issue Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 19294a8c77..39266ab54d 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 19294a8c77a6663a307fc5622bbbd82bd428cf1c +Subproject commit 39266ab54d52c2aace8a8c4ac75d7f62847f0061 From 3252d1ec4b0423be91481b5db71c4e6e7e9d4dd0 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Fri, 28 Nov 2025 17:45:05 +0000 Subject: [PATCH 084/364] update metrics Signed-off-by: Eder Monteiro --- flow/designs/asap7/aes-block/rules-base.json | 109 ++++++++++++++-- flow/designs/asap7/mock-alu/rules-base.json | 99 ++++++++++++++- flow/designs/gf12/gcd/rules-base.json | 2 +- flow/designs/gf180/aes-hybrid/rules-base.json | 54 +++++++- flow/designs/gf180/aes/rules-base.json | 70 ++++++++++- .../nangate45/ariane133/rules-base.json | 13 +- flow/designs/nangate45/ibex/rules-base.json | 47 ++++++- flow/designs/nangate45/jpeg/rules-base.json | 78 +++++++++++- flow/designs/nangate45/swerv/rules-base.json | 49 +++++++- .../nangate45/tinyRocket/rules-base.json | 49 +++++++- .../designs/rapidus2hp/ethmac/rules-base.json | 8 +- .../hercules_idecode/rules-base.json | 12 +- .../sky130hd/chameleon/rules-base.json | 59 ++++++++- flow/designs/sky130hd/gcd/rules-base.json | 56 ++++++++- flow/designs/sky130hd/jpeg/rules-base.json | 56 ++++++++- .../sky130hd/microwatt/rules-base.json | 116 ++++++++++++++++-- flow/designs/sky130hs/aes/rules-base.json | 39 +++++- flow/designs/sky130hs/gcd/rules-base.json | 58 ++++++++- .../designs/sky130hs/riscv32i/rules-base.json | 49 +++++++- 19 files changed, 959 insertions(+), 64 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 8cd9239896..fcf3eed6cb 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 16, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 64, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2130.06, "compare": "<=" @@ -24,15 +119,15 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1134, + "value": 1354, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -141.0, + "value": -136.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9390.0, + "value": -7920.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +143,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -146.0, + "value": -133.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8690.0, + "value": -6640.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,11 +191,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -106.0, + "value": -96.1, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5890.0, + "value": -4060.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index b4b0525b34..45c804e1b9 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1665.04, "compare": "<=" @@ -96,11 +191,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -297.0, + "value": -294.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17500.0, + "value": -17600.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/gcd/rules-base.json b/flow/designs/gf12/gcd/rules-base.json index 98f5bc873d..369c90020a 100644 --- a/flow/designs/gf12/gcd/rules-base.json +++ b/flow/designs/gf12/gcd/rules-base.json @@ -132,7 +132,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -285.0, + "value": -367.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 845a5bc1cd..08ed8aeffa 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 489779.41376, "compare": "<=" @@ -52,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -160.0, + "value": -162.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +114,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1503289, + "value": 1501193, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index b254af6021..e2fb20f3b9 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -1,4 +1,64 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 620000.0, "compare": "<=" @@ -48,11 +108,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.09, + "value": -1.08, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -125.0, + "value": -127.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +144,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -57.9, + "value": -57.2, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +160,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -119.0, + "value": -122.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +172,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 849171, + "value": 844209, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 8806343824..1746875862 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -14,6 +14,11 @@ "compare": "<=", "level": "warning" }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -137,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1220.0, + "value": -1300.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -149,7 +154,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8166072, + "value": 8166038, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -169,7 +174,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -53.9, + "value": -73.4, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -185,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1470.0, + "value": -1520.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index e6c757aa75..d9a45a6821 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 52, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 32500.0, "compare": "<=" @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.6, + "value": -2.04, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index ac69795ed6..72a0c67450 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -1,4 +1,74 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 102576.23, "compare": "<=" @@ -52,7 +122,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -46.6, + "value": -48.1, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +150,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -0.06, + "value": -0.11, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -10.2, + "value": -11.6, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +170,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -45.9, + "value": -47.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 6bcbc827d2..0473873909 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 178043.59, "compare": "<=" @@ -52,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -24.3, + "value": -30.1, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -25.4, + "value": -27.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index f0a6729246..83b3f09114 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" @@ -52,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.4, + "value": -19.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -19.2, + "value": -20.2, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index b141e837ce..e3e74843d3 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -148,11 +148,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -53.7, + "value": -49.3, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1660.0, + "value": -1740.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -164,11 +164,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -53.7, + "value": -49.3, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1660.0, + "value": -1740.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index 18d48330dd..eaa4cc5caf 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -143,15 +143,15 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -218.0, + "value": -237.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -649000.0, + "value": -613000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -26.0, + "value": -16.0, "compare": ">=" }, "globalroute__timing__hold__tns": { @@ -159,15 +159,15 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -218.0, + "value": -237.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -649000.0, + "value": -613000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -26.0, + "value": -16.0, "compare": ">=" }, "finish__timing__hold__tns": { diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index 8701ec0dca..7c542d9c68 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -1,4 +1,59 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ORD-2011": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0243": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 27373.26, "compare": "<=" @@ -44,7 +99,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 306, + "value": 338, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -76,7 +131,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 146, + "value": 103, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/sky130hd/gcd/rules-base.json b/flow/designs/sky130hd/gcd/rules-base.json index 39e47c38b4..2dc0f127ac 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 939, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2760.0, "compare": "<=" @@ -52,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -130.0, + "value": -110.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -102.0, + "value": -123.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +162,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 5492, + "value": 5488, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index 26464fcbc9..e597631330 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 54, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 18, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 463729.45, "compare": "<=" @@ -44,7 +94,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 162, + "value": 161, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -52,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3.02, + "value": -13.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -76,7 +126,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 123, + "value": 119, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index a6a0e2b4ac..765e86e086 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,4 +1,104 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 6, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 166, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" @@ -44,7 +144,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 1361, + "value": 1357, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -52,7 +152,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -372.0, + "value": -367.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -72,19 +172,19 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1092, + "value": 1298, "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -1.4, + "value": -1.39, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -54.6, + "value": -43.8, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,7 +192,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -354.0, + "value": -353.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +200,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -392.0, + "value": -382.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index a7da9270ef..d77c5b6823 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -1,4 +1,39 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 134349.28, "compare": "<=" @@ -48,11 +83,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.307, + "value": -0.3, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3.24, + "value": -4.76, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 56cf8f8635..a807a416e7 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 153, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 4532.91, "compare": "<=" @@ -52,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.7, + "value": -19.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +134,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7.01, + "value": -7.5, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -14.8, + "value": -15.5, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +162,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 8160, + "value": 8156, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index 23daa085e6..7697fb4de3 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 97352.63, "compare": "<=" @@ -96,11 +141,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -1.13, + "value": -1.09, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -36.0, + "value": -37.2, "compare": ">=" }, "finish__timing__hold__ws": { From d5fe59d2186f1b56d49e5269ab3560bf174abfd3 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Mon, 1 Dec 2025 10:15:42 +0000 Subject: [PATCH 085/364] Update metrics for the abc submodule update designs/ihp-sg13g2/jpeg/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__antenna_diodes_count | 138 | 148 | Failing | designs/nangate45/swerv/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__tns | -25.4 | -26.2 | Failing | designs/nangate45/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__tns | -154.0 | -156.0 | Failing | | finish__timing__hold__tns | -1.6 | -2.01 | Failing | designs/nangate45/tinyRocket/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__tns | -19.2 | -20.1 | Failing | Signed-off-by: Matt Liberty --- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 27 ++++++++++- flow/designs/nangate45/swerv/rules-base.json | 47 ++++++++++++++++++- .../nangate45/swerv_wrapper/rules-base.json | 44 ++++++++++++++++- .../nangate45/tinyRocket/rules-base.json | 47 ++++++++++++++++++- tools/OpenROAD | 2 +- 5 files changed, 161 insertions(+), 6 deletions(-) diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index 5dc32c7dc2..0dc9244b34 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -1,4 +1,29 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1499147.11, "compare": "<=" @@ -76,7 +101,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 138, + "value": 148, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 6bcbc827d2..ea95616a26 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 178043.59, "compare": "<=" @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -25.4, + "value": -26.2, "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 25d9470468..f1d2c8454e 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -1,4 +1,44 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 724516.2, "compare": "<=" @@ -100,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -154.0, + "value": -156.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -108,7 +148,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -1.6, + "value": -2.01, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index f0a6729246..ece504fcab 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -19.2, + "value": -20.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/tools/OpenROAD b/tools/OpenROAD index b577013518..224bf4f865 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit b5770135188ae633c16dd6e7f40037a453d61ec8 +Subproject commit 224bf4f865847b1477f6728eae8118469b0563f8 From c77285c3e0a66e68758c53104fad6102c8d02d6c Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Mon, 1 Dec 2025 16:17:21 +0000 Subject: [PATCH 086/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 39266ab54d..6522e70fbb 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 39266ab54d52c2aace8a8c4ac75d7f62847f0061 +Subproject commit 6522e70fbbcd8231c08b50dfa41254d6287c4f7c From eaa01ad7d74ed53b2fae654738f537506bb9d57a Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Mon, 1 Dec 2025 16:26:25 +0000 Subject: [PATCH 087/364] master version for comparison Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 6522e70fbb..ecf1eea9d7 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 6522e70fbbcd8231c08b50dfa41254d6287c4f7c +Subproject commit ecf1eea9d789d0a060ba83dff017e67427944fc4 From e6253614315c2d96179a729e037e87c0b8dea864 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 1 Dec 2025 22:34:55 +0000 Subject: [PATCH 088/364] set set_max_time_borrow to 0 (works around STA issue) Signed-off-by: Jeff Ng --- .../rapidus2hp/hercules_is_int/prects.sdc | 2 + .../hercules_is_int/rules-base.json | 71 +++++-------------- 2 files changed, 20 insertions(+), 53 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_is_int/prects.sdc b/flow/designs/rapidus2hp/hercules_is_int/prects.sdc index 51ed806dd5..5ed9e040ad 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/prects.sdc +++ b/flow/designs/rapidus2hp/hercules_is_int/prects.sdc @@ -11,6 +11,8 @@ convert_time_value clk_period set_max_fanout 32 [current_design] set_load [convert_cap_value 10] [all_outputs] set_max_capacitance [convert_cap_value 10] [all_inputs] +# temporarily set max time borrow to workaround STA assert +set_max_time_borrow 0.0 [all_registers -level_sensitive] create_clock -name "clk" -add -period $clk_period \ -waveform [list 0.0 [expr { 0.5 * $clk_period }]] [get_ports clk] diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 077aaf15f9..6ce55ec2f3 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -4,28 +4,18 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1257": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1257": { - "value": 1001, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:STA-1257": { - "value": 1001, + "cts__flow__warnings__count:STA-0122": { + "value": 27, "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:STA-1257": { - "value": 1001, + "finish__flow__warnings__count:GUI-0076": { + "value": 2, "compare": "<=", "level": "warning" }, @@ -54,13 +44,8 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:STA-1257": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1257": { - "value": 1001, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 13, "compare": "<=", "level": "warning" }, @@ -69,11 +54,6 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:STA-1257": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:DRT-0240": { "value": 1, "compare": "<=", @@ -99,31 +79,16 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:STA-1257": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "placeopt__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", "level": "warning" }, - "placeopt__flow__warnings__count:STA-1257": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 26631.02, "compare": "<=" @@ -153,7 +118,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -371.0, + "value": -386.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -169,39 +134,39 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 652, + "value": 651, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -290.0, + "value": -258.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2040000.0, + "value": -1320000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -54.4, + "value": -12.5, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1520.0, + "value": -50.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -290.0, + "value": -258.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2040000.0, + "value": -1320000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -54.4, + "value": -12.5, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -1520.0, + "value": -50.0, "compare": ">=" }, "finish__design__instance__area": { From e50a145cda7cafa42e9de54dee00b190fc90ce6f Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Tue, 2 Dec 2025 09:05:40 +0000 Subject: [PATCH 089/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index ecf1eea9d7..ec612f4598 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit ecf1eea9d789d0a060ba83dff017e67427944fc4 +Subproject commit ec612f45981ff3558ed14820f46e7d5252583e70 From 2b4c322ad1c461642e3459f61dd40ef3fa3b6fc1 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Tue, 2 Dec 2025 12:35:26 +0000 Subject: [PATCH 090/364] update metrisc after gpl change, modifying gpl instaneces sizes depending on average instance pin density. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ===================================================== make update_ok for aes-hybrid (gf180)... ===================================================== designs/gf180/aes-hybrid/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__timing__setup__tns | -74.1 | -75.7 | Failing | | finish__timing__setup__tns | -156.0 | -154.0 | Tighten | ===================================================== make update_ok for uart-blocks (gf180)... ===================================================== designs/gf180/uart-blocks/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__route__wirelength | 17413 | 20108 | Failing | ===================================================== make update_ok for ibex (gf180)... ===================================================== designs/gf180/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.786 | -0.777 | Tighten | | cts__timing__setup__tns | -4.47 | -3.88 | Tighten | | globalroute__timing__setup__ws | -0.854 | -0.834 | Tighten | | globalroute__timing__setup__tns | -18.8 | -9.38 | Tighten | | finish__timing__setup__tns | -8.87 | -13.9 | Failing | ===================================================== make update_ok for aes (gf180)... ===================================================== designs/gf180/aes/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -107.0 | -109.0 | Failing | | detailedroute__timing__setup__tns | -57.9 | -55.8 | Tighten | | finish__timing__setup__tns | -119.0 | -121.0 | Failing | ===================================================== make update_ok for gcd (asap7)... ===================================================== designs/asap7/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -69.3 | -61.9 | Tighten | | cts__timing__setup__tns | -411.0 | -948.0 | Failing | | globalroute__timing__setup__ws | -78.2 | -71.7 | Tighten | | globalroute__timing__setup__tns | -521.0 | -1070.0 | Failing | | detailedroute__timing__setup__ws | -54.0 | -41.2 | Tighten | | detailedroute__timing__setup__tns | -236.0 | -212.0 | Tighten | | finish__timing__setup__ws | -66.0 | -58.9 | Tighten | | finish__timing__setup__tns | -397.0 | -598.0 | Failing | ===================================================== make update_ok for ethmac (asap7)... ===================================================== designs/asap7/ethmac/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -2080.0 | -2470.0 | Failing | | globalroute__timing__setup__tns | -3110.0 | -3500.0 | Failing | | finish__timing__setup__tns | -2280.0 | -2710.0 | Failing | ===================================================== make update_ok for aes_lvt (asap7)... ===================================================== designs/asap7/aes_lvt/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -72.0 | -254.0 | Failing | ===================================================== make update_ok for riscv32i-mock-sram (asap7)... ===================================================== designs/asap7/riscv32i-mock-sram/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -549.0 | -865.0 | Failing | | finish__timing__setup__tns | -401.0 | -696.0 | Failing | ===================================================== make update_ok for aes-mbff (asap7)... ===================================================== designs/asap7/aes-mbff/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -551.0 | -1040.0 | Failing | | globalroute__timing__setup__tns | -1910.0 | -2800.0 | Failing | | finish__timing__setup__tns | -611.0 | -836.0 | Failing | ===================================================== make update_ok for riscv32i (asap7)... ===================================================== designs/asap7/riscv32i/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -280.0 | -574.0 | Failing | | finish__design__instance__area | 3070 | 3065 | Tighten | ===================================================== make update_ok for swerv_wrapper (asap7)... ===================================================== designs/asap7/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__ws | -481.0 | -445.0 | Tighten | | finish__timing__setup__tns | -200000.0 | -141000.0 | Tighten | | finish__timing__hold__ws | -285.0 | -277.0 | Tighten | | finish__timing__hold__tns | -66900.0 | -75700.0 | Failing | ===================================================== make update_ok for ibex (asap7)... ===================================================== designs/asap7/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -82600.0 | -105000.0 | Failing | | globalroute__timing__setup__tns | -95000.0 | -97700.0 | Failing | | finish__timing__setup__tns | -54900.0 | -50400.0 | Tighten | ===================================================== make update_ok for aes (asap7)... ===================================================== designs/asap7/aes/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -493.0 | -802.0 | Failing | | globalroute__timing__setup__tns | -1930.0 | -2320.0 | Failing | | finish__timing__setup__tns | -537.0 | -761.0 | Failing | ===================================================== make update_ok for uart (asap7)... ===================================================== designs/asap7/uart/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -556.0 | -615.0 | Failing | | globalroute__timing__setup__tns | -1170.0 | -1160.0 | Tighten | | detailedroute__timing__setup__tns | -98.6 | -179.0 | Failing | | finish__timing__setup__tns | -651.0 | -756.0 | Failing | ===================================================== make update_ok for gcd-ccs (asap7)... ===================================================== designs/asap7/gcd-ccs/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -39.4 | -38.7 | Tighten | | cts__timing__setup__tns | -205.0 | -199.0 | Tighten | | globalroute__timing__setup__ws | -38.9 | -38.7 | Tighten | | globalroute__timing__setup__tns | -200.0 | -195.0 | Tighten | | detailedroute__timing__setup__ws | -38.9 | -38.7 | Tighten | | detailedroute__timing__setup__tns | -200.0 | -195.0 | Tighten | | finish__timing__setup__tns | -632.0 | -761.0 | Failing | ===================================================== make update_ok for mock-alu (asap7)... ===================================================== designs/asap7/mock-alu/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -278.0 | -295.0 | Failing | | cts__timing__setup__tns | -16900.0 | -16700.0 | Tighten | | globalroute__timing__setup__tns | -19700.0 | -19600.0 | Tighten | | detailedroute__timing__setup__tns | -12300.0 | -12100.0 | Tighten | | finish__timing__setup__tns | -17500.0 | -17400.0 | Tighten | ===================================================== make update_ok for microwatt (sky130hd)... ===================================================== designs/sky130hd/microwatt/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 5443594 | 5442904 | Tighten | | cts__timing__setup__ws | -2.26 | -2.15 | Tighten | | cts__timing__setup__tns | -338.0 | -269.0 | Tighten | | globalroute__antenna_diodes_count | 1361 | 1498 | Failing | | globalroute__timing__setup__ws | -2.42 | -2.4 | Tighten | | globalroute__timing__setup__tns | -372.0 | -334.0 | Tighten | | detailedroute__antenna__violating__nets | 1 | 0 | Tighten | | detailedroute__antenna_diodes_count | 1092 | 1362 | Failing | | detailedroute__timing__setup__ws | -1.4 | -1.39 | Tighten | | detailedroute__timing__setup__tns | -54.6 | -53.7 | Tighten | | detailedroute__timing__hold__tns | -354.0 | -393.0 | Failing | | finish__timing__setup__tns | -392.0 | -349.0 | Tighten | | finish__timing__hold__tns | -4.12 | -10.6 | Failing | ===================================================== make update_ok for riscv32i (sky130hs)... ===================================================== designs/sky130hs/riscv32i/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.957 | -0.881 | Tighten | | cts__timing__setup__tns | -19.4 | -369.0 | Failing | | globalroute__timing__setup__ws | -1.3 | -1.16 | Tighten | | globalroute__timing__setup__tns | -95.8 | -17.7 | Tighten | | finish__timing__setup__ws | -1.13 | -0.961 | Tighten | | finish__timing__setup__tns | -36.0 | -7.38 | Tighten | ===================================================== make update_ok for ibex (sky130hs)... ===================================================== designs/sky130hs/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -23.8 | -82.0 | Failing | | detailedroute__antenna__violating__nets | 1 | 0 | Tighten | | finish__timing__setup__tns | -1.43 | -2.85 | Failing | ===================================================== make update_ok for aes (sky130hs)... ===================================================== designs/sky130hs/aes/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.16 | -0.14 | Tighten | | cts__timing__setup__tns | -0.58 | -0.56 | Tighten | | globalroute__timing__setup__tns | -3.24 | -5.71 | Failing | ===================================================== make update_ok for black_parrot (nangate45)... ===================================================== designs/nangate45/black_parrot/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__timing__setup__ws | -2.22 | -2.21 | Tighten | | detailedroute__timing__setup__tns | -3.12 | -3.11 | Tighten | | detailedroute__timing__hold__tns | -1.23 | -2.53 | Failing | ===================================================== make update_ok for ariane136 (nangate45)... ===================================================== designs/nangate45/ariane136/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__tns | -7.13 | -6.18 | Tighten | | detailedroute__timing__hold__tns | -1.2 | -3.71 | Failing | ===================================================== make update_ok for swerv (nangate45)... ===================================================== designs/nangate45/swerv/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -24.8 | -2.37 | Tighten | | globalroute__timing__setup__tns | -24.3 | -1.47 | Tighten | | detailedroute__timing__hold__tns | -5.94 | -6.97 | Failing | | finish__timing__setup__tns | -26.2 | -1.62 | Tighten | ===================================================== make update_ok for bp_fe_top (nangate45)... ===================================================== designs/nangate45/bp_fe_top/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.0132 | -0.104 | Failing | | finish__timing__setup__tns | -3.47 | -10.1 | Failing | ===================================================== make update_ok for gcd (nangate45)... ===================================================== designs/nangate45/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -0.672 | -0.784 | Failing | | finish__timing__setup__tns | -0.621 | -0.723 | Failing | | finish__design__instance__area | 980 | 972 | Tighten | ===================================================== make update_ok for jpeg (nangate45)... ===================================================== designs/nangate45/jpeg/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -41.9 | -43.9 | Failing | | globalroute__timing__setup__tns | -46.6 | -51.3 | Failing | | detailedroute__timing__setup__tns | -10.2 | -10.7 | Failing | | finish__timing__setup__ws | -0.153 | -0.206 | Failing | | finish__timing__setup__tns | -45.9 | -51.3 | Failing | ===================================================== make update_ok for bp_be_top (nangate45)... ===================================================== designs/nangate45/bp_be_top/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -16.2 | -22.0 | Failing | | globalroute__timing__setup__tns | -16.0 | -18.8 | Failing | | finish__timing__setup__tns | -25.9 | -36.2 | Failing | ===================================================== make update_ok for tinyRocket (nangate45)... ===================================================== designs/nangate45/tinyRocket/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -7.04 | -14.7 | Failing | | globalroute__timing__setup__tns | -18.4 | -22.2 | Failing | | finish__timing__setup__tns | -20.1 | -25.8 | Failing | ===================================================== make update_ok for bp_multi_top (nangate45)... ===================================================== designs/nangate45/bp_multi_top/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -4.7 | -4.69 | Tighten | | detailedroute__timing__setup__tns | -760.0 | -796.0 | Failing | | detailedroute__timing__hold__tns | -7.5 | -7.36 | Tighten | | finish__timing__setup__ws | -4.68 | -4.67 | Tighten | | finish__timing__hold__tns | -0.1086 | -1.09 | Failing | ===================================================== make update_ok for ibex (nangate45)... ===================================================== designs/nangate45/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__tns | -1.6 | -2.05 | Failing | ===================================================== make update_ok for aes (nangate45)... ===================================================== designs/nangate45/aes/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__ws | -0.071 | -0.0709 | Tighten | | finish__timing__setup__tns | -0.718 | -0.948 | Failing | ===================================================== make update_ok for spi (ihp-sg13g2)... ===================================================== designs/ihp-sg13g2/spi/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | 0.0 | -0.206 | Failing | | detailedroute__route__wirelength | 3686 | 3663 | Tighten | ===================================================== make update_ok for aes-hybrid (gf180)... ===================================================== designs/gf180/aes-hybrid/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__timing__setup__tns | -74.1 | -75.7 | Failing | | finish__timing__setup__tns | -156.0 | -154.0 | Tighten | ===================================================== make update_ok for uart-blocks (gf180)... ===================================================== designs/gf180/uart-blocks/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__route__wirelength | 17413 | 20108 | Failing | ===================================================== make update_ok for ibex (gf180)... ===================================================== designs/gf180/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.786 | -0.777 | Tighten | | cts__timing__setup__tns | -4.47 | -3.88 | Tighten | | globalroute__timing__setup__ws | -0.854 | -0.834 | Tighten | | globalroute__timing__setup__tns | -18.8 | -9.38 | Tighten | | finish__timing__setup__tns | -8.87 | -13.9 | Failing | ===================================================== make update_ok for aes (gf180)... ===================================================== designs/gf180/aes/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -107.0 | -109.0 | Failing | | detailedroute__timing__setup__tns | -57.9 | -55.8 | Tighten | | finish__timing__setup__tns | -119.0 | -121.0 | Failing | ===================================================== make update_ok for gcd (asap7)... ===================================================== designs/asap7/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -69.3 | -61.9 | Tighten | | cts__timing__setup__tns | -411.0 | -948.0 | Failing | | globalroute__timing__setup__ws | -78.2 | -71.7 | Tighten | | globalroute__timing__setup__tns | -521.0 | -1070.0 | Failing | | detailedroute__timing__setup__ws | -54.0 | -41.2 | Tighten | | detailedroute__timing__setup__tns | -236.0 | -212.0 | Tighten | | finish__timing__setup__ws | -66.0 | -58.9 | Tighten | | finish__timing__setup__tns | -397.0 | -598.0 | Failing | ===================================================== make update_ok for ethmac (asap7)... ===================================================== designs/asap7/ethmac/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -2080.0 | -2470.0 | Failing | | globalroute__timing__setup__tns | -3110.0 | -3500.0 | Failing | | finish__timing__setup__tns | -2280.0 | -2710.0 | Failing | ===================================================== make update_ok for aes_lvt (asap7)... ===================================================== designs/asap7/aes_lvt/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -72.0 | -254.0 | Failing | ===================================================== make update_ok for riscv32i-mock-sram (asap7)... ===================================================== designs/asap7/riscv32i-mock-sram/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -549.0 | -865.0 | Failing | | finish__timing__setup__tns | -401.0 | -696.0 | Failing | ===================================================== make update_ok for aes-mbff (asap7)... ===================================================== designs/asap7/aes-mbff/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -551.0 | -1040.0 | Failing | | globalroute__timing__setup__tns | -1910.0 | -2800.0 | Failing | | finish__timing__setup__tns | -611.0 | -836.0 | Failing | ===================================================== make update_ok for riscv32i (asap7)... ===================================================== designs/asap7/riscv32i/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -280.0 | -574.0 | Failing | | finish__design__instance__area | 3070 | 3065 | Tighten | ===================================================== make update_ok for swerv_wrapper (asap7)... ===================================================== designs/asap7/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__ws | -481.0 | -445.0 | Tighten | | finish__timing__setup__tns | -200000.0 | -141000.0 | Tighten | | finish__timing__hold__ws | -285.0 | -277.0 | Tighten | | finish__timing__hold__tns | -66900.0 | -75700.0 | Failing | ===================================================== make update_ok for ibex (asap7)... ===================================================== designs/asap7/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -82600.0 | -105000.0 | Failing | | globalroute__timing__setup__tns | -95000.0 | -97700.0 | Failing | | finish__timing__setup__tns | -54900.0 | -50400.0 | Tighten | ===================================================== make update_ok for aes (asap7)... ===================================================== designs/asap7/aes/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -493.0 | -802.0 | Failing | | globalroute__timing__setup__tns | -1930.0 | -2320.0 | Failing | | finish__timing__setup__tns | -537.0 | -761.0 | Failing | ===================================================== make update_ok for uart (asap7)... ===================================================== designs/asap7/uart/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -556.0 | -615.0 | Failing | | globalroute__timing__setup__tns | -1170.0 | -1160.0 | Tighten | | detailedroute__timing__setup__tns | -98.6 | -179.0 | Failing | | finish__timing__setup__tns | -651.0 | -756.0 | Failing | ===================================================== make update_ok for gcd-ccs (asap7)... ===================================================== designs/asap7/gcd-ccs/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -39.4 | -38.7 | Tighten | | cts__timing__setup__tns | -205.0 | -199.0 | Tighten | | globalroute__timing__setup__ws | -38.9 | -38.7 | Tighten | | globalroute__timing__setup__tns | -200.0 | -195.0 | Tighten | | detailedroute__timing__setup__ws | -38.9 | -38.7 | Tighten | | detailedroute__timing__setup__tns | -200.0 | -195.0 | Tighten | | finish__timing__setup__tns | -632.0 | -761.0 | Failing | ===================================================== make update_ok for mock-alu (asap7)... ===================================================== designs/asap7/mock-alu/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -278.0 | -295.0 | Failing | | cts__timing__setup__tns | -16900.0 | -16700.0 | Tighten | | globalroute__timing__setup__tns | -19700.0 | -19600.0 | Tighten | | detailedroute__timing__setup__tns | -12300.0 | -12100.0 | Tighten | | finish__timing__setup__tns | -17500.0 | -17400.0 | Tighten | ===================================================== make update_ok for microwatt (sky130hd)... ===================================================== designs/sky130hd/microwatt/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 5443594 | 5442904 | Tighten | | cts__timing__setup__ws | -2.26 | -2.15 | Tighten | | cts__timing__setup__tns | -338.0 | -269.0 | Tighten | | globalroute__antenna_diodes_count | 1361 | 1498 | Failing | | globalroute__timing__setup__ws | -2.42 | -2.4 | Tighten | | globalroute__timing__setup__tns | -372.0 | -334.0 | Tighten | | detailedroute__antenna__violating__nets | 1 | 0 | Tighten | | detailedroute__antenna_diodes_count | 1092 | 1362 | Failing | | detailedroute__timing__setup__ws | -1.4 | -1.39 | Tighten | | detailedroute__timing__setup__tns | -54.6 | -53.7 | Tighten | | detailedroute__timing__hold__tns | -354.0 | -393.0 | Failing | | finish__timing__setup__tns | -392.0 | -349.0 | Tighten | | finish__timing__hold__tns | -4.12 | -10.6 | Failing | ===================================================== make update_ok for riscv32i (sky130hs)... ===================================================== designs/sky130hs/riscv32i/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.957 | -0.881 | Tighten | | cts__timing__setup__tns | -19.4 | -369.0 | Failing | | globalroute__timing__setup__ws | -1.3 | -1.16 | Tighten | | globalroute__timing__setup__tns | -95.8 | -17.7 | Tighten | | finish__timing__setup__ws | -1.13 | -0.961 | Tighten | | finish__timing__setup__tns | -36.0 | -7.38 | Tighten | ===================================================== make update_ok for ibex (sky130hs)... ===================================================== designs/sky130hs/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -23.8 | -82.0 | Failing | | detailedroute__antenna__violating__nets | 1 | 0 | Tighten | | finish__timing__setup__tns | -1.43 | -2.85 | Failing | ===================================================== make update_ok for aes (sky130hs)... ===================================================== designs/sky130hs/aes/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.16 | -0.14 | Tighten | | cts__timing__setup__tns | -0.58 | -0.56 | Tighten | | globalroute__timing__setup__tns | -3.24 | -5.71 | Failing | ===================================================== make update_ok for black_parrot (nangate45)... ===================================================== designs/nangate45/black_parrot/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__timing__setup__ws | -2.22 | -2.21 | Tighten | | detailedroute__timing__setup__tns | -3.12 | -3.11 | Tighten | | detailedroute__timing__hold__tns | -1.23 | -2.53 | Failing | ===================================================== make update_ok for ariane136 (nangate45)... ===================================================== designs/nangate45/ariane136/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__tns | -7.13 | -6.18 | Tighten | | detailedroute__timing__hold__tns | -1.2 | -3.71 | Failing | ===================================================== make update_ok for swerv (nangate45)... ===================================================== designs/nangate45/swerv/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -24.8 | -2.37 | Tighten | | globalroute__timing__setup__tns | -24.3 | -1.47 | Tighten | | detailedroute__timing__hold__tns | -5.94 | -6.97 | Failing | | finish__timing__setup__tns | -26.2 | -1.62 | Tighten | ===================================================== make update_ok for bp_fe_top (nangate45)... ===================================================== designs/nangate45/bp_fe_top/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.0132 | -0.104 | Failing | | finish__timing__setup__tns | -3.47 | -10.1 | Failing | ===================================================== make update_ok for gcd (nangate45)... ===================================================== designs/nangate45/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -0.672 | -0.784 | Failing | | finish__timing__setup__tns | -0.621 | -0.723 | Failing | | finish__design__instance__area | 980 | 972 | Tighten | ===================================================== make update_ok for jpeg (nangate45)... ===================================================== designs/nangate45/jpeg/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -41.9 | -43.9 | Failing | | globalroute__timing__setup__tns | -46.6 | -51.3 | Failing | | detailedroute__timing__setup__tns | -10.2 | -10.7 | Failing | | finish__timing__setup__ws | -0.153 | -0.206 | Failing | | finish__timing__setup__tns | -45.9 | -51.3 | Failing | ===================================================== make update_ok for bp_be_top (nangate45)... ===================================================== designs/nangate45/bp_be_top/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -16.2 | -22.0 | Failing | | globalroute__timing__setup__tns | -16.0 | -18.8 | Failing | | finish__timing__setup__tns | -25.9 | -36.2 | Failing | ===================================================== make update_ok for tinyRocket (nangate45)... ===================================================== designs/nangate45/tinyRocket/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -7.04 | -14.7 | Failing | | globalroute__timing__setup__tns | -18.4 | -22.2 | Failing | | finish__timing__setup__tns | -20.1 | -25.8 | Failing | ===================================================== make update_ok for bp_multi_top (nangate45)... ===================================================== designs/nangate45/bp_multi_top/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -4.7 | -4.69 | Tighten | | detailedroute__timing__setup__tns | -760.0 | -796.0 | Failing | | detailedroute__timing__hold__tns | -7.5 | -7.36 | Tighten | | finish__timing__setup__ws | -4.68 | -4.67 | Tighten | | finish__timing__hold__tns | -0.1086 | -1.09 | Failing | ===================================================== make update_ok for ibex (nangate45)... ===================================================== designs/nangate45/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__tns | -1.6 | -2.05 | Failing | ===================================================== make update_ok for aes (nangate45)... ===================================================== designs/nangate45/aes/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__ws | -0.071 | -0.0709 | Tighten | | finish__timing__setup__tns | -0.718 | -0.948 | Failing | ===================================================== make update_ok for spi (ihp-sg13g2)... ===================================================== designs/ihp-sg13g2/spi/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | 0.0 | -0.206 | Failing | | detailedroute__route__wirelength | 3686 | 3663 | Tighten | Large percentage changes in failing metrics (>50%): - riscv32i (sky130hs) cts__timing__setup__tns 1802.06% (-19.4 → -369.0) - bp_multi_top (nangate45) finish__timing__hold__tns 903.68% (-0.1086 → -1.09) - bp_fe_top (nangate45) cts__timing__setup__ws 687.88% (-0.0132 → -0.104) - aes_lvt (asap7) globalroute__timing__setup__tns 252.78% (-72.0 → -254.0) - ibex (sky130hs) globalroute__timing__setup__tns 244.54% (-23.8 → -82.0) - ariane136 (nangate45) detailedroute__timing__hold__tns 209.17% (-1.2 → -3.71) - bp_fe_top (nangate45) finish__timing__setup__tns 191.07% (-3.47 → -10.1) - microwatt (sky130hd) finish__timing__hold__tns 157.28% (-4.12 → -10.6) - gcd (asap7) cts__timing__setup__tns 130.66% (-411.0 → -948.0) - tinyRocket (nangate45) cts__timing__setup__tns 108.81% (-7.04 → -14.7) - black_parrot (nangate45) detailedroute__timing__hold__tns 105.69% (-1.23 → -2.53) - gcd (asap7) globalroute__timing__setup__tns 105.37% (-521.0 → -1070.0) - riscv32i (asap7) globalroute__timing__setup__tns 105.00% (-280.0 → -574.0) - ibex (sky130hs) finish__timing__setup__tns 99.30% (-1.43 → -2.85) - aes-mbff (asap7) cts__timing__setup__tns 88.75% (-551.0 → -1040.0) - uart (asap7) detailedroute__timing__setup__tns 81.54% (-98.6 → -179.0) - aes (sky130hs) globalroute__timing__setup__tns 76.23% (-3.24 → -5.71) - riscv32i-mock-sram (asap7) finish__timing__setup__tns 73.57% (-401.0 → -696.0) - aes (asap7) cts__timing__setup__tns 62.68% (-493.0 → -802.0) - riscv32i-mock-sram (asap7) cts__timing__setup__tns 57.56% (-549.0 → -865.0) - ibex (gf180) finish__timing__setup__tns 56.71% (-8.87 → -13.9) - gcd (asap7) finish__timing__setup__tns 50.63% (-397.0 → -598.0) Large percentage improvements in tighten metrics (>50%): - microwatt (sky130hd) detailedroute__antenna__violating__nets -100.00% (1 → 0) - ibex (sky130hs) detailedroute__antenna__violating__nets -100.00% (1 → 0) - swerv (nangate45) globalroute__timing__setup__tns -93.95% (-24.3 → -1.47) - swerv (nangate45) finish__timing__setup__tns -93.82% (-26.2 → -1.62) - swerv (nangate45) cts__timing__setup__tns -90.44% (-24.8 → -2.37) - riscv32i (sky130hs) globalroute__timing__setup__tns -81.52% (-95.8 → -17.7) - riscv32i (sky130hs) finish__timing__setup__tns -79.50% (-36.0 → -7.38) - chameleon (sky130hd) globalroute__antenna_diodes_count -50.98% (306 → 150) - ibex (gf180) globalroute__timing__setup__tns -50.11% (-18.8 → -9.38) Signed-off-by: Augusto Berndt --- flow/designs/asap7/aes-block/rules-base.json | 109 +++++++++- flow/designs/asap7/aes-mbff/rules-base.json | 96 ++++++++- flow/designs/asap7/aes/rules-base.json | 96 ++++++++- flow/designs/asap7/aes_lvt/rules-base.json | 87 +++++++- flow/designs/asap7/cva6/rules-base.json | 109 +++++++++- flow/designs/asap7/ethmac/rules-base.json | 106 ++++++++- flow/designs/asap7/ethmac_lvt/rules-base.json | 112 +++++++++- flow/designs/asap7/gcd-ccs/rules-base.json | 99 ++++++++- flow/designs/asap7/gcd/rules-base.json | 101 ++++++++- flow/designs/asap7/ibex/rules-base.json | 96 ++++++++- flow/designs/asap7/jpeg/rules-base.json | 99 ++++++++- flow/designs/asap7/jpeg_lvt/rules-base.json | 85 ++++++++ flow/designs/asap7/mock-alu/rules-base.json | 105 ++++++++- flow/designs/asap7/mock-cpu/rules-base.json | 202 +++++++++++++++++- .../asap7/riscv32i-mock-sram/rules-base.json | 94 +++++++- flow/designs/asap7/riscv32i/rules-base.json | 99 ++++++++- .../asap7/swerv_wrapper/rules-base.json | 88 +++++++- flow/designs/asap7/uart/rules-base.json | 93 +++++++- flow/designs/gf180/aes-hybrid/rules-base.json | 54 ++++- flow/designs/gf180/aes/rules-base.json | 66 +++++- flow/designs/gf180/ibex/rules-base.json | 70 +++++- flow/designs/gf180/jpeg/rules-base.json | 45 ++++ flow/designs/gf180/riscv32i/rules-base.json | 45 ++++ .../designs/gf180/uart-blocks/rules-base.json | 32 ++- flow/designs/ihp-sg13g2/aes/rules-base.json | 25 +++ flow/designs/ihp-sg13g2/gcd/rules-base.json | 36 +++- .../i2c-gpio-expander/rules-base.json | 85 ++++++++ flow/designs/ihp-sg13g2/jpeg/rules-base.json | 2 +- .../ihp-sg13g2/riscv32i/rules-base.json | 35 +++ flow/designs/ihp-sg13g2/spi/rules-base.json | 34 ++- flow/designs/nangate45/aes/rules-base.json | 39 +++- .../nangate45/ariane136/rules-base.json | 54 ++++- .../nangate45/black_parrot/rules-base.json | 81 ++++++- .../nangate45/bp_be_top/rules-base.json | 56 ++++- .../nangate45/bp_fe_top/rules-base.json | 54 ++++- .../nangate45/bp_multi_top/rules-base.json | 75 ++++++- .../nangate45/dynamic_node/rules-base.json | 45 ++++ flow/designs/nangate45/gcd/rules-base.json | 41 +++- flow/designs/nangate45/ibex/rules-base.json | 47 +++- flow/designs/nangate45/jpeg/rules-base.json | 80 ++++++- .../nangate45/mempool_group/rules-base.json | 99 ++++++++- flow/designs/nangate45/swerv/rules-base.json | 18 +- .../nangate45/swerv_wrapper/rules-base.json | 10 +- .../nangate45/tinyRocket/rules-base.json | 6 +- flow/designs/sky130hd/aes/rules-base.json | 32 ++- .../sky130hd/chameleon/rules-base.json | 61 +++++- flow/designs/sky130hd/gcd/rules-base.json | 70 +++++- flow/designs/sky130hd/ibex/rules-base.json | 49 ++++- flow/designs/sky130hd/jpeg/rules-base.json | 67 +++++- .../sky130hd/microwatt/rules-base.json | 126 +++++++++-- .../designs/sky130hd/riscv32i/rules-base.json | 64 +++++- flow/designs/sky130hs/aes/rules-base.json | 36 +++- flow/designs/sky130hs/gcd/rules-base.json | 70 +++++- flow/designs/sky130hs/ibex/rules-base.json | 56 ++++- flow/designs/sky130hs/jpeg/rules-base.json | 57 ++++- .../designs/sky130hs/riscv32i/rules-base.json | 52 ++++- 56 files changed, 3660 insertions(+), 190 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 8cd9239896..ecd3f2b184 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 16, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 62, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2130.06, "compare": "<=" @@ -24,15 +119,15 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1134, + "value": 1074, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -141.0, + "value": -129.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9390.0, + "value": -7350.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +143,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -146.0, + "value": -128.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8690.0, + "value": -6650.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,11 +191,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -106.0, + "value": -83.9, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5890.0, + "value": -3860.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 24610bec12..36db5e4351 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" @@ -32,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -551.0, + "value": -1040.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1910.0, + "value": -2800.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -611.0, + "value": -836.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index 0a70858229..82fe65d3db 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" @@ -32,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -493.0, + "value": -802.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1930.0, + "value": -2320.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -537.0, + "value": -761.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes_lvt/rules-base.json b/flow/designs/asap7/aes_lvt/rules-base.json index 96354b8561..a7ffb2e2de 100644 --- a/flow/designs/asap7/aes_lvt/rules-base.json +++ b/flow/designs/asap7/aes_lvt/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1920.63, "compare": "<=" @@ -52,7 +137,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -72.0, + "value": -254.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/cva6/rules-base.json b/flow/designs/asap7/cva6/rules-base.json index 7d8f917a42..bb2190fafc 100644 --- a/flow/designs/asap7/cva6/rules-base.json +++ b/flow/designs/asap7/cva6/rules-base.json @@ -1,4 +1,109 @@ { + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 722, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0366": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0473": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 18784.414249, "compare": "<=" @@ -48,11 +153,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -50.4, + "value": -50.2, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -201.0, + "value": -200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 5733a3751a..2450d145bc 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -1,4 +1,104 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 8450.0, "compare": "<=" @@ -32,7 +132,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2080.0, + "value": -2470.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +152,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3110.0, + "value": -3500.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +200,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2280.0, + "value": -2710.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index 2bff44a0f6..b5c7bd7dc5 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -1,4 +1,104 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 788, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 8418.677166, "compare": "<=" @@ -28,11 +128,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -35.8, + "value": -27.6, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -353.0, + "value": -216.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +148,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -42.3, + "value": -39.6, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -568.0, + "value": -435.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,11 +196,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -31.5, + "value": -29.8, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -386.0, + "value": -271.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index 5304a3195e..5ba40a2ab3 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 508, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" @@ -28,11 +113,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -39.4, + "value": -38.7, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -205.0, + "value": -199.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +133,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -38.9, + "value": -38.7, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -200.0, + "value": -195.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +165,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -38.9, + "value": -38.7, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -200.0, + "value": -195.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +185,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -632.0, + "value": -761.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index 0316999284..aa33351e5e 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 508, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" @@ -28,11 +113,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -69.3, + "value": -61.9, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -411.0, + "value": -948.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +133,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -78.2, + "value": -71.7, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -521.0, + "value": -1070.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +165,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -54.0, + "value": -41.2, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -236.0, + "value": -212.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +181,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -66.0, + "value": -58.9, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -397.0, + "value": -598.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index a3cb790651..a108c391ef 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2612.69, "compare": "<=" @@ -32,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -82600.0, + "value": -105000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -95000.0, + "value": -97700.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -54900.0, + "value": -50400.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/jpeg/rules-base.json b/flow/designs/asap7/jpeg/rules-base.json index e37358b06a..2c10065fee 100644 --- a/flow/designs/asap7/jpeg/rules-base.json +++ b/flow/designs/asap7/jpeg/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 7008.24, "compare": "<=" @@ -28,11 +123,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -38.0, + "value": -34.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -140.0, + "value": -136.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/asap7/jpeg_lvt/rules-base.json b/flow/designs/asap7/jpeg_lvt/rules-base.json index c122ecacbe..8252217b2f 100644 --- a/flow/designs/asap7/jpeg_lvt/rules-base.json +++ b/flow/designs/asap7/jpeg_lvt/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 7047.572508, "compare": "<=" diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index b4b0525b34..0a93b13720 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1665.04, "compare": "<=" @@ -28,11 +123,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -278.0, + "value": -295.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -16900.0, + "value": -16700.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19700.0, + "value": -19600.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +179,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -12300.0, + "value": -12100.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +195,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17500.0, + "value": -17400.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index f48d6b927a..f133ebf465 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -1,4 +1,194 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 696, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 7302.54, "compare": "<=" @@ -28,7 +218,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -103.0, + "value": -100.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -48,11 +238,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -109.0, + "value": -108.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2710.0, + "value": -2680.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +274,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1840.0, + "value": -1730.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +286,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -103.0, + "value": -102.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2590.0, + "value": -2510.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index faa0aabdea..c09d9aa625 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1640.0, "compare": "<=" @@ -32,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -549.0, + "value": -865.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -100,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -401.0, + "value": -696.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index c11063fdde..26c3e649c8 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2908.684535, "compare": "<=" @@ -52,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -280.0, + "value": -574.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -112,7 +207,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 3070, + "value": 3065, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index d377a384b1..b9dbb3f8ba 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -1,4 +1,84 @@ { + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 53459.06, "compare": "<=" @@ -96,19 +176,19 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -481.0, + "value": -445.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -200000.0, + "value": -141000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -285.0, + "value": -277.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -66900.0, + "value": -75700.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 6d47a52d3b..b5d0b75080 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 795, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 83.24, "compare": "<=" @@ -32,7 +117,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -556.0, + "value": -615.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +137,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1170.0, + "value": -1160.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +169,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -98.6, + "value": -179.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +185,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -651.0, + "value": -756.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 845a5bc1cd..7fb18b2741 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 489779.41376, "compare": "<=" @@ -84,7 +134,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -74.1, + "value": -75.7, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -156.0, + "value": -154.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index b254af6021..257f74bc5a 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -1,4 +1,64 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 620000.0, "compare": "<=" @@ -32,7 +92,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -107.0, + "value": -109.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -84,7 +144,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -57.9, + "value": -55.8, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +160,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -119.0, + "value": -121.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index eddefe1b6a..96a623d6ab 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -1,4 +1,64 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 14, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 7, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 717000.0, "compare": "<=" @@ -28,11 +88,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.786, + "value": -0.777, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -4.47, + "value": -3.88, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +108,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.854, + "value": -0.834, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.8, + "value": -9.38, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +160,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8.87, + "value": -13.9, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index c7b36b7de5..f498af7d6b 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -1,4 +1,49 @@ { + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 92, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 46, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2161429.49, "compare": "<=" diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 1eb94ef725..74c01e3a44 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -1,4 +1,49 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 54, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 355874.87, "compare": "<=" diff --git a/flow/designs/gf180/uart-blocks/rules-base.json b/flow/designs/gf180/uart-blocks/rules-base.json index 3b196671a5..83e9a7c169 100644 --- a/flow/designs/gf180/uart-blocks/rules-base.json +++ b/flow/designs/gf180/uart-blocks/rules-base.json @@ -1,4 +1,34 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 61300.0, "compare": "<=" @@ -64,7 +94,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 17413, + "value": 20108, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/ihp-sg13g2/aes/rules-base.json b/flow/designs/ihp-sg13g2/aes/rules-base.json index 57d55ca0cb..d1fee26228 100644 --- a/flow/designs/ihp-sg13g2/aes/rules-base.json +++ b/flow/designs/ihp-sg13g2/aes/rules-base.json @@ -1,4 +1,29 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:FIN-0010": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 214000.0, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/gcd/rules-base.json b/flow/designs/ihp-sg13g2/gcd/rules-base.json index 440aa3d02a..9a4638f943 100644 --- a/flow/designs/ihp-sg13g2/gcd/rules-base.json +++ b/flow/designs/ihp-sg13g2/gcd/rules-base.json @@ -1,4 +1,34 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:FIN-0010": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 6828.9632, "compare": "<=" @@ -8,11 +38,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 7380, + "value": 7372, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 614, + "value": 613, "compare": "<=" }, "detailedplace__design__violations": { @@ -112,7 +142,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 7693, + "value": 7691, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json index 25ed544149..c70fcab283 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:STA-1140": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1140": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1140": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1140": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:PAD-0033": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0347": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1140": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0189": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1140": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1140": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1140": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1140": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 286097.29, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index 0dc9244b34..fa86b9bf20 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -101,7 +101,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 148, + "value": 131, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json index 0e911b7b11..8063b1004d 100644 --- a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json +++ b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json @@ -1,4 +1,39 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:FIN-0010": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 151466.57, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/spi/rules-base.json b/flow/designs/ihp-sg13g2/spi/rules-base.json index 69325cffd1..556c791a69 100644 --- a/flow/designs/ihp-sg13g2/spi/rules-base.json +++ b/flow/designs/ihp-sg13g2/spi/rules-base.json @@ -1,4 +1,34 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:FIN-0010": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2232.28, "compare": "<=" @@ -52,7 +82,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": 0.0, + "value": -0.206, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +94,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 3686, + "value": 3663, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index f7eab80885..321f6350e3 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -1,4 +1,39 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 23300.0, "compare": "<=" @@ -96,11 +131,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.071, + "value": -0.0709, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.718, + "value": -0.948, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index abb0ba0b38..aac9614925 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0441": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 845982.06, "compare": "<=" @@ -40,7 +90,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -7.13, + "value": -6.18, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -92,7 +142,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.2, + "value": -3.71, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index f08e1868eb..5886bc15dc 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -1,4 +1,79 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-2021": { + "value": 7, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 42, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0281": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 321, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 44, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 42, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 777884.7342, "compare": "<=" @@ -80,11 +155,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -2.22, + "value": -2.21, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -3.12, + "value": -3.11, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,7 +167,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.23, + "value": -2.53, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 7e7d2d4cc3..c2aaf18452 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0011": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 13, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 268204.56, "compare": "<=" @@ -32,7 +82,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -16.2, + "value": -22.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -16.0, + "value": -18.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -25.9, + "value": -36.2, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 3c89c91288..cd6f7bedc0 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0011": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 241575.35, "compare": "<=" @@ -28,7 +78,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0132, + "value": -0.104, "compare": ">=" }, "cts__timing__setup__tns": { @@ -100,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3.47, + "value": -10.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index a5347d14e0..49a6dfb1d2 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -1,4 +1,69 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-2021": { + "value": 56, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 365, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 46, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 586679.15, "compare": "<=" @@ -48,7 +113,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -4.7, + "value": -4.69, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -84,7 +149,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -760.0, + "value": -796.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,11 +157,11 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -7.5, + "value": -7.36, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -4.68, + "value": -4.67, "compare": ">=" }, "finish__timing__setup__tns": { @@ -108,7 +173,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.1086, + "value": -1.09, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 0811328a9c..2b0dbd08ba 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 25515.12, "compare": "<=" diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 2fa320caff..3f89a78f6e 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -1,4 +1,39 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 725.6, "compare": "<=" @@ -52,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.672, + "value": -0.784, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.621, + "value": -0.723, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +147,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 980, + "value": 972, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index e6c757aa75..156bf5d4a1 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 52, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 32500.0, "compare": "<=" @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.6, + "value": -2.05, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index ac69795ed6..b27a7e7d61 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -1,4 +1,74 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 102576.23, "compare": "<=" @@ -32,7 +102,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -41.9, + "value": -43.9, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +122,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -46.6, + "value": -51.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +154,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -10.2, + "value": -10.7, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +166,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.153, + "value": -0.206, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -45.9, + "value": -51.3, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 0e7df7610d..fb20c925bd 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0345": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0273": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0450": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 271098.37, "compare": "<=" @@ -52,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10100.0, + "value": -9940.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -92,7 +187,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.4, + "value": -1.33, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index ea95616a26..99c5fc730c 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -4,6 +4,11 @@ "compare": "<=", "level": "warning" }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "detailedroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -34,6 +39,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -77,7 +87,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -24.8, + "value": -2.37, "compare": ">=" }, "cts__timing__hold__ws": { @@ -97,7 +107,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -24.3, + "value": -1.47, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -137,7 +147,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -5.94, + "value": -6.97, "compare": ">=" }, "finish__timing__setup__ws": { @@ -145,7 +155,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -26.2, + "value": -1.62, "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 f1d2c8454e..c82155ad58 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -72,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -54.4, + "value": -43.9, "compare": ">=" }, "cts__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -65.6, + "value": -56.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -132,7 +132,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -5.02, + "value": -3.01, "compare": ">=" }, "finish__timing__setup__ws": { @@ -140,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -156.0, + "value": -145.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -148,7 +148,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.01, + "value": -1.83, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index ece504fcab..3051bb1dac 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -77,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -7.04, + "value": -14.7, "compare": ">=" }, "cts__timing__hold__ws": { @@ -97,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.4, + "value": -22.2, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -145,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -20.1, + "value": -25.8, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/aes/rules-base.json b/flow/designs/sky130hd/aes/rules-base.json index 1c13ee5747..4d8484f900 100644 --- a/flow/designs/sky130hd/aes/rules-base.json +++ b/flow/designs/sky130hd/aes/rules-base.json @@ -1,4 +1,34 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 99830.94, "compare": "<=" @@ -64,7 +94,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 897106, + "value": 878924, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index c4661daa0b..69f0a3ed67 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -1,4 +1,59 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ORD-2011": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 27373.26, "compare": "<=" @@ -44,7 +99,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 306, + "value": 150, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -64,7 +119,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 771372, + "value": 768797, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -92,7 +147,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -4.01, + "value": -3.28, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/sky130hd/gcd/rules-base.json b/flow/designs/sky130hd/gcd/rules-base.json index 39e47c38b4..adc40ce9cf 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 939, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2760.0, "compare": "<=" @@ -20,7 +70,7 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 46, + "value": 45, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { @@ -28,11 +78,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.39, + "value": -2.38, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -125.0, + "value": -121.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +98,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.58, + "value": -2.47, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -130.0, + "value": -107.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +114,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 9675, + "value": 8728, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +130,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -2.15, + "value": -2.06, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -89.2, + "value": -85.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,7 +146,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -2.43, + "value": -2.33, "compare": ">=" }, "finish__timing__setup__tns": { @@ -112,7 +162,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 5492, + "value": 5204, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index ee6c85daf5..6ccfbd0106 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 15, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 153658.0, "compare": "<=" @@ -8,7 +53,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 169780, + "value": 169496, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -52,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -11.3, + "value": -9.86, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index 26464fcbc9..64fb0b9fdd 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -1,4 +1,59 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 57, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 19, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0243": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 463729.45, "compare": "<=" @@ -28,11 +83,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.309, + "value": -0.287, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1.19, + "value": -1.12, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,15 +99,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 162, + "value": 130, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.414, + "value": -0.39, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3.02, + "value": -1.87, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -76,7 +131,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 123, + "value": 100, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index a6a0e2b4ac..3f5f838274 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,4 +1,104 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 166, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" @@ -8,7 +108,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 5443594, + "value": 5442904, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -28,11 +128,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.26, + "value": -2.15, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -338.0, + "value": -269.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,15 +144,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 1361, + "value": 1498, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.42, + "value": -2.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -372.0, + "value": -334.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -72,19 +172,19 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1092, + "value": 1362, "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -1.4, + "value": -1.39, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -54.6, + "value": -53.7, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,7 +192,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -354.0, + "value": -393.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +200,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -392.0, + "value": -349.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -108,7 +208,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -4.12, + "value": -10.6, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 2af3fa1337..11090bde71 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 70778.51, "compare": "<=" @@ -28,11 +78,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -1.59, + "value": -1.53, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -38.6, + "value": -30.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +98,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.88, + "value": -1.73, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -85.5, + "value": -66.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +134,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -4.12, + "value": -3.42, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +146,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -1.72, + "value": -1.6, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -31.6, + "value": -24.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index a7da9270ef..77eab48985 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -1,4 +1,34 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 134349.28, "compare": "<=" @@ -28,11 +58,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.16, + "value": -0.14, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.58, + "value": -0.56, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +82,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3.24, + "value": -5.71, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 56cf8f8635..a7eea2970a 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 153, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 4532.91, "compare": "<=" @@ -8,7 +58,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 6702, + "value": 6570, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -20,7 +70,7 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 75, + "value": 64, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { @@ -28,11 +78,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.45, + "value": -0.405, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13.2, + "value": -10.7, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +98,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.611, + "value": -0.593, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.7, + "value": -17.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +114,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 14773, + "value": 13407, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -96,11 +146,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.513, + "value": -0.493, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -14.8, + "value": -13.9, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +162,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 8160, + "value": 7981, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index 1327cfcdb8..d3db844591 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0243": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 214000.0, "compare": "<=" @@ -52,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -23.8, + "value": -82.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -72,7 +122,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { @@ -100,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.43, + "value": -2.85, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index eedad7b9d8..3cdd8c0fd1 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,4 +1,59 @@ { + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 36, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" @@ -44,7 +99,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 299, + "value": 236, "compare": "<=" }, "globalroute__timing__setup__ws": { diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index 23daa085e6..ebe5554f5d 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -1,4 +1,44 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 97352.63, "compare": "<=" @@ -28,11 +68,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.957, + "value": -0.881, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -19.4, + "value": -369.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +88,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.3, + "value": -1.16, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -95.8, + "value": -17.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,11 +136,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -1.13, + "value": -0.961, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -36.0, + "value": -7.38, "compare": ">=" }, "finish__timing__hold__ws": { From 092c82c6c25dd5438a4a7cd1e4d6d1c1920ff8f8 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 2 Dec 2025 12:49:15 -0300 Subject: [PATCH 091/364] use latest master Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 314897874c..48b44f2a34 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 314897874c4043d68061843d3f4b84998d3f85bc +Subproject commit 48b44f2a34cf2c98f600da7e8f2ec46a6e5a37b2 From a64d6bd17f7dac7f99e2724a37f848d64c31087d Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Tue, 2 Dec 2025 15:52:48 +0000 Subject: [PATCH 092/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index ec612f4598..f781697865 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit ec612f45981ff3558ed14820f46e7d5252583e70 +Subproject commit f78169786527e6dbdc63a1b85bb99c5724dad3ac From 33958757abbbd7ee64de417d6ebce0f2db521904 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 3 Dec 2025 11:25:23 +0000 Subject: [PATCH 093/364] revert all metrics to master, run and check updates again Signed-off-by: Augusto Berndt --- flow/designs/asap7/aes-block/rules-base.json | 109 +--------- flow/designs/asap7/aes-mbff/rules-base.json | 96 +-------- flow/designs/asap7/aes/rules-base.json | 96 +-------- flow/designs/asap7/aes_lvt/rules-base.json | 87 +------- flow/designs/asap7/cva6/rules-base.json | 109 +--------- flow/designs/asap7/ethmac/rules-base.json | 106 +-------- flow/designs/asap7/ethmac_lvt/rules-base.json | 112 +--------- flow/designs/asap7/gcd-ccs/rules-base.json | 99 +-------- flow/designs/asap7/gcd/rules-base.json | 101 +-------- flow/designs/asap7/ibex/rules-base.json | 96 +-------- flow/designs/asap7/jpeg/rules-base.json | 99 +-------- flow/designs/asap7/jpeg_lvt/rules-base.json | 85 -------- flow/designs/asap7/mock-alu/rules-base.json | 105 +-------- flow/designs/asap7/mock-cpu/rules-base.json | 202 +----------------- .../asap7/riscv32i-mock-sram/rules-base.json | 94 +------- flow/designs/asap7/riscv32i/rules-base.json | 99 +-------- .../asap7/swerv_wrapper/rules-base.json | 88 +------- flow/designs/asap7/uart/rules-base.json | 93 +------- flow/designs/gf180/aes-hybrid/rules-base.json | 54 +---- flow/designs/gf180/aes/rules-base.json | 66 +----- flow/designs/gf180/ibex/rules-base.json | 70 +----- flow/designs/gf180/jpeg/rules-base.json | 45 ---- flow/designs/gf180/riscv32i/rules-base.json | 45 ---- .../designs/gf180/uart-blocks/rules-base.json | 32 +-- flow/designs/ihp-sg13g2/aes/rules-base.json | 25 --- flow/designs/ihp-sg13g2/gcd/rules-base.json | 36 +--- .../i2c-gpio-expander/rules-base.json | 85 -------- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 2 +- .../ihp-sg13g2/riscv32i/rules-base.json | 35 --- flow/designs/ihp-sg13g2/spi/rules-base.json | 34 +-- flow/designs/nangate45/aes/rules-base.json | 39 +--- .../nangate45/ariane136/rules-base.json | 54 +---- .../nangate45/black_parrot/rules-base.json | 81 +------ .../nangate45/bp_be_top/rules-base.json | 56 +---- .../nangate45/bp_fe_top/rules-base.json | 54 +---- .../nangate45/bp_multi_top/rules-base.json | 75 +------ .../nangate45/dynamic_node/rules-base.json | 45 ---- flow/designs/nangate45/gcd/rules-base.json | 41 +--- flow/designs/nangate45/ibex/rules-base.json | 47 +--- flow/designs/nangate45/jpeg/rules-base.json | 80 +------ .../nangate45/mempool_group/rules-base.json | 99 +-------- flow/designs/nangate45/swerv/rules-base.json | 18 +- .../nangate45/swerv_wrapper/rules-base.json | 10 +- .../nangate45/tinyRocket/rules-base.json | 6 +- flow/designs/sky130hd/aes/rules-base.json | 32 +-- .../sky130hd/chameleon/rules-base.json | 61 +----- flow/designs/sky130hd/gcd/rules-base.json | 70 +----- flow/designs/sky130hd/ibex/rules-base.json | 49 +---- flow/designs/sky130hd/jpeg/rules-base.json | 67 +----- .../sky130hd/microwatt/rules-base.json | 126 ++--------- .../designs/sky130hd/riscv32i/rules-base.json | 64 +----- flow/designs/sky130hs/aes/rules-base.json | 36 +--- flow/designs/sky130hs/gcd/rules-base.json | 70 +----- flow/designs/sky130hs/ibex/rules-base.json | 56 +---- flow/designs/sky130hs/jpeg/rules-base.json | 57 +---- .../designs/sky130hs/riscv32i/rules-base.json | 52 +---- 56 files changed, 190 insertions(+), 3660 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index ecd3f2b184..8cd9239896 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 16, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 62, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2130.06, "compare": "<=" @@ -119,15 +24,15 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1074, + "value": 1134, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -129.0, + "value": -141.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -7350.0, + "value": -9390.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -143,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -128.0, + "value": -146.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -6650.0, + "value": -8690.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -191,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -83.9, + "value": -106.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3860.0, + "value": -5890.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 36db5e4351..24610bec12 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" @@ -122,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1040.0, + "value": -551.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -142,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2800.0, + "value": -1910.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -190,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -836.0, + "value": -611.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index 82fe65d3db..0a70858229 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" @@ -122,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -802.0, + "value": -493.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -142,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2320.0, + "value": -1930.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -190,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -761.0, + "value": -537.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes_lvt/rules-base.json b/flow/designs/asap7/aes_lvt/rules-base.json index a7ffb2e2de..96354b8561 100644 --- a/flow/designs/asap7/aes_lvt/rules-base.json +++ b/flow/designs/asap7/aes_lvt/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1920.63, "compare": "<=" @@ -137,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -254.0, + "value": -72.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/cva6/rules-base.json b/flow/designs/asap7/cva6/rules-base.json index bb2190fafc..7d8f917a42 100644 --- a/flow/designs/asap7/cva6/rules-base.json +++ b/flow/designs/asap7/cva6/rules-base.json @@ -1,109 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 722, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0366": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0473": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 18784.414249, "compare": "<=" @@ -153,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -50.2, + "value": -50.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -200.0, + "value": -201.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 2450d145bc..5733a3751a 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8450.0, "compare": "<=" @@ -132,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2470.0, + "value": -2080.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -152,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3500.0, + "value": -3110.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -200,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2710.0, + "value": -2280.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index b5c7bd7dc5..2bff44a0f6 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 788, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8418.677166, "compare": "<=" @@ -128,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -27.6, + "value": -35.8, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -216.0, + "value": -353.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -148,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -39.6, + "value": -42.3, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -435.0, + "value": -568.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -196,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -29.8, + "value": -31.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -271.0, + "value": -386.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index 5ba40a2ab3..5304a3195e 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 508, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" @@ -113,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -38.7, + "value": -39.4, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -199.0, + "value": -205.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -133,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -38.7, + "value": -38.9, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -195.0, + "value": -200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -165,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -38.7, + "value": -38.9, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -195.0, + "value": -200.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -185,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -761.0, + "value": -632.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index aa33351e5e..0316999284 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 508, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" @@ -113,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -61.9, + "value": -69.3, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -948.0, + "value": -411.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -133,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -71.7, + "value": -78.2, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1070.0, + "value": -521.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -165,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -41.2, + "value": -54.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -212.0, + "value": -236.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -181,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -58.9, + "value": -66.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -598.0, + "value": -397.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index a108c391ef..a3cb790651 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2612.69, "compare": "<=" @@ -122,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -105000.0, + "value": -82600.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -142,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -97700.0, + "value": -95000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -190,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -50400.0, + "value": -54900.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/jpeg/rules-base.json b/flow/designs/asap7/jpeg/rules-base.json index 2c10065fee..e37358b06a 100644 --- a/flow/designs/asap7/jpeg/rules-base.json +++ b/flow/designs/asap7/jpeg/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 7008.24, "compare": "<=" @@ -123,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -34.0, + "value": -38.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -136.0, + "value": -140.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/asap7/jpeg_lvt/rules-base.json b/flow/designs/asap7/jpeg_lvt/rules-base.json index 8252217b2f..c122ecacbe 100644 --- a/flow/designs/asap7/jpeg_lvt/rules-base.json +++ b/flow/designs/asap7/jpeg_lvt/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 7047.572508, "compare": "<=" diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 0a93b13720..b4b0525b34 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1665.04, "compare": "<=" @@ -123,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -295.0, + "value": -278.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -16700.0, + "value": -16900.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -147,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19600.0, + "value": -19700.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -179,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -12100.0, + "value": -12300.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -195,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17400.0, + "value": -17500.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index f133ebf465..f48d6b927a 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -1,194 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 696, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 7302.54, "compare": "<=" @@ -218,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -100.0, + "value": -103.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -238,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -108.0, + "value": -109.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2680.0, + "value": -2710.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -274,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1730.0, + "value": -1840.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -286,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -102.0, + "value": -103.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2510.0, + "value": -2590.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index c09d9aa625..faa0aabdea 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1640.0, "compare": "<=" @@ -122,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -865.0, + "value": -549.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -190,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -696.0, + "value": -401.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index 26c3e649c8..c11063fdde 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2908.684535, "compare": "<=" @@ -147,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -574.0, + "value": -280.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -207,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 3065, + "value": 3070, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index b9dbb3f8ba..d377a384b1 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -1,84 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 53459.06, "compare": "<=" @@ -176,19 +96,19 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -445.0, + "value": -481.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -141000.0, + "value": -200000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -277.0, + "value": -285.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -75700.0, + "value": -66900.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index b5d0b75080..6d47a52d3b 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 795, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 83.24, "compare": "<=" @@ -117,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -615.0, + "value": -556.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -137,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1160.0, + "value": -1170.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -169,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -179.0, + "value": -98.6, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -185,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -756.0, + "value": -651.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 7fb18b2741..845a5bc1cd 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 489779.41376, "compare": "<=" @@ -134,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -75.7, + "value": -74.1, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -150,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -154.0, + "value": -156.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index 257f74bc5a..b254af6021 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -1,64 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 620000.0, "compare": "<=" @@ -92,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -109.0, + "value": -107.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -144,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -55.8, + "value": -57.9, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -160,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -121.0, + "value": -119.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 96a623d6ab..eddefe1b6a 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -1,64 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 14, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 717000.0, "compare": "<=" @@ -88,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.777, + "value": -0.786, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -3.88, + "value": -4.47, "compare": ">=" }, "cts__timing__hold__ws": { @@ -108,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.834, + "value": -0.854, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9.38, + "value": -18.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -160,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -13.9, + "value": -8.87, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index f498af7d6b..c7b36b7de5 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -1,49 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 92, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 46, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2161429.49, "compare": "<=" diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 74c01e3a44..1eb94ef725 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -1,49 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 54, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 355874.87, "compare": "<=" diff --git a/flow/designs/gf180/uart-blocks/rules-base.json b/flow/designs/gf180/uart-blocks/rules-base.json index 83e9a7c169..3b196671a5 100644 --- a/flow/designs/gf180/uart-blocks/rules-base.json +++ b/flow/designs/gf180/uart-blocks/rules-base.json @@ -1,34 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 61300.0, "compare": "<=" @@ -94,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 20108, + "value": 17413, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/ihp-sg13g2/aes/rules-base.json b/flow/designs/ihp-sg13g2/aes/rules-base.json index d1fee26228..57d55ca0cb 100644 --- a/flow/designs/ihp-sg13g2/aes/rules-base.json +++ b/flow/designs/ihp-sg13g2/aes/rules-base.json @@ -1,29 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:FIN-0010": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 214000.0, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/gcd/rules-base.json b/flow/designs/ihp-sg13g2/gcd/rules-base.json index 9a4638f943..440aa3d02a 100644 --- a/flow/designs/ihp-sg13g2/gcd/rules-base.json +++ b/flow/designs/ihp-sg13g2/gcd/rules-base.json @@ -1,34 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:FIN-0010": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 6828.9632, "compare": "<=" @@ -38,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 7372, + "value": 7380, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 613, + "value": 614, "compare": "<=" }, "detailedplace__design__violations": { @@ -142,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 7691, + "value": 7693, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json index c70fcab283..25ed544149 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:PAD-0033": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0347": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0189": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1140": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 286097.29, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index fa86b9bf20..0dc9244b34 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -101,7 +101,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 131, + "value": 148, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json index 8063b1004d..0e911b7b11 100644 --- a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json +++ b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json @@ -1,39 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:FIN-0010": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 151466.57, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/spi/rules-base.json b/flow/designs/ihp-sg13g2/spi/rules-base.json index 556c791a69..69325cffd1 100644 --- a/flow/designs/ihp-sg13g2/spi/rules-base.json +++ b/flow/designs/ihp-sg13g2/spi/rules-base.json @@ -1,34 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:FIN-0010": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2232.28, "compare": "<=" @@ -82,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.206, + "value": 0.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -94,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 3663, + "value": 3686, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index 321f6350e3..f7eab80885 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 23300.0, "compare": "<=" @@ -131,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0709, + "value": -0.071, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.948, + "value": -0.718, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index aac9614925..abb0ba0b38 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0441": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 845982.06, "compare": "<=" @@ -90,7 +40,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -6.18, + "value": -7.13, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -142,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3.71, + "value": -1.2, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index 5886bc15dc..f08e1868eb 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -1,79 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-2021": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 42, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0281": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 321, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 44, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 42, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 777884.7342, "compare": "<=" @@ -155,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -2.21, + "value": -2.22, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -3.11, + "value": -3.12, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -167,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -2.53, + "value": -1.23, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index c2aaf18452..7e7d2d4cc3 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 13, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 268204.56, "compare": "<=" @@ -82,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -22.0, + "value": -16.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -102,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.8, + "value": -16.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -150,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -36.2, + "value": -25.9, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index cd6f7bedc0..3c89c91288 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 241575.35, "compare": "<=" @@ -78,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.104, + "value": -0.0132, "compare": ">=" }, "cts__timing__setup__tns": { @@ -150,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10.1, + "value": -3.47, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index 49a6dfb1d2..a5347d14e0 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -1,69 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-2021": { - "value": 56, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 365, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 46, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 586679.15, "compare": "<=" @@ -113,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -4.69, + "value": -4.7, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -149,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -796.0, + "value": -760.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -157,11 +92,11 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -7.36, + "value": -7.5, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -4.67, + "value": -4.68, "compare": ">=" }, "finish__timing__setup__tns": { @@ -173,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -1.09, + "value": -0.1086, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 2b0dbd08ba..0811328a9c 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 25515.12, "compare": "<=" diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 3f89a78f6e..2fa320caff 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 725.6, "compare": "<=" @@ -87,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.784, + "value": -0.672, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -135,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.723, + "value": -0.621, "compare": ">=" }, "finish__timing__hold__ws": { @@ -147,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 972, + "value": 980, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index 156bf5d4a1..e6c757aa75 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 52, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 32500.0, "compare": "<=" @@ -145,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.05, + "value": -1.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index b27a7e7d61..ac69795ed6 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -1,74 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 102576.23, "compare": "<=" @@ -102,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -43.9, + "value": -41.9, "compare": ">=" }, "cts__timing__hold__ws": { @@ -122,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -51.3, + "value": -46.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -154,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -10.7, + "value": -10.2, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -166,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.206, + "value": -0.153, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -51.3, + "value": -45.9, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index fb20c925bd..0e7df7610d 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0345": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0273": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0450": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 271098.37, "compare": "<=" @@ -147,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9940.0, + "value": -10100.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -187,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.33, + "value": -1.4, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 99c5fc730c..ea95616a26 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -4,11 +4,6 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -39,11 +34,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", @@ -87,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2.37, + "value": -24.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -107,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.47, + "value": -24.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -147,7 +137,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -6.97, + "value": -5.94, "compare": ">=" }, "finish__timing__setup__ws": { @@ -155,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.62, + "value": -26.2, "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 c82155ad58..f1d2c8454e 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -72,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -43.9, + "value": -54.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -56.8, + "value": -65.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -132,7 +132,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3.01, + "value": -5.02, "compare": ">=" }, "finish__timing__setup__ws": { @@ -140,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -145.0, + "value": -156.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -148,7 +148,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -1.83, + "value": -2.01, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 3051bb1dac..ece504fcab 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -77,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -14.7, + "value": -7.04, "compare": ">=" }, "cts__timing__hold__ws": { @@ -97,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -22.2, + "value": -18.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -145,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -25.8, + "value": -20.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/aes/rules-base.json b/flow/designs/sky130hd/aes/rules-base.json index 4d8484f900..1c13ee5747 100644 --- a/flow/designs/sky130hd/aes/rules-base.json +++ b/flow/designs/sky130hd/aes/rules-base.json @@ -1,34 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 99830.94, "compare": "<=" @@ -94,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 878924, + "value": 897106, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index 69f0a3ed67..c4661daa0b 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -1,59 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ORD-2011": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 27373.26, "compare": "<=" @@ -99,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 150, + "value": 306, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -119,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 768797, + "value": 771372, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -147,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3.28, + "value": -4.01, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/sky130hd/gcd/rules-base.json b/flow/designs/sky130hd/gcd/rules-base.json index adc40ce9cf..39e47c38b4 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 939, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2760.0, "compare": "<=" @@ -70,7 +20,7 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 45, + "value": 46, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { @@ -78,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.38, + "value": -2.39, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -121.0, + "value": -125.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -98,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.47, + "value": -2.58, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -107.0, + "value": -130.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -114,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8728, + "value": 9675, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -130,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -2.06, + "value": -2.15, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -85.0, + "value": -89.2, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -146,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -2.33, + "value": -2.43, "compare": ">=" }, "finish__timing__setup__tns": { @@ -162,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 5204, + "value": 5492, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index 6ccfbd0106..ee6c85daf5 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 15, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 153658.0, "compare": "<=" @@ -53,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 169496, + "value": 169780, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -97,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9.86, + "value": -11.3, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index 64fb0b9fdd..26464fcbc9 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -1,59 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 57, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 19, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 463729.45, "compare": "<=" @@ -83,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.287, + "value": -0.309, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1.12, + "value": -1.19, "compare": ">=" }, "cts__timing__hold__ws": { @@ -99,15 +44,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 130, + "value": 162, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.39, + "value": -0.414, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.87, + "value": -3.02, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -131,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 100, + "value": 123, "compare": "<=" }, "detailedroute__timing__setup__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 3f5f838274..a6a0e2b4ac 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 166, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" @@ -108,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 5442904, + "value": 5443594, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -128,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.15, + "value": -2.26, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -269.0, + "value": -338.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -144,15 +44,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 1498, + "value": 1361, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.4, + "value": -2.42, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -334.0, + "value": -372.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -172,19 +72,19 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1362, + "value": 1092, "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -1.39, + "value": -1.4, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -53.7, + "value": -54.6, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -192,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -393.0, + "value": -354.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -200,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -349.0, + "value": -392.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -208,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -10.6, + "value": -4.12, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 11090bde71..2af3fa1337 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 70778.51, "compare": "<=" @@ -78,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -1.53, + "value": -1.59, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -30.0, + "value": -38.6, "compare": ">=" }, "cts__timing__hold__ws": { @@ -98,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.73, + "value": -1.88, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -66.5, + "value": -85.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -3.42, + "value": -4.12, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -146,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -1.6, + "value": -1.72, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -24.6, + "value": -31.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index 77eab48985..a7da9270ef 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -1,34 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 134349.28, "compare": "<=" @@ -58,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.14, + "value": -0.16, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.56, + "value": -0.58, "compare": ">=" }, "cts__timing__hold__ws": { @@ -82,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -5.71, + "value": -3.24, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index a7eea2970a..56cf8f8635 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 153, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 4532.91, "compare": "<=" @@ -58,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 6570, + "value": 6702, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -70,7 +20,7 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 64, + "value": 75, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { @@ -78,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.405, + "value": -0.45, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10.7, + "value": -13.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -98,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.593, + "value": -0.611, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -17.7, + "value": -18.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -114,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 13407, + "value": 14773, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -146,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.493, + "value": -0.513, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -13.9, + "value": -14.8, "compare": ">=" }, "finish__timing__hold__ws": { @@ -162,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 7981, + "value": 8160, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index d3db844591..1327cfcdb8 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 214000.0, "compare": "<=" @@ -102,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -82.0, + "value": -23.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -122,7 +72,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { @@ -150,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.85, + "value": -1.43, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index 3cdd8c0fd1..eedad7b9d8 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,59 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 36, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" @@ -99,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 236, + "value": 299, "compare": "<=" }, "globalroute__timing__setup__ws": { diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index ebe5554f5d..23daa085e6 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 97352.63, "compare": "<=" @@ -68,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.881, + "value": -0.957, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -369.0, + "value": -19.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -88,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.16, + "value": -1.3, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -17.7, + "value": -95.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -136,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.961, + "value": -1.13, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -7.38, + "value": -36.0, "compare": ">=" }, "finish__timing__hold__ws": { From 241746a37a07ce4e886df3af5ca879825f4473a5 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 3 Dec 2025 11:25:29 +0000 Subject: [PATCH 094/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index f781697865..d3f3fd79f4 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit f78169786527e6dbdc63a1b85bb99c5724dad3ac +Subproject commit d3f3fd79f4664f92e2c9f40cc4ce857d3b630c09 From f1df0e2a53f6c4f9659c84a510d414445a311735 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 3 Dec 2025 08:44:14 -0300 Subject: [PATCH 095/364] use latest openroad Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 48b44f2a34..ad5643176c 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 48b44f2a34cf2c98f600da7e8f2ec46a6e5a37b2 +Subproject commit ad5643176c4270650b8d7c932160c0ab40e76a26 From 3abb7bfaf2c64f5fdf6c5f8bec25fc7cfe02df7a Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 3 Dec 2025 08:44:55 -0300 Subject: [PATCH 096/364] use Yosys 0.60 Signed-off-by: Eder Monteiro --- tools/yosys | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/yosys b/tools/yosys index 26b51148a8..5bafeb77dc 160000 --- a/tools/yosys +++ b/tools/yosys @@ -1 +1 @@ -Subproject commit 26b51148a80ea546481cf4f0516be97e4ba251cc +Subproject commit 5bafeb77dc71e054fa331ab9efa613e6fb0a1c49 From 3a5b01e327ee9acac83dd107988f5bbff7ddeb54 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Wed, 3 Dec 2025 19:38:15 +0000 Subject: [PATCH 097/364] Use latest master d8ff53 Signed-off-by: Jeff Ng --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 48b44f2a34..d8ff53f7b5 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 48b44f2a34cf2c98f600da7e8f2ec46a6e5a37b2 +Subproject commit d8ff53f7b50e4bb47881f6b0295758de03aba444 From b572f7309d98de124cb1d8e94ddf03bffce9e68b Mon Sep 17 00:00:00 2001 From: arthurjolo Date: Thu, 4 Dec 2025 14:01:26 +0000 Subject: [PATCH 098/364] | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -23.8 | -45.5 | Failing | | detailedroute__antenna__violating__nets | 1 | 0 | Tighten | | finish__design__instance__area | 245144 | 243893 | Tighten | Signed-off-by: arthurjolo --- flow/designs/sky130hs/ibex/rules-base.json | 41 ++++++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index 1327cfcdb8..bf8c228507 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -1,4 +1,39 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 214000.0, "compare": "<=" @@ -52,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -23.8, + "value": -45.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -72,7 +107,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { @@ -112,7 +147,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 245144, + "value": 243893, "compare": "<=" } } \ No newline at end of file From 37b72559d430c427a74ab086b16a6c95bb17dd79 Mon Sep 17 00:00:00 2001 From: arthurjolo Date: Thu, 4 Dec 2025 14:02:03 +0000 Subject: [PATCH 099/364] | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -0.118 | -0.113 | Tighten | | globalroute__timing__setup__tns | -0.456 | -0.443 | Tighten | | finish__timing__setup__tns | -2.04 | -3.23 | Failing | | finish__design__instance__area | 33455 | 33440 | Tighten | Signed-off-by: arthurjolo --- flow/designs/nangate45/ibex/rules-base.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index d9a45a6821..aa1879f651 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -93,11 +93,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.118, + "value": -0.113, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.456, + "value": -0.443, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -145,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.04, + "value": -3.23, "compare": ">=" }, "finish__timing__hold__ws": { @@ -157,7 +157,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33455, + "value": 33440, "compare": "<=" } } \ No newline at end of file From aad77e34880d3803dcdae8b0750c0bac57281c70 Mon Sep 17 00:00:00 2001 From: arthurjolo Date: Thu, 4 Dec 2025 14:02:51 +0000 Subject: [PATCH 100/364] | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -12300.0 | -9510.0 | Tighten | | globalroute__timing__setup__tns | -10100.0 | -9070.0 | Tighten | | detailedroute__timing__setup__tns | -8530.0 | -7470.0 | Tighten | | detailedroute__timing__hold__tns | -1.4 | -13.1 | Failing | Signed-off-by: arthurjolo --- .../nangate45/mempool_group/rules-base.json | 98 ++++++++++++++++++- 1 file changed, 94 insertions(+), 4 deletions(-) diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 0e7df7610d..46dded47e1 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0345": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0450": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 271098.37, "compare": "<=" @@ -32,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -12300.0, + "value": -9510.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10100.0, + "value": -9070.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +174,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -8530.0, + "value": -7470.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.4, + "value": -13.1, "compare": ">=" }, "finish__timing__setup__ws": { From 592dc24addc2663ff02bcd02895573717ab8e5c3 Mon Sep 17 00:00:00 2001 From: arthurjolo Date: Thu, 4 Dec 2025 14:09:49 +0000 Subject: [PATCH 101/364] | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -386.0 | -383.0 | Tighten | | globalroute__timing__setup__ws | -258.0 | -294.0 | Failing | | globalroute__timing__setup__tns | -1320000.0 | -1310000.0 | Tighten | | finish__timing__setup__ws | -258.0 | -294.0 | Failing | | finish__timing__setup__tns | -1320000.0 | -1310000.0 | Tighten | Signed-off-by: arthurjolo --- .../hercules_is_int/rules-base.json | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 6ce55ec2f3..bdee3e4ddb 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -4,21 +4,11 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -118,7 +108,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -386.0, + "value": -383.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -138,11 +128,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -258.0, + "value": -294.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1320000.0, + "value": -1310000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -154,11 +144,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -258.0, + "value": -294.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1320000.0, + "value": -1310000.0, "compare": ">=" }, "finish__timing__hold__ws": { From 15a5408ba3c599c48dd2dffd2fbcf4edad13c696 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 4 Dec 2025 14:25:22 -0300 Subject: [PATCH 102/364] use grt_real_capacity branch Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index d8ff53f7b5..7bce49803b 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit d8ff53f7b50e4bb47881f6b0295758de03aba444 +Subproject commit 7bce49803bc9999c040dd0a63a3b08e92ade7a3d From 1d97df9a78a0ff3634421db318b93cee68d2edc8 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 4 Dec 2025 14:26:12 -0300 Subject: [PATCH 103/364] bump or Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index d8ff53f7b5..70c3beba7c 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit d8ff53f7b50e4bb47881f6b0295758de03aba444 +Subproject commit 70c3beba7c2107ccbfa35b505dd595c507988d66 From 202783ca81ffdd80142727e10f9a90df88dc6729 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Fri, 5 Dec 2025 05:57:03 +0000 Subject: [PATCH 104/364] designs/nangate45/mempool_group/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -9510.0 | -12300.0 | Failing | | globalroute__timing__setup__tns | -9070.0 | -10100.0 | Failing | | detailedroute__timing__setup__tns | -7470.0 | -7110.0 | Tighten | | detailedroute__timing__hold__tns | -13.1 | -1.4 | Tighten | Signed-off-by: Matt Liberty --- .../designs/nangate45/mempool_group/rules-base.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 46dded47e1..d7917ab08d 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -79,6 +79,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:GRT-0273": { + "value": 18, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -122,7 +127,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9510.0, + "value": -12300.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -142,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9070.0, + "value": -10100.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -174,7 +179,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7470.0, + "value": -7110.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -182,7 +187,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -13.1, + "value": -1.4, "compare": ">=" }, "finish__timing__setup__ws": { From 98b961bb3cb4823855ae169eb95c247c44eaab9b Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Fri, 5 Dec 2025 11:40:24 +0000 Subject: [PATCH 105/364] workaroud on nangate45/ariane due to mpl issues Signed-off-by: Augusto Berndt --- flow/designs/nangate45/ariane133/config.mk | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/flow/designs/nangate45/ariane133/config.mk b/flow/designs/nangate45/ariane133/config.mk index 3d2c212106..cbbad14a40 100644 --- a/flow/designs/nangate45/ariane133/config.mk +++ b/flow/designs/nangate45/ariane133/config.mk @@ -21,3 +21,9 @@ export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl export MACRO_PLACE_HALO = 10 10 export SKIP_GATE_CLONING = 1 + +export RTLMP_MAX_LEVEL = 1 +export RTLMP_MAX_MACRO = 10 +export RTLMP_MIN_MACRO = 1 +export RTLMP_MAX_INST = 80000 +export RTLMP_MIN_INST = 8000 \ No newline at end of file From 3db060f0b12d805a03062f04cb8cb3a36d257675 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Fri, 5 Dec 2025 11:42:54 +0000 Subject: [PATCH 106/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 6ce5a35fef..17a58042b8 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 6ce5a35fef72598d165e5fb19785545d9262012c +Subproject commit 17a58042b80d05e850fefda63cb31f7c69a08203 From 4b2a0f847cbc14ef66e338e6870381b90e61aa49 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Fri, 5 Dec 2025 16:13:44 +0000 Subject: [PATCH 107/364] Update the OR submodule and nangate45/mempool_group metrics designs/nangate45/mempool_group/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -12300.0 | -9510.0 | Tighten | | globalroute__timing__setup__tns | -10100.0 | -9070.0 | Tighten | | detailedroute__timing__setup__tns | -7110.0 | -7470.0 | Failing | | detailedroute__timing__hold__tns | -1.4 | -13.1 | Failing | Signed-off-by: Matt Liberty --- .../designs/nangate45/mempool_group/rules-base.json | 13 ++++--------- tools/OpenROAD | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index d7917ab08d..46dded47e1 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -79,11 +79,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:GRT-0273": { - "value": 18, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -127,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -12300.0, + "value": -9510.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -147,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10100.0, + "value": -9070.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -179,7 +174,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7110.0, + "value": -7470.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -187,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.4, + "value": -13.1, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/tools/OpenROAD b/tools/OpenROAD index d8ff53f7b5..7dd5365f87 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit d8ff53f7b50e4bb47881f6b0295758de03aba444 +Subproject commit 7dd5365f8779038a98ff0b8b20d297e3968ea042 From fec81666c4e9a1a4bab53f1ec988e6c38c8b10c3 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Fri, 5 Dec 2025 18:17:43 +0000 Subject: [PATCH 108/364] ===================================================== make update_ok for gcd (rapidus2hp)... ===================================================== designs/rapidus2hp/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -219.0 | -260.0 | Failing | ===================================================== make update_ok for ethmac (rapidus2hp)... ===================================================== designs/rapidus2hp/ethmac/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -644.0 | -877.0 | Failing | | globalroute__timing__setup__ws | -49.3 | -44.9 | Tighten | | globalroute__timing__setup__tns | -1740.0 | -1490.0 | Tighten | | finish__timing__setup__ws | -49.3 | -44.9 | Tighten | | finish__timing__setup__tns | -1740.0 | -1490.0 | Tighten | ===================================================== make update_ok for cva6 (rapidus2hp)... ===================================================== designs/rapidus2hp/cva6/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | flow__warnings__count:PDN-0110 | 53 | 213 | Failing | | globalroute__flow__warnings__count:DRT-0120 | 30 | 29 | Tighten | ===================================================== make update_ok for hercules_idecode (rapidus2hp)... ===================================================== designs/rapidus2hp/hercules_idecode/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__flow__warnings__count:CTS-0041 | 4 | 6 | Failing | | cts__timing__setup__ws | -293.0 | -232.0 | Tighten | | globalroute__timing__setup__ws | -237.0 | -173.0 | Tighten | | globalroute__timing__setup__tns | -613000.0 | -611000.0 | Tighten | | globalroute__timing__hold__ws | -16.0 | -12.5 | Tighten | | finish__timing__setup__ws | -237.0 | -173.0 | Tighten | | finish__timing__setup__tns | -613000.0 | -611000.0 | Tighten | | finish__timing__hold__ws | -16.0 | -12.5 | Tighten | ===================================================== make update_ok for hercules_is_int (rapidus2hp)... ===================================================== designs/rapidus2hp/hercules_is_int/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -383.0 | -400.0 | Failing | | globalroute__timing__setup__ws | -294.0 | -374.0 | Failing | | globalroute__timing__setup__tns | -1310000.0 | -1760000.0 | Failing | | finish__timing__setup__ws | -294.0 | -374.0 | Failing | | finish__timing__setup__tns | -1310000.0 | -1760000.0 | Failing | Signed-off-by: Augusto Berndt --- flow/designs/rapidus2hp/cva6/rules-base.json | 14 ++++++++-- .../designs/rapidus2hp/ethmac/rules-base.json | 15 +++++++---- flow/designs/rapidus2hp/gcd/rules-base.json | 2 +- .../hercules_idecode/rules-base.json | 26 +++++++++---------- .../hercules_is_int/rules-base.json | 20 ++++++++++---- flow/designs/rapidus2hp/ibex/rules-base.json | 14 ++++++++-- flow/designs/rapidus2hp/jpeg/rules-base.json | 10 +++++++ 7 files changed, 73 insertions(+), 28 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index 7c83e9a3f9..1fff9a7342 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -29,8 +29,18 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "flow__warnings__count:PDN-0110": { - "value": 53, + "value": 213, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, "compare": "<=", "level": "warning" }, @@ -45,7 +55,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 30, + "value": 29, "compare": "<=", "level": "warning" }, diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index e3e74843d3..373a2ca115 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -49,6 +49,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", @@ -132,7 +137,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -644.0, + "value": -877.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -148,11 +153,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -49.3, + "value": -44.9, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1740.0, + "value": -1490.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -164,11 +169,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -49.3, + "value": -44.9, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1740.0, + "value": -1490.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index 9ac321cc3d..564cb3e6ec 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -127,7 +127,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -219.0, + "value": -260.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index eaa4cc5caf..25548548dc 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -1,6 +1,6 @@ { "cts__flow__warnings__count:CTS-0041": { - "value": 4, + "value": 6, "compare": "<=", "level": "warning" }, @@ -44,6 +44,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", @@ -79,11 +84,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -123,7 +123,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -293.0, + "value": -232.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -143,15 +143,15 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -237.0, + "value": -173.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -613000.0, + "value": -611000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -16.0, + "value": -12.5, "compare": ">=" }, "globalroute__timing__hold__tns": { @@ -159,15 +159,15 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -237.0, + "value": -173.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -613000.0, + "value": -611000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -16.0, + "value": -12.5, "compare": ">=" }, "finish__timing__hold__tns": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index bdee3e4ddb..6b210ac7b9 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -1,4 +1,9 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -34,6 +39,11 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:GRT-0281": { "value": 13, "compare": "<=", @@ -108,7 +118,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -383.0, + "value": -400.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -128,11 +138,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -294.0, + "value": -374.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1310000.0, + "value": -1760000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -144,11 +154,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -294.0, + "value": -374.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1310000.0, + "value": -1760000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 4e83a9224c..2cc1229889 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -29,6 +29,16 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -113,7 +123,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -29.9, + "value": -29.5, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -129,7 +139,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -29.9, + "value": -29.5, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-base.json b/flow/designs/rapidus2hp/jpeg/rules-base.json index ce1c6ce070..8ec4a00835 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-base.json +++ b/flow/designs/rapidus2hp/jpeg/rules-base.json @@ -29,6 +29,16 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", From 6c3e9e0e6da6bc4ec40dbd83d1ae0a71967b3591 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Fri, 5 Dec 2025 19:16:14 +0000 Subject: [PATCH 109/364] ===================================================== make update_ok for gcd (gf12)... ===================================================== designs/gf12/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -36.9 | -52.9 | Failing | | globalroute__timing__setup__ws | -47.0 | -62.1 | Failing | | finish__timing__setup__ws | -29.0 | -44.6 | Failing | ===================================================== make update_ok for bp_single (gf12)... ===================================================== designs/gf12/bp_single/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__tns | -2090.0 | -2790.0 | Failing | | globalroute__timing__hold__ws | -117.0 | -311.0 | Failing | | detailedroute__timing__hold__tns | -12100.0 | -13700.0 | Failing | ===================================================== make update_ok for tinyRocket (gf12)... ===================================================== designs/gf12/tinyRocket/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -160.0 | -359.0 | Failing | | detailedroute__timing__hold__tns | -1190.0 | -984.0 | Tighten | | finish__timing__hold__tns | -345.0 | -224.0 | Tighten | ===================================================== make update_ok for coyote (gf12)... ===================================================== designs/gf12/coyote/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | flow__warnings__count:PDN-0110 | 100 | 196 | Failing | | detailedroute__timing__hold__tns | -3780.0 | -4700.0 | Failing | ===================================================== make update_ok for swerv_wrapper (gf12)... ===================================================== designs/gf12/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 173331 | 173119 | Tighten | | cts__timing__hold__ws | -216.0 | -109.0 | Tighten | | globalroute__antenna_diodes_count | 108 | 107 | Tighten | | detailedroute__route__wirelength | 2311628 | 2195249 | Tighten | | detailedroute__route__drc_errors | 0 | 2 | Failing | | detailedroute__antenna_diodes_count | 108 | 107 | Tighten | | detailedroute__timing__hold__tns | -50800.0 | -48700.0 | Tighten | | finish__design__instance__area | 177926 | 177792 | Tighten | Signed-off-by: Augusto Berndt --- flow/designs/gf12/aes/rules-base.json | 10 ++++++++ flow/designs/gf12/ariane/rules-base.json | 23 +++++++++++++++---- flow/designs/gf12/bp_single/rules-base.json | 21 ++++++++++++++--- flow/designs/gf12/ca53/rules-base.json | 21 ++++++++++++++--- flow/designs/gf12/coyote/rules-base.json | 9 ++++++-- flow/designs/gf12/gcd/rules-base.json | 6 ++--- flow/designs/gf12/jpeg/rules-base.json | 10 ++++++++ .../gf12/swerv_wrapper/rules-base.json | 21 ++++++++++------- flow/designs/gf12/tinyRocket/rules-base.json | 16 ++++++++++--- 9 files changed, 111 insertions(+), 26 deletions(-) diff --git a/flow/designs/gf12/aes/rules-base.json b/flow/designs/gf12/aes/rules-base.json index de3330b009..158ae9eb5b 100644 --- a/flow/designs/gf12/aes/rules-base.json +++ b/flow/designs/gf12/aes/rules-base.json @@ -29,6 +29,11 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "flow__warnings__count:PDN-1031": { "value": 2, "compare": "<=", @@ -54,6 +59,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0142": { "value": 5, "compare": "<=", diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index d016deccd4..9130a0667b 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -69,6 +69,21 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GPL-0323": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0998": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0999": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", @@ -128,11 +143,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -437.0, + "value": -229.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -379000.0, + "value": -27900.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -164,7 +179,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4021827, + "value": 3770934, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -192,7 +207,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -5280.0, + "value": -4630.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index fa7a4596b6..b2acec7678 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -24,6 +24,11 @@ "compare": "<=", "level": "warning" }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "detailedroute__flow__warnings__count:DRT-0142": { "value": 5, "compare": "<=", @@ -124,6 +129,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0142": { "value": 5, "compare": "<=", @@ -134,6 +144,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:RSZ-0066": { "value": 1, "compare": "<=", @@ -200,7 +215,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -2090.0, + "value": -2790.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -216,7 +231,7 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -117.0, + "value": -311.0, "compare": ">=" }, "globalroute__timing__hold__tns": { @@ -252,7 +267,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -12100.0, + "value": -13700.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 37a00d878e..3095c9c658 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -1,4 +1,9 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 9, + "compare": "<=", + "level": "warning" + }, "detailedroute__flow__warnings__count:DRT-0120": { "value": 65, "compare": "<=", @@ -14,6 +19,16 @@ "compare": "<=", "level": "warning" }, + "finish__flow__warnings__count:STA-1648": { + "value": 280, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1650": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -156,7 +171,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -992.0, + "value": -621.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -188,7 +203,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -198000.0, + "value": -65400.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -204,7 +219,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -4850.0, + "value": -2050.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/coyote/rules-base.json b/flow/designs/gf12/coyote/rules-base.json index 91104c695c..a511bde91d 100644 --- a/flow/designs/gf12/coyote/rules-base.json +++ b/flow/designs/gf12/coyote/rules-base.json @@ -29,8 +29,13 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "flow__warnings__count:PDN-0110": { - "value": 100, + "value": 196, "compare": "<=", "level": "warning" }, @@ -172,7 +177,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3780.0, + "value": -4700.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/gcd/rules-base.json b/flow/designs/gf12/gcd/rules-base.json index 369c90020a..4b46172315 100644 --- a/flow/designs/gf12/gcd/rules-base.json +++ b/flow/designs/gf12/gcd/rules-base.json @@ -108,7 +108,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -36.9, + "value": -52.9, "compare": ">=" }, "cts__timing__setup__tns": { @@ -128,7 +128,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -47.0, + "value": -62.1, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -176,7 +176,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -29.0, + "value": -44.6, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/gf12/jpeg/rules-base.json b/flow/designs/gf12/jpeg/rules-base.json index 80cb1ba3d4..9ec444cc21 100644 --- a/flow/designs/gf12/jpeg/rules-base.json +++ b/flow/designs/gf12/jpeg/rules-base.json @@ -29,6 +29,11 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "flow__warnings__count:PDN-1031": { "value": 2, "compare": "<=", @@ -54,6 +59,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 8175edf83a..1f30360aeb 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -44,6 +44,11 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:PDN-0195": { + "value": 8, + "compare": "<=", + "level": "warning" + }, "flow__warnings__count:PDN-1031": { "value": 2, "compare": "<=", @@ -108,7 +113,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 173331, + "value": 173119, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -136,7 +141,7 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -216.0, + "value": -109.0, "compare": ">=" }, "cts__timing__hold__tns": { @@ -144,7 +149,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 108, + "value": 107, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -164,11 +169,11 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2311628, + "value": 2195249, "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 0, + "value": 2, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -176,7 +181,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 108, + "value": 107, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -192,7 +197,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -50800.0, + "value": -48700.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -212,7 +217,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 177926, + "value": 177792, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index 21178b8633..6093298411 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -1,4 +1,9 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "detailedroute__flow__warnings__count:DRT-0142": { "value": 5, "compare": "<=", @@ -59,6 +64,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "placeopt__flow__warnings__count:RSZ-0020": { "value": 1, "compare": "<=", @@ -122,7 +132,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -160.0, + "value": -359.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -162,7 +172,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1190.0, + "value": -984.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -178,7 +188,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -345.0, + "value": -224.0, "compare": ">=" }, "finish__design__instance__area": { From e654810edb2d8464c335376d9db2885d096a2a55 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 5 Dec 2025 22:21:00 +0000 Subject: [PATCH 110/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 105 +---------------- flow/designs/asap7/aes-mbff/rules-base.json | 6 +- flow/designs/asap7/aes/rules-base.json | 6 +- flow/designs/asap7/ethmac/rules-base.json | 6 +- flow/designs/asap7/gcd-ccs/rules-base.json | 2 +- flow/designs/asap7/gcd/rules-base.json | 6 +- flow/designs/asap7/ibex/rules-base.json | 6 +- flow/designs/asap7/mock-alu/rules-base.json | 101 +--------------- flow/designs/asap7/riscv32i/rules-base.json | 4 +- .../asap7/swerv_wrapper/rules-base.json | 2 +- flow/designs/asap7/uart/rules-base.json | 6 +- flow/designs/gf180/aes-hybrid/rules-base.json | 50 -------- flow/designs/gf180/aes/rules-base.json | 62 +--------- flow/designs/gf180/ibex/rules-base.json | 6 +- .../designs/gf180/uart-blocks/rules-base.json | 2 +- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 25 ---- flow/designs/ihp-sg13g2/spi/rules-base.json | 2 +- flow/designs/nangate45/aes/rules-base.json | 2 +- .../nangate45/ariane133/rules-base.json | 90 -------------- .../nangate45/ariane136/rules-base.json | 2 +- .../nangate45/black_parrot/rules-base.json | 2 +- .../nangate45/bp_be_top/rules-base.json | 6 +- .../nangate45/bp_fe_top/rules-base.json | 4 +- .../nangate45/bp_multi_top/rules-base.json | 4 +- flow/designs/nangate45/gcd/rules-base.json | 4 +- flow/designs/nangate45/ibex/rules-base.json | 45 ------- flow/designs/nangate45/jpeg/rules-base.json | 76 +----------- .../nangate45/mempool_group/rules-base.json | 96 +-------------- flow/designs/nangate45/swerv/rules-base.json | 47 +------- .../nangate45/swerv_wrapper/rules-base.json | 40 ------- .../nangate45/tinyRocket/rules-base.json | 51 +------- .../sky130hd/chameleon/rules-base.json | 55 --------- flow/designs/sky130hd/gcd/rules-base.json | 50 -------- flow/designs/sky130hd/jpeg/rules-base.json | 50 -------- .../sky130hd/microwatt/rules-base.json | 110 +----------------- flow/designs/sky130hs/aes/rules-base.json | 39 +------ flow/designs/sky130hs/gcd/rules-base.json | 50 -------- flow/designs/sky130hs/ibex/rules-base.json | 35 ------ .../designs/sky130hs/riscv32i/rules-base.json | 47 +------- 39 files changed, 66 insertions(+), 1236 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index fcf3eed6cb..b2738ff94c 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 16, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 64, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2130.06, "compare": "<=" @@ -123,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -136.0, + "value": -161.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -7920.0, + "value": -11000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -143,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -133.0, + "value": -158.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -6640.0, + "value": -9730.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -195,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4060.0, + "value": -6460.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 24610bec12..90e6af4617 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -551.0, + "value": -1040.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1910.0, + "value": -2710.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -611.0, + "value": -783.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index 0a70858229..f9d7d1dea4 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -493.0, + "value": -802.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1930.0, + "value": -2360.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -537.0, + "value": -758.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 5733a3751a..57d9b2baf8 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2080.0, + "value": -2470.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3110.0, + "value": -3490.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2280.0, + "value": -2700.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index 5304a3195e..c971a7a78f 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -632.0, + "value": -761.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index 0316999284..13c8dec0fc 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -411.0, + "value": -948.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -521.0, + "value": -1060.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -397.0, + "value": -592.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index a3cb790651..76d0d29e3d 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -82600.0, + "value": -99200.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -95000.0, + "value": -117000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -54900.0, + "value": -77100.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 45c804e1b9..c9c3bd9197 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1665.04, "compare": "<=" @@ -123,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -278.0, + "value": -295.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -143,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -307.0, + "value": -323.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -191,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -294.0, + "value": -312.0, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index c11063fdde..b466690a4b 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -280.0, + "value": -578.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -209.0, + "value": -410.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index d377a384b1..cabcb963fb 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -108,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -66900.0, + "value": -75300.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 6d47a52d3b..f94368dea9 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -556.0, + "value": -615.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -98.6, + "value": -183.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -651.0, + "value": -754.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 08ed8aeffa..d8929966a1 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 489779.41376, "compare": "<=" diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index e2fb20f3b9..2a2d0fd951 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -1,64 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 620000.0, "compare": "<=" @@ -92,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -107.0, + "value": -109.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index eddefe1b6a..2346f05ccb 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -4.47, + "value": -10.6, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.8, + "value": -25.2, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8.87, + "value": -17.9, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/uart-blocks/rules-base.json b/flow/designs/gf180/uart-blocks/rules-base.json index 3b196671a5..62c9d9a2af 100644 --- a/flow/designs/gf180/uart-blocks/rules-base.json +++ b/flow/designs/gf180/uart-blocks/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 17413, + "value": 20185, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index bf6aa412f4..db5ce15cff 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -1,29 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1499147.11, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/spi/rules-base.json b/flow/designs/ihp-sg13g2/spi/rules-base.json index 69325cffd1..dbcc9514a5 100644 --- a/flow/designs/ihp-sg13g2/spi/rules-base.json +++ b/flow/designs/ihp-sg13g2/spi/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": 0.0, + "value": -0.213, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index f7eab80885..b1cfb91b0d 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.718, + "value": -1.04, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 1746875862..61469adfd7 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0323": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0998": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0999": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 825864.85, "compare": "<=" diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index abb0ba0b38..f8e61e7f93 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.2, + "value": -3.71, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index f08e1868eb..1f079d0735 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1.23, + "value": -2.53, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 7e7d2d4cc3..0db147c379 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -16.2, + "value": -22.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -16.0, + "value": -18.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -25.9, + "value": -35.5, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 3c89c91288..e099a73f13 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -28,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0132, + "value": -0.104, "compare": ">=" }, "cts__timing__setup__tns": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3.47, + "value": -9.28, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index a5347d14e0..e423b3507b 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -760.0, + "value": -796.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -108,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.1086, + "value": -1.27, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 2fa320caff..9668b6d14e 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.672, + "value": -0.79, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.621, + "value": -0.728, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index aa1879f651..f5874e5a3f 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 52, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 32500.0, "compare": "<=" diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 72a0c67450..51652e2468 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -1,74 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 102576.23, "compare": "<=" @@ -102,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -41.9, + "value": -43.9, "compare": ">=" }, "cts__timing__hold__ws": { @@ -122,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -48.1, + "value": -52.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -170,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -47.6, + "value": -51.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 46dded47e1..b1ff55f418 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0345": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0450": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 271098.37, "compare": "<=" @@ -122,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9510.0, + "value": -11500.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -142,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9070.0, + "value": -11100.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -182,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -13.1, + "value": -16.6, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 0473873909..99feee0d60 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 178043.59, "compare": "<=" @@ -137,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -5.94, + "value": -6.97, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index f1d2c8454e..70bc0b23a2 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 724516.2, "compare": "<=" diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 83b3f09114..14d656486f 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" @@ -77,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -7.04, + "value": -14.7, "compare": ">=" }, "cts__timing__hold__ws": { @@ -97,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19.5, + "value": -19.9, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -145,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -20.2, + "value": -21.7, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index 7c542d9c68..5838cd7c0f 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -1,59 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ORD-2011": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 27373.26, "compare": "<=" diff --git a/flow/designs/sky130hd/gcd/rules-base.json b/flow/designs/sky130hd/gcd/rules-base.json index 2dc0f127ac..dea7849c58 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 939, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2760.0, "compare": "<=" diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index e597631330..2dc408382c 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 54, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 18, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 463729.45, "compare": "<=" diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 765e86e086..c798b4e85d 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 166, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" @@ -144,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 1357, + "value": 1495, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -176,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1298, + "value": 1397, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -184,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -43.8, + "value": -52.9, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -192,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -353.0, + "value": -393.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -208,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -4.12, + "value": -10.4, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index d77c5b6823..18991325e5 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 134349.28, "compare": "<=" @@ -87,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -4.76, + "value": -6.91, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -135,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.789, + "value": -1.77, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index a807a416e7..c1b5bf2343 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 153, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 4532.91, "compare": "<=" diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index bf8c228507..238365e844 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 214000.0, "compare": "<=" diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index 7697fb4de3..47bb7983c2 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 97352.63, "compare": "<=" @@ -77,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -19.4, + "value": -369.0, "compare": ">=" }, "cts__timing__hold__ws": { From 3ae6ac7354e998221ce77c3cee609c774f102e0d Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Sun, 7 Dec 2025 20:19:51 -0300 Subject: [PATCH 111/364] bump or again Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 17a58042b8..280a289ea9 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 17a58042b80d05e850fefda63cb31f7c69a08203 +Subproject commit 280a289ea9262e5ef15ff62834724918b69349a7 From d33921f4df106cfb7f35a6a2a3e2ed27c18875c3 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Mon, 8 Dec 2025 13:14:22 +0000 Subject: [PATCH 112/364] update public metrics Signed-off-by: Eder Monteiro --- flow/designs/asap7/aes-block/rules-base.json | 105 +++++++++- flow/designs/asap7/aes-mbff/rules-base.json | 96 ++++++++- flow/designs/asap7/aes/rules-base.json | 94 ++++++++- flow/designs/asap7/ethmac/rules-base.json | 116 ++++++++++- flow/designs/asap7/ethmac_lvt/rules-base.json | 126 ++++++++++- flow/designs/asap7/gcd-ccs/rules-base.json | 107 +++++++++- flow/designs/asap7/gcd/rules-base.json | 107 +++++++++- flow/designs/asap7/mock-alu/rules-base.json | 111 +++++++++- flow/designs/asap7/mock-cpu/rules-base.json | 196 +++++++++++++++++- .../asap7/riscv32i-mock-sram/rules-base.json | 100 ++++++++- flow/designs/asap7/uart/rules-base.json | 97 ++++++++- flow/designs/gf180/aes-hybrid/rules-base.json | 56 ++++- flow/designs/gf180/ibex/rules-base.json | 76 ++++++- flow/designs/nangate45/aes/rules-base.json | 49 ++++- .../nangate45/ariane136/rules-base.json | 54 ++++- .../nangate45/black_parrot/rules-base.json | 82 +++++++- .../nangate45/bp_fe_top/rules-base.json | 49 ++++- .../nangate45/bp_multi_top/rules-base.json | 71 ++++++- .../nangate45/mempool_group/rules-base.json | 96 ++++++++- flow/designs/nangate45/swerv/rules-base.json | 53 ++++- .../nangate45/swerv_wrapper/rules-base.json | 54 ++++- .../nangate45/tinyRocket/rules-base.json | 59 +++++- flow/designs/sky130hd/ibex/rules-base.json | 60 +++++- .../sky130hd/microwatt/rules-base.json | 124 +++++++++-- 24 files changed, 2004 insertions(+), 134 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index b2738ff94c..715902ef10 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 16, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 55, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2130.06, "compare": "<=" @@ -28,11 +123,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -161.0, + "value": -154.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -11000.0, + "value": -11900.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +143,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -158.0, + "value": -142.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9730.0, + "value": -10900.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +195,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -6460.0, + "value": -6920.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 90e6af4617..63c8a6411a 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" @@ -32,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1040.0, + "value": -706.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2710.0, + "value": -2650.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -783.0, + "value": -1000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index f9d7d1dea4..c5eb5eb187 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" @@ -32,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -802.0, + "value": -620.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -100,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -758.0, + "value": -1130.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 57d9b2baf8..be7ae023a2 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -1,4 +1,104 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 8450.0, "compare": "<=" @@ -28,11 +128,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -122.0, + "value": -160.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2470.0, + "value": -2960.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +148,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -136.0, + "value": -176.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3490.0, + "value": -3880.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +180,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -91.0, + "value": -124.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1380.0, + "value": -1880.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +196,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -126.0, + "value": -163.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2700.0, + "value": -3030.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index 2bff44a0f6..0ad518dbef 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -1,4 +1,114 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 645, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 8418.677166, "compare": "<=" @@ -28,11 +138,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -35.8, + "value": -69.9, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -353.0, + "value": -901.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +158,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -42.3, + "value": -78.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -568.0, + "value": -1080.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +190,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -15.0, + "value": -33.8, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -60.0, + "value": -278.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +206,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -31.5, + "value": -69.6, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -386.0, + "value": -911.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index c971a7a78f..818e5338ae 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 81, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" @@ -12,7 +97,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 526, + "value": 520, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,7 +105,7 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 46, + "value": 45, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { @@ -28,11 +113,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -39.4, + "value": -36.1, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -205.0, + "value": -103.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +133,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -38.9, + "value": -34.7, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -200.0, + "value": -103.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +149,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1176, + "value": 1358, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +165,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -38.9, + "value": -34.7, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -200.0, + "value": -103.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +181,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -60.7, + "value": -56.6, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -761.0, + "value": -324.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index 13c8dec0fc..f837b222de 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 81, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" @@ -12,7 +97,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 538, + "value": 531, "compare": "<=" }, "detailedplace__design__violations": { @@ -24,15 +109,15 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 47, + "value": 46, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -69.3, + "value": -59.1, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -948.0, + "value": -321.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +133,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -78.2, + "value": -68.7, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1060.0, + "value": -441.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +149,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1174, + "value": 1388, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +165,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -54.0, + "value": -39.3, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -236.0, + "value": -115.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +181,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -66.0, + "value": -55.1, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -592.0, + "value": -299.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index c9c3bd9197..64cd4e2490 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1665.04, "compare": "<=" @@ -28,11 +123,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -295.0, + "value": -278.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -16900.0, + "value": -17000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +143,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -323.0, + "value": -302.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19700.0, + "value": -19300.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +175,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -254.0, + "value": -246.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -12300.0, + "value": -11800.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +191,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -312.0, + "value": -289.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17600.0, + "value": -17200.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index f48d6b927a..ee8055f9c5 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -1,4 +1,194 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 693, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1551": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1554": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 7302.54, "compare": "<=" @@ -32,7 +222,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2260.0, + "value": -2350.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -84,7 +274,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1840.0, + "value": -1720.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +290,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2590.0, + "value": -2500.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index faa0aabdea..96a6cc79f8 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1640.0, "compare": "<=" @@ -28,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -109.0, + "value": -172.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -549.0, + "value": -1510.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -703.0, + "value": -1250.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +154,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 73748, + "value": 88854, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -100,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -401.0, + "value": -1080.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index f94368dea9..7a7bc2545c 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 83.24, "compare": "<=" @@ -8,11 +93,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 110, + "value": 107, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 1004, + "value": 996, "compare": "<=" }, "detailedplace__design__violations": { @@ -32,7 +117,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -615.0, + "value": -1320.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +137,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1170.0, + "value": -1870.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +169,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -183.0, + "value": -327.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +185,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -754.0, + "value": -1190.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index d8929966a1..f95d4dbe5d 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 489779.41376, "compare": "<=" @@ -32,7 +82,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -138.0, + "value": -152.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -84,7 +134,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -74.1, + "value": -75.1, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -156.0, + "value": -158.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 2346f05ccb..08bc166df6 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -1,4 +1,74 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 6, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 717000.0, "compare": "<=" @@ -32,7 +102,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10.6, + "value": -92.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +122,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -25.2, + "value": -154.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +170,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17.9, + "value": -134.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index b1cfb91b0d..eace2347c6 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -1,6 +1,41 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { - "value": 23300.0, + "value": 21600.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,7 +43,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 26018, + "value": 23666, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -52,11 +87,11 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.553, + "value": -1.3, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0412, + "value": -0.041, "compare": ">=" }, "globalroute__timing__hold__tns": { @@ -64,7 +99,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 288386, + "value": 271567, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -100,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.04, + "value": -1.34, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +147,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 26325, + "value": 23999, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index f8e61e7f93..0f9c14f26f 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0441": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 845982.06, "compare": "<=" @@ -64,7 +114,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 7658811, + "value": 8902065, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -92,7 +142,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3.71, + "value": -3.1, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index 1f079d0735..b33609215a 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -1,6 +1,76 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 42, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0281": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 308, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 44, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 42, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { - "value": 777884.7342, + "value": 777000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,7 +78,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 774576, + "value": 774157, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -80,11 +150,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -2.22, + "value": -10.4, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -3.12, + "value": -722.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,7 +162,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -2.53, + "value": -3.83, "compare": ">=" }, "finish__timing__setup__ws": { @@ -112,7 +182,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 788531, + "value": 788072, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index e099a73f13..0cf390b41e 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0011": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 241575.35, "compare": "<=" @@ -32,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.0249, + "value": -0.603, "compare": ">=" }, "cts__timing__hold__ws": { @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -9.28, + "value": -5.71, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index e423b3507b..a15ff78cdd 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -1,4 +1,69 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-2021": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 365, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 44, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 586679.15, "compare": "<=" @@ -80,11 +145,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -10.9, + "value": -5.32, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -796.0, + "value": -289.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,7 +157,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -7.5, + "value": -12.2, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index b1ff55f418..d53fdc6616 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0345": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0450": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 271098.37, "compare": "<=" @@ -84,7 +174,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7470.0, + "value": -7860.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -16.6, + "value": -0.606, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10300.0, + "value": -12800.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 99feee0d60..5ac0e3e5e1 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 178043.59, "compare": "<=" @@ -32,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -24.8, + "value": -41.1, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -30.1, + "value": -4.92, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -92,7 +137,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -6.97, + "value": -3.13, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -27.6, + "value": -14.2, "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 70bc0b23a2..bf3594e8b5 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -1,4 +1,44 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 724516.2, "compare": "<=" @@ -28,11 +68,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.1, + "value": -0.248, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -54.4, + "value": -87.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -65.6, + "value": -78.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -92,15 +132,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -5.02, + "value": -0.645, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.225, + "value": -0.339, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -156.0, + "value": -174.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -108,7 +148,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.01, + "value": -8.22, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 14d656486f..22a6f4aa9b 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" @@ -28,11 +73,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.103, + "value": -0.177, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -14.7, + "value": -52.6, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19.9, + "value": -57.9, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +129,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -0.378, + "value": -0.838, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +141,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.131, + "value": -0.205, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -21.7, + "value": -68.2, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +157,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 63404, + "value": 63307, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index ee6c85daf5..afa7b8c97d 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 18, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 6, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 153658.0, "compare": "<=" @@ -28,11 +78,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.93, + "value": -0.689, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -8.3, + "value": -3.26, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -11.3, + "value": -14.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,11 +146,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.768, + "value": -0.762, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4.54, + "value": -3.83, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index c798b4e85d..5b0f1385c5 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,4 +1,104 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 6, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 234, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" @@ -28,11 +128,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.26, + "value": -2.14, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -338.0, + "value": -290.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,15 +144,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 1495, + "value": 3656, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.42, + "value": -2.14, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -367.0, + "value": -304.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -72,11 +172,11 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1397, + "value": 1864, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -84,7 +184,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -52.9, + "value": -82.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,15 +192,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -393.0, + "value": -521.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -2.41, + "value": -2.18, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -382.0, + "value": -320.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -108,7 +208,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -10.4, + "value": -6.95, "compare": ">=" }, "finish__design__instance__area": { From 896f28424e804fdf4001dbb904149db16b8d87ea Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Mon, 8 Dec 2025 13:14:50 +0000 Subject: [PATCH 113/364] update private metrics Signed-off-by: Eder Monteiro --- flow/designs/gf12/coyote/rules-base.json | 7 ++++++- flow/designs/gf12/gcd/rules-base.json | 10 +++++----- .../designs/gf12/swerv_wrapper/rules-base.json | 18 +++++++++--------- flow/designs/rapidus2hp/gcd/rules-base.json | 6 +++--- .../hercules_idecode/rules-base.json | 12 ++++++------ 5 files changed, 29 insertions(+), 24 deletions(-) diff --git a/flow/designs/gf12/coyote/rules-base.json b/flow/designs/gf12/coyote/rules-base.json index a511bde91d..18fac1af5e 100644 --- a/flow/designs/gf12/coyote/rules-base.json +++ b/flow/designs/gf12/coyote/rules-base.json @@ -64,6 +64,11 @@ "compare": "<=", "level": "warning" }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", @@ -177,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -4700.0, + "value": -15100.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/gcd/rules-base.json b/flow/designs/gf12/gcd/rules-base.json index 4b46172315..330f82b027 100644 --- a/flow/designs/gf12/gcd/rules-base.json +++ b/flow/designs/gf12/gcd/rules-base.json @@ -108,11 +108,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -52.9, + "value": -51.5, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -264.0, + "value": -224.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -128,11 +128,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -62.1, + "value": -59.2, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -367.0, + "value": -481.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -176,7 +176,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -44.6, + "value": -41.3, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 1f30360aeb..7f60d3937e 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -4,6 +4,11 @@ "compare": "<=", "level": "warning" }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:RSZ-0066": { "value": 1, "compare": "<=", @@ -44,11 +49,6 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:PDN-0195": { - "value": 8, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:PDN-1031": { "value": 2, "compare": "<=", @@ -141,11 +141,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -109.0, + "value": -249.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -300.0, + "value": -659.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -173,7 +173,7 @@ "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 2, + "value": 0, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -197,7 +197,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -48700.0, + "value": -50300.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index 564cb3e6ec..244b27b6ba 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -127,7 +127,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -260.0, + "value": -244.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -147,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -510.0, + "value": -596.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -163,7 +163,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -510.0, + "value": -596.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index 25548548dc..6eafa05adc 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -1,6 +1,6 @@ { "cts__flow__warnings__count:CTS-0041": { - "value": 6, + "value": 5, "compare": "<=", "level": "warning" }, @@ -103,7 +103,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 12538, + "value": 12490, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -123,7 +123,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -232.0, + "value": -273.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -143,7 +143,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -173.0, + "value": -195.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -159,7 +159,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -173.0, + "value": -195.0, "compare": ">=" }, "finish__timing__setup__tns": { @@ -175,7 +175,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 12810, + "value": 12763, "compare": "<=" } } \ No newline at end of file From 5eb5e34201fde7025bf3a5bbeabaef1b5634cc3c Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Mon, 8 Dec 2025 15:43:03 +0000 Subject: [PATCH 114/364] simplify code Signed-off-by: Jack Luar --- flow/scripts/global_place.tcl | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/flow/scripts/global_place.tcl b/flow/scripts/global_place.tcl index 3606785d9c..cae53ee4a7 100644 --- a/flow/scripts/global_place.tcl +++ b/flow/scripts/global_place.tcl @@ -34,28 +34,17 @@ if { $::env(GPL_TIMING_DRIVEN) } { } # Parameters for phi coefficients in global placement -# Validate phi coefficient constraints before using them -if { - [info exists ::env(MIN_PLACE_STEP_COEF)] - && [info exists ::env(MAX_PLACE_STEP_COEF)] -} { - set min_phi $::env(MIN_PLACE_STEP_COEF) - set max_phi $::env(MAX_PLACE_STEP_COEF) - - if { $min_phi > $max_phi } { - utl::error GPL 200 \ - "MIN_PLACE_STEP_COEF ($min_phi) cannot be greater than \ -MAX_PLACE_STEP_COEF ($max_phi)" - } -} +set min_phi $::env(MIN_PLACE_STEP_COEF) +set max_phi $::env(MAX_PLACE_STEP_COEF) -if { [info exists ::env(MIN_PLACE_STEP_COEF)] } { - lappend global_placement_args -min_phi_coef $::env(MIN_PLACE_STEP_COEF) +if { $min_phi > $max_phi } { + utl::error GPL 200 \ + "MIN_PLACE_STEP_COEF ($min_phi) cannot be greater than \ +MAX_PLACE_STEP_COEF ($max_phi)" } -if { [info exists ::env(MAX_PLACE_STEP_COEF)] } { - lappend global_placement_args -max_phi_coef $::env(MAX_PLACE_STEP_COEF) -} +lappend global_placement_args -min_phi_coef $::env(MIN_PLACE_STEP_COEF) +lappend global_placement_args -max_phi_coef $::env(MAX_PLACE_STEP_COEF) proc do_placement { global_placement_args } { set all_args [concat [list -density [place_density_with_lb_addon] \ From ea7ac669739a176a67cb21fc94ddd1e87580aba8 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Mon, 8 Dec 2025 15:10:05 -0300 Subject: [PATCH 115/364] bump openroad Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 7bce49803b..720c4352e6 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 7bce49803bc9999c040dd0a63a3b08e92ade7a3d +Subproject commit 720c4352e6f7b7e8236ac7562f63775fdeffd79d From 7855434f61ff81d981008ed89a4e888194c90e83 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 9 Dec 2025 02:06:32 +0000 Subject: [PATCH 116/364] use latest openroad Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 720c4352e6..f35efdbdb6 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 720c4352e6f7b7e8236ac7562f63775fdeffd79d +Subproject commit f35efdbdb6a5f9ed9da1e75fc772030e31dc465d From 40577de6d63b0d4402c34d9d5f7a1871ff11c8f4 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 9 Dec 2025 02:29:03 +0000 Subject: [PATCH 117/364] update metrics for grt real capacity calculation Signed-off-by: Eder Monteiro --- flow/designs/asap7/aes-block/rules-base.json | 12 ++-- flow/designs/asap7/mock-cpu/rules-base.json | 2 +- .../asap7/riscv32i-mock-sram/rules-base.json | 12 ++-- flow/designs/gf12/bp_single/rules-base.json | 19 ++--- flow/designs/gf12/ca53/rules-base.json | 10 +-- flow/designs/gf180/aes-hybrid/rules-base.json | 6 +- flow/designs/gf180/ibex/rules-base.json | 4 +- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 29 +++++++- .../nangate45/swerv_wrapper/rules-base.json | 14 ++-- .../nangate45/tinyRocket/rules-base.json | 8 +-- .../sky130hd/chameleon/rules-base.json | 71 ++++++++++++++++++- .../sky130hd/microwatt/rules-base.json | 22 +++--- flow/designs/sky130hs/aes/rules-base.json | 47 ++++++++++-- flow/designs/sky130hs/gcd/rules-base.json | 68 +++++++++++++++--- flow/designs/sky130hs/ibex/rules-base.json | 43 +++++++++-- flow/designs/sky130hs/jpeg/rules-base.json | 54 +++++++++++++- 16 files changed, 338 insertions(+), 83 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 715902ef10..d6bdfbfd65 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -119,15 +119,15 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1354, + "value": 1577, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -154.0, + "value": -137.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -11900.0, + "value": -9840.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -143,11 +143,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -142.0, + "value": -129.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10900.0, + "value": -8580.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -195,7 +195,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -6920.0, + "value": -5320.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index ee8055f9c5..3e464185ef 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -290,7 +290,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2500.0, + "value": -2610.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 96a6cc79f8..c0f4ced385 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -118,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -172.0, + "value": -164.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1510.0, + "value": -1320.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -142,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1250.0, + "value": -1480.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -154,7 +154,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 88854, + "value": 88512, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -186,11 +186,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -101.0, + "value": -155.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1080.0, + "value": -4660.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index b2acec7678..19e405914a 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -25,7 +25,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, + "value": 5, "compare": "<=", "level": "warning" }, @@ -130,7 +130,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, + "value": 5, "compare": "<=", "level": "warning" }, @@ -144,11 +144,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:RSZ-0066": { "value": 1, "compare": "<=", @@ -215,7 +210,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -2790.0, + "value": -2570.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -231,11 +226,11 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -311.0, + "value": -185.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -2020.0, + "value": -2500.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -243,7 +238,7 @@ "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -267,7 +262,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -13700.0, + "value": -10300.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 3095c9c658..2b93f2f3f4 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -1,6 +1,6 @@ { "cts__flow__warnings__count:CTS-0041": { - "value": 9, + "value": 8, "compare": "<=", "level": "warning" }, @@ -20,7 +20,7 @@ "level": "warning" }, "finish__flow__warnings__count:STA-1648": { - "value": 280, + "value": 284, "compare": "<=", "level": "warning" }, @@ -171,7 +171,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -621.0, + "value": -485.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -203,7 +203,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -65400.0, + "value": -75300.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -219,7 +219,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2050.0, + "value": -3010.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index f95d4dbe5d..6a93f74a56 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -102,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -162.0, + "value": -164.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,7 +134,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -75.1, + "value": -74.9, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -150,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -158.0, + "value": -160.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 08bc166df6..685390961d 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -122,7 +122,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -154.0, + "value": -157.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -170,7 +170,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -134.0, + "value": -133.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index db5ce15cff..96a12ce6eb 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -1,4 +1,29 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1499147.11, "compare": "<=" @@ -76,7 +101,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 148, + "value": 162, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -112,7 +137,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 1055630, + "value": 1055178, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index bf3594e8b5..aaf869b21f 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -48,7 +48,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 730179, + "value": 730176, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -72,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -87.4, + "value": -124.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -78.7, + "value": -70.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -132,15 +132,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.645, + "value": -0.443, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.339, + "value": -0.308, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -174.0, + "value": -152.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -148,7 +148,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -8.22, + "value": -2.46, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 22a6f4aa9b..84f0f3c5af 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -77,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -52.6, + "value": -55.7, "compare": ">=" }, "cts__timing__hold__ws": { @@ -93,11 +93,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.129, + "value": -0.192, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -57.9, + "value": -61.9, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -145,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -68.2, + "value": -76.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index 5838cd7c0f..9034ff1594 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -1,4 +1,69 @@ { + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ORD-2011": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 27373.26, "compare": "<=" @@ -44,7 +109,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 338, + "value": 213, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -76,7 +141,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 103, + "value": 153, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -92,7 +157,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -4.01, + "value": -1.4, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 5b0f1385c5..c176f87a0a 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -20,7 +20,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:GRT-0243": { - "value": 4, + "value": 3, "compare": "<=", "level": "warning" }, @@ -80,7 +80,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:GRT-0243": { - "value": 2, + "value": 1, "compare": "<=", "level": "warning" }, @@ -132,7 +132,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -290.0, + "value": -313.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -144,7 +144,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 3656, + "value": 4370, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -152,7 +152,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -304.0, + "value": -313.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -172,11 +172,11 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1864, + "value": 1936, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -184,7 +184,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -82.0, + "value": -77.2, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -192,7 +192,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -521.0, + "value": -504.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -200,7 +200,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -320.0, + "value": -333.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -208,7 +208,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -6.95, + "value": -12.2, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index 18991325e5..3040c135bc 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -1,6 +1,41 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { - "value": 134349.28, + "value": 132000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,7 +43,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 170359, + "value": 169958, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -28,11 +63,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.16, + "value": -0.144, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.58, + "value": -0.564, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -6.91, + "value": -9.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.77, + "value": -1.73, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index c1b5bf2343..92c4fc03e0 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 153, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 4532.91, "compare": "<=" @@ -8,7 +58,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 6702, + "value": 6660, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -20,7 +70,7 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 75, + "value": 69, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { @@ -28,11 +78,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.45, + "value": -0.442, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13.2, + "value": -13.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +98,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.611, + "value": -0.583, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19.5, + "value": -20.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +114,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 14773, + "value": 13917, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -84,7 +134,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7.5, + "value": -8.48, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,7 +146,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.513, + "value": -0.491, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index 238365e844..4d9642a948 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -1,4 +1,39 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 214000.0, "compare": "<=" @@ -28,11 +63,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.384, + "value": -0.37, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1.46, + "value": -1.42, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -45.5, + "value": -35.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.43, + "value": -3.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index eedad7b9d8..225f50b47b 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,4 +1,54 @@ { + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 60, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0220": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" @@ -44,7 +94,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 299, + "value": 100, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -72,7 +122,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { From 327e4f2cffd76de374f053b28e20f385d2d3d5d2 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 8 Dec 2025 23:26:15 +0000 Subject: [PATCH 118/364] Added catch around first detailed_placement call so that 4_1_error.odb is written switched from exit to error Signed-off-by: Jeff Ng --- flow/scripts/cts.tcl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/flow/scripts/cts.tcl b/flow/scripts/cts.tcl index 45241eb49d..e281f4b594 100644 --- a/flow/scripts/cts.tcl +++ b/flow/scripts/cts.tcl @@ -43,7 +43,12 @@ utl::pop_metrics_stage set_placement_padding -global \ -left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \ -right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) -detailed_placement + +set result [catch { detailed_placement } msg] +if { $result != 0 } { + save_progress 4_1_error + error "Detailed placement failed in CTS: $msg" +} estimate_parasitics -placement @@ -65,8 +70,7 @@ if { !$::env(SKIP_CTS_REPAIR_TIMING) } { set result [catch { detailed_placement } msg] if { $result != 0 } { save_progress 4_1_error - puts "Detailed placement failed in CTS: $msg" - exit $result + error "Detailed placement failed in CTS: $msg" } check_placement -verbose From a54443e143dfabda6868713d60a7cbf6951fb24b Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Wed, 10 Dec 2025 18:29:30 +0000 Subject: [PATCH 119/364] added DFF_MAP_FILE flow variable to map DFF's tclfmt fixes fixed variable descriptions Signed-off-by: Jeff Ng --- docs/user/FlowVariables.md | 8 +++++--- flow/scripts/synth.tcl | 37 +++++++++++++++++++++++++++++++++++++ flow/scripts/variables.yaml | 11 ++++++++--- 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 2b18f5deed..4c2bf575ba 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -95,7 +95,7 @@ configuration file. | ABC_DRIVER_CELL| Default driver cell used during ABC synthesis.| | | ABC_LOAD_IN_FF| During synthesis set_load value used.| | | ABSTRACT_SOURCE| Which .odb file to use to create abstract| | -| ADDER_MAP_FILE| List of adders treated as a black box by Yosys.| | +| ADDER_MAP_FILE| Optional mapping file supplied to Yosys to map adders| | | ADDITIONAL_FILES| Additional files to be added to `make issue` archive.| | | ADDITIONAL_GDS| Hardened macro GDS files listed here.| | | ADDITIONAL_LEFS| Hardened macro LEF view files listed here. The LEF information of the macros is immutable and used throughout all stages. Stored in the .odb file.| | @@ -107,7 +107,7 @@ configuration file. | CDL_FILES| Insert additional Circuit Description Language (`.cdl`) netlist files.| | | CELL_PAD_IN_SITES_DETAIL_PLACEMENT| Cell padding on both sides in site widths to ease routability in detail placement.| 0| | CELL_PAD_IN_SITES_GLOBAL_PLACEMENT| Cell padding on both sides in site widths to ease routability during global placement.| 0| -| CLKGATE_MAP_FILE| List of cells for gating clock treated as a black box by Yosys.| | +| CLKGATE_MAP_FILE| Optional mapping file supplied to Yosys to map clock gating cells| | | CLUSTER_FLOPS| Minimum number of flip-flops per sink cluster.| 0| | CORE_AREA| The core area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2).| | | CORE_ASPECT_RATIO| The core aspect ratio (height / width). This value is ignored if `CORE_UTILIZATION` is undefined.| 1.0| @@ -128,6 +128,7 @@ configuration file. | DETAILED_ROUTE_ARGS| Add additional arguments for debugging purposes during detail route.| | | DETAILED_ROUTE_END_ITERATION| Maximum number of iterations.| 64| | DFF_LIB_FILES| Technology mapping liberty files for flip-flops.| | +| DFF_MAP_FILE| Optional mapping file supplied to Yosys to map D flip-flops| | | DIE_AREA| The die area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2).| | | DONT_BUFFER_PORTS| Do not buffer input/output ports during floorplanning.| 0| | DONT_USE_CELLS| Dont use cells eases pin access in detailed routing.| | @@ -157,7 +158,7 @@ configuration file. | IO_PLACER_V| A list of metal layers on which the I/O pins are placed vertically (sides of the die).| | | IR_DROP_LAYER| Default metal layer to report IR drop.| | | KLAYOUT_TECH_FILE| A mapping from LEF/DEF to GDS using the KLayout tool.| | -| LATCH_MAP_FILE| List of latches treated as a black box by Yosys.| | +| LATCH_MAP_FILE| Optional mapping file supplied to Yosys to map latches| | | LIB_FILES| A Liberty file of the standard cell library with PVT characterization, input and output characteristics, timing and power definitions for each cell.| | | MACRO_BLOCKAGE_HALO| Distance beyond the edges of a macro that will also be covered by the blockage generated for that macro. Note that the default macro blockage halo comes from the largest of the specified MACRO_PLACE_HALO x or y values. This variable overrides that calculation.| | | MACRO_EXTENSION| Sets the number of GCells added to the blockages boundaries from macros.| | @@ -276,6 +277,7 @@ configuration file. - [ABC_LOAD_IN_FF](#ABC_LOAD_IN_FF) - [ADDER_MAP_FILE](#ADDER_MAP_FILE) - [CLKGATE_MAP_FILE](#CLKGATE_MAP_FILE) +- [DFF_MAP_FILE](#DFF_MAP_FILE) - [LATCH_MAP_FILE](#LATCH_MAP_FILE) - [MIN_BUF_CELL_AND_PORTS](#MIN_BUF_CELL_AND_PORTS) - [SDC_FILE](#SDC_FILE) diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index d3c1774955..40ff7d3d22 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -1,3 +1,36 @@ +# +# Extracts and returns module names from Verilog file +# +proc get_module_names { file_path } { + set module_list [list] + if { [catch { set fid [open $file_path r] } err] } { + error "Failed to open file $file_path: $err" + } + + set regex {^[ \t]*module[ \t]+([A-Za-z_$][A-Za-z0-9_$]*)} + + while { [gets $fid line] >= 0 } { + if { [regexp -nocase $regex $line match_all module_name] } { + lappend module_list $module_name + } + } + + close $fid + return $module_list +} + +# +# Builds dfflegalize arg list +# +proc get_dfflegalize_args { file_path } { + set legalize_args [list] + set module_names [get_module_names $file_path] + foreach module_name $module_names { + lappend legalize_args -cell $module_name x + } + return $legalize_args +} + source $::env(SCRIPTS_DIR)/synth_preamble.tcl read_checkpoint $::env(RESULTS_DIR)/1_1_yosys_canonicalize.rtlil @@ -143,6 +176,10 @@ if { [env_var_exists_and_non_empty LATCH_MAP_FILE] } { # dfflibmap only supports one liberty file if { [env_var_exists_and_non_empty DFF_LIB_FILE] } { dfflibmap -liberty $::env(DFF_LIB_FILE) {*}$lib_dont_use_args +} elseif { [env_var_exists_and_non_empty DFF_MAP_FILE] } { + set legalize_args [get_dfflegalize_args $::env(DFF_MAP_FILE)] + dfflegalize {*}$legalize_args + techmap -map $::env(DFF_MAP_FILE) } else { dfflibmap {*}$lib_args {*}$lib_dont_use_args } diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 1e07b8f3f8..6eb6a01645 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -292,19 +292,24 @@ SYNTH_RETIME_MODULES: optimal distribution of registers on long pipelines. See OR discussion #8080. stages: - synth +DFF_MAP_FILE: + description: | + Optional mapping file supplied to Yosys to map D flip-flops + stages: + - synth LATCH_MAP_FILE: description: | - List of latches treated as a black box by Yosys. + Optional mapping file supplied to Yosys to map latches stages: - synth CLKGATE_MAP_FILE: description: | - List of cells for gating clock treated as a black box by Yosys. + Optional mapping file supplied to Yosys to map clock gating cells stages: - synth ADDER_MAP_FILE: description: | - List of adders treated as a black box by Yosys. + Optional mapping file supplied to Yosys to map adders stages: - synth TIEHI_CELL_AND_PORT: From db1381cbec99aa10963cb9cbda74f55739392085 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Thu, 11 Dec 2025 00:43:36 +0000 Subject: [PATCH 120/364] Add log_cmd to pin_access in global_route.tcl Signed-off-by: Matt Liberty --- flow/scripts/global_route.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/scripts/global_route.tcl b/flow/scripts/global_route.tcl index 905bce5571..7d24fcdbc2 100644 --- a/flow/scripts/global_route.tcl +++ b/flow/scripts/global_route.tcl @@ -23,7 +23,7 @@ proc global_route_helper { } { append_env_var additional_args VIA_IN_PIN_MIN_LAYER -via_in_pin_bottom_layer 1 append_env_var additional_args VIA_IN_PIN_MAX_LAYER -via_in_pin_top_layer 1 - pin_access {*}$additional_args + log_cmd pin_access {*}$additional_args set result [catch { do_global_route $res_aware } errMsg] From b213f599036729fd98d73e1947acab7df88c15a3 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 10 Dec 2025 23:49:52 -0300 Subject: [PATCH 121/364] use grt_guide_dim branch Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index f35efdbdb6..5780e86fe8 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit f35efdbdb6a5f9ed9da1e75fc772030e31dc465d +Subproject commit 5780e86fe8705bab3868042e91d675191308932f From d50d3b017af5e5a3cc3c69f4d2bebc4a86272f4f Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 11 Dec 2025 10:30:50 -0300 Subject: [PATCH 122/364] bump openroad Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 5780e86fe8..5f753b3f05 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 5780e86fe8705bab3868042e91d675191308932f +Subproject commit 5f753b3f05a2eb8f4c64ca071eb63638c46bdb99 From a57d2d9877b762db0e4fcfcdf79c1e433b230f88 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 11 Dec 2025 15:08:57 +0000 Subject: [PATCH 123/364] update metrics for public designs Signed-off-by: Eder Monteiro --- flow/designs/asap7/aes-block/rules-base.json | 10 +++++----- flow/designs/asap7/ethmac/rules-base.json | 8 ++++---- flow/designs/asap7/mock-alu/rules-base.json | 6 +++--- flow/designs/asap7/mock-cpu/rules-base.json | 4 ++-- flow/designs/asap7/riscv32i-mock-sram/rules-base.json | 8 ++++---- flow/designs/asap7/uart/rules-base.json | 4 ++-- flow/designs/nangate45/aes/rules-base.json | 6 +++--- flow/designs/nangate45/ariane136/rules-base.json | 4 ++-- flow/designs/nangate45/bp_multi_top/rules-base.json | 11 +++-------- flow/designs/nangate45/mempool_group/rules-base.json | 4 ++-- flow/designs/nangate45/swerv/rules-base.json | 10 +++++----- flow/designs/nangate45/tinyRocket/rules-base.json | 6 +++--- 12 files changed, 38 insertions(+), 43 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index d6bdfbfd65..39d7b54d06 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -119,7 +119,7 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1577, + "value": 1371, "compare": "<=" }, "cts__timing__setup__ws": { @@ -127,7 +127,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9840.0, + "value": -10800.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -147,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8580.0, + "value": -9620.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -191,11 +191,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -96.1, + "value": -94.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5320.0, + "value": -6070.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index be7ae023a2..64f42a3356 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -148,11 +148,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -176.0, + "value": -174.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3880.0, + "value": -3780.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -184,7 +184,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1880.0, + "value": -1950.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -200,7 +200,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3030.0, + "value": -3120.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 64cd4e2490..aa21f383eb 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -143,11 +143,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -302.0, + "value": -295.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19300.0, + "value": -19400.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -195,7 +195,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17200.0, + "value": -17100.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index 3e464185ef..938fce7d61 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -242,7 +242,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2710.0, + "value": -2860.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -290,7 +290,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2610.0, + "value": -2570.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index c0f4ced385..9dd0180ba3 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -118,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -164.0, + "value": -157.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1320.0, + "value": -1180.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -138,7 +138,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -117.0, + "value": -169.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -190,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4660.0, + "value": -1030.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 7a7bc2545c..24e33916e5 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -133,11 +133,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -42.8, + "value": -56.5, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1870.0, + "value": -1990.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index eace2347c6..3f3ddced80 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -87,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.3, + "value": -1.47, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -99,7 +99,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 271567, + "value": 271242, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -135,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.34, + "value": -1.78, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 0f9c14f26f..bf8e02bc35 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -114,7 +114,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8902065, + "value": 8727932, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -142,7 +142,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3.1, + "value": -4.36, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index a15ff78cdd..4b1bc71bb4 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -4,13 +4,8 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:RSZ-2021": { - "value": 12, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, + "value": 4, "compare": "<=", "level": "warning" }, @@ -50,7 +45,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, + "value": 4, "compare": "<=", "level": "warning" }, @@ -149,7 +144,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -289.0, + "value": -444.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index d53fdc6616..0a4f19e314 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -174,7 +174,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7860.0, + "value": -7880.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -190,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -12800.0, + "value": -10800.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 5ac0e3e5e1..d93173151a 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -77,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -41.1, + "value": -0.658, "compare": ">=" }, "cts__timing__hold__ws": { @@ -97,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -4.92, + "value": -1.01, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -109,7 +109,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2814559, + "value": 2801337, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -137,7 +137,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3.13, + "value": -0.908, "compare": ">=" }, "finish__timing__setup__ws": { @@ -145,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -14.2, + "value": -4.19, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 84f0f3c5af..643ffd8b30 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -97,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -61.9, + "value": -66.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -145,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -76.1, + "value": -85.2, "compare": ">=" }, "finish__timing__hold__ws": { @@ -157,7 +157,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 63307, + "value": 63303, "compare": "<=" } } \ No newline at end of file From a39afab005987f2260ebb5919a38b1de6367f3aa Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 11 Dec 2025 15:49:15 +0000 Subject: [PATCH 124/364] update metrics for private designs Signed-off-by: Eder Monteiro --- .../hercules_idecode/rules-base.json | 22 ++++++++++++----- .../hercules_is_int/rules-base.json | 24 +++++++++---------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index 6eafa05adc..1d2aacbd95 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -9,6 +9,11 @@ "compare": "<=", "level": "warning" }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -84,6 +89,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -103,7 +113,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 12490, + "value": 12484, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -127,7 +137,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1040000.0, + "value": -1050000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -143,11 +153,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -195.0, + "value": -150.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -611000.0, + "value": -603000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -159,11 +169,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -195.0, + "value": -150.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -611000.0, + "value": -603000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 6b210ac7b9..0621c2dbae 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -1,9 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -79,6 +74,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -98,7 +98,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 34339, + "value": 34228, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -118,7 +118,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -400.0, + "value": -308.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -138,11 +138,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -374.0, + "value": -177.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1760000.0, + "value": -1410000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -154,11 +154,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -374.0, + "value": -177.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1760000.0, + "value": -1410000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -170,7 +170,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 35285, + "value": 35259, "compare": "<=" } } \ No newline at end of file From 5a813a5e7ed90b31497dc9bf60e29df5e7cb2e24 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Thu, 11 Dec 2025 17:23:46 +0000 Subject: [PATCH 125/364] update nangate45/swerv_wrapper Signed-off-by: Eder Monteiro --- flow/designs/nangate45/swerv_wrapper/rules-base.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index aaf869b21f..362f143bfa 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -72,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -124.0, + "value": -119.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -70.5, + "value": -121.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -128,11 +128,11 @@ "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -0.106, + "value": -0.103, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.443, + "value": -0.417, "compare": ">=" }, "finish__timing__setup__ws": { @@ -140,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -152.0, + "value": -238.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -148,7 +148,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.46, + "value": -2.2, "compare": ">=" }, "finish__design__instance__area": { From ffa7d01dd3a87f6f84a9c196a3412a94d7a6bd1e Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Fri, 12 Dec 2025 14:10:09 -0300 Subject: [PATCH 126/364] update OR and adapt MPL global fence default values Signed-off-by: Arthur Koucher --- docs/user/FlowVariables.md | 4 ++-- flow/scripts/variables.yaml | 4 ++-- tools/OpenROAD | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 4c2bf575ba..ebfccd349e 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -200,8 +200,8 @@ configuration file. | RTLMP_DEAD_SPACE| Specifies the target dead space percentage, which influences the utilization of a cluster.| 0.05| | RTLMP_FENCE_LX| Defines the lower left X coordinate for the global fence bounding box in microns.| 0.0| | RTLMP_FENCE_LY| Defines the lower left Y coordinate for the global fence bounding box in microns.| 0.0| -| RTLMP_FENCE_UX| Defines the upper right X coordinate for the global fence bounding box in microns.| 100000000.0| -| RTLMP_FENCE_UY| Defines the upper right Y coordinate for the global fence bounding box in microns.| 100000000.0| +| RTLMP_FENCE_UX| Defines the upper right X coordinate for the global fence bounding box in microns.| 0.0| +| RTLMP_FENCE_UY| Defines the upper right Y coordinate for the global fence bounding box in microns.| 0.0| | RTLMP_MAX_INST| Maximum number of standard cells in a cluster. If unset, rtl_macro_placer will calculate a value based on the design attributes.| | | RTLMP_MAX_LEVEL| Maximum depth of the physical hierarchy tree.| 2| | RTLMP_MAX_MACRO| Maximum number of macros in a cluster. If unset, rtl_macro_placer will calculate a value based on the design attributes.| | diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 6eb6a01645..b61115c3e5 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1102,14 +1102,14 @@ RTLMP_FENCE_UX: description: > Defines the upper right X coordinate for the global fence bounding box in microns. - default: 100000000.0 + default: 0.0 stages: - floorplan RTLMP_FENCE_UY: description: > Defines the upper right Y coordinate for the global fence bounding box in microns. - default: 100000000.0 + default: 0.0 stages: - floorplan RTLMP_ARGS: diff --git a/tools/OpenROAD b/tools/OpenROAD index 5f753b3f05..3d6955e8db 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 5f753b3f05a2eb8f4c64ca071eb63638c46bdb99 +Subproject commit 3d6955e8dbe983da43ff7e3a05618dbdb6d64b95 From 9de64da540098f5534094a558d316e747e30c7fc Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Fri, 12 Dec 2025 14:15:38 -0300 Subject: [PATCH 127/364] update nangate45/mempool_group failing metrics: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__timing__setup__tns | -7880.0 | -7980.0 | Failing | | detailedroute__timing__hold__tns | -0.606 | -8.77 | Failing | | finish__timing__setup__tns | -10800.0 | -10600.0 | Tighten | Signed-off-by: Arthur Koucher --- flow/designs/nangate45/mempool_group/rules-base.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 0a4f19e314..1a612b8b17 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -174,7 +174,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7880.0, + "value": -7980.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -182,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.606, + "value": -8.77, "compare": ">=" }, "finish__timing__setup__ws": { @@ -190,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10800.0, + "value": -10600.0, "compare": ">=" }, "finish__timing__hold__ws": { From b0ed5ca69f0631e98c01d4c29fda148c472e894a Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sat, 13 Dec 2025 22:15:07 +0000 Subject: [PATCH 128/364] Update gf12/ariane & gf12/swerv_wrapper designs/gf12/ariane/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__flow__warnings__count:DRT-0120 | 24 | 22 | Tighten | | globalroute__flow__warnings__count:DRT-0120 | 24 | 22 | Tighten | | placeopt__design__instance__area | 214773 | 214621 | Tighten | | cts__timing__setup__ws | -229.0 | -217.0 | Tighten | | cts__timing__setup__tns | -27900.0 | -733.0 | Tighten | | detailedroute__route__wirelength | 3770934 | 3427852 | Tighten | | detailedroute__route__drc_errors | 0 | 1 | Failing | | detailedroute__timing__hold__tns | -4630.0 | -1100.0 | Tighten | | finish__design__instance__area | 217050 | 217031 | Tighten | designs/gf12/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__ws | -249.0 | -243.0 | Tighten | | finish__timing__hold__tns | -557.0 | -939.0 | Failing | Signed-off-by: Matt Liberty --- flow/designs/gf12/ariane/rules-base.json | 38 ++++++++++++------- .../gf12/swerv_wrapper/rules-base.json | 4 +- tools/OpenROAD | 2 +- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index 9130a0667b..1c4564f745 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -1,16 +1,11 @@ { - "cts__flow__warnings__count:CTS-0179": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 24, + "value": 22, "compare": "<=", "level": "warning" }, @@ -44,6 +39,21 @@ "compare": "<=", "level": "warning" }, + "flow__warnings__count:GPL-0323": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0998": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0999": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "flow__warnings__count:PDN-1031": { "value": 2, "compare": "<=", @@ -90,7 +100,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 24, + "value": 22, "compare": "<=", "level": "warning" }, @@ -123,7 +133,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 214773, + "value": 214621, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -143,11 +153,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -229.0, + "value": -217.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -27900.0, + "value": -733.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -179,11 +189,11 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 3770934, + "value": 3427852, "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -207,7 +217,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -4630.0, + "value": -1100.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -227,7 +237,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 217050, + "value": 217031, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 7f60d3937e..157de37df3 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -141,7 +141,7 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -249.0, + "value": -243.0, "compare": ">=" }, "cts__timing__hold__tns": { @@ -213,7 +213,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -557.0, + "value": -939.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/tools/OpenROAD b/tools/OpenROAD index 3d6955e8db..61879bec53 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 3d6955e8dbe983da43ff7e3a05618dbdb6d64b95 +Subproject commit 61879bec5388194cb1bc5035f932aaaddc959cd2 From 9e5f4c928065233c66054a6d683495badd014f4f Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sun, 14 Dec 2025 01:23:20 +0000 Subject: [PATCH 129/364] Temporary metrics update for nangate45/mempool_group designs/nangate45/mempool_group/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__timing__setup__tns | -7980.0 | -7880.0 | Tighten | | detailedroute__timing__hold__tns | -8.77 | -0.606 | Tighten | | finish__timing__setup__tns | -10600.0 | -10800.0 | Failing | Signed-off-by: Matt Liberty --- flow/designs/nangate45/mempool_group/rules-base.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 1a612b8b17..0a4f19e314 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -174,7 +174,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7980.0, + "value": -7880.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -182,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -8.77, + "value": -0.606, "compare": ">=" }, "finish__timing__setup__ws": { @@ -190,7 +190,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10600.0, + "value": -10800.0, "compare": ">=" }, "finish__timing__hold__ws": { From 8471f5f7914f740f70ec2306c7962fe4c5bcecc8 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 15 Dec 2025 13:49:24 +0000 Subject: [PATCH 130/364] updating nangate45 setRC.tcl Signed-off-by: Jeff Ng --- flow/designs/nangate45/aes/rules-base.json | 9 +- .../nangate45/ariane133/rules-base.json | 93 +++++++- .../nangate45/ariane136/rules-base.json | 9 +- .../nangate45/black_parrot/rules-base.json | 13 +- .../nangate45/bp_be_top/rules-base.json | 51 +++- .../nangate45/bp_fe_top/rules-base.json | 27 +-- .../nangate45/bp_multi_top/rules-base.json | 24 +- .../designs/nangate45/bp_quad/rules-base.json | 218 ++++++++++++++++++ .../nangate45/dynamic_node/rules-base.json | 40 ++++ flow/designs/nangate45/gcd/rules-base.json | 40 +++- flow/designs/nangate45/ibex/rules-base.json | 39 +++- flow/designs/nangate45/jpeg/rules-base.json | 81 ++++++- .../nangate45/mempool_group/rules-base.json | 11 +- flow/designs/nangate45/swerv/rules-base.json | 13 +- .../nangate45/swerv_wrapper/rules-base.json | 19 +- .../nangate45/tinyRocket/rules-base.json | 17 +- flow/platforms/nangate45/setRC.tcl | 19 +- 17 files changed, 595 insertions(+), 128 deletions(-) create mode 100644 flow/designs/nangate45/bp_quad/rules-base.json diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index 3f3ddced80..c8dd044f5a 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -87,7 +82,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.47, + "value": -1.79, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -135,7 +130,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.78, + "value": -0.621, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 61469adfd7..bef1326c62 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -1,4 +1,79 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0011": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 825864.85, "compare": "<=" @@ -28,11 +103,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.695, + "value": -0.503, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1580.0, + "value": -677.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +123,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.657, + "value": -0.496, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1300.0, + "value": -654.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +155,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -0.2, + "value": -0.15, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -73.4, + "value": -0.6, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,15 +167,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.655, + "value": -0.646, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.753, + "value": -0.481, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1520.0, + "value": -619.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index bf8e02bc35..9013a074c7 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -14,11 +14,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -90,7 +85,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -7.13, + "value": -6.07, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -142,7 +137,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -4.36, + "value": -7.67, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index b33609215a..1da7140340 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -19,11 +19,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -118,7 +113,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.73, + "value": -3.1, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -150,11 +145,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -10.4, + "value": -4.97, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -722.0, + "value": -152.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -162,7 +157,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3.83, + "value": -3.74, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 0db147c379..a711a175b1 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0011": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 13, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 268204.56, "compare": "<=" @@ -32,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -22.0, + "value": -20.1, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.3, + "value": -28.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -35.5, + "value": -29.3, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 0cf390b41e..2bce693697 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -1,19 +1,9 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -44,6 +34,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 241575.35, "compare": "<=" @@ -73,11 +68,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.104, + "value": -0.09, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.603, + "value": -0.36, "compare": ">=" }, "cts__timing__hold__ws": { @@ -125,11 +120,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": 0.0, + "value": -2260.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": 0.0, + "value": -92800.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -141,11 +136,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.127, + "value": -0.123, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5.71, + "value": -0.85, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index 4b1bc71bb4..52eca36406 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -4,17 +4,17 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 4, + "cts__flow__warnings__count:RSZ-2021": { + "value": 12, "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { + "detailedroute__flow__warnings__count:GRT-0246": { "value": 1, "compare": "<=", "level": "warning" @@ -45,7 +45,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 4, + "value": 3, "compare": "<=", "level": "warning" }, @@ -88,7 +88,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -4.59, + "value": -4.87, "compare": ">=" }, "cts__timing__setup__tns": { @@ -108,7 +108,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -4.7, + "value": -4.99, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -140,11 +140,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -5.32, + "value": -3.97, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -444.0, + "value": -4.69, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -152,7 +152,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -12.2, + "value": -6.79, "compare": ">=" }, "finish__timing__setup__ws": { @@ -168,7 +168,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -1.27, + "value": -2.27, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/bp_quad/rules-base.json b/flow/designs/nangate45/bp_quad/rules-base.json new file mode 100644 index 0000000000..b75071686f --- /dev/null +++ b/flow/designs/nangate45/bp_quad/rules-base.json @@ -0,0 +1,218 @@ +{ + "cts__flow__warnings__count:CTS-0041": { + "value": 38, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 81, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0345": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0349": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-0441": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 18, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 81, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "synth__design__instance__area__stdcell": { + "value": 5620000.0, + "compare": "<=" + }, + "constraints__clocks__count": { + "value": 8, + "compare": "==" + }, + "placeopt__design__instance__area": { + "value": 6079647, + "compare": "<=" + }, + "placeopt__design__instance__count__stdcell": { + "value": 1704487, + "compare": "<=" + }, + "detailedplace__design__violations": { + "value": 0, + "compare": "==" + }, + "cts__design__instance__count__setup_buffer": { + "value": 148216, + "compare": "<=" + }, + "cts__design__instance__count__hold_buffer": { + "value": 148216, + "compare": "<=" + }, + "cts__timing__setup__ws": { + "value": -150.0, + "compare": ">=" + }, + "cts__timing__setup__tns": { + "value": -38900000.0, + "compare": ">=" + }, + "cts__timing__hold__ws": { + "value": -151.0, + "compare": ">=" + }, + "cts__timing__hold__tns": { + "value": -39300000.0, + "compare": ">=" + }, + "globalroute__antenna_diodes_count": { + "value": 1713, + "compare": "<=" + }, + "globalroute__timing__setup__ws": { + "value": -150.0, + "compare": ">=" + }, + "globalroute__timing__setup__tns": { + "value": -38900000.0, + "compare": ">=" + }, + "globalroute__timing__hold__ws": { + "value": -151.0, + "compare": ">=" + }, + "globalroute__timing__hold__tns": { + "value": -39300000.0, + "compare": ">=" + }, + "detailedroute__route__wirelength": { + "value": 55217711, + "compare": "<=" + }, + "detailedroute__route__drc_errors": { + "value": 0, + "compare": "<=" + }, + "detailedroute__antenna__violating__nets": { + "value": 0, + "compare": "<=" + }, + "detailedroute__antenna_diodes_count": { + "value": 1713, + "compare": "<=" + }, + "detailedroute__timing__setup__ws": { + "value": -150.0, + "compare": ">=" + }, + "detailedroute__timing__setup__tns": { + "value": -38800000.0, + "compare": ">=" + }, + "detailedroute__timing__hold__ws": { + "value": -150.0, + "compare": ">=" + }, + "detailedroute__timing__hold__tns": { + "value": -39300000.0, + "compare": ">=" + }, + "finish__timing__setup__ws": { + "value": -150.0, + "compare": ">=" + }, + "finish__timing__setup__tns": { + "value": -38900000.0, + "compare": ">=" + }, + "finish__timing__hold__ws": { + "value": -151.0, + "compare": ">=" + }, + "finish__timing__hold__tns": { + "value": -39300000.0, + "compare": ">=" + }, + "finish__design__instance__area": { + "value": 6176926, + "compare": "<=" + } +} \ No newline at end of file diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 0811328a9c..9174b29976 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -1,4 +1,44 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 25515.12, "compare": "<=" diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 9668b6d14e..8a77a551d5 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -1,4 +1,34 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 725.6, "compare": "<=" @@ -32,7 +62,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.566, + "value": -0.536, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +82,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.79, + "value": -0.66, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +94,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4615, + "value": 4515, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -96,11 +126,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0772, + "value": -0.0769, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.728, + "value": -0.57, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index f5874e5a3f..0ec3485f64 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -1,4 +1,39 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 32500.0, "compare": "<=" @@ -96,11 +131,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.131, + "value": -0.11, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3.23, + "value": -0.44, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 51652e2468..b345bf3706 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -1,6 +1,71 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { - "value": 102576.23, + "value": 102000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -32,7 +97,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -43.9, + "value": -38.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +117,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -52.4, + "value": -46.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +129,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 631314, + "value": 631144, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +145,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -0.11, + "value": -0.101, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -11.6, + "value": -6.54, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +161,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.153, + "value": -0.144, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -51.0, + "value": -35.7, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 0a4f19e314..d0b2c29273 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -19,11 +19,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "finish__flow__warnings__count:STA-0450": { "value": 1, "compare": "<=", @@ -142,7 +137,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -11100.0, + "value": -10500.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -174,7 +169,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7880.0, + "value": -7660.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -182,7 +177,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.606, + "value": -0.6, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index d93173151a..e954ce5b11 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -77,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.658, + "value": -10.7, "compare": ">=" }, "cts__timing__hold__ws": { @@ -97,7 +92,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.01, + "value": -35.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -109,7 +104,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2801337, + "value": 2799467, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -145,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4.19, + "value": -27.4, "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 362f143bfa..c12210989b 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -72,7 +67,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -119.0, + "value": -147.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -92,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -121.0, + "value": -104.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -132,23 +127,23 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.417, + "value": -4.08, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.308, + "value": -0.296, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -238.0, + "value": -134.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.118, + "value": -0.114, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.2, + "value": -0.701, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 643ffd8b30..a3f0ee5435 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -73,11 +68,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.177, + "value": -0.171, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -55.7, + "value": -50.7, "compare": ">=" }, "cts__timing__hold__ws": { @@ -93,11 +88,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.192, + "value": -0.188, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -66.4, + "value": -60.9, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -141,11 +136,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.205, + "value": -0.178, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -85.2, + "value": -53.4, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/platforms/nangate45/setRC.tcl b/flow/platforms/nangate45/setRC.tcl index f39d456de7..bcddfc72f3 100644 --- a/flow/platforms/nangate45/setRC.tcl +++ b/flow/platforms/nangate45/setRC.tcl @@ -1,15 +1,14 @@ # Liberty units are fF,kOhm set_layer_rc -layer metal1 -resistance 5.4286e-03 -capacitance 7.41819E-02 -set_layer_rc -layer metal2 -resistance 3.5714e-03 -capacitance 6.74606E-02 -set_layer_rc -layer metal3 -resistance 3.5714e-03 -capacitance 8.88758E-02 -set_layer_rc -layer metal4 -resistance 1.5000e-03 -capacitance 1.07121E-01 -set_layer_rc -layer metal5 -resistance 1.5000e-03 -capacitance 1.08964E-01 -set_layer_rc -layer metal6 -resistance 1.5000e-03 -capacitance 1.02044E-01 -set_layer_rc -layer metal7 -resistance 1.8750e-04 -capacitance 1.10436E-01 -set_layer_rc -layer metal8 -resistance 1.8750e-04 -capacitance 9.69714E-02 -# No calibration data available for metal9 and metal10 -#set_layer_rc -layer metal9 -resistance 3.7500e-05 -capacitance 3.6864e-02 -#set_layer_rc -layer metal10 -resistance 3.7500e-05 -capacitance 2.8042e-02 +set_layer_rc -layer metal2 -resistance 3.70635E-03 -capacitance 8.33611E-02 +set_layer_rc -layer metal3 -resistance 3.57728E-03 -capacitance 1.03981E-01 +set_layer_rc -layer metal4 -resistance 1.47397E-03 -capacitance 1.19150E-01 +set_layer_rc -layer metal5 -resistance 1.49065E-03 -capacitance 1.09256E-01 +set_layer_rc -layer metal6 -resistance 1.50265E-03 -capacitance 1.14168E-01 +set_layer_rc -layer metal7 -resistance 2.64082E-04 -capacitance 1.17491E-01 +set_layer_rc -layer metal8 -resistance 1.89296E-04 -capacitance 9.45346E-02 +set_layer_rc -layer metal9 -resistance 3.42860E-05 -capacitance 1.06091E-01 +set_layer_rc -layer metal10 -resistance 3.86540E-05 -capacitance 7.37095E-01 set_wire_rc -signal -layer metal3 set_wire_rc -clock -layer metal5 From 1fad1779470404afcc37c11442503f0f085e57ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 16 Dec 2025 07:24:37 +0100 Subject: [PATCH 131/364] docs: Document NUM_CORES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 2 ++ flow/scripts/variables.yaml | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index ebfccd349e..6a2b94ccfd 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -175,6 +175,7 @@ configuration file. | MAX_ROUTING_LAYER| The highest metal layer name to be used in routing.| | | MIN_BUF_CELL_AND_PORTS| Used to insert a buffer cell to pass through wires. Used in synthesis.| | | MIN_ROUTING_LAYER| The lowest metal layer name to be used in routing.| | +| NUM_CORES| Passed to `openroad -threads $(NUM_CORES)`, defaults to numbers of cores in system as determined by system specific code in Makefile, `nproc` is tried first. OpenROAD does not limit itself to this number of cores across OpenROAD running instances, which can lead to overprovisioning in contexts such as bazel-orfs where there could be many routing, or place jobs running at the same time.| | | OPENROAD_HIERARCHICAL| Feature toggle to enable to run OpenROAD in hierarchical mode, otherwise considered flat. Will eventually be the default and this option will be retired.| 0| | PDN_TCL| File path which has a set of power grid policies used by pdn to be applied to the design, such as layers to use, stripe width and spacing to generate the actual metal straps.| | | PLACE_DENSITY| The desired average placement density of cells: 1.0 = dense, 0.0 = widely spread. The intended effort is also communicated by this parameter. Use a low value for faster builds and higher value for better quality of results. If a too low value is used, the placer will not be able to place all cells and a recommended minimum placement density can be found in the logs. A too high value can lead to excessive runtimes, even timeouts and subtle failures in the flow after placement, such as in CTS or global routing when timing repair fails. The default is platform specific.| | @@ -480,6 +481,7 @@ configuration file. ## All stages variables +- [NUM_CORES](#NUM_CORES) - [OPENROAD_HIERARCHICAL](#OPENROAD_HIERARCHICAL) - [SWAP_ARITH_OPERATORS](#SWAP_ARITH_OPERATORS) - [SYNTH_WRAPPED_OPERATORS](#SYNTH_WRAPPED_OPERATORS) diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index b61115c3e5..10e0c6da96 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1215,3 +1215,15 @@ MAX_REPAIR_TIMING_ITER: - floorplan - grt - place +NUM_CORES: + description: > + Passed to `openroad -threads $(NUM_CORES)`, defaults to numbers + of cores in system as determined by system specific code in Makefile, + `nproc` is tried first. + + OpenROAD does not limit itself to this number of cores across + OpenROAD running instances, which can lead to overprovisioning + in contexts such as bazel-orfs where there could be many + routing, or place jobs running at the same time. + stages: + - All stages From fc50432f7392a8e40bd3097610907089c6d09977 Mon Sep 17 00:00:00 2001 From: Jonas Gava Date: Tue, 16 Dec 2025 13:23:03 +0000 Subject: [PATCH 132/364] update metrics is_int Signed-off-by: Jonas Gava --- .../rapidus2hp/hercules_is_int/rules-base.json | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 0621c2dbae..f545dd4427 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -74,11 +74,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -138,11 +133,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -177.0, + "value": -166.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1410000.0, + "value": -1420000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -154,11 +149,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -177.0, + "value": -166.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1410000.0, + "value": -1420000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -170,7 +165,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 35259, + "value": 35258, "compare": "<=" } } \ No newline at end of file From dd9dd590b0e50613e42eca381f31b9ccff06ac65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mai?= Date: Wed, 26 Nov 2025 23:24:00 +0000 Subject: [PATCH 133/364] flow: update bp_single fixed macros MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: João Mai --- .../nangate45/black_parrot/macro_placement.tcl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/flow/designs/nangate45/black_parrot/macro_placement.tcl b/flow/designs/nangate45/black_parrot/macro_placement.tcl index 41f518ed76..91393f2a93 100644 --- a/flow/designs/nangate45/black_parrot/macro_placement.tcl +++ b/flow/designs/nangate45/black_parrot/macro_placement.tcl @@ -12,32 +12,32 @@ place_macro \ place_macro \ -macro_name multi_top.rof1_0__core/be.be_mmu.dcache/data_mem_0__data_mem.macro_mem/mem \ - -location {1177.31 1166.095} -orientation R0 + -location {1177.31 1165.095} -orientation R0 place_macro \ -macro_name multi_top.rof1_0__core/be.be_mmu.dcache/data_mem_1__data_mem.macro_mem/mem \ - -location {659.6 1166.095} -orientation MY + -location {659.6 1165.095} -orientation MY place_macro \ -macro_name multi_top.rof1_0__core/be.be_mmu.dcache/data_mem_2__data_mem.macro_mem/mem \ - -location {1177.31 1032.605} -orientation MX + -location {1177.31 1031.605} -orientation MX place_macro \ -macro_name multi_top.rof1_0__core/be.be_mmu.dcache/data_mem_3__data_mem.macro_mem/mem \ - -location {832.17 1166.095} -orientation R0 + -location {832.17 1165.095} -orientation R0 place_macro \ -macro_name multi_top.rof1_0__core/be.be_mmu.dcache/data_mem_4__data_mem.macro_mem/mem \ - -location {1004.74 1032.605} -orientation MX + -location {1004.74 1031.605} -orientation MX place_macro \ -macro_name multi_top.rof1_0__core/be.be_mmu.dcache/data_mem_5__data_mem.macro_mem/mem \ - -location {832.17 1032.605} -orientation MX + -location {832.17 1031.605} -orientation MX place_macro \ -macro_name multi_top.rof1_0__core/be.be_mmu.dcache/data_mem_6__data_mem.macro_mem/mem \ - -location {1004.74 1166.095} -orientation R0 + -location {1004.74 1165.095} -orientation R0 place_macro \ -macro_name multi_top.rof1_0__core/be.be_mmu.dcache/data_mem_7__data_mem.macro_mem/mem \ - -location {659.6 1032.605} -orientation R180 + -location {659.6 1031.605} -orientation R180 From 8512c224217c9e5bfb9e9244e92165dab8b657fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mai?= Date: Mon, 15 Dec 2025 18:39:57 +0000 Subject: [PATCH 134/364] mpl: micron to dbu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: João Mai --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 61879bec53..0f35bb833b 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 61879bec5388194cb1bc5035f932aaaddc959cd2 +Subproject commit 0f35bb833b974152e25bacf19dfd90da07b99634 From 4808b85c936538e4c76e063ecf49fe182544c5c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mai?= Date: Tue, 16 Dec 2025 20:03:51 +0000 Subject: [PATCH 135/364] flow: update rules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: João Mai --- flow/designs/asap7/aes-block/rules-base.json | 101 +--------- flow/designs/asap7/aes-mbff/rules-base.json | 90 --------- flow/designs/asap7/aes/rules-base.json | 90 --------- flow/designs/asap7/ethmac/rules-base.json | 100 --------- flow/designs/asap7/ethmac_lvt/rules-base.json | 110 ---------- flow/designs/asap7/gcd-ccs/rules-base.json | 85 -------- flow/designs/asap7/gcd/rules-base.json | 85 -------- flow/designs/asap7/mock-alu/rules-base.json | 95 --------- flow/designs/asap7/mock-cpu/rules-base.json | 190 ------------------ .../asap7/riscv32i-mock-sram/rules-base.json | 92 +-------- flow/designs/asap7/riscv32i/rules-base.json | 8 +- .../asap7/swerv_wrapper/rules-base.json | 2 +- flow/designs/asap7/uart/rules-base.json | 85 -------- flow/designs/gf180/aes-hybrid/rules-base.json | 50 ----- flow/designs/gf180/ibex/rules-base.json | 70 ------- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 25 --- flow/designs/nangate45/aes/rules-base.json | 30 --- .../nangate45/ariane136/rules-base.json | 45 ----- .../nangate45/black_parrot/rules-base.json | 71 +------ .../nangate45/bp_be_top/rules-base.json | 2 +- .../nangate45/bp_fe_top/rules-base.json | 40 ---- .../nangate45/bp_multi_top/rules-base.json | 66 +----- .../nangate45/mempool_group/rules-base.json | 85 -------- flow/designs/nangate45/swerv/rules-base.json | 40 ---- .../nangate45/swerv_wrapper/rules-base.json | 37 +--- .../nangate45/tinyRocket/rules-base.json | 40 ---- .../sky130hd/chameleon/rules-base.json | 65 ------ flow/designs/sky130hd/ibex/rules-base.json | 50 ----- .../sky130hd/microwatt/rules-base.json | 112 +---------- flow/designs/sky130hs/aes/rules-base.json | 35 ---- flow/designs/sky130hs/gcd/rules-base.json | 50 ----- flow/designs/sky130hs/ibex/rules-base.json | 35 ---- flow/designs/sky130hs/jpeg/rules-base.json | 50 ----- 33 files changed, 23 insertions(+), 2108 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 39d7b54d06..2ab2be0f73 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 16, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 55, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2130.06, "compare": "<=" @@ -119,7 +24,7 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1371, + "value": 1796, "compare": "<=" }, "cts__timing__setup__ws": { @@ -147,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9620.0, + "value": -10200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -195,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -6070.0, + "value": -6330.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 63c8a6411a..12f7f29d42 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index c5eb5eb187..de15b5226b 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 64f42a3356..14185ee62f 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8450.0, "compare": "<=" diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index 0ad518dbef..319fe534ea 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -1,114 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 645, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8418.677166, "compare": "<=" diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index 818e5338ae..e6c6d3a741 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 81, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index f837b222de..fb774431df 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 81, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 43.1, "compare": "<=" diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index aa21f383eb..d8cb7d1244 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1665.04, "compare": "<=" diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index 938fce7d61..8074ddc945 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -1,194 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 693, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1551": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1554": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 7302.54, "compare": "<=" diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 9dd0180ba3..6f45f6257e 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1640.0, "compare": "<=" @@ -142,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1480.0, + "value": -6010.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index b466690a4b..4c45e3146d 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -313.0, + "value": -575.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -77.1, + "value": -128.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -578.0, + "value": -1070.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -55.2, + "value": -120.0, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index cabcb963fb..ccd53bc063 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -200000.0, + "value": -244000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 24e33916e5..9fe9d1f0d7 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 83.24, "compare": "<=" diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 6a93f74a56..3f04e08c43 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 489779.41376, "compare": "<=" diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 685390961d..4d2adb06ba 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -1,74 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 717000.0, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index 96a12ce6eb..733dbb0422 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -1,29 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1499147.11, "compare": "<=" diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index c8dd044f5a..22a829be3a 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -1,34 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 21600.0, "compare": "<=" diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 9013a074c7..fd2cc76a10 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0441": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 845982.06, "compare": "<=" diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index 1da7140340..1aea24bdeb 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -1,69 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 42, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0281": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 308, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 44, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 42, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 777000.0, "compare": "<=" @@ -93,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.73, + "value": -3.09, "compare": ">=" }, "cts__timing__setup__tns": { @@ -113,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -3.1, + "value": -3.13, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -157,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3.74, + "value": -7.68, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index a711a175b1..f6736c05f4 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -97,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -28.4, + "value": -19.2, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 2bce693697..f67016bbd4 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -1,44 +1,4 @@ { - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 241575.35, "compare": "<=" diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index 52eca36406..4fa74db395 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -1,64 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-2021": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 365, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 44, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 586679.15, "compare": "<=" @@ -108,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -4.99, + "value": -4.94, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -140,11 +80,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -3.97, + "value": -70.5, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -4.69, + "value": -2680.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index d0b2c29273..7b6080b8b2 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0345": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0450": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 271098.37, "compare": "<=" diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index e954ce5b11..a56ae6fc62 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 178043.59, "compare": "<=" diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index c12210989b..8eb3ffd616 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 724516.2, "compare": "<=" @@ -67,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -147.0, + "value": -150.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index a3f0ee5435..0a4dd47ff9 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index 9034ff1594..dfd57a1e5e 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -1,69 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ORD-2011": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 27373.26, "compare": "<=" diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index afa7b8c97d..e1b1da5509 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 18, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 153658.0, "compare": "<=" diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index c176f87a0a..ae4bb3eeda 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 234, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" @@ -132,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -313.0, + "value": -412.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -152,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -313.0, + "value": -427.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -184,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -77.2, + "value": -162.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -192,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -504.0, + "value": -622.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -200,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -333.0, + "value": -425.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -208,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -12.2, + "value": -15.9, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index 3040c135bc..6e9677ed1d 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 132000.0, "compare": "<=" diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 92c4fc03e0..ea6db7c352 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 153, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 4532.91, "compare": "<=" diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index 4d9642a948..f0f37cb119 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 214000.0, "compare": "<=" diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index 225f50b47b..db445440b6 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,54 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 60, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0220": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" From 66b4ca77838d347733663242017a6b673c0e887f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mai?= Date: Tue, 16 Dec 2025 20:04:03 +0000 Subject: [PATCH 136/364] flow: update private rules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit designs/gf12/ariane/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -733.0 | -4820.0 | Failing | | globalroute__timing__setup__tns | -717.0 | -20100.0 | Failing | | detailedroute__route__drc_errors | 1 | 4 | Failing | | detailedroute__timing__hold__tns | -1100.0 | -2550.0 | Failing | designs/gf12/bp_single/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__flow__warnings__count:DRT-0120 | 5 | 4 | Tighten | | flow__warnings__count:PDN-0195 | 25 | 26 | Failing | | globalroute__flow__warnings__count:DRT-0120 | 5 | 4 | Tighten | | cts__timing__hold__ws | -198.0 | -313.0 | Failing | | cts__timing__hold__tns | -2570.0 | -613.0 | Tighten | | globalroute__timing__hold__ws | -185.0 | -327.0 | Failing | | globalroute__timing__hold__tns | -2500.0 | -1360.0 | Tighten | | detailedroute__route__drc_errors | 1 | 0 | Tighten | | detailedroute__timing__hold__tns | -10300.0 | -998.0 | Tighten | | finish__timing__setup__tns | -409.0 | -822.0 | Failing | designs/gf12/ca53/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__flow__warnings__count:CTS-0041 | 8 | 3 | Tighten | | finish__flow__warnings__count:STA-1648 | 284 | 276 | Tighten | | cts__timing__setup__ws | -100.0 | -206.0 | Failing | | cts__timing__setup__tns | -100.0 | -890.0 | Failing | | globalroute__timing__hold__tns | -485.0 | -935.0 | Failing | | detailedroute__timing__hold__ws | -241.0 | -224.0 | Tighten | | detailedroute__timing__hold__tns | -75300.0 | -60800.0 | Tighten | | finish__timing__hold__tns | -3010.0 | -2580.0 | Tighten | designs/gf12/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__ws | -243.0 | -133.0 | Tighten | | cts__timing__hold__tns | -659.0 | -379.0 | Tighten | | detailedroute__route__wirelength | 2195249 | 2547385 | Failing | | detailedroute__route__drc_errors | 0 | 6 | Failing | | detailedroute__timing__hold__tns | -50300.0 | -50700.0 | Failing | | finish__timing__hold__ws | -85.2 | -84.2 | Tighten | | finish__timing__hold__tns | -939.0 | -573.0 | Tighten | Signed-off-by: João Mai --- flow/designs/gf12/ariane/rules-base.json | 13 +++++++--- flow/designs/gf12/bp_single/rules-base.json | 25 +++++++++++-------- flow/designs/gf12/ca53/rules-base.json | 21 ++++++++++------ .../gf12/swerv_wrapper/rules-base.json | 19 ++++++-------- 4 files changed, 44 insertions(+), 34 deletions(-) diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index 1c4564f745..bff69dbe37 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -1,4 +1,9 @@ { + "cts__flow__warnings__count:CTS-0179": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -157,7 +162,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -733.0, + "value": -4820.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -177,7 +182,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -717.0, + "value": -20100.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -193,7 +198,7 @@ "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 1, + "value": 4, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -217,7 +222,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1100.0, + "value": -2550.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index 19e405914a..fa22a123e7 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -25,7 +25,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 5, + "value": 4, "compare": "<=", "level": "warning" }, @@ -85,7 +85,7 @@ "level": "warning" }, "flow__warnings__count:PDN-0195": { - "value": 25, + "value": 26, "compare": "<=", "level": "warning" }, @@ -130,7 +130,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 5, + "value": 4, "compare": "<=", "level": "warning" }, @@ -144,6 +144,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:RSZ-0066": { "value": 1, "compare": "<=", @@ -206,11 +211,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -198.0, + "value": -313.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -2570.0, + "value": -613.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -226,11 +231,11 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -185.0, + "value": -327.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -2500.0, + "value": -1360.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -238,7 +243,7 @@ "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -262,7 +267,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -10300.0, + "value": -998.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -270,7 +275,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -409.0, + "value": -822.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 2b93f2f3f4..8982b435ec 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -1,6 +1,11 @@ { "cts__flow__warnings__count:CTS-0041": { - "value": 8, + "value": 3, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, "compare": "<=", "level": "warning" }, @@ -20,7 +25,7 @@ "level": "warning" }, "finish__flow__warnings__count:STA-1648": { - "value": 284, + "value": 276, "compare": "<=", "level": "warning" }, @@ -139,11 +144,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -100.0, + "value": -206.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -100.0, + "value": -890.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -171,7 +176,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -485.0, + "value": -935.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -199,11 +204,11 @@ "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -241.0, + "value": -224.0, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -75300.0, + "value": -60800.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -219,7 +224,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -3010.0, + "value": -2580.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 157de37df3..c0531faeca 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -4,11 +4,6 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:RSZ-0066": { "value": 1, "compare": "<=", @@ -141,11 +136,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -243.0, + "value": -133.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -659.0, + "value": -379.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -169,11 +164,11 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2195249, + "value": 2547385, "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 0, + "value": 6, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -197,7 +192,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -50300.0, + "value": -50700.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -209,11 +204,11 @@ "compare": ">=" }, "finish__timing__hold__ws": { - "value": -85.2, + "value": -84.2, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -939.0, + "value": -573.0, "compare": ">=" }, "finish__design__instance__area": { From 1ddd5a23f95a4556f8b3472f9d60fe941f640d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 16 Dec 2025 21:16:02 +0100 Subject: [PATCH 137/364] make: synth consistency with other stages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit synth now outputs 1_synth.odb and 1_synth.sdc written out by OpenROAD, just like other stages like floorplan, place, cts, etc. - 1_synth.sdc is the written out by OpenROAD and if SDC_FILE depended on other util.tcl files, those dependencies are subsumed into 1_synth.sdc - gui_synth/open_synth now works out of the box, useful for investigating timing, resource usage and synthesis results before proceeding to floorplan. - more consistent output interface from stages: .odb and .sdc file written out at each stage and input to next. - "-hier" option is respected when the .odb file is written out from synthesis. This consistency is nice for users as well as bazel-orfs. The running time and disk space is not materially affected because write_odb and write_sdc is fast and 1_2_yosys.v is no longer duplicated. Signed-off-by: Øyvind Harboe --- flow/Makefile | 26 ++++++++++---------------- flow/scripts/floorplan.tcl | 2 +- flow/scripts/floorplan_to_place.tcl | 2 +- flow/scripts/synth_odb.tcl | 11 +++-------- 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/flow/Makefile b/flow/Makefile index 6204b0674c..5f595cc61f 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -227,7 +227,7 @@ $(WRAPPED_LIBS): # |____/ |_| |_| \_| |_| |_| |_|_____|____/___|____/ # .PHONY: synth -synth: $(RESULTS_DIR)/1_synth.v +synth: $(RESULTS_DIR)/1_synth.odb .PHONY: synth-report synth-report: synth @@ -260,6 +260,7 @@ yosys-dependencies: $(YOSYS_DEPENDENCIES) .PHONY: do-yosys do-yosys: yosys-dependencies $(SCRIPTS_DIR)/synth.sh $(SYNTH_SCRIPT) $(LOG_DIR)/1_2_yosys.log + cp $(SDC_FILE) $(RESULTS_DIR)/1_2_yosys.sdc .PHONY: do-yosys-canonicalize do-yosys-canonicalize: yosys-dependencies @@ -268,17 +269,8 @@ do-yosys-canonicalize: yosys-dependencies $(RESULTS_DIR)/1_1_yosys_canonicalize.rtlil: $(YOSYS_DEPENDENCIES) $(UNSET_AND_MAKE) do-yosys-canonicalize -$(RESULTS_DIR)/1_2_yosys.v: $(RESULTS_DIR)/1_1_yosys_canonicalize.rtlil +$(RESULTS_DIR)/1_2_yosys.v $(RESULTS_DIR)/1_2_yosys.sdc: $(RESULTS_DIR)/1_1_yosys_canonicalize.rtlil $(UNSET_AND_MAKE) do-yosys - -.PHONY: do-synth -do-synth: - mkdir -p $(RESULTS_DIR) $(LOG_DIR) $(REPORTS_DIR) - cp $(RESULTS_DIR)/1_2_yosys.v $(RESULTS_DIR)/1_synth.v - -$(RESULTS_DIR)/1_synth.v: $(RESULTS_DIR)/1_2_yosys.v - $(UNSET_AND_MAKE) do-synth - .PHONY: clean_synth clean_synth: rm -f $(RESULTS_DIR)/1_* $(RESULTS_DIR)/mem*.json @@ -395,23 +387,25 @@ endef # ============================================================================== # Custom target to go from synthesis to placement in a single OpenROAD run -$(eval $(call do-step,1_3_floorplan_to_place, $(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc,floorplan_to_place)) +$(eval $(call do-step,1_3_floorplan_to_place, $(RESULTS_DIR)/1_synth.odb $(RESULTS_DIR)/1_synth.sdc,floorplan_to_place)) .PHONY: floorplan_to_place -floorplan_to_place: $(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc +floorplan_to_place: $(RESULTS_DIR)/1_synth.odb $(RESULTS_DIR)/1_synth.sdc $(UNSET_AND_MAKE) do-1_3_floorplan_to_place # ============================================================================== -$(eval $(call do-step,1_3_synth,$(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc,synth_odb)) +$(eval $(call do-step,1_synth,$(RESULTS_DIR)/1_2_yosys.v $(RESULTS_DIR)/1_2_yosys.sdc,synth_odb)) + +$(RESULTS_DIR)/1_synth.sdc: $(RESULTS_DIR)/1_synth.odb -$(eval $(call do-step,2_1_floorplan,$(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(FOOTPRINT) $(SIG_MAP_FILE) $(FOOTPRINT_TCL) $(LIB_FILES) $(IO_CONSTRAINTS),floorplan)) +$(eval $(call do-step,2_1_floorplan,$(RESULTS_DIR)/1_synth.odb $(RESULTS_DIR)/1_synth.sdc $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(FOOTPRINT) $(SIG_MAP_FILE) $(FOOTPRINT_TCL) $(LIB_FILES) $(IO_CONSTRAINTS),floorplan)) $(eval $(call do-copy,2_floorplan,2_1_floorplan.sdc,,.sdc)) # STEP 2: Macro Placement #------------------------------------------------------------------------------- -$(eval $(call do-step,2_2_floorplan_macro,$(RESULTS_DIR)/2_1_floorplan.odb $(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc $(MACRO_PLACEMENT) $(MACRO_PLACEMENT_TCL),macro_place)) +$(eval $(call do-step,2_2_floorplan_macro,$(RESULTS_DIR)/2_1_floorplan.odb $(RESULTS_DIR)/1_synth.sdc $(MACRO_PLACEMENT) $(MACRO_PLACEMENT_TCL),macro_place)) # STEP 3: Tapcell and Welltie insertion #------------------------------------------------------------------------------- diff --git a/flow/scripts/floorplan.tcl b/flow/scripts/floorplan.tcl index 6aea30a20f..9880250f86 100644 --- a/flow/scripts/floorplan.tcl +++ b/flow/scripts/floorplan.tcl @@ -1,7 +1,7 @@ utl::set_metrics_stage "floorplan__{}" source $::env(SCRIPTS_DIR)/load.tcl erase_non_stage_variables floorplan -load_design 1_synth.v 1_synth.sdc +load_design 1_synth.odb 1_synth.sdc proc report_unused_masters { } { set db [ord::get_db] diff --git a/flow/scripts/floorplan_to_place.tcl b/flow/scripts/floorplan_to_place.tcl index b405ed1bd0..4854a88696 100644 --- a/flow/scripts/floorplan_to_place.tcl +++ b/flow/scripts/floorplan_to_place.tcl @@ -1,6 +1,6 @@ utl::set_metrics_stage "floorplan__{}" source $::env(SCRIPTS_DIR)/load.tcl -load_design 1_synth.v 1_synth.sdc +load_design 1_synth.odb 1_synth.sdc # Floorplan diff --git a/flow/scripts/synth_odb.tcl b/flow/scripts/synth_odb.tcl index 8b7af86e0f..29553f6cf9 100644 --- a/flow/scripts/synth_odb.tcl +++ b/flow/scripts/synth_odb.tcl @@ -1,16 +1,11 @@ utl::set_metrics_stage "floorplan__{}" source $::env(SCRIPTS_DIR)/load.tcl erase_non_stage_variables synth -load_design 1_synth.v 1_synth.sdc +load_design 1_2_yosys.v 1_2_yosys.sdc -write_db $::env(RESULTS_DIR)/1_3_synth.odb +write_db $::env(RESULTS_DIR)/1_synth.odb # Canonicalize 1_synth.sdc. The original SDC_FILE provided by # the user could have dependencies, such as sourcing util.tcl, # which are read in here and a canonicalized version is written # out by OpenSTA that has no dependencies. -write_sdc -no_timestamp $::env(RESULTS_DIR)/1_3_synth.sdc - -# Final output of the synthesis stage, the other files are written out for -# consistency and logging of .odb hashes -exec cp $::env(RESULTS_DIR)/1_3_synth.sdc $::env(RESULTS_DIR)/1_synth.sdc -exec cp $::env(RESULTS_DIR)/1_3_synth.odb $::env(RESULTS_DIR)/1_synth.odb +write_sdc -no_timestamp $::env(RESULTS_DIR)/1_synth.sdc From ccae022b1a3fbb3f747e2858279c47e296c2d421 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 16 Dec 2025 21:40:51 +0000 Subject: [PATCH 138/364] flow: update rules Signed-off-by: github-actions[bot] --- .../nangate45/ariane133/rules-base.json | 75 ------------------- .../nangate45/bp_be_top/rules-base.json | 45 ----------- .../nangate45/dynamic_node/rules-base.json | 40 ---------- flow/designs/nangate45/gcd/rules-base.json | 30 -------- flow/designs/nangate45/ibex/rules-base.json | 35 --------- flow/designs/nangate45/jpeg/rules-base.json | 65 ---------------- .../nangate45/swerv_wrapper/rules-base.json | 2 +- 7 files changed, 1 insertion(+), 291 deletions(-) diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index bef1326c62..5ae443025a 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -1,79 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 825864.85, "compare": "<=" diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index f6736c05f4..9ac31070ff 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 13, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 268204.56, "compare": "<=" diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 9174b29976..0811328a9c 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 25515.12, "compare": "<=" diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 8a77a551d5..e060e02d51 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -1,34 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 725.6, "compare": "<=" diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index 0ec3485f64..a4914cc2fe 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 32500.0, "compare": "<=" diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index b345bf3706..9591abc6fc 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -1,69 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 102000.0, "compare": "<=" diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index 8eb3ffd616..ceb402dff8 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -108,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.701, + "value": -2.31, "compare": ">=" }, "finish__design__instance__area": { From 939ce6126e52dc2806a224d42fd672c20fe3ea94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mai?= Date: Wed, 17 Dec 2025 21:42:04 +0000 Subject: [PATCH 139/364] update asap7/riscv32i-mock-sram rules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit designs/asap7/riscv32i-mock-sram/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -157.0 | -148.0 | Tighten | | cts__timing__setup__tns | -1180.0 | -944.0 | Tighten | | globalroute__timing__setup__ws | -169.0 | -148.0 | Tighten | | finish__timing__setup__ws | -155.0 | -153.0 | Tighten | | finish__timing__setup__tns | -1030.0 | -1420.0 | Failing | Signed-off-by: João Mai --- .../asap7/riscv32i-mock-sram/rules-base.json | 100 +++++++++++++++++- 1 file changed, 95 insertions(+), 5 deletions(-) diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 6f45f6257e..7b40c5f2e6 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1640.0, "compare": "<=" @@ -28,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -157.0, + "value": -148.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1180.0, + "value": -944.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,7 +138,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -169.0, + "value": -148.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -96,11 +186,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -155.0, + "value": -153.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1030.0, + "value": -1420.0, "compare": ">=" }, "finish__timing__hold__ws": { From ad68473a4c01cf19004f842379071cab89da775b Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Thu, 18 Dec 2025 07:21:19 +0000 Subject: [PATCH 140/364] Increase CORE_UTIL on misc designs `designs/nangate45/ariane133/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.503 | -0.331 | Tighten | | cts__timing__setup__tns | -677.0 | -190.0 | Tighten | | globalroute__timing__setup__ws | -0.496 | -0.374 | Tighten | | globalroute__timing__setup__tns | -654.0 | -292.0 | Tighten | | detailedroute__route__wirelength | 8166038 | 6662734 | Tighten | | detailedroute__timing__hold__ws | -0.155 | -0.15 | Tighten | | detailedroute__timing__hold__tns | -0.646 | -0.6 | Tighten | | finish__timing__setup__ws | -0.481 | -0.372 | Tighten | | finish__timing__setup__tns | -619.0 | -304.0 | Tighten | designs/asap7/ethmac/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -2960.0 | -2900.0 | Tighten | | globalroute__timing__setup__tns | -3780.0 | -4030.0 | Failing | | detailedroute__timing__setup__ws | -124.0 | -121.0 | Tighten | | detailedroute__timing__setup__tns | -1950.0 | -1870.0 | Tighten | designs/ihp-sg13g2/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__route__wirelength | 989089 | 897596 | Tighten | designs/ihp-sg13g2/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.5 | -0.4 | Tighten | | cts__timing__setup__tns | -2.0 | -1.6 | Tighten | | cts__timing__hold__ws | -0.5 | -0.4 | Tighten | | cts__timing__hold__tns | -2.0 | -1.6 | Tighten | | globalroute__timing__setup__ws | -0.5 | -0.414 | Tighten | | globalroute__timing__setup__tns | -2.0 | -1.7 | Tighten | | globalroute__timing__hold__ws | -0.5 | -0.4 | Tighten | | globalroute__timing__hold__tns | -2.0 | -1.6 | Tighten | | detailedroute__timing__setup__ws | -0.5 | -0.4 | Tighten | | detailedroute__timing__setup__tns | -2.0 | -1.6 | Tighten | | detailedroute__timing__hold__ws | -0.5 | -0.4 | Tighten | | detailedroute__timing__hold__tns | -2.0 | -1.6 | Tighten | | finish__timing__setup__ws | -0.5 | -0.4 | Tighten | | finish__timing__setup__tns | -2.0 | -1.6 | Tighten | | finish__timing__hold__ws | -0.5 | -0.4 | Tighten | | finish__timing__hold__tns | -2.0 | -1.6 | Tighten | designs/nangate45/tinyRocket/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 61249 | 60747 | Tighten | | placeopt__design__instance__count__stdcell | 32493 | 32247 | Tighten | | cts__design__instance__count__setup_buffer | 2826 | 2804 | Tighten | | cts__design__instance__count__hold_buffer | 2826 | 2804 | Tighten | | cts__timing__setup__ws | -0.171 | -0.149 | Tighten | | cts__timing__setup__tns | -50.7 | -29.1 | Tighten | | globalroute__timing__setup__ws | -0.188 | -0.171 | Tighten | | globalroute__timing__setup__tns | -60.9 | -41.6 | Tighten | | detailedroute__route__wirelength | 734937 | 549212 | Tighten | | detailedroute__timing__setup__tns | -0.838 | -2.53 | Failing | | finish__timing__setup__ws | -0.178 | -0.156 | Tighten | | finish__timing__setup__tns | -53.4 | -36.8 | Tighten | | finish__design__instance__area | 63303 | 62486 | Tighten | Signed-off-by: Matt Liberty --- flow/designs/asap7/ethmac/config.mk | 2 +- flow/designs/asap7/ethmac/rules-base.json | 113 +++++++++++++++++- flow/designs/ihp-sg13g2/ibex/config.mk | 2 +- flow/designs/ihp-sg13g2/ibex/constraint.sdc | 2 +- flow/designs/ihp-sg13g2/ibex/rules-base.json | 64 +++++++--- flow/designs/nangate45/ariane133/config.mk | 4 +- .../nangate45/ariane133/rules-base.json | 93 ++++++++++++-- flow/designs/nangate45/tinyRocket/config.mk | 10 +- .../nangate45/tinyRocket/rules-base.json | 71 +++++++++-- tools/OpenROAD | 2 +- 10 files changed, 308 insertions(+), 55 deletions(-) diff --git a/flow/designs/asap7/ethmac/config.mk b/flow/designs/asap7/ethmac/config.mk index 8a056c207b..c7770d7137 100644 --- a/flow/designs/asap7/ethmac/config.mk +++ b/flow/designs/asap7/ethmac/config.mk @@ -6,7 +6,7 @@ export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NIC export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc export ABC_AREA = 1 -export CORE_UTILIZATION = 60 +export CORE_UTILIZATION = 70 export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 2 export PLACE_DENSITY = 0.75 diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 14185ee62f..0265a91fed 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -1,4 +1,109 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 8450.0, "compare": "<=" @@ -32,7 +137,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2960.0, + "value": -2900.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +157,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3780.0, + "value": -4030.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +185,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -124.0, + "value": -121.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1950.0, + "value": -1870.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/ihp-sg13g2/ibex/config.mk b/flow/designs/ihp-sg13g2/ibex/config.mk index 7663a4ad86..df2eb1c30a 100644 --- a/flow/designs/ihp-sg13g2/ibex/config.mk +++ b/flow/designs/ihp-sg13g2/ibex/config.mk @@ -15,7 +15,7 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint. # Adders degrade ibex setup repair export ADDER_MAP_FILE := -export CORE_UTILIZATION = 35 +export CORE_UTILIZATION = 70 export PLACE_DENSITY_LB_ADDON = 0.2 export TNS_END_PERCENT = 100 export CTS_BUF_DISTANCE = 60 diff --git a/flow/designs/ihp-sg13g2/ibex/constraint.sdc b/flow/designs/ihp-sg13g2/ibex/constraint.sdc index fed426995f..cbf4208c5b 100644 --- a/flow/designs/ihp-sg13g2/ibex/constraint.sdc +++ b/flow/designs/ihp-sg13g2/ibex/constraint.sdc @@ -2,7 +2,7 @@ current_design ibex_core set clk_name core_clock set clk_port_name clk_i -set clk_period 10.0 +set clk_period 8.0 set clk_io_pct 0.2 set clk_port [get_ports $clk_port_name] diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index bfa56b95ae..4ec25c1c73 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -1,4 +1,34 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 305820.24, "compare": "<=" @@ -28,19 +58,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.5, + "value": -0.4, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2.0, + "value": -1.6, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.5, + "value": -0.4, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -2.0, + "value": -1.6, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,23 +78,23 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.5, + "value": -0.414, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2.0, + "value": -1.7, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.5, + "value": -0.4, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -2.0, + "value": -1.6, "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 989089, + "value": 897596, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,35 +110,35 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -0.5, + "value": -0.4, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -2.0, + "value": -1.6, "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -0.5, + "value": -0.4, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -2.0, + "value": -1.6, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.5, + "value": -0.4, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.0, + "value": -1.6, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.5, + "value": -0.4, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.0, + "value": -1.6, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/ariane133/config.mk b/flow/designs/nangate45/ariane133/config.mk index cbbad14a40..7e2d41bd63 100644 --- a/flow/designs/nangate45/ariane133/config.mk +++ b/flow/designs/nangate45/ariane133/config.mk @@ -12,7 +12,7 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/ariane133/ariane.sdc export ADDITIONAL_LEFS = $(PLATFORM_DIR)/lef/fakeram45_256x16.lef export ADDITIONAL_LIBS = $(PLATFORM_DIR)/lib/fakeram45_256x16.lib -export CORE_UTILIZATION = 40 +export CORE_UTILIZATION = 60 export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 5 @@ -26,4 +26,4 @@ export RTLMP_MAX_LEVEL = 1 export RTLMP_MAX_MACRO = 10 export RTLMP_MIN_MACRO = 1 export RTLMP_MAX_INST = 80000 -export RTLMP_MIN_INST = 8000 \ No newline at end of file +export RTLMP_MIN_INST = 8000 diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 5ae443025a..fa619aa61b 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -1,4 +1,79 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 13, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0011": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 6, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 13, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 825864.85, "compare": "<=" @@ -28,11 +103,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.503, + "value": -0.331, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -677.0, + "value": -190.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +123,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.496, + "value": -0.374, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -654.0, + "value": -292.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +139,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8166038, + "value": 6662734, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -88,19 +163,19 @@ "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -0.155, + "value": -0.15, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.646, + "value": -0.6, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.481, + "value": -0.372, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -619.0, + "value": -304.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/tinyRocket/config.mk b/flow/designs/nangate45/tinyRocket/config.mk index 02dd38d64c..d86621ba34 100644 --- a/flow/designs/nangate45/tinyRocket/config.mk +++ b/flow/designs/nangate45/tinyRocket/config.mk @@ -17,9 +17,7 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint. export ADDITIONAL_LEFS = $(sort $(wildcard $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/*.lef)) export ADDITIONAL_LIBS = $(sort $(wildcard $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/*.lib)) - -# These values must be multiples of placement site -# x=0.19 y=1.4 -export DIE_AREA = 0 0 424.92 499.4 -export CORE_AREA = 10.07 9.8 414.85 489.6 -export TNS_END_PERCENT = 100 +export CORE_UTILIZATION = 60 +export CORE_ASPECT_RATIO = 1 +export CORE_MARGIN = 2 +export PLACE_DENSITY = 0.75 diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 0a4dd47ff9..76baa80310 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" @@ -8,11 +53,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 61249, + "value": 60747, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 32493, + "value": 32247, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +65,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 2826, + "value": 2804, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 2826, + "value": 2804, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.171, + "value": -0.149, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -50.7, + "value": -29.1, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +93,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.188, + "value": -0.171, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -60.9, + "value": -41.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +109,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 734937, + "value": 549212, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -84,7 +129,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -0.838, + "value": -2.53, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +141,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.178, + "value": -0.156, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -53.4, + "value": -36.8, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +157,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 63303, + "value": 62486, "compare": "<=" } } \ No newline at end of file diff --git a/tools/OpenROAD b/tools/OpenROAD index 0f35bb833b..20c0d001a8 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 0f35bb833b974152e25bacf19dfd90da07b99634 +Subproject commit 20c0d001a85814c9c2fcba69391086046cc447ab From ebaf5b7c77a1b58734cb4163ef32c2ed70b59763 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Thu, 18 Dec 2025 17:39:14 +0000 Subject: [PATCH 141/364] The new synth_odb (1_2_yosys) step needs LEF & LIB as dependencies Signed-off-by: Matt Liberty --- flow/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/Makefile b/flow/Makefile index 5f595cc61f..43d7eb60f6 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -395,7 +395,7 @@ floorplan_to_place: $(RESULTS_DIR)/1_synth.odb $(RESULTS_DIR)/1_synth.sdc # ============================================================================== -$(eval $(call do-step,1_synth,$(RESULTS_DIR)/1_2_yosys.v $(RESULTS_DIR)/1_2_yosys.sdc,synth_odb)) +$(eval $(call do-step,1_synth,$(RESULTS_DIR)/1_2_yosys.v $(RESULTS_DIR)/1_2_yosys.sdc $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(LIB_FILES),synth_odb)) $(RESULTS_DIR)/1_synth.sdc: $(RESULTS_DIR)/1_synth.odb From ee063b3088968fe53029e9f21d5d54f5922c11bd Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Thu, 18 Dec 2025 18:41:20 +0000 Subject: [PATCH 142/364] Updating OR to 9c9294 Signed-off-by: Jeff Ng --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 20c0d001a8..9c92944135 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 20c0d001a85814c9c2fcba69391086046cc447ab +Subproject commit 9c92944135151d90bbb43fce40999a712b7aad36 From 7d0999ea86789c477e03169e16a92f598f389ebf Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Thu, 18 Dec 2025 20:49:15 +0000 Subject: [PATCH 143/364] ci: add option to build with Verific Signed-off-by: Vitor Bandeira --- build_openroad.sh | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/build_openroad.sh b/build_openroad.sh index 6350784bc1..0394f00999 100755 --- a/build_openroad.sh +++ b/build_openroad.sh @@ -29,6 +29,10 @@ OPENROAD_APP_ARGS="" DOCKER_OS_NAME="ubuntu22.04" PROC=-1 +VERIFIC_COMPONENTS='database util containers pct hier_tree verilog' +WITH_VERIFIC=0 +VERIFIC_DIR="" + function usage() { cat << EOF @@ -36,6 +40,7 @@ Usage: $0 [-h|--help] [-o|--local] [-l|--latest] [--or_branch BRANCH_NAME] [--or_repo REPO_URL] [--no_init] [-n|--nice] [-t|--threads N] [--yosys-args-overwrite] [--yosys-args STRING] + [--with-verific PATH] [--openroad-args-overwrite] [--openroad-args STRING] [--install-path PATH] [--clean] [--clean-force] @@ -67,6 +72,9 @@ Options: --yosys-args STRING Additional compilation flags for Yosys compilation. + --with-verific PATH Compile Yosys with Verific support. PATH is the path + to the Verific source folder. + --openroad-args-overwrite Do not use default flags set by this scrip during OpenROAD app compilation. @@ -140,6 +148,19 @@ while (( "$#" )); do YOSYS_USER_ARGS="$2" shift ;; + --with-verific) + YOSYS_USER_ARGS+=" ENABLE_VERIFIC=1" + YOSYS_USER_ARGS+=" ENABLE_VERIFIC_VHDL=0" + YOSYS_USER_ARGS+=" VERIFIC_COMPONENTS='${VERIFIC_COMPONENTS}'" + VERIFIC_DIR=${2} + if [ ! -d "${VERIFIC_DIR}" ]; then + echo "[ERROR] Verific path '${VERIFIC_DIR}' does not exist." >&2 + exit 1 + fi + YOSYS_USER_ARGS+=" VERIFIC_DIR=${VERIFIC_DIR}" + WITH_VERIFIC=1 + shift + ;; --openroad-args-overwrite) OPENROAD_APP_OVERWRITE_ARGS=1 ;; @@ -254,13 +275,27 @@ __local_build() git --work-tree=${YOSYS_ABC_PATH} --git-dir=${YOSYS_ABC_PATH}/.git update-index --refresh fi + if [ ${WITH_VERIFIC} -eq 1 ]; then + echo "[INFO FLW-0031] Compiling Verific components." + cp -r "${VERIFIC_DIR}" verific + for c in ${VERIFIC_COMPONENTS}; do + make -j -C "verific/${c}" clean + make -j -C "verific/${c}" + done + fi + echo "[INFO FLW-0017] Compiling Yosys." - ${NICE} make install -C tools/yosys -j "${PROC}" ${YOSYS_ARGS} + eval ${NICE} make install -C tools/yosys -j "${PROC}" ${YOSYS_ARGS} echo "[INFO FLW-0030] Compiling yosys-slang." # CMAKE_FLAGS added to work around yosys-slang#141 (unable to build outside of git checkout) ${NICE} make install -C tools/yosys-slang -j "${PROC}" YOSYS_PREFIX="${INSTALL_PATH}/yosys/bin/" CMAKE_FLAGS="-DYOSYS_SLANG_REVISION=unknown -DSLANG_REVISION=unknown" + if [ ${WITH_VERIFIC} -eq 1 ]; then + echo "[INFO FLW-0032] Cleaning up Verific components." + rm -rf verific + fi + } __update_openroad_app_remote() From 60fdee62bcc5783be4ad4497e084e7d904fc16dc Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Thu, 18 Dec 2025 20:46:12 +0000 Subject: [PATCH 144/364] ci: update rules for rapidus2hp w/wo Verific designs/rapidus2hp/ethmac/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | synth__design__instance__area__stdcell | 3300.0 | 3290.0 | Tighten | | cts__timing__setup__tns | -877.0 | -843.0 | Tighten | | globalroute__timing__setup__tns | -1490.0 | -1390.0 | Tighten | | finish__timing__setup__tns | -1490.0 | -1390.0 | Tighten | designs/rapidus2hp/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -596.0 | -534.0 | Tighten | | finish__timing__setup__tns | -596.0 | -534.0 | Tighten | designs/rapidus2hp/hercules_is_int/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -1420000.0 | -1410000.0 | Tighten | | finish__timing__setup__tns | -1420000.0 | -1410000.0 | Tighten | designs/rapidus2hp/cva6/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | flow__warnings__count:PDN-0110 | 213 | 12 | Tighten | | cts__timing__hold__ws | -56.2 | -113.0 | Failing | | cts__timing__hold__tns | -225.0 | -2880.0 | Failing | Signed-off-by: Vitor Bandeira --- flow/designs/rapidus2hp/cva6/rules-base.json | 26 +-- .../rapidus2hp/cva6/rules-verific.json | 161 +++++++++++++++++ .../designs/rapidus2hp/ethmac/rules-base.json | 23 +-- flow/designs/rapidus2hp/gcd/rules-base.json | 19 +- .../designs/rapidus2hp/gcd/rules-verific.json | 161 +++++++++++++++++ .../hercules_idecode/rules-base.json | 15 -- .../hercules_idecode/rules-verific.json | 166 ++++++++++++++++++ .../hercules_is_int/rules-base.json | 24 +-- .../hercules_is_int/rules-verific.json | 161 +++++++++++++++++ flow/designs/rapidus2hp/ibex/rules-base.json | 15 -- flow/designs/rapidus2hp/jpeg/rules-base.json | 15 -- .../rapidus2hp/jpeg/rules-verific.json | 151 ++++++++++++++++ 12 files changed, 821 insertions(+), 116 deletions(-) create mode 100644 flow/designs/rapidus2hp/cva6/rules-verific.json create mode 100644 flow/designs/rapidus2hp/gcd/rules-verific.json create mode 100644 flow/designs/rapidus2hp/hercules_idecode/rules-verific.json create mode 100644 flow/designs/rapidus2hp/hercules_is_int/rules-verific.json create mode 100644 flow/designs/rapidus2hp/jpeg/rules-verific.json diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index 1fff9a7342..559a3bbfd6 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -1,4 +1,9 @@ { + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -14,28 +19,13 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0279": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0280": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:GPL-0302": { "value": 1, "compare": "<=", "level": "warning" }, "flow__warnings__count:PDN-0110": { - "value": 213, + "value": 12, "compare": "<=", "level": "warning" }, @@ -126,11 +116,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -56.2, + "value": -113.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -225.0, + "value": -2880.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json new file mode 100644 index 0000000000..f89a59206d --- /dev/null +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -0,0 +1,161 @@ +{ + "cts__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 38, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 28, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0240": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0263": { + "value": 7, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "synth__design__instance__area__stdcell": { + "value": 17300.0, + "compare": "<=" + }, + "constraints__clocks__count": { + "value": 1, + "compare": "==" + }, + "placeopt__design__instance__area": { + "value": 14353, + "compare": "<=" + }, + "placeopt__design__instance__count__stdcell": { + "value": 178164, + "compare": "<=" + }, + "detailedplace__design__violations": { + "value": 0, + "compare": "==" + }, + "cts__design__instance__count__setup_buffer": { + "value": 15492, + "compare": "<=" + }, + "cts__design__instance__count__hold_buffer": { + "value": 15492, + "compare": "<=" + }, + "cts__timing__setup__ws": { + "value": -56.2, + "compare": ">=" + }, + "cts__timing__setup__tns": { + "value": -225.0, + "compare": ">=" + }, + "cts__timing__hold__ws": { + "value": -56.2, + "compare": ">=" + }, + "cts__timing__hold__tns": { + "value": -225.0, + "compare": ">=" + }, + "globalroute__antenna_diodes_count": { + "value": 150, + "compare": "<=" + }, + "globalroute__timing__setup__ws": { + "value": -56.2, + "compare": ">=" + }, + "globalroute__timing__setup__tns": { + "value": -225.0, + "compare": ">=" + }, + "globalroute__timing__hold__ws": { + "value": -57.1, + "compare": ">=" + }, + "globalroute__timing__hold__tns": { + "value": -227.0, + "compare": ">=" + }, + "finish__timing__setup__ws": { + "value": -56.2, + "compare": ">=" + }, + "finish__timing__setup__tns": { + "value": -225.0, + "compare": ">=" + }, + "finish__timing__hold__ws": { + "value": -57.1, + "compare": ">=" + }, + "finish__timing__hold__tns": { + "value": -227.0, + "compare": ">=" + }, + "finish__design__instance__area": { + "value": 14642, + "compare": "<=" + } +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 373a2ca115..418fcdc97e 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -19,21 +19,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0279": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0280": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -105,7 +90,7 @@ "level": "warning" }, "synth__design__instance__area__stdcell": { - "value": 3300.0, + "value": 3290.0, "compare": "<=" }, "constraints__clocks__count": { @@ -137,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -877.0, + "value": -843.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -157,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1490.0, + "value": -1390.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -173,7 +158,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1490.0, + "value": -1390.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index 244b27b6ba..c16903b300 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -19,21 +19,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0279": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0280": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -147,7 +132,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -596.0, + "value": -534.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -163,7 +148,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -596.0, + "value": -534.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-verific.json b/flow/designs/rapidus2hp/gcd/rules-verific.json new file mode 100644 index 0000000000..fc2cbd775b --- /dev/null +++ b/flow/designs/rapidus2hp/gcd/rules-verific.json @@ -0,0 +1,161 @@ +{ + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 20, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0240": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0263": { + "value": 7, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "synth__design__instance__area__stdcell": { + "value": 22.2, + "compare": "<=" + }, + "constraints__clocks__count": { + "value": 1, + "compare": "==" + }, + "placeopt__design__instance__area": { + "value": 33, + "compare": "<=" + }, + "placeopt__design__instance__count__stdcell": { + "value": 764, + "compare": "<=" + }, + "detailedplace__design__violations": { + "value": 0, + "compare": "==" + }, + "cts__design__instance__count__setup_buffer": { + "value": 66, + "compare": "<=" + }, + "cts__design__instance__count__hold_buffer": { + "value": 66, + "compare": "<=" + }, + "cts__timing__setup__ws": { + "value": -31.3, + "compare": ">=" + }, + "cts__timing__setup__tns": { + "value": -392.0, + "compare": ">=" + }, + "cts__timing__hold__ws": { + "value": -5.0, + "compare": ">=" + }, + "cts__timing__hold__tns": { + "value": -20.0, + "compare": ">=" + }, + "globalroute__antenna_diodes_count": { + "value": 100, + "compare": "<=" + }, + "globalroute__timing__setup__ws": { + "value": -52.5, + "compare": ">=" + }, + "globalroute__timing__setup__tns": { + "value": -851.0, + "compare": ">=" + }, + "globalroute__timing__hold__ws": { + "value": -5.0, + "compare": ">=" + }, + "globalroute__timing__hold__tns": { + "value": -20.0, + "compare": ">=" + }, + "finish__timing__setup__ws": { + "value": -52.5, + "compare": ">=" + }, + "finish__timing__setup__tns": { + "value": -851.0, + "compare": ">=" + }, + "finish__timing__hold__ws": { + "value": -5.0, + "compare": ">=" + }, + "finish__timing__hold__tns": { + "value": -20.0, + "compare": ">=" + }, + "finish__design__instance__area": { + "value": 39, + "compare": "<=" + } +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index 1d2aacbd95..aa149146d5 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -29,21 +29,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0279": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0280": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:GPL-0302": { "value": 1, "compare": "<=", diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json new file mode 100644 index 0000000000..950f75e0de --- /dev/null +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json @@ -0,0 +1,166 @@ +{ + "cts__flow__warnings__count:CTS-0041": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0240": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0263": { + "value": 7, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "synth__design__instance__area__stdcell": { + "value": 8680.0, + "compare": "<=" + }, + "constraints__clocks__count": { + "value": 1, + "compare": "==" + }, + "placeopt__design__instance__area": { + "value": 12413, + "compare": "<=" + }, + "placeopt__design__instance__count__stdcell": { + "value": 318756, + "compare": "<=" + }, + "detailedplace__design__violations": { + "value": 0, + "compare": "==" + }, + "cts__design__instance__count__setup_buffer": { + "value": 27718, + "compare": "<=" + }, + "cts__design__instance__count__hold_buffer": { + "value": 27718, + "compare": "<=" + }, + "cts__timing__setup__ws": { + "value": -240.0, + "compare": ">=" + }, + "cts__timing__setup__tns": { + "value": -1050000.0, + "compare": ">=" + }, + "cts__timing__hold__ws": { + "value": -12.5, + "compare": ">=" + }, + "cts__timing__hold__tns": { + "value": -50.0, + "compare": ">=" + }, + "globalroute__antenna_diodes_count": { + "value": 276, + "compare": "<=" + }, + "globalroute__timing__setup__ws": { + "value": -327.0, + "compare": ">=" + }, + "globalroute__timing__setup__tns": { + "value": -762000.0, + "compare": ">=" + }, + "globalroute__timing__hold__ws": { + "value": -12.7, + "compare": ">=" + }, + "globalroute__timing__hold__tns": { + "value": -50.2, + "compare": ">=" + }, + "finish__timing__setup__ws": { + "value": -327.0, + "compare": ">=" + }, + "finish__timing__setup__tns": { + "value": -762000.0, + "compare": ">=" + }, + "finish__timing__hold__ws": { + "value": -12.7, + "compare": ">=" + }, + "finish__timing__hold__tns": { + "value": -50.2, + "compare": ">=" + }, + "finish__design__instance__area": { + "value": 12694, + "compare": "<=" + } +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index f545dd4427..af179c7876 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -19,21 +19,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0279": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0280": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:GPL-0302": { "value": 1, "compare": "<=", @@ -74,6 +59,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -137,7 +127,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1420000.0, + "value": -1410000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -153,7 +143,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1420000.0, + "value": -1410000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json new file mode 100644 index 0000000000..f429a17490 --- /dev/null +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -0,0 +1,161 @@ +{ + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 13, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0240": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0263": { + "value": 7, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "synth__design__instance__area__stdcell": { + "value": 26600.0, + "compare": "<=" + }, + "constraints__clocks__count": { + "value": 1, + "compare": "==" + }, + "placeopt__design__instance__area": { + "value": 34395, + "compare": "<=" + }, + "placeopt__design__instance__count__stdcell": { + "value": 747782, + "compare": "<=" + }, + "detailedplace__design__violations": { + "value": 0, + "compare": "==" + }, + "cts__design__instance__count__setup_buffer": { + "value": 65024, + "compare": "<=" + }, + "cts__design__instance__count__hold_buffer": { + "value": 65024, + "compare": "<=" + }, + "cts__timing__setup__ws": { + "value": -460.0, + "compare": ">=" + }, + "cts__timing__setup__tns": { + "value": -3000000.0, + "compare": ">=" + }, + "cts__timing__hold__ws": { + "value": -12.5, + "compare": ">=" + }, + "cts__timing__hold__tns": { + "value": -50.0, + "compare": ">=" + }, + "globalroute__antenna_diodes_count": { + "value": 651, + "compare": "<=" + }, + "globalroute__timing__setup__ws": { + "value": -153.0, + "compare": ">=" + }, + "globalroute__timing__setup__tns": { + "value": -1380000.0, + "compare": ">=" + }, + "globalroute__timing__hold__ws": { + "value": -12.5, + "compare": ">=" + }, + "globalroute__timing__hold__tns": { + "value": -50.0, + "compare": ">=" + }, + "finish__timing__setup__ws": { + "value": -153.0, + "compare": ">=" + }, + "finish__timing__setup__tns": { + "value": -1380000.0, + "compare": ">=" + }, + "finish__timing__hold__ws": { + "value": -12.5, + "compare": ">=" + }, + "finish__timing__hold__tns": { + "value": -50.0, + "compare": ">=" + }, + "finish__design__instance__area": { + "value": 35450, + "compare": "<=" + } +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 2cc1229889..cb2216ccf0 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -14,21 +14,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0279": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0280": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:GPL-0302": { "value": 1, "compare": "<=", diff --git a/flow/designs/rapidus2hp/jpeg/rules-base.json b/flow/designs/rapidus2hp/jpeg/rules-base.json index 8ec4a00835..c751e60b02 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-base.json +++ b/flow/designs/rapidus2hp/jpeg/rules-base.json @@ -14,21 +14,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0279": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0280": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:GPL-0302": { "value": 1, "compare": "<=", diff --git a/flow/designs/rapidus2hp/jpeg/rules-verific.json b/flow/designs/rapidus2hp/jpeg/rules-verific.json new file mode 100644 index 0000000000..81d98f12a6 --- /dev/null +++ b/flow/designs/rapidus2hp/jpeg/rules-verific.json @@ -0,0 +1,151 @@ +{ + "cts__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0240": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0263": { + "value": 7, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "synth__design__instance__area__stdcell": { + "value": 3300.0, + "compare": "<=" + }, + "constraints__clocks__count": { + "value": 1, + "compare": "==" + }, + "placeopt__design__instance__area": { + "value": 3378, + "compare": "<=" + }, + "placeopt__design__instance__count__stdcell": { + "value": 99438, + "compare": "<=" + }, + "detailedplace__design__violations": { + "value": 0, + "compare": "==" + }, + "cts__design__instance__count__setup_buffer": { + "value": 8647, + "compare": "<=" + }, + "cts__design__instance__count__hold_buffer": { + "value": 8647, + "compare": "<=" + }, + "cts__timing__setup__ws": { + "value": -21.2, + "compare": ">=" + }, + "cts__timing__setup__tns": { + "value": -85.0, + "compare": ">=" + }, + "cts__timing__hold__ws": { + "value": -21.2, + "compare": ">=" + }, + "cts__timing__hold__tns": { + "value": -85.0, + "compare": ">=" + }, + "globalroute__antenna_diodes_count": { + "value": 100, + "compare": "<=" + }, + "globalroute__timing__setup__ws": { + "value": -21.2, + "compare": ">=" + }, + "globalroute__timing__setup__tns": { + "value": -85.0, + "compare": ">=" + }, + "globalroute__timing__hold__ws": { + "value": -21.2, + "compare": ">=" + }, + "globalroute__timing__hold__tns": { + "value": -85.0, + "compare": ">=" + }, + "finish__timing__setup__ws": { + "value": -21.2, + "compare": ">=" + }, + "finish__timing__setup__tns": { + "value": -85.0, + "compare": ">=" + }, + "finish__timing__hold__ws": { + "value": -21.2, + "compare": ">=" + }, + "finish__timing__hold__tns": { + "value": -85.0, + "compare": ">=" + }, + "finish__design__instance__area": { + "value": 3474, + "compare": "<=" + } +} \ No newline at end of file From 342cdcdc85e123fff63aa995ddc89f80cf568acb Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sun, 21 Dec 2025 07:12:18 +0000 Subject: [PATCH 145/364] Minor metrics updates for failing designs designs/gf180/aes-hybrid/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -152.0 | -147.0 | Tighten | | globalroute__timing__setup__tns | -164.0 | -159.0 | Tighten | | detailedroute__timing__setup__tns | -74.9 | -76.8 | Failing | | finish__timing__setup__tns | -160.0 | -156.0 | Tighten | designs/gf180/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__tns | -133.0 | -141.0 | Failing | designs/gf180/jpeg/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__route__wirelength | 2803717 | 2728428 | Tighten | | detailedroute__antenna__violating__nets | 0 | 1 | Failing | designs/rapidus2hp/hercules_is_int/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -1410000.0 | -1420000.0 | Failing | | finish__timing__setup__tns | -1410000.0 | -1420000.0 | Failing | designs/gf12/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__ws | -133.0 | -75.0 | Tighten | | cts__timing__hold__tns | -379.0 | -300.0 | Tighten | | detailedroute__route__wirelength | 2547385 | 2535684 | Tighten | | detailedroute__route__drc_errors | 6 | 0 | Tighten | | detailedroute__timing__hold__tns | -50700.0 | -51500.0 | Failing | Signed-off-by: Matt Liberty --- .../gf12/swerv_wrapper/rules-base.json | 30 ++------ flow/designs/gf180/aes-hybrid/rules-base.json | 58 +++++++++++++-- flow/designs/gf180/ibex/rules-base.json | 72 ++++++++++++++++++- flow/designs/gf180/jpeg/rules-base.json | 49 ++++++++++++- .../hercules_is_int/rules-base.json | 9 +-- 5 files changed, 179 insertions(+), 39 deletions(-) diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index c0531faeca..f9052efafa 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -4,11 +4,6 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "detailedroute__flow__warnings__count:DRT-0120": { "value": 3, "compare": "<=", @@ -29,21 +24,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:PDN-1031": { "value": 2, "compare": "<=", @@ -136,11 +116,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -133.0, + "value": -75.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -379.0, + "value": -300.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -164,11 +144,11 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2547385, + "value": 2535684, "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 6, + "value": 0, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -192,7 +172,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -50700.0, + "value": -51500.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 3f04e08c43..f20254530b 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 489779.41376, "compare": "<=" @@ -32,7 +82,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -152.0, + "value": -147.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -164.0, + "value": -159.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +134,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -74.9, + "value": -76.8, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -160.0, + "value": -156.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 4d2adb06ba..9f4563de48 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -1,4 +1,74 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 12, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 6, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 717000.0, "compare": "<=" @@ -100,7 +170,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -133.0, + "value": -141.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index c7b36b7de5..d43bec82d9 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -1,4 +1,49 @@ { + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 264, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 44, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 2161429.49, "compare": "<=" @@ -64,7 +109,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2803717, + "value": 2728428, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -72,7 +117,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index af179c7876..6524600975 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -59,11 +59,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -127,7 +122,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1410000.0, + "value": -1420000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -143,7 +138,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1410000.0, + "value": -1420000.0, "compare": ">=" }, "finish__timing__hold__ws": { From 67c6473e25987ad019170df7f1802e9ea16f05f2 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sun, 21 Dec 2025 16:55:56 +0000 Subject: [PATCH 146/364] update OR Signed-off-by: Matt Liberty --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 9c92944135..86b9236cdd 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 9c92944135151d90bbb43fce40999a712b7aad36 +Subproject commit 86b9236cdd564adea819b0d595cf871bc92c4f9d From 45090d36f6f149a40f66275049a59fec2c4674b7 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sun, 21 Dec 2025 21:57:57 +0000 Subject: [PATCH 147/364] update OR to rsz-improved-slew-fixing Signed-off-by: Matt Liberty --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 86b9236cdd..154f14ab7e 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 86b9236cdd564adea819b0d595cf871bc92c4f9d +Subproject commit 154f14ab7e18a2e29c329c025c749578ef3711d5 From 7818a104c2346f0eac63e8eb3b5d5a98a2d767df Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sun, 21 Dec 2025 23:49:20 +0000 Subject: [PATCH 148/364] Update tclfmt to 0.7.0 Signed-off-by: Matt Liberty --- .github/workflows/github-actions-lint-tcl.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/github-actions-lint-tcl.yml b/.github/workflows/github-actions-lint-tcl.yml index 8371f2a913..1123134167 100644 --- a/.github/workflows/github-actions-lint-tcl.yml +++ b/.github/workflows/github-actions-lint-tcl.yml @@ -9,7 +9,7 @@ on: - master jobs: - build: + Tclint: runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }} steps: - name: Checkout repository @@ -18,7 +18,7 @@ jobs: - name: Install Dependencies run: | python3 -m venv venv - venv/bin/pip install tclint==0.4.2 + venv/bin/pip install tclint==0.7.0 - name: Lint run: | @@ -26,4 +26,4 @@ jobs: tclfmt --version tclfmt --in-place . git diff --exit-code - tclint --no-check-style . + tclint . From 7dcd56fc56c76ce90d7ac7f7aefa92b5ada6448e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Mon, 22 Dec 2025 11:17:43 +0100 Subject: [PATCH 149/364] Remove unfixable load on design's inner block MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Povišer --- .../ihp-sg13g2/i2c-gpio-expander/I2cDeviceCtrl/constraint.sdc | 2 -- 1 file changed, 2 deletions(-) diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/I2cDeviceCtrl/constraint.sdc b/flow/designs/ihp-sg13g2/i2c-gpio-expander/I2cDeviceCtrl/constraint.sdc index 95787b8df0..b86c899166 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/I2cDeviceCtrl/constraint.sdc +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/I2cDeviceCtrl/constraint.sdc @@ -16,7 +16,5 @@ set all_inputs_wo_clk_rst_clock [lreplace [all_inputs] $clk_indx_clock $clk_indx set_input_delay $input_delay_value_clock -clock [get_clocks clock] $all_inputs_wo_clk_rst_clock set_output_delay $output_delay_value_clock -clock [get_clocks clock] [all_outputs] -set_load -pin_load 5 [all_inputs] -set_load -pin_load 5 [all_outputs] set_timing_derate -early 0.95 set_timing_derate -late 1.05 From 0b0a13becb62b15bb70e7700a49e2f35089bfc41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Mon, 22 Dec 2025 17:15:20 +0000 Subject: [PATCH 150/364] Update private design metrics for OR change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit designs/gf12/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -481.0 | -1020.0 | Failing | | finish__timing__setup__tns | -161 | -435.0 | Failing | designs/gf12/bp_single/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__ws | -313.0 | -251.0 | Tighten | | cts__timing__hold__tns | -613.0 | -1660.0 | Failing | | globalroute__timing__hold__ws | -327.0 | -253.0 | Tighten | | detailedroute__timing__setup__tns | -1460.0 | -1410.0 | Tighten | | detailedroute__timing__hold__tns | -998.0 | -1550.0 | Failing | | finish__timing__setup__tns | -822.0 | -557.0 | Tighten | designs/gf12/ca53/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__flow__warnings__count:STA-1648 | 276 | 260 | Tighten | | cts__timing__setup__ws | -206.0 | -447.0 | Failing | | cts__timing__setup__tns | -890.0 | -10900.0 | Failing | | globalroute__timing__setup__ws | -100.0 | -377.0 | Failing | | globalroute__timing__setup__tns | -100.0 | -6480.0 | Failing | | globalroute__timing__hold__tns | -935.0 | -1660.0 | Failing | | detailedroute__timing__hold__tns | -60800.0 | -95400.0 | Failing | | finish__timing__setup__ws | -100.0 | -239.0 | Failing | | finish__timing__setup__tns | -100.0 | -1450.0 | Failing | designs/rapidus2hp/ethmac/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -35.9 | -44.1 | Failing | | globalroute__timing__setup__ws | -44.9 | -56.2 | Failing | | globalroute__timing__setup__tns | -1390.0 | -1700.0 | Failing | | finish__timing__setup__ws | -44.9 | -56.2 | Failing | | finish__timing__setup__tns | -1390.0 | -1700.0 | Failing | designs/rapidus2hp/hercules_idecode/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__flow__warnings__count:CTS-0041 | 5 | 6 | Failing | | placeopt__design__instance__area | 12484 | 12438 | Tighten | | cts__timing__setup__ws | -273.0 | -247.0 | Tighten | | cts__timing__setup__tns | -1050000.0 | -959000.0 | Tighten | | globalroute__timing__setup__ws | -150.0 | -164.0 | Failing | | finish__timing__setup__ws | -150.0 | -164.0 | Failing | | finish__design__instance__area | 12763 | 12718 | Tighten | designs/rapidus2hp/hercules_is_int/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -308.0 | -361.0 | Failing | | cts__timing__setup__tns | -3310000.0 | -3190000.0 | Tighten | | globalroute__timing__setup__ws | -166.0 | -164.0 | Tighten | | globalroute__timing__setup__tns | -1420000.0 | -1290000.0 | Tighten | | finish__timing__setup__ws | -166.0 | -164.0 | Tighten | | finish__timing__setup__tns | -1420000.0 | -1290000.0 | Tighten | Signed-off-by: Martin Povišer --- flow/designs/gf12/bp_single/rules-base.json | 27 +++--------- flow/designs/gf12/ca53/rules-base.json | 43 ++++--------------- flow/designs/gf12/gcd/rules-base.json | 19 +------- .../designs/rapidus2hp/ethmac/rules-base.json | 10 ++--- .../hercules_idecode/rules-base.json | 14 +++--- .../hercules_is_int/rules-base.json | 17 +++++--- 6 files changed, 40 insertions(+), 90 deletions(-) diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index fa22a123e7..06fbcf8889 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -54,21 +54,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -211,11 +196,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -313.0, + "value": -251.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -613.0, + "value": -1660.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -231,7 +216,7 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -327.0, + "value": -253.0, "compare": ">=" }, "globalroute__timing__hold__tns": { @@ -259,7 +244,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1460.0, + "value": -1410.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -267,7 +252,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -998.0, + "value": -1550.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -275,7 +260,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -822.0, + "value": -557.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 8982b435ec..41e1c70714 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -25,7 +25,7 @@ "level": "warning" }, "finish__flow__warnings__count:STA-1648": { - "value": 276, + "value": 260, "compare": "<=", "level": "warning" }, @@ -44,31 +44,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0186": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-0345": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:PDN-1031": { "value": 2, "compare": "<=", @@ -144,11 +119,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -206.0, + "value": -447.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -890.0, + "value": -10900.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -164,11 +139,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -100.0, + "value": -377.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -100.0, + "value": -6480.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -176,7 +151,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -935.0, + "value": -1660.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -208,15 +183,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -60800.0, + "value": -95400.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -100.0, + "value": -239.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -100.0, + "value": -1450.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/gcd/rules-base.json b/flow/designs/gf12/gcd/rules-base.json index 330f82b027..747ca462cc 100644 --- a/flow/designs/gf12/gcd/rules-base.json +++ b/flow/designs/gf12/gcd/rules-base.json @@ -19,21 +19,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:RSZ-0075": { "value": 1, "compare": "<=", @@ -132,7 +117,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -481.0, + "value": -1020.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -180,7 +165,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -161, + "value": -435.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 418fcdc97e..fd9e4ee2ed 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -118,7 +118,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -35.9, + "value": -44.1, "compare": ">=" }, "cts__timing__setup__tns": { @@ -138,11 +138,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -44.9, + "value": -56.2, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1390.0, + "value": -1700.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -154,11 +154,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -44.9, + "value": -56.2, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1390.0, + "value": -1700.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index aa149146d5..bc8c34fb35 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -1,6 +1,6 @@ { "cts__flow__warnings__count:CTS-0041": { - "value": 5, + "value": 6, "compare": "<=", "level": "warning" }, @@ -98,7 +98,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 12484, + "value": 12438, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -118,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -273.0, + "value": -247.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1050000.0, + "value": -959000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -138,7 +138,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -150.0, + "value": -164.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -154,7 +154,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -150.0, + "value": -164.0, "compare": ">=" }, "finish__timing__setup__tns": { @@ -170,7 +170,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 12763, + "value": 12718, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 6524600975..8da2856516 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -1,4 +1,9 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -98,11 +103,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -308.0, + "value": -361.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -3310000.0, + "value": -3190000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -118,11 +123,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -166.0, + "value": -164.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1420000.0, + "value": -1290000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,11 +139,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -166.0, + "value": -164.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1420000.0, + "value": -1290000.0, "compare": ">=" }, "finish__timing__hold__ws": { From c6bd530fa0115cbdf434911a0676799983dcf866 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 22 Dec 2025 12:25:46 +0000 Subject: [PATCH 151/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes_lvt/rules-base.json | 4 +- flow/designs/asap7/ethmac/rules-base.json | 107 +----------------- flow/designs/asap7/jpeg_lvt/rules-base.json | 2 +- flow/designs/asap7/mock-alu/rules-base.json | 6 +- .../asap7/riscv32i-mock-sram/rules-base.json | 94 +-------------- .../asap7/swerv_wrapper/rules-base.json | 4 +- flow/designs/gf180/aes-hybrid/rules-base.json | 58 +--------- flow/designs/gf180/aes/rules-base.json | 2 +- flow/designs/gf180/ibex/rules-base.json | 72 +----------- flow/designs/gf180/jpeg/rules-base.json | 45 -------- flow/designs/ihp-sg13g2/ibex/rules-base.json | 30 ----- flow/designs/nangate45/aes/rules-base.json | 6 +- .../nangate45/ariane133/rules-base.json | 81 +------------ .../nangate45/black_parrot/rules-base.json | 2 +- .../nangate45/bp_multi_top/rules-base.json | 2 +- .../nangate45/dynamic_node/rules-base.json | 4 +- flow/designs/nangate45/gcd/rules-base.json | 4 +- flow/designs/nangate45/jpeg/rules-base.json | 8 +- .../nangate45/mempool_group/rules-base.json | 4 +- flow/designs/nangate45/swerv/rules-base.json | 2 +- .../nangate45/swerv_wrapper/rules-base.json | 4 +- .../nangate45/tinyRocket/rules-base.json | 45 -------- .../sky130hd/microwatt/rules-base.json | 10 +- flow/designs/sky130hs/aes/rules-base.json | 2 +- flow/designs/sky130hs/gcd/rules-base.json | 4 +- 25 files changed, 46 insertions(+), 556 deletions(-) diff --git a/flow/designs/asap7/aes_lvt/rules-base.json b/flow/designs/asap7/aes_lvt/rules-base.json index 96354b8561..53f335a2a9 100644 --- a/flow/designs/asap7/aes_lvt/rules-base.json +++ b/flow/designs/asap7/aes_lvt/rules-base.json @@ -96,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -18.0, + "value": -45.1, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -72.0, + "value": -182.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 0265a91fed..0aa7cc31d5 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -1,109 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8450.0, "compare": "<=" @@ -205,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3120.0, + "value": -3180.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/jpeg_lvt/rules-base.json b/flow/designs/asap7/jpeg_lvt/rules-base.json index c122ecacbe..41dea41ef0 100644 --- a/flow/designs/asap7/jpeg_lvt/rules-base.json +++ b/flow/designs/asap7/jpeg_lvt/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -120.0, + "value": -546.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index d8cb7d1244..5ffcd9cd1d 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19400.0, + "value": -20300.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -11800.0, + "value": -12200.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17100.0, + "value": -18100.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 7b40c5f2e6..677d8bc582 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1640.0, "compare": "<=" @@ -142,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -6010.0, + "value": -35500.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -190,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1420.0, + "value": -18100.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index ccd53bc063..2909448b97 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -104,11 +104,11 @@ "compare": ">=" }, "finish__timing__hold__ws": { - "value": -285.0, + "value": -374.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -75300.0, + "value": -76000.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index f20254530b..cdc219fdc1 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 489779.41376, "compare": "<=" @@ -82,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -147.0, + "value": -155.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -102,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -159.0, + "value": -171.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -76.8, + "value": -79.5, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -150,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -156.0, + "value": -165.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index 2a2d0fd951..17d920134b 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -109.0, + "value": -110.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 9f4563de48..618fb35b38 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -1,74 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 717000.0, "compare": "<=" @@ -102,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -92.4, + "value": -106.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index d43bec82d9..0860d1527f 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -1,49 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 264, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 44, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2161429.49, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index 4ec25c1c73..05ea391b1e 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -1,34 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 305820.24, "compare": "<=" diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index 22a829be3a..c23364c45d 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.164, + "value": -0.645, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.79, + "value": -2.26, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.621, + "value": -1.21, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index fa619aa61b..942b5d5648 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -1,79 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 13, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 13, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 825864.85, "compare": "<=" @@ -107,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -190.0, + "value": -222.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -127,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -292.0, + "value": -378.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -175,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -304.0, + "value": -391.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index 1aea24bdeb..ed213682c5 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -2.67, + "value": -2.99, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index 4fa74db395..f1fc828518 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4162196, + "value": 4870472, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 0811328a9c..a2e7e0e2d0 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1.79, + "value": -6.87, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.75, + "value": -5.15, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index e060e02d51..dbacd8e38f 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.66, + "value": -1.43, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.57, + "value": -1.12, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 9591abc6fc..931c090df1 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -38.4, + "value": -40.9, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -46.5, + "value": -53.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -6.54, + "value": -7.59, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -35.7, + "value": -43.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 7b6080b8b2..a69984efe5 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10500.0, + "value": -10800.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7660.0, + "value": -7700.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index a56ae6fc62..7456d96266 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.908, + "value": -2.83, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index ceb402dff8..ab8cf07f42 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -104.0, + "value": -108.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -4.08, + "value": -9.48, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 76baa80310..1e55b891c9 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index ae4bb3eeda..3ff578e288 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -412.0, + "value": -456.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -427.0, + "value": -452.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -162.0, + "value": -171.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -622.0, + "value": -654.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -425.0, + "value": -430.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index 6e9677ed1d..829de0c050 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.206, + "value": -0.351, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index ea6db7c352..dde21e30fe 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -8.48, + "value": -8.86, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -15.5, + "value": -16.3, "compare": ">=" }, "finish__timing__hold__ws": { From 23cbbf1c0c88ce91458da97742235fbe96c5396b Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Tue, 23 Dec 2025 03:23:00 +0000 Subject: [PATCH 152/364] Added LAYER_PARASITICS_FILE flow variable for setRC.tcl Signed-off-by: Jeff Ng --- docs/user/FlowVariables.md | 2 ++ flow/scripts/floorplan_to_place.tcl | 6 +++++- flow/scripts/load.tcl | 6 +++++- flow/scripts/open.tcl | 6 +++++- flow/scripts/variables.yaml | 4 ++++ 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 6a2b94ccfd..f66856a2a4 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -159,6 +159,7 @@ configuration file. | IR_DROP_LAYER| Default metal layer to report IR drop.| | | KLAYOUT_TECH_FILE| A mapping from LEF/DEF to GDS using the KLayout tool.| | | LATCH_MAP_FILE| Optional mapping file supplied to Yosys to map latches| | +| LAYER_PARASITICS_FILE| Path to per layer parasitics file. Defaults to $(PLATFORM_DIR)/setRC.tcl.| | | LIB_FILES| A Liberty file of the standard cell library with PVT characterization, input and output characteristics, timing and power definitions for each cell.| | | MACRO_BLOCKAGE_HALO| Distance beyond the edges of a macro that will also be covered by the blockage generated for that macro. Note that the default macro blockage halo comes from the largest of the specified MACRO_PLACE_HALO x or y values. This variable overrides that calculation.| | | MACRO_EXTENSION| Sets the number of GCells added to the blockages boundaries from macros.| | @@ -518,6 +519,7 @@ configuration file. - [GUI_TIMING](#GUI_TIMING) - [IR_DROP_LAYER](#IR_DROP_LAYER) - [KLAYOUT_TECH_FILE](#KLAYOUT_TECH_FILE) +- [LAYER_PARASITICS_FILE](#LAYER_PARASITICS_FILE) - [LIB_FILES](#LIB_FILES) - [MACRO_EXTENSION](#MACRO_EXTENSION) - [PLATFORM](#PLATFORM) diff --git a/flow/scripts/floorplan_to_place.tcl b/flow/scripts/floorplan_to_place.tcl index 4854a88696..8d43ba6d68 100644 --- a/flow/scripts/floorplan_to_place.tcl +++ b/flow/scripts/floorplan_to_place.tcl @@ -321,7 +321,11 @@ write_db $::env(RESULTS_DIR)/3_4_place_resized.odb # Detailed placement utl::set_metrics_stage "detailedplace__{}" -source $::env(PLATFORM_DIR)/setRC.tcl +if { [env_var_exists_and_non_empty LAYER_PARASITICS_FILE] } { + log_cmd source $::env(LAYER_PARASITICS_FILE) +} else { + log_cmd source $::env(PLATFORM_DIR)/setRC.tcl +} proc do_dpl { } { # Only for use with hybrid rows diff --git a/flow/scripts/load.tcl b/flow/scripts/load.tcl index 02621b4a56..9e831b7312 100644 --- a/flow/scripts/load.tcl +++ b/flow/scripts/load.tcl @@ -32,7 +32,11 @@ proc load_design { design_file sdc_file } { log_cmd source $::env(PLATFORM_DIR)/derate.tcl } - source $::env(PLATFORM_DIR)/setRC.tcl + if { [env_var_exists_and_non_empty LAYER_PARASITICS_FILE] } { + log_cmd source $::env(LAYER_PARASITICS_FILE) + } else { + log_cmd source $::env(PLATFORM_DIR)/setRC.tcl + } if { [env_var_equals LIB_MODEL CCS] } { puts "Using CCS delay calculation" diff --git a/flow/scripts/open.tcl b/flow/scripts/open.tcl index 28f1295062..199300a814 100644 --- a/flow/scripts/open.tcl +++ b/flow/scripts/open.tcl @@ -34,7 +34,11 @@ proc read_timing { input_file } { source $::env(PLATFORM_DIR)/derate.tcl } - source $::env(PLATFORM_DIR)/setRC.tcl + if { [env_var_exists_and_non_empty LAYER_PARASITICS_FILE] } { + log_cmd source $::env(LAYER_PARASITICS_FILE) + } else { + log_cmd source $::env(PLATFORM_DIR)/setRC.tcl + } if { $design_stage >= 4 } { # CTS has run, so propagate clocks set_propagated_clock [all_clocks] diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 10e0c6da96..d0a6f6fa46 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -429,6 +429,10 @@ PLACE_SITE: - floorplan type: string tunable: 1 +LAYER_PARASITICS_FILE: + description: | + Path to per layer parasitics file. Defaults to $(PLATFORM_DIR)/setRC.tcl. + type: string TAPCELL_TCL: description: | Path to Endcap and Welltie cells file. From 027a786db9cb82a860e3bc7fcde250470909f00d Mon Sep 17 00:00:00 2001 From: Noam Cohen Date: Tue, 23 Dec 2025 06:44:55 +0100 Subject: [PATCH 153/364] LEC check Signed-off-by: Noam Cohen --- .gitmodules | 3 +++ build_openroad.sh | 29 ++++++++++++++++++++++++++++- etc/DependencyInstaller.sh | 7 +++++-- flow/scripts/cts.tcl | 6 ++++++ flow/scripts/load.tcl | 37 +++++++++++++++++++++++++++++++++++++ tools/kepler-formal | 1 + 6 files changed, 80 insertions(+), 3 deletions(-) create mode 160000 tools/kepler-formal diff --git a/.gitmodules b/.gitmodules index ec90369ba8..32bdbc7301 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "tools/yosys-slang"] path = tools/yosys-slang url = https://github.com/povik/yosys-slang.git +[submodule "tools/kepler-formal"] + path = tools/kepler-formal + url = https://github.com/keplertech/kepler-formal diff --git a/build_openroad.sh b/build_openroad.sh index 0394f00999..4a1ddf72e1 100755 --- a/build_openroad.sh +++ b/build_openroad.sh @@ -291,11 +291,38 @@ __local_build() # CMAKE_FLAGS added to work around yosys-slang#141 (unable to build outside of git checkout) ${NICE} make install -C tools/yosys-slang -j "${PROC}" YOSYS_PREFIX="${INSTALL_PATH}/yosys/bin/" CMAKE_FLAGS="-DYOSYS_SLANG_REVISION=unknown -DSLANG_REVISION=unknown" + echo "[INFO FLW-0031] Compiling kepler-formal" + cd tools/kepler-formal + git submodule update --init --recursive + + # if build dir does not exist, create it + if [ ! -d build ]; then + mkdir build + fi + + cd build + + if [[ "$OSTYPE" == "darwin"* ]]; then + cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ + -DCMAKE_EXE_LINKER_FLAGS="-flto" \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ + -DCMAKE_INSTALL_RPATH=@executable_path/../lib + else + cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ + -DCMAKE_EXE_LINKER_FLAGS="-flto" \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ + -DCMAKE_INSTALL_RPATH=\$ORIGIN/../lib + fi + make -j4 install + cd ../../../ if [ ${WITH_VERIFIC} -eq 1 ]; then echo "[INFO FLW-0032] Cleaning up Verific components." rm -rf verific fi - } __update_openroad_app_remote() diff --git a/etc/DependencyInstaller.sh b/etc/DependencyInstaller.sh index 97975ed322..a3d2af1f8a 100755 --- a/etc/DependencyInstaller.sh +++ b/etc/DependencyInstaller.sh @@ -286,7 +286,7 @@ _installUbuntuPackages() { _installDarwinPackages() { brew install libffi tcl-tk ruby - brew install python libomp + brew install python libomp doxygen capnp tbb bison flex boost spdlog zlib brew link --force libomp brew install --cask klayout brew install docker docker-buildx @@ -300,7 +300,10 @@ _installCI() { coreutils \ curl \ python3 \ - software-properties-common + software-properties-common \ + clang pkg-config \ + libboost-dev libfl-dev libtbb-dev capnproto libcapnp-dev \ + libgtest-dev libspdlog-dev libfmt-dev libboost-iostreams-dev zlib1g-dev } _help() { diff --git a/flow/scripts/cts.tcl b/flow/scripts/cts.tcl index e281f4b594..6fa9e8f36f 100644 --- a/flow/scripts/cts.tcl +++ b/flow/scripts/cts.tcl @@ -60,12 +60,18 @@ if { !$::env(SKIP_CTS_REPAIR_TIMING) } { if { $::env(EQUIVALENCE_CHECK) } { write_eqy_verilog 4_before_rsz.v } + if { [env_var_exists_and_non_empty LEC_CHECK] } { + write_lec_verilog 4_before_rsz_lec.v + } repair_timing_helper if { $::env(EQUIVALENCE_CHECK) } { run_equivalence_test } + if { [env_var_exists_and_non_empty LEC_CHECK] } { + run_lec_test + } set result [catch { detailed_placement } msg] if { $result != 0 } { diff --git a/flow/scripts/load.tcl b/flow/scripts/load.tcl index 02621b4a56..388875f2a8 100644 --- a/flow/scripts/load.tcl +++ b/flow/scripts/load.tcl @@ -106,3 +106,40 @@ proc run_equivalence_test { } { puts "Repair timing output passed equivalence test" } } + +proc write_lec_verilog { filename } { + if { [env_var_exists_and_non_empty REMOVE_CELLS_FOR_EQY] } { + write_verilog -remove_cells $::env(REMOVE_CELLS_FOR_EQY) $::env(RESULTS_DIR)/$filename + } else { + write_verilog $::env(RESULTS_DIR)/$filename + } +} + +proc write_lec_script { } { + set outfile [open "$::env(OBJECTS_DIR)/4_lec_test.yml" w] + puts $outfile "format: verilog" + puts $outfile "input_paths:" + puts $outfile " - $::env(RESULTS_DIR)/4_before_rsz_lec.v" + puts $outfile " - $::env(RESULTS_DIR)/4_after_rsz_lec.v" + # Gold netlist + puts $outfile "liberty_files:" + foreach libFile $::env(LIB_FILES) { + puts $outfile " - $libFile" + } + puts $outfile "log_file: $::env(LOG_DIR)/4_lec_check.log" + close $outfile +} + +proc run_lec_test { } { + write_lec_verilog 4_after_rsz_lec.v + write_lec_script + # tclint-disable-next-line command-args + eval exec kepler-formal --config $::env(OBJECTS_DIR)/4_lec_test.yml + set count \ + [exec grep -c "Found difference" $::env(LOG_DIR)/4_lec_check.log] + if { $count > 0 } { + error "Repair timing output failed lec test" + } else { + puts "Repair timing output passed lec test" + } +} diff --git a/tools/kepler-formal b/tools/kepler-formal new file mode 160000 index 0000000000..5a48eaaab2 --- /dev/null +++ b/tools/kepler-formal @@ -0,0 +1 @@ +Subproject commit 5a48eaaab275602f72f0a7bce0b53204f59f6ec1 From 4e6298cd4344bd3cd65ce4b276f414f39b336f8d Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Tue, 23 Dec 2025 15:24:06 +0000 Subject: [PATCH 154/364] rapidus2hp: add FLOW_VARIANT for verific Signed-off-by: Vitor Bandeira --- flow/designs/rapidus2hp/cva6/config.mk | 4 ++++ flow/designs/rapidus2hp/ethmac/config.mk | 4 ++++ flow/designs/rapidus2hp/gcd/config.mk | 4 ++++ flow/designs/rapidus2hp/hercules_idecode/config.mk | 4 ++++ flow/designs/rapidus2hp/hercules_is_int/config.mk | 4 ++++ flow/designs/rapidus2hp/ibex/config.mk | 4 ++++ flow/designs/rapidus2hp/jpeg/config.mk | 4 ++++ 7 files changed, 28 insertions(+) diff --git a/flow/designs/rapidus2hp/cva6/config.mk b/flow/designs/rapidus2hp/cva6/config.mk index 69447e1687..d9aa828573 100644 --- a/flow/designs/rapidus2hp/cva6/config.mk +++ b/flow/designs/rapidus2hp/cva6/config.mk @@ -2,6 +2,10 @@ export PLATFORM = rapidus2hp export DESIGN_NAME = cva6 +ifeq ($(FLOW_VARIANT), verific) + export SYNTH_HDL_FRONTEND = verific +endif + # Some files are listed specifically vs. sorted wilcard to control the order (makes Verific happy) export SRC_HOME = $(DESIGN_HOME)/src/$(DESIGN_NICKNAME) export VERILOG_FILES = $(sort $(wildcard $(SRC_HOME)/common/local/util/*.sv)) \ diff --git a/flow/designs/rapidus2hp/ethmac/config.mk b/flow/designs/rapidus2hp/ethmac/config.mk index 1aae962a76..cd166bfeb7 100644 --- a/flow/designs/rapidus2hp/ethmac/config.mk +++ b/flow/designs/rapidus2hp/ethmac/config.mk @@ -2,6 +2,10 @@ export PLATFORM = rapidus2hp export DESIGN_NAME = ethmac +ifeq ($(FLOW_VARIANT), verific) + export SYNTH_HDL_FRONTEND = verific +endif + export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/*.v)) export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc export ABC_AREA = 1 diff --git a/flow/designs/rapidus2hp/gcd/config.mk b/flow/designs/rapidus2hp/gcd/config.mk index f2ee098a1c..87d034ccb4 100644 --- a/flow/designs/rapidus2hp/gcd/config.mk +++ b/flow/designs/rapidus2hp/gcd/config.mk @@ -2,6 +2,10 @@ export DESIGN_NICKNAME = gcd export DESIGN_NAME = gcd export PLATFORM = rapidus2hp +ifeq ($(FLOW_VARIANT), verific) + export SYNTH_HDL_FRONTEND = verific +endif + export VERILOG_FILES = $(DESIGN_HOME)/src/$(DESIGN_NAME)/gcd.v export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constraint.sdc diff --git a/flow/designs/rapidus2hp/hercules_idecode/config.mk b/flow/designs/rapidus2hp/hercules_idecode/config.mk index 7d7c396680..56261bd614 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/config.mk +++ b/flow/designs/rapidus2hp/hercules_idecode/config.mk @@ -2,6 +2,10 @@ export PLATFORM = rapidus2hp export DESIGN_NAME = hercules_idecode +ifeq ($(FLOW_VARIANT), verific) + export SYNTH_HDL_FRONTEND = verific +endif + export SRC_HOME = /platforms/Rapidus/designs/hercules_idecode export VERILOG_FILES = $(sort $(wildcard $(SRC_HOME)/hercules_idecode/verilog/*.sv)) \ $(sort $(wildcard $(SRC_HOME)/shared/verilog/*.sv)) \ diff --git a/flow/designs/rapidus2hp/hercules_is_int/config.mk b/flow/designs/rapidus2hp/hercules_is_int/config.mk index 6f50ed2160..927efd21e6 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/config.mk +++ b/flow/designs/rapidus2hp/hercules_is_int/config.mk @@ -8,6 +8,10 @@ ifeq ($(FLOW_VARIANT), gatelevel) export SYNTH_NETLIST_FILES = $(SRC_HOME)/ca78_8t_postroute_0707.v endif +ifeq ($(FLOW_VARIANT), verific) + export SYNTH_HDL_FRONTEND = verific +endif + export VERILOG_FILES = $(sort $(wildcard $(SRC_HOME)/hercules_issue/verilog/*.sv)) \ $(sort $(wildcard $(SRC_HOME)/shared/verilog/*.sv)) \ $(sort $(wildcard $(SRC_HOME)/models/cells/generic/*.sv)) diff --git a/flow/designs/rapidus2hp/ibex/config.mk b/flow/designs/rapidus2hp/ibex/config.mk index 6aaa7a6122..d3014bd146 100644 --- a/flow/designs/rapidus2hp/ibex/config.mk +++ b/flow/designs/rapidus2hp/ibex/config.mk @@ -3,6 +3,10 @@ export PLATFORM = rapidus2hp export DESIGN_NICKNAME = ibex export DESIGN_NAME = ibex_core +ifeq ($(FLOW_VARIANT), verific) + export SYNTH_HDL_FRONTEND = verific +endif + export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/ibex_sv/*.sv)) \ $(DESIGN_HOME)/src/ibex_sv/syn/rtl/prim_clock_gating.v diff --git a/flow/designs/rapidus2hp/jpeg/config.mk b/flow/designs/rapidus2hp/jpeg/config.mk index e270e5c3a6..20bd60f512 100644 --- a/flow/designs/rapidus2hp/jpeg/config.mk +++ b/flow/designs/rapidus2hp/jpeg/config.mk @@ -3,6 +3,10 @@ export PLATFORM = rapidus2hp export DESIGN_NAME = jpeg_encoder export DESIGN_NICKNAME = jpeg +ifeq ($(FLOW_VARIANT), verific) + export SYNTH_HDL_FRONTEND = verific +endif + export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/*.v)) export VERILOG_INCLUDE_DIRS = $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/include export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_7nm.sdc From f94fc0c5f10f333bc46ce577db7ad985a809f3b9 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Tue, 23 Dec 2025 21:22:56 +0000 Subject: [PATCH 155/364] Rapidus design adjustments for PDK 0.2a Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/cva6/config.mk | 12 ++++++++- .../rapidus2hp/cva6/constraint_0.2a_6T.sdc | 16 ++++++++++++ .../rapidus2hp/cva6/constraint_0.2a_8T.sdc | 16 ++++++++++++ flow/designs/rapidus2hp/gcd/config.mk | 9 +++++-- .../rapidus2hp/hercules_idecode/config.mk | 22 ++++++++++++---- .../rapidus2hp/hercules_is_int/config.mk | 25 ++++++++++++------- flow/designs/rapidus2hp/ibex/config.mk | 11 +++++++- .../rapidus2hp/ibex/constraint_0.2a_6T.sdc | 19 ++++++++++++++ .../rapidus2hp/ibex/constraint_0.2a_8T.sdc | 19 ++++++++++++++ flow/designs/rapidus2hp/jpeg/config.mk | 12 ++++++++- .../jpeg/jpeg_encoder15_0.2a_8T.sdc | 21 ++++++++++++++++ 11 files changed, 163 insertions(+), 19 deletions(-) create mode 100644 flow/designs/rapidus2hp/cva6/constraint_0.2a_6T.sdc create mode 100644 flow/designs/rapidus2hp/cva6/constraint_0.2a_8T.sdc create mode 100644 flow/designs/rapidus2hp/ibex/constraint_0.2a_6T.sdc create mode 100644 flow/designs/rapidus2hp/ibex/constraint_0.2a_8T.sdc create mode 100644 flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.2a_8T.sdc diff --git a/flow/designs/rapidus2hp/cva6/config.mk b/flow/designs/rapidus2hp/cva6/config.mk index d9aa828573..8705644ed3 100644 --- a/flow/designs/rapidus2hp/cva6/config.mk +++ b/flow/designs/rapidus2hp/cva6/config.mk @@ -93,7 +93,17 @@ export ADDITIONAL_LIBS += $(PLATFORM_DIR)/ram/lib/sacrls0g0d1p64x128m2b1w0c1p0d0 $(PLATFORM_DIR)/ram/lib/sacrls0g0d1p64x28m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lib \ $(PLATFORM_DIR)/ram/lib/sacrls0g0d1p64x25m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lib -export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constraint.sdc + +DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc +_0P2A_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_6T.sdc +_0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_8T.sdc + +# Use $(if) to defer conditional eval until all makefiles are read +export SDC_FILE = $(strip $(if $(filter 0.2a,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + $(_0P2A_6T_SDC_FILE), \ + $(_0P2A_8T_SDC_FILE)), \ + $(DEFAULT_SDC_FILE))) # Must be defined before the ifeq's export SYNTH_HDL_FRONTEND = slang diff --git a/flow/designs/rapidus2hp/cva6/constraint_0.2a_6T.sdc b/flow/designs/rapidus2hp/cva6/constraint_0.2a_6T.sdc new file mode 100644 index 0000000000..80c7cedeb4 --- /dev/null +++ b/flow/designs/rapidus2hp/cva6/constraint_0.2a_6T.sdc @@ -0,0 +1,16 @@ +# Derived from cva6_synth.tcl and Makefiles + +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name main_clk +set clk_port clk_i +set clk_ports_list [list $clk_port] +set clk_period 820 + +convert_time_value clk_period + +set input_delay [convert_time_value 0.46] +set output_delay [convert_time_value 0.11] + + +create_clock [get_ports $clk_port] -name $clk_name -period $clk_period diff --git a/flow/designs/rapidus2hp/cva6/constraint_0.2a_8T.sdc b/flow/designs/rapidus2hp/cva6/constraint_0.2a_8T.sdc new file mode 100644 index 0000000000..37c1b2ccd9 --- /dev/null +++ b/flow/designs/rapidus2hp/cva6/constraint_0.2a_8T.sdc @@ -0,0 +1,16 @@ +# Derived from cva6_synth.tcl and Makefiles + +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name main_clk +set clk_port clk_i +set clk_ports_list [list $clk_port] +set clk_period 600 + +convert_time_value clk_period + +set input_delay [convert_time_value 0.46] +set output_delay [convert_time_value 0.11] + + +create_clock [get_ports $clk_port] -name $clk_name -period $clk_period diff --git a/flow/designs/rapidus2hp/gcd/config.mk b/flow/designs/rapidus2hp/gcd/config.mk index 87d034ccb4..846759da7d 100644 --- a/flow/designs/rapidus2hp/gcd/config.mk +++ b/flow/designs/rapidus2hp/gcd/config.mk @@ -7,8 +7,13 @@ ifeq ($(FLOW_VARIANT), verific) endif export VERILOG_FILES = $(DESIGN_HOME)/src/$(DESIGN_NAME)/gcd.v -export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constraint.sdc +export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constraint.sdc + + +# Use $(if) to defer conditional eval until all makefiles are read +export CORE_UTILIZATION = $(strip $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ + 43, \ + 45)) -export CORE_UTILIZATION = 45 export CORE_MARGIN = .5 export PLACE_DENSITY = 0.42 diff --git a/flow/designs/rapidus2hp/hercules_idecode/config.mk b/flow/designs/rapidus2hp/hercules_idecode/config.mk index 56261bd614..5a29351259 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/config.mk +++ b/flow/designs/rapidus2hp/hercules_idecode/config.mk @@ -18,11 +18,23 @@ export VERILOG_INCLUDE_DIRS = $(SRC_HOME)/hercules_idecode/verilog \ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/prects.sdc export SYNTH_HDL_FRONTEND ?= slang -ifeq ($(SYNTH_HDL_FRONTEND), slang) - export CORE_UTILIZATION = 50 -else - export CORE_UTILIZATION = 48 -endif + +# Use $(if) to defer conditional eval until all makefiles are read +# +# | Front End | Place Site | Utilization | +# | --------- | ---------- | ----------- | +# | slang | 6T | 44 | +# | slang | 6T | 50 | +# | verific | 6T | 43 | +# | verific | 6T | 48 | + +export CORE_UTILIZATION = $(strip $(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \ + $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ + 44, \ + 50), \ + $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ + 43, \ + 48))) export CORE_MARGIN = 1 export PLACE_DENSITY = 0.50 diff --git a/flow/designs/rapidus2hp/hercules_is_int/config.mk b/flow/designs/rapidus2hp/hercules_is_int/config.mk index 927efd21e6..d9cba80c7a 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/config.mk +++ b/flow/designs/rapidus2hp/hercules_is_int/config.mk @@ -26,15 +26,22 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/prects export SYNTH_HDL_FRONTEND ?= slang export SYNTH_HIERARCHICAL ?= 0 -ifeq ($(PLACE_SITE), SC6T) - export CORE_UTILIZATION = 30 -else - ifeq ($(SYNTH_HDL_FRONTEND), slang) - export CORE_UTILIZATION = 52 - else - export CORE_UTILIZATION = 54 - endif -endif +# Use $(if) to defer conditional eval until all makefiles are read +# +# | Front End | Place Site | Utilization | +# | --------- | ---------- | ----------- | +# | slang | 6T | 30 | +# | slang | 6T | 52 | +# | verific | 6T | 30 | +# | verific | 6T | 54 | + +export CORE_UTILIZATION = $(strip $(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \ + $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ + 30, \ + 52), \ + $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ + 30, \ + 54))) export CORE_MARGIN = 1 export PLACE_DENSITY = 0.58 diff --git a/flow/designs/rapidus2hp/ibex/config.mk b/flow/designs/rapidus2hp/ibex/config.mk index d3014bd146..6aa6647a56 100644 --- a/flow/designs/rapidus2hp/ibex/config.mk +++ b/flow/designs/rapidus2hp/ibex/config.mk @@ -15,12 +15,21 @@ export VERILOG_INCLUDE_DIRS = \ export SYNTH_HDL_FRONTEND = slang + # if FLOW_VARIANT == pos_slack, use an SDC file that has a larger clock # resulting in positive slack ifeq ($(FLOW_VARIANT),pos_slack) export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_pos_slack.sdc else -export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc + DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc + _0P2A_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_6T.sdc + _0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_8T.sdc + # Use $(if) to defer conditional eval until all makefiles are read + export SDC_FILE = $(strip $(if $(filter 0.2a,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + $(_0P2A_6T_SDC_FILE), \ + $(_0P2A_8T_SDC_FILE)), \ + $(DEFAULT_SDC_FILE))) endif export CORE_UTILIZATION = 70 diff --git a/flow/designs/rapidus2hp/ibex/constraint_0.2a_6T.sdc b/flow/designs/rapidus2hp/ibex/constraint_0.2a_6T.sdc new file mode 100644 index 0000000000..471590ee50 --- /dev/null +++ b/flow/designs/rapidus2hp/ibex/constraint_0.2a_6T.sdc @@ -0,0 +1,19 @@ +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name core_clock +set clk_port_name clk_i +set clk_period 730 +set clk_io_pct 0.2 + +set clk_port [get_ports $clk_port_name] + +convert_time_value clk_period + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] diff --git a/flow/designs/rapidus2hp/ibex/constraint_0.2a_8T.sdc b/flow/designs/rapidus2hp/ibex/constraint_0.2a_8T.sdc new file mode 100644 index 0000000000..ab67202b80 --- /dev/null +++ b/flow/designs/rapidus2hp/ibex/constraint_0.2a_8T.sdc @@ -0,0 +1,19 @@ +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name core_clock +set clk_port_name clk_i +set clk_period 480 +set clk_io_pct 0.2 + +set clk_port [get_ports $clk_port_name] + +convert_time_value clk_period + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] diff --git a/flow/designs/rapidus2hp/jpeg/config.mk b/flow/designs/rapidus2hp/jpeg/config.mk index 20bd60f512..15bea64ce6 100644 --- a/flow/designs/rapidus2hp/jpeg/config.mk +++ b/flow/designs/rapidus2hp/jpeg/config.mk @@ -9,7 +9,17 @@ endif export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/*.v)) export VERILOG_INCLUDE_DIRS = $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/include -export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_7nm.sdc + +DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_7nm.sdc +_0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.2a_8T.sdc +# Use $(if) to defer conditional eval until all makefiles are read +export SDC_FILE = $(strip $(if $(filter 0.2a,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h184_HST_45CPP,$(PLACE_SITE)), \ + $(_0P2A_8T_SDC_FILE), \ + $(DEFAULT_SDC_FILE)), \ + $(DEFAULT_SDC_FILE))) + + export ABC_AREA = 1 export CORE_UTILIZATION = 60 diff --git a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.2a_8T.sdc b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.2a_8T.sdc new file mode 100644 index 0000000000..ea07db329e --- /dev/null +++ b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.2a_8T.sdc @@ -0,0 +1,21 @@ +source $::env(PLATFORM_DIR)/util.tcl + +current_design jpeg_encoder + +set clk_name clk +set clk_port_name clk +set clk_period 265 +set clk_io_pct 0.2 + +convert_time_value clk_period + +set clk_port [get_ports $clk_port_name] + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] From 57d52fb0a7283779825e2357020f4f0e169ddab7 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Tue, 23 Dec 2025 22:14:55 +0000 Subject: [PATCH 156/364] Update metrics for improved slew fixing and misc other older changes designs/gf12/bp_dual/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__flow__warnings__count:DRT-0120 | 57 | 54 | Tighten | | flow__warnings__count:PDN-0195 | 9 | 33 | Failing | | globalroute__flow__warnings__count:DRT-0120 | 57 | 54 | Tighten | | cts__timing__setup__ws | -100.0 | -202.0 | Failing | | cts__timing__setup__tns | -400.0 | -17800.0 | Failing | | detailedroute__route__drc_errors | 0 | 4 | Failing | | detailedroute__timing__setup__ws | -294.0 | -293.0 | Tighten | | detailedroute__timing__hold__tns | -3650.0 | -460.0 | Tighten | | finish__timing__setup__tns | -1720.0 | -1630.0 | Tighten | designs/gf12/bp_quad/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 1579306 | 1496173 | Tighten | | detailedroute__route__wirelength | 25903866 | 24629256 | Tighten | | detailedroute__route__drc_errors | 3 | 4 | Failing | | finish__timing__setup__ws | -239.22 | -204.0 | Tighten | | finish__design__instance__area | 1610080 | 1523750 | Tighten | designs/rapidus2hp/cva6/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__flow__warnings__count:DRT-0120 | 29 | 28 | Tighten | | cts__timing__hold__tns | -2880.0 | -3660.0 | Failing | designs/rapidus2hp/ethmac/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -44.1 | -43.5 | Tighten | | cts__timing__setup__tns | -843.0 | -932.0 | Failing | | globalroute__timing__setup__ws | -56.2 | -52.0 | Tighten | | globalroute__timing__setup__tns | -1700.0 | -1590.0 | Tighten | | finish__timing__setup__ws | -56.2 | -52.0 | Tighten | | finish__timing__setup__tns | -1700.0 | -1590.0 | Tighten | | finish__design__instance__area | 3616 | 3586 | Tighten | designs/rapidus2hp/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -25.4 | -34.5 | Failing | | cts__timing__setup__tns | -244.0 | -804.0 | Failing | | globalroute__timing__setup__ws | -36.5 | -43.5 | Failing | | globalroute__timing__setup__tns | -534.0 | -718.0 | Failing | | finish__timing__setup__ws | -36.5 | -43.5 | Failing | | finish__timing__setup__tns | -534.0 | -718.0 | Failing | designs/gf12/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -51.0 | -117.0 | Failing | | cts__timing__setup__tns | -204.0 | -997.0 | Failing | Signed-off-by: Matt Liberty --- flow/designs/gf12/bp_dual/rules-base.json | 38 ++- flow/designs/gf12/bp_quad/rules-base.json | 225 ++++++++++++++++-- flow/designs/gf12/ibex/rules-base.json | 19 +- flow/designs/rapidus2hp/cva6/rules-base.json | 9 +- .../designs/rapidus2hp/ethmac/rules-base.json | 14 +- flow/designs/rapidus2hp/gcd/rules-base.json | 12 +- 6 files changed, 245 insertions(+), 72 deletions(-) diff --git a/flow/designs/gf12/bp_dual/rules-base.json b/flow/designs/gf12/bp_dual/rules-base.json index 5494fc074e..560a3822d6 100644 --- a/flow/designs/gf12/bp_dual/rules-base.json +++ b/flow/designs/gf12/bp_dual/rules-base.json @@ -4,6 +4,11 @@ "compare": "<=", "level": "warning" }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:STA-1551": { "value": 40, "compare": "<=", @@ -15,7 +20,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 57, + "value": 54, "compare": "<=", "level": "warning" }, @@ -44,21 +49,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:STA-1551": { "value": 40, "compare": "<=", @@ -70,7 +60,7 @@ "level": "warning" }, "flow__warnings__count:PDN-0195": { - "value": 9, + "value": 33, "compare": "<=", "level": "warning" }, @@ -115,7 +105,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 57, + "value": 54, "compare": "<=", "level": "warning" }, @@ -174,11 +164,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -100.0, + "value": -202.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -400.0, + "value": -17800.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -214,7 +204,7 @@ "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 0, + "value": 4, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -226,7 +216,7 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -294.0, + "value": -293.0, "compare": ">=" }, "detailedroute__timing__setup__tns": { @@ -238,7 +228,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3650.0, + "value": -460.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -246,7 +236,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1720.0, + "value": -1630.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/bp_quad/rules-base.json b/flow/designs/gf12/bp_quad/rules-base.json index 4fe8d184e1..4f6ea9184b 100644 --- a/flow/designs/gf12/bp_quad/rules-base.json +++ b/flow/designs/gf12/bp_quad/rules-base.json @@ -1,10 +1,155 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 21, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 76, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0142": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 39, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-1031": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0015": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0016": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0017": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 76, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0142": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, "constraints__clocks__count": { "value": 8, "compare": "==" }, "placeopt__design__instance__area": { - "value": 1579306, + "value": 1496173, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -23,16 +168,48 @@ "value": 125423, "compare": "<=" }, + "cts__timing__setup__ws": { + "value": -271.0, + "compare": ">=" + }, + "cts__timing__setup__tns": { + "value": -13100.0, + "compare": ">=" + }, + "cts__timing__hold__ws": { + "value": -100.0, + "compare": ">=" + }, + "cts__timing__hold__tns": { + "value": -400.0, + "compare": ">=" + }, "globalroute__antenna_diodes_count": { "value": 0, "compare": "<=" }, + "globalroute__timing__setup__ws": { + "value": -119.0, + "compare": ">=" + }, + "globalroute__timing__setup__tns": { + "value": -462.0, + "compare": ">=" + }, + "globalroute__timing__hold__ws": { + "value": -100.0, + "compare": ">=" + }, + "globalroute__timing__hold__tns": { + "value": -400.0, + "compare": ">=" + }, "detailedroute__route__wirelength": { - "value": 25903866, + "value": 24629256, "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 3, + "value": 4, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -43,24 +220,40 @@ "value": 5, "compare": "<=" }, - "finish__timing__setup__ws": { - "value": -239.22, + "detailedroute__timing__setup__ws": { + "value": -292.0, "compare": ">=" }, - "finish__design__instance__area": { - "value": 1610080, - "compare": "<=" + "detailedroute__timing__setup__tns": { + "value": -2550.0, + "compare": ">=" }, - "finish__timing__drv__setup_violation_count": { - "value": 62711, - "compare": "<=" + "detailedroute__timing__hold__ws": { + "value": -105.0, + "compare": ">=" }, - "finish__timing__drv__hold_violation_count": { - "value": 170, - "compare": "<=" + "detailedroute__timing__hold__tns": { + "value": -407.0, + "compare": ">=" + }, + "finish__timing__setup__ws": { + "value": -204.0, + "compare": ">=" + }, + "finish__timing__setup__tns": { + "value": -1380.0, + "compare": ">=" + }, + "finish__timing__hold__ws": { + "value": -100.0, + "compare": ">=" }, - "finish__timing__wns_percent_delay": { - "value": -10.96, + "finish__timing__hold__tns": { + "value": -400.0, "compare": ">=" + }, + "finish__design__instance__area": { + "value": 1523750, + "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/gf12/ibex/rules-base.json b/flow/designs/gf12/ibex/rules-base.json index b7a32c023a..01039c8323 100644 --- a/flow/designs/gf12/ibex/rules-base.json +++ b/flow/designs/gf12/ibex/rules-base.json @@ -19,21 +19,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:PDN-1031": { "value": 2, "compare": "<=", @@ -103,11 +88,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -51.0, + "value": -117.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -204.0, + "value": -997.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index 559a3bbfd6..72bdf1491c 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -45,7 +45,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 29, + "value": 28, "compare": "<=", "level": "warning" }, @@ -69,6 +69,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -120,7 +125,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -2880.0, + "value": -3660.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index fd9e4ee2ed..97e9a17d07 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -118,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -44.1, + "value": -43.5, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -843.0, + "value": -932.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -138,11 +138,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -56.2, + "value": -52.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1700.0, + "value": -1590.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -154,11 +154,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -56.2, + "value": -52.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1700.0, + "value": -1590.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -170,7 +170,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 3616, + "value": 3586, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index c16903b300..8cba7b4cea 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -108,11 +108,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -25.4, + "value": -34.5, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -244.0, + "value": -804.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -128,11 +128,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -36.5, + "value": -43.5, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -534.0, + "value": -718.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -144,11 +144,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -36.5, + "value": -43.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -534.0, + "value": -718.0, "compare": ">=" }, "finish__timing__hold__ws": { From d77d08190479b1ea912d8b5aa142f673ec5bc003 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Tue, 23 Dec 2025 22:31:12 +0000 Subject: [PATCH 157/364] incldue worst path image generation Signed-off-by: Augusto Berndt --- flow/scripts/save_images.tcl | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/flow/scripts/save_images.tcl b/flow/scripts/save_images.tcl index 5dec935009..6a480e905c 100644 --- a/flow/scripts/save_images.tcl +++ b/flow/scripts/save_images.tcl @@ -106,4 +106,15 @@ gui::set_display_controls "Heat Maps/Routing Congestion" visible true save_image -resolution $resolution $::env(REPORTS_DIR)/final_congestion.webp +# The worst timing path view +gui::set_display_controls "Heat Maps/Routing Congestion" visible false +gui::set_display_controls "Timing Path/*" visible true +gui::set_display_controls "Nets/*" visible false +gui::set_display_controls "Instances/*" visible true +gui::set_display_controls "Shape Types/Routing/*" visible false + +gui::show_worst_path +save_image -resolution $resolution $::env(REPORTS_DIR)/final_worst_path.webp +gui::set_display_controls "Timing Path/*" visible false + gui::restore_display_controls From 2f4359fbf88ecc46f5d3583cfbd81e99ecd7fc1c Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Tue, 23 Dec 2025 22:31:45 +0000 Subject: [PATCH 158/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 154f14ab7e..c7e2850f83 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 154f14ab7e18a2e29c329c025c749578ef3711d5 +Subproject commit c7e2850f83df911c76b7ad72e140b3330c329f21 From 653e00ecfd3844bf948d7f8cada3b6cb2880f939 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Tue, 23 Dec 2025 23:28:25 +0000 Subject: [PATCH 159/364] Metrics updates for change to Rapidus setRC Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/cva6/rules-base.json | 28 ++++++------------ .../designs/rapidus2hp/ethmac/rules-base.json | 6 ++-- flow/designs/rapidus2hp/gcd/rules-base.json | 16 +++++----- .../hercules_idecode/rules-base.json | 24 +++++++-------- .../hercules_is_int/rules-base.json | 29 ++++++++----------- flow/designs/rapidus2hp/ibex/rules-base.json | 5 ++++ flow/designs/rapidus2hp/jpeg/rules-base.json | 5 ++++ 7 files changed, 54 insertions(+), 59 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index 72bdf1491c..37ee67a560 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -1,9 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -45,7 +40,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 28, + "value": 68, "compare": "<=", "level": "warning" }, @@ -69,11 +64,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -93,11 +83,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 14117, + "value": 14040, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 170704, + "value": 167948, "compare": "<=" }, "detailedplace__design__violations": { @@ -105,11 +95,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 14844, + "value": 14604, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 14844, + "value": 14604, "compare": "<=" }, "cts__timing__setup__ws": { @@ -121,15 +111,15 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -113.0, + "value": -56.2, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -3660.0, + "value": -225.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 145, + "value": 143, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -165,7 +155,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 14405, + "value": 14360, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 97e9a17d07..fcb96a7c97 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -98,7 +98,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 3424, + "value": 3416, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -118,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -43.5, + "value": -35.3, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -932.0, + "value": -739.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index 8cba7b4cea..abe947b540 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -92,7 +92,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 696, + "value": 682, "compare": "<=" }, "detailedplace__design__violations": { @@ -108,11 +108,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -34.5, + "value": -27.8, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -804.0, + "value": -592.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -128,11 +128,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -43.5, + "value": -40.6, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -718.0, + "value": -635.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -144,11 +144,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -43.5, + "value": -40.6, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -718.0, + "value": -635.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -160,7 +160,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 35, + "value": 34, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index bc8c34fb35..df0bd5fb0c 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -1,6 +1,6 @@ { "cts__flow__warnings__count:CTS-0041": { - "value": 6, + "value": 4, "compare": "<=", "level": "warning" }, @@ -98,11 +98,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 12438, + "value": 11605, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 314731, + "value": 298185, "compare": "<=" }, "detailedplace__design__violations": { @@ -110,19 +110,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 27368, + "value": 25929, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 27368, + "value": 25929, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -247.0, + "value": -69.9, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -959000.0, + "value": -181000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -138,11 +138,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -164.0, + "value": -139.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -603000.0, + "value": -503000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -154,11 +154,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -164.0, + "value": -139.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -603000.0, + "value": -503000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -170,7 +170,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 12718, + "value": 11873, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 8da2856516..d1bf4a6fa2 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -1,9 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -83,11 +78,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 34228, + "value": 31904, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 747172, + "value": 662084, "compare": "<=" }, "detailedplace__design__violations": { @@ -95,19 +90,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 64972, + "value": 57572, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 64972, + "value": 57572, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -361.0, + "value": -55.9, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -3190000.0, + "value": -243000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -119,15 +114,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 651, + "value": 582, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -164.0, + "value": -331.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1290000.0, + "value": -1140000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -139,11 +134,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -164.0, + "value": -331.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1290000.0, + "value": -1140000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -155,7 +150,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 35258, + "value": 33676, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index cb2216ccf0..77a238d75c 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -29,6 +29,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0240": { "value": 1, "compare": "<=", diff --git a/flow/designs/rapidus2hp/jpeg/rules-base.json b/flow/designs/rapidus2hp/jpeg/rules-base.json index c751e60b02..a7726eab45 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-base.json +++ b/flow/designs/rapidus2hp/jpeg/rules-base.json @@ -34,6 +34,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 25, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:DRT-0240": { "value": 1, "compare": "<=", From 3d0304a866d3a732c1cb8dba20c91f8f4f3ab909 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 24 Dec 2025 12:14:55 +0000 Subject: [PATCH 160/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index c7e2850f83..1a00310987 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit c7e2850f83df911c76b7ad72e140b3330c329f21 +Subproject commit 1a00310987b10b10b41bd40d0cd0d5c11e197341 From 4d28625901534827e310966e130b63538bc8e01d Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 24 Dec 2025 13:22:05 -0300 Subject: [PATCH 161/364] remove extra call for setRC.tcl Signed-off-by: Eder Monteiro --- flow/scripts/floorplan_to_place.tcl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/flow/scripts/floorplan_to_place.tcl b/flow/scripts/floorplan_to_place.tcl index 8d43ba6d68..bc875ad315 100644 --- a/flow/scripts/floorplan_to_place.tcl +++ b/flow/scripts/floorplan_to_place.tcl @@ -321,12 +321,6 @@ write_db $::env(RESULTS_DIR)/3_4_place_resized.odb # Detailed placement utl::set_metrics_stage "detailedplace__{}" -if { [env_var_exists_and_non_empty LAYER_PARASITICS_FILE] } { - log_cmd source $::env(LAYER_PARASITICS_FILE) -} else { - log_cmd source $::env(PLATFORM_DIR)/setRC.tcl -} - proc do_dpl { } { # Only for use with hybrid rows if { [env_var_equals BALANCE_ROWS 1] } { From 33e151a0a8973e173b32a8859043d0c1570ee96c Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 24 Dec 2025 14:29:41 -0300 Subject: [PATCH 162/364] avoid loading odb if design is already loaded Signed-off-by: Eder Monteiro --- flow/scripts/load.tcl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/flow/scripts/load.tcl b/flow/scripts/load.tcl index 9e831b7312..23ea45dc27 100644 --- a/flow/scripts/load.tcl +++ b/flow/scripts/load.tcl @@ -3,6 +3,12 @@ source $::env(SCRIPTS_DIR)/util.tcl source $::env(SCRIPTS_DIR)/report_metrics.tcl proc load_design { design_file sdc_file } { + # Do not reload if design is already loaded + set db [ord::get_db] + if { [$db getChip] != "NULL" && [[$db getChip] getBlock] != "NULL" } { + return + } + source_env_var_if_exists PLATFORM_TCL source $::env(SCRIPTS_DIR)/read_liberty.tcl From 56420c07d2f30cd8a84b245588de82d6cf999073 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 24 Dec 2025 14:30:45 -0300 Subject: [PATCH 163/364] add env var to prevent erasing non-stage variables Signed-off-by: Eder Monteiro --- flow/scripts/util.tcl | 3 +++ flow/scripts/variables.yaml | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/flow/scripts/util.tcl b/flow/scripts/util.tcl index a6ad11bbb0..243e3b7d41 100644 --- a/flow/scripts/util.tcl +++ b/flow/scripts/util.tcl @@ -145,6 +145,9 @@ proc find_macros { } { } proc erase_non_stage_variables { stage_name } { + if { [info exists ::env(KEEP_VARS)] && $::env(KEEP_VARS) == 1 } { + return + } # "$::env(SCRIPTS_DIR)/stage_variables.py stage_name" returns list of # variables to erase. # diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index d0a6f6fa46..56b77c37c0 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1231,3 +1231,10 @@ NUM_CORES: routing, or place jobs running at the same time. stages: - All stages +KEEP_VARS: + description: > + Feature toggle to keep intermediate variables during the flow. + This is useful for the single-run flow, where all stages of the flow + are run in a single OpenROAD instance. + stages: + - All stages From 547e8c88b496afcaa496f806f44df348cc99a3a6 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 24 Dec 2025 14:31:07 -0300 Subject: [PATCH 164/364] simplify floorplan_to_place.tcl script Signed-off-by: Eder Monteiro --- flow/scripts/floorplan_to_place.tcl | 374 +--------------------------- 1 file changed, 12 insertions(+), 362 deletions(-) diff --git a/flow/scripts/floorplan_to_place.tcl b/flow/scripts/floorplan_to_place.tcl index bc875ad315..1cab12776e 100644 --- a/flow/scripts/floorplan_to_place.tcl +++ b/flow/scripts/floorplan_to_place.tcl @@ -1,382 +1,32 @@ -utl::set_metrics_stage "floorplan__{}" -source $::env(SCRIPTS_DIR)/load.tcl -load_design 1_synth.odb 1_synth.sdc +# Enable keeping variables between stages +set ::env(KEEP_VARS) 1 # Floorplan - -proc report_unused_masters { } { - set db [ord::get_db] - set libs [$db getLibs] - set masters "" - foreach lib $libs { - foreach master [$lib getMasters] { - # filter out non-block masters, or you can remove this conditional to detect any unused master - if { [$master getType] == "BLOCK" } { - lappend masters $master - } - } - } - - set block [ord::get_db_block] - set insts [$block getInsts] - - foreach inst $insts { - set inst_master [$inst getMaster] - set masters [lsearch -all -not -inline $masters $inst_master] - } - - foreach master $masters { - puts "Master [$master getName] is loaded but not used in the design" - } -} - -report_unused_masters - -#Run check_setup -puts "\n==========================================================================" -puts "Floorplan check_setup" -puts "--------------------------------------------------------------------------" -check_setup - -set num_instances [llength [get_cells -hier *]] -puts "number instances in verilog is $num_instances" - -set additional_args "" -append_env_var additional_args ADDITIONAL_SITES -additional_sites 1 - -# Check which floorplan initialization method is specified (mutually exclusive) -set use_floorplan_def [env_var_exists_and_non_empty FLOORPLAN_DEF] -set use_footprint [env_var_exists_and_non_empty FOOTPRINT] -set use_die_and_core_area \ - [expr { [env_var_exists_and_non_empty DIE_AREA] && [env_var_exists_and_non_empty CORE_AREA] }] -set use_core_utilization [env_var_exists_and_non_empty CORE_UTILIZATION] - -# Enforce mutual exclusion - exactly one method must be specified -set methods_defined \ - [expr { $use_floorplan_def + $use_footprint + $use_die_and_core_area + $use_core_utilization }] -if { $methods_defined > 1 } { - puts "Error: Floorplan initialization methods are mutually exclusive, pick one." - exit 1 -} - -# Method 1: Use existing DEF file with floorplan data -if { $use_floorplan_def } { - log_cmd read_def -floorplan_initialize $env(FLOORPLAN_DEF) - # Method 2: Use ICeWall footprint file (platform-specific extension) -} elseif { $use_footprint } { - ICeWall load_footprint $env(FOOTPRINT) - - initialize_floorplan \ - -die_area [ICeWall get_die_area] \ - -core_area [ICeWall get_core_area] \ - -site $::env(PLACE_SITE) - - ICeWall init_footprint $env(SIG_MAP_FILE) - # Method 3: Use explicit die and core area coordinates -} elseif { $use_die_and_core_area } { - initialize_floorplan -die_area $::env(DIE_AREA) \ - -core_area $::env(CORE_AREA) \ - -site $::env(PLACE_SITE) \ - {*}$additional_args - # Method 4: Calculate core area from utilization, aspect ratio, and margins -} elseif { $use_core_utilization } { - initialize_floorplan -utilization $::env(CORE_UTILIZATION) \ - -aspect_ratio $::env(CORE_ASPECT_RATIO) \ - -core_space $::env(CORE_MARGIN) \ - -site $::env(PLACE_SITE) \ - {*}$additional_args -} else { - puts "Error: No floorplan initialization method specified" - exit 1 -} - -# Create routing tracks: MAKE_TRACKS script, platform make_tracks.tcl, or make_tracks command -if { [env_var_exists_and_non_empty MAKE_TRACKS] } { - log_cmd source $::env(MAKE_TRACKS) -} elseif { [file exists $::env(PLATFORM_DIR)/make_tracks.tcl] } { - log_cmd source $::env(PLATFORM_DIR)/make_tracks.tcl -} else { - make_tracks -} - -# Configure global routing: FASTROUTE_TCL script or -# set_global_routing_layer_adjustment/set_routing_layers -if { [env_var_exists_and_non_empty FASTROUTE_TCL] } { - log_cmd source $::env(FASTROUTE_TCL) -} else { - log_cmd \ - set_global_routing_layer_adjustment \ - $::env(MIN_ROUTING_LAYER)-$::env(MAX_ROUTING_LAYER) $::env(ROUTING_LAYER_ADJUSTMENT) - log_cmd set_routing_layers -signal $::env(MIN_ROUTING_LAYER)-$::env(MAX_ROUTING_LAYER) -} - -source_env_var_if_exists FOOTPRINT_TCL - -if { ![env_var_equal SKIP_REPAIR_TIE_FANOUT 1] } { - # This needs to come before any call to remove_buffers. You could have one - # tie driving multiple buffers that drive multiple outputs. - # Repair tie lo fanout - puts "Repair tie lo fanout..." - set tielo_cell_name [lindex $::env(TIELO_CELL_AND_PORT) 0] - set tielo_lib_name [get_name [get_property [lindex [get_lib_cell $tielo_cell_name] 0] library]] - set tielo_pin $tielo_lib_name/$tielo_cell_name/[lindex $::env(TIELO_CELL_AND_PORT) 1] - repair_tie_fanout -separation $::env(TIE_SEPARATION) $tielo_pin - - # Repair tie hi fanout - puts "Repair tie hi fanout..." - set tiehi_cell_name [lindex $::env(TIEHI_CELL_AND_PORT) 0] - set tiehi_lib_name [get_name [get_property [lindex [get_lib_cell $tiehi_cell_name] 0] library]] - set tiehi_pin $tiehi_lib_name/$tiehi_cell_name/[lindex $::env(TIEHI_CELL_AND_PORT) 1] - repair_tie_fanout -separation $::env(TIE_SEPARATION) $tiehi_pin -} - -if { [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] } { - estimate_parasitics -placement - replace_arith_modules -} - -if { [env_var_equals REMOVE_ABC_BUFFERS 1] } { - # remove buffers inserted by yosys/abc - remove_buffers -} else { - # Skip clone & split - set ::env(SETUP_MOVE_SEQUENCE) "unbuffer,sizeup,swap,buffer,vt_swap" - set ::env(SKIP_LAST_GASP) 1 - set additional_args_repair_timing "" - append_env_var additional_args_repair_timing MAX_REPAIR_TIMING_ITER -max_iterations 1 - repair_timing_helper -setup {*}$additional_args_repair_timing -} - -puts "Default units for flow" -report_units -report_units_metric -report_metrics 2 "floorplan final" false false - -source_env_var_if_exists POST_FLOORPLAN_TCL -source_env_var_if_exists IO_CONSTRAINTS - -write_db $::env(RESULTS_DIR)/2_1_floorplan.odb -write_sdc -no_timestamp $::env(RESULTS_DIR)/2_1_floorplan.sdc - +source $::env(SCRIPTS_DIR)/floorplan.tcl # Macro placement -source $::env(SCRIPTS_DIR)/macro_place_util.tcl - -write_db $::env(RESULTS_DIR)/2_2_floorplan_macro.odb -write_macro_placement $::env(RESULTS_DIR)/2_2_floorplan_macro.tcl - +source $::env(SCRIPTS_DIR)/macro_place.tcl # Tapcell insertion -if { [env_var_exists_and_non_empty TAPCELL_TCL] } { - source $::env(TAPCELL_TCL) -} else { - cut_rows -} - -write_db $::env(RESULTS_DIR)/2_3_floorplan_tapcell.odb +source $::env(SCRIPTS_DIR)/tapcell.tcl # PDN -source $::env(PDN_TCL) -pdngen - -source_env_var_if_exists POST_PDN_TCL - -# Check all supply nets -set block [ord::get_db_block] -foreach net [$block getNets] { - set type [$net getSigType] - if { $type == "POWER" || $type == "GROUND" } { - # Temporarily disable due to CI issues - # puts "Check supply: [$net getName]" - # check_power_grid -net [$net getName] - } -} - -write_db $::env(RESULTS_DIR)/2_4_floorplan_pdn.odb +source $::env(SCRIPTS_DIR)/pdn.tcl # Global placement skipping IOs -if { [env_var_exists_and_non_empty FLOORPLAN_DEF] } { - puts "FLOORPLAN_DEF is set. Skipping global placement without IOs" -} elseif { [all_pins_placed] } { - puts "All pins are placed. Skipping global placement without IOs" -} else { - log_cmd global_placement -skip_io -density [place_density_with_lb_addon] \ - -pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \ - -pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \ - {*}[env_var_or_empty GLOBAL_PLACEMENT_ARGS] -} - -write_db $::env(RESULTS_DIR)/3_1_place_gp_skip_io.odb +source $::env(SCRIPTS_DIR)/global_place_skip_io.tcl # IO placement -if { - ![env_var_exists_and_non_empty FLOORPLAN_DEF] && - ![env_var_exists_and_non_empty FOOTPRINT] && - ![env_var_exists_and_non_empty FOOTPRINT_TCL] -} { - # load_design 3_1_place_gp_skip_io.odb 2_floorplan.sdc - log_cmd place_pins \ - -hor_layers $::env(IO_PLACER_H) \ - -ver_layers $::env(IO_PLACER_V) \ - {*}[env_var_or_empty PLACE_PINS_ARGS] - write_db $::env(RESULTS_DIR)/3_2_place_iop.odb - write_pin_placement $::env(RESULTS_DIR)/3_2_place_iop.tcl -} else { - log_cmd exec cp $::env(RESULTS_DIR)/3_1_place_gp_skip_io.odb $::env(RESULTS_DIR)/3_2_place_iop.odb -} +source $::env(SCRIPTS_DIR)/io_placement.tcl # Global placement -utl::set_metrics_stage "globalplace__{}" -set_dont_use $::env(DONT_USE_CELLS) - -if { $::env(GPL_TIMING_DRIVEN) } { - remove_buffers -} - -# Do not buffer chip-level designs -# by default, IO ports will be buffered -# to not buffer IO ports, set environment variable -# DONT_BUFFER_PORT = 1 -if { ![env_var_exists_and_non_empty FOOTPRINT] } { - if { ![env_var_equals DONT_BUFFER_PORTS 1] } { - puts "Perform port buffering..." - buffer_ports {*}[env_var_or_empty BUFFER_PORTS_ARGS] - } -} - -set global_placement_args {} - -# Parameters for routability mode in global placement -append_env_var global_placement_args GPL_ROUTABILITY_DRIVEN -routability_driven 0 - -# Parameters for timing driven mode in global placement -if { $::env(GPL_TIMING_DRIVEN) } { - lappend global_placement_args {-timing_driven} - if { [info exists ::env(GPL_KEEP_OVERFLOW)] } { - lappend global_placement_args -keep_resize_below_overflow $::env(GPL_KEEP_OVERFLOW) - } -} - -proc do_placement { global_placement_args } { - set all_args [concat [list -density [place_density_with_lb_addon] \ - -pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \ - -pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)] \ - $global_placement_args] - - lappend all_args {*}[env_var_or_empty GLOBAL_PLACEMENT_ARGS] - - log_cmd global_placement {*}$all_args -} - -set result [catch { do_placement $global_placement_args } errMsg] -if { $result != 0 } { - write_db $::env(RESULTS_DIR)/3_3_place_gp-failed.odb - error $errMsg -} - -estimate_parasitics -placement - -if { [env_var_equals CLUSTER_FLOPS 1] } { - cluster_flops - estimate_parasitics -placement -} - -report_metrics 3 "global place" false false - -write_db $::env(RESULTS_DIR)/3_3_place_gp.odb +source $::env(SCRIPTS_DIR)/global_place.tcl # Resizing -utl::set_metrics_stage "placeopt__{}" -estimate_parasitics -placement - -set instance_count_before [sta::network_leaf_instance_count] -set pin_count_before [sta::network_leaf_pin_count] - -set_dont_use $::env(DONT_USE_CELLS) - -if { [env_var_exists_and_non_empty EARLY_SIZING_CAP_RATIO] } { - log_cmd set_opt_config -set_early_sizing_cap_ratio $env(EARLY_SIZING_CAP_RATIO) -} - -if { [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] } { - replace_arith_modules -} - -repair_design_helper - -# hold violations are not repaired until after CTS - -# post report - -puts "Floating nets: " -report_floating_nets - -report_metrics 3 "resizer" true false - -puts "Instance count before $instance_count_before, after [sta::network_leaf_instance_count]" -puts "Pin count before $pin_count_before, after [sta::network_leaf_pin_count]" - -write_db $::env(RESULTS_DIR)/3_4_place_resized.odb +source $::env(SCRIPTS_DIR)/resize.tcl # Detailed placement -utl::set_metrics_stage "detailedplace__{}" - -proc do_dpl { } { - # Only for use with hybrid rows - if { [env_var_equals BALANCE_ROWS 1] } { - balance_row_usage - } - - set_placement_padding -global \ - -left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \ - -right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) - detailed_placement - - if { [env_var_equals ENABLE_DPO 1] } { - if { [env_var_exists_and_non_empty DPO_MAX_DISPLACEMENT] } { - improve_placement -max_displacement $::env(DPO_MAX_DISPLACEMENT) - } else { - improve_placement - } - } - optimize_mirroring - - utl::info FLW 12 "Placement violations [check_placement -verbose]." - - estimate_parasitics -placement -} - -set result [catch { do_dpl } errMsg] -if { $result != 0 } { - write_db $::env(RESULTS_DIR)/3_5_place_dp-failed.odb - error $errMsg -} - -report_metrics 3 "detailed place" true false - -write_db $::env(RESULTS_DIR)/3_5_place_dp.odb +source $::env(SCRIPTS_DIR)/detail_place.tcl # Repair timing after placement -utl::set_metrics_stage "place_repair_timing__{}" - -set_placement_padding -global \ - -left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \ - -right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) - -puts "Repair setup and hold violations" -estimate_parasitics -placement - -set additional_args_repair_timing "" -append_env_var additional_args_repair_timing MAX_REPAIR_TIMING_ITER -max_iterations 1 - -log_cmd repair_timing -repair_tns $::env(TNS_END_PERCENT) \ - {*}$additional_args_repair_timing - -# Legalize placement after timing repair -detailed_placement - -puts "Estimate parasitics" -estimate_parasitics -placement -report_metrics 3 "place repair timing" true false - -write_db $::env(RESULTS_DIR)/3_6_place_repair_timing.odb +source $::env(SCRIPTS_DIR)/repair_timing_post_place.tcl From e8224e6c3c2ddbe11354312b712a9bfe7a63d5e1 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 24 Dec 2025 14:33:49 -0300 Subject: [PATCH 165/364] update FlowVariables.md Signed-off-by: Eder Monteiro --- docs/user/FlowVariables.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index f66856a2a4..32051e5c09 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -157,6 +157,7 @@ configuration file. | IO_PLACER_H| A list of metal layers on which the I/O pins are placed horizontally (top and bottom of the die).| | | IO_PLACER_V| A list of metal layers on which the I/O pins are placed vertically (sides of the die).| | | IR_DROP_LAYER| Default metal layer to report IR drop.| | +| KEEP_VARS| Feature toggle to keep intermediate variables during the flow. This is useful for the single-run flow, where all stages of the flow are run in a single OpenROAD instance.| | | KLAYOUT_TECH_FILE| A mapping from LEF/DEF to GDS using the KLayout tool.| | | LATCH_MAP_FILE| Optional mapping file supplied to Yosys to map latches| | | LAYER_PARASITICS_FILE| Path to per layer parasitics file. Defaults to $(PLATFORM_DIR)/setRC.tcl.| | @@ -482,6 +483,7 @@ configuration file. ## All stages variables +- [KEEP_VARS](#KEEP_VARS) - [NUM_CORES](#NUM_CORES) - [OPENROAD_HIERARCHICAL](#OPENROAD_HIERARCHICAL) - [SWAP_ARITH_OPERATORS](#SWAP_ARITH_OPERATORS) From 8a632c736614a0b5d999fef1d757df5ee8d2e5fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Fri, 26 Dec 2025 09:39:56 +0100 Subject: [PATCH 166/364] docs: extend VERILOG_TOP_PARAMS a bit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 4 ++-- flow/scripts/variables.yaml | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 32051e5c09..178f0f2b0a 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -270,7 +270,7 @@ configuration file. | VERILOG_DEFINES| Preprocessor defines passed to the language frontend. Example: `-D HPDCACHE_ASSERT_OFF`| | | VERILOG_FILES| The path to the design Verilog/SystemVerilog files providing a description of modules.| | | VERILOG_INCLUDE_DIRS| Specifies the include directories for the Verilog input files.| | -| VERILOG_TOP_PARAMS| Apply toplevel params (if exist).| | +| VERILOG_TOP_PARAMS| Apply toplevel params (if exist). Passed in as a list of key value pairs in tcl syntax; separated by spaces: PARAM1 VALUE1 PARAM2 VALUE2 stages: - synth| | | YOSYS_FLAGS| Flags to pass to yosys.| -v 3| ## synth variables @@ -306,7 +306,6 @@ configuration file. - [VERILOG_DEFINES](#VERILOG_DEFINES) - [VERILOG_FILES](#VERILOG_FILES) - [VERILOG_INCLUDE_DIRS](#VERILOG_INCLUDE_DIRS) -- [VERILOG_TOP_PARAMS](#VERILOG_TOP_PARAMS) - [YOSYS_FLAGS](#YOSYS_FLAGS) ## floorplan variables @@ -541,4 +540,5 @@ configuration file. - [TAP_CELL_NAME](#TAP_CELL_NAME) - [TECH_LEF](#TECH_LEF) - [USE_FILL](#USE_FILL) +- [VERILOG_TOP_PARAMS](#VERILOG_TOP_PARAMS) diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 56b77c37c0..fe50e320f2 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -873,8 +873,9 @@ SYNTH_OPT_HIER: - synth VERILOG_TOP_PARAMS: description: | - Apply toplevel params (if exist). - stages: + Apply toplevel params (if exist). Passed in as a list of key value pairs + in tcl syntax; separated by spaces: PARAM1 VALUE1 PARAM2 VALUE2 + stages: - synth CORE_ASPECT_RATIO: description: > From b492d46e374201c24a010d5b80c22191eb524eb8 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Sat, 27 Dec 2025 23:16:56 +0900 Subject: [PATCH 167/364] flat, base Signed-off-by: Jaehyun Kim --- flow/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/flow/Makefile b/flow/Makefile index 43d7eb60f6..1c86bc7496 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -2,6 +2,7 @@ # file to avoid having to adding the to the make command line. -include settings.mk +#export OPENROAD_HIERARCHICAL=1 # ============================================================================== # Uncomment or add the design to run # ============================================================================== From 06f1d83afe258bb71638410546acffc1b2d1a290 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Sat, 27 Dec 2025 23:17:18 +0900 Subject: [PATCH 168/364] hier, base Signed-off-by: Jaehyun Kim --- flow/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/Makefile b/flow/Makefile index 1c86bc7496..5812561ef4 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -2,7 +2,7 @@ # file to avoid having to adding the to the make command line. -include settings.mk -#export OPENROAD_HIERARCHICAL=1 +export OPENROAD_HIERARCHICAL=1 # ============================================================================== # Uncomment or add the design to run # ============================================================================== From 01acf3187417c83daab9ec604488d0dff3307514 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Sat, 27 Dec 2025 23:17:51 +0900 Subject: [PATCH 169/364] hier, fix1227 Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 154f14ab7e..6108bc5563 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 154f14ab7e18a2e29c329c025c749578ef3711d5 +Subproject commit 6108bc55633814cb3ead3547a511342fbd2e4ab2 From dfc0582325ca7b0580a27058655adbc1b1e7b6f8 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Sat, 27 Dec 2025 23:18:08 +0900 Subject: [PATCH 170/364] flat, fix1227 Signed-off-by: Jaehyun Kim --- flow/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/Makefile b/flow/Makefile index 5812561ef4..1c86bc7496 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -2,7 +2,7 @@ # file to avoid having to adding the to the make command line. -include settings.mk -export OPENROAD_HIERARCHICAL=1 +#export OPENROAD_HIERARCHICAL=1 # ============================================================================== # Uncomment or add the design to run # ============================================================================== From c0f4d6aaf341dafbed8c530cf443808dbe7be213 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Sat, 27 Dec 2025 23:33:02 +0900 Subject: [PATCH 171/364] flat, fix1227 - 2nd Signed-off-by: Jaehyun Kim --- flow/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/flow/Makefile b/flow/Makefile index 1c86bc7496..43d7eb60f6 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -2,7 +2,6 @@ # file to avoid having to adding the to the make command line. -include settings.mk -#export OPENROAD_HIERARCHICAL=1 # ============================================================================== # Uncomment or add the design to run # ============================================================================== From 03a4aca1b75e2cf38094bc6ab7f75cb11855386d Mon Sep 17 00:00:00 2001 From: Noam Cohen Date: Sun, 28 Dec 2025 01:57:09 +0100 Subject: [PATCH 172/364] bump kf Signed-off-by: Noam Cohen --- tools/kepler-formal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/kepler-formal b/tools/kepler-formal index 5a48eaaab2..e7e1a2d2af 160000 --- a/tools/kepler-formal +++ b/tools/kepler-formal @@ -1 +1 @@ -Subproject commit 5a48eaaab275602f72f0a7bce0b53204f59f6ec1 +Subproject commit e7e1a2d2af828b3505298a19c459f25b046dc4df From cd0da4871758b85310831e551754e00d5e3fb80e Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Sun, 28 Dec 2025 16:13:29 +0900 Subject: [PATCH 173/364] Updated rules-base for failed designs Signed-off-by: Jaehyun Kim --- flow/designs/asap7/aes-block/rules-base.json | 2 +- flow/designs/asap7/mock-alu/rules-base.json | 4 ++-- flow/designs/asap7/swerv_wrapper/rules-base.json | 2 +- flow/designs/asap7/uart/rules-base.json | 4 ++-- flow/designs/gf12/ariane/rules-base.json | 2 +- flow/designs/gf12/bp_single/rules-base.json | 6 +++--- flow/designs/gf12/ca53/rules-base.json | 6 +++--- flow/designs/gf12/swerv_wrapper/rules-base.json | 6 +++--- flow/designs/gf180/riscv32i/rules-base.json | 4 ++-- flow/designs/ihp-sg13g2/ibex/rules-base.json | 2 +- flow/designs/nangate45/gcd/rules-base.json | 8 ++++---- .../nangate45/mempool_group/rules-base.json | 2 +- flow/designs/nangate45/swerv/rules-base.json | 2 +- .../nangate45/swerv_wrapper/rules-base.json | 6 +++--- flow/designs/nangate45/tinyRocket/rules-base.json | 6 +++--- flow/designs/rapidus2hp/gcd/rules-base.json | 4 ++-- .../rapidus2hp/hercules_idecode/rules-base.json | 14 ++------------ .../rapidus2hp/hercules_is_int/rules-base.json | 8 ++++---- flow/designs/rapidus2hp/ibex/rules-base.json | 10 +++++----- flow/designs/sky130hd/microwatt/rules-base.json | 2 +- flow/designs/sky130hd/riscv32i/rules-base.json | 6 +++--- flow/designs/sky130hs/jpeg/rules-base.json | 2 +- 22 files changed, 49 insertions(+), 59 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 2ab2be0f73..fbd221114e 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -24,7 +24,7 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1796, + "value": 2001, "compare": "<=" }, "cts__timing__setup__ws": { diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 5ffcd9cd1d..d5d102bbe6 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -12200.0, + "value": -12300.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -18100.0, + "value": -18200.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 2909448b97..0b891688fe 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -108,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -76000.0, + "value": -80500.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 9fe9d1f0d7..4178eee05c 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -327.0, + "value": -445.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1190.0, + "value": -1300.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index bff69dbe37..7a01e827a3 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -222,7 +222,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -2550.0, + "value": -3350.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index 06fbcf8889..cceca2c632 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -25,7 +25,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 4, + "value": 6, "compare": "<=", "level": "warning" }, @@ -115,7 +115,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 4, + "value": 6, "compare": "<=", "level": "warning" }, @@ -200,7 +200,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -1660.0, + "value": -2500.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 41e1c70714..811080c7c8 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -1,6 +1,6 @@ { "cts__flow__warnings__count:CTS-0041": { - "value": 3, + "value": 6, "compare": "<=", "level": "warning" }, @@ -25,7 +25,7 @@ "level": "warning" }, "finish__flow__warnings__count:STA-1648": { - "value": 260, + "value": 356, "compare": "<=", "level": "warning" }, @@ -199,7 +199,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2580.0, + "value": -7140.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index f9052efafa..b9bef3165e 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -116,11 +116,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -75.0, + "value": -233.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -300.0, + "value": -624.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -172,7 +172,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -51500.0, + "value": -53700.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 1eb94ef725..f84f19bbac 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 370441, + "value": 434023, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -112,7 +112,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 388398, + "value": 454654, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index 05ea391b1e..ced6822da9 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.7, + "value": -4.31, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index dbacd8e38f..ed38395262 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.536, + "value": -1.04, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.43, + "value": -1.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -0.322, + "value": -0.439, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.12, + "value": -1.26, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index a69984efe5..bb48ed0f7d 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7700.0, + "value": -9310.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 7456d96266..d4ccf861f5 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10.7, + "value": -11.2, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index ab8cf07f42..edabd5fc1f 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.181, + "value": -0.299, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -108.0, + "value": -164.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -134.0, + "value": -154.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 1e55b891c9..59b74f98ba 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -41.6, + "value": -46.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -2.53, + "value": -6.82, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -36.8, + "value": -42.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index abe947b540..52944140ca 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -132,7 +132,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -635.0, + "value": -936.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -148,7 +148,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -635.0, + "value": -936.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index df0bd5fb0c..e067808641 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -74,11 +69,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -138,7 +128,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -139.0, + "value": -262.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -154,7 +144,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -139.0, + "value": -262.0, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index d1bf4a6fa2..d7c44cfa98 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -98,11 +98,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -55.9, + "value": -76.1, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -243000.0, + "value": -294000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -122,7 +122,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1140000.0, + "value": -1260000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -138,7 +138,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1140000.0, + "value": -1260000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 77a238d75c..5b72f94375 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -30,7 +30,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, + "value": 5, "compare": "<=", "level": "warning" }, @@ -113,11 +113,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -29.5, + "value": -59.8, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -118.0, + "value": -1430.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -129,11 +129,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -29.5, + "value": -59.8, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -118.0, + "value": -1430.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 3ff578e288..fe281d0793 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -72,7 +72,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 4, "compare": "<=" }, "detailedroute__antenna_diodes_count": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 2af3fa1337..7cef9ed67e 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 7314, + "value": 8516, "compare": "<=" }, "detailedplace__design__violations": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -85.5, + "value": -93.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -31.6, + "value": -42.2, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index db445440b6..d51e5a774a 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 100, + "value": 165, "compare": "<=" }, "globalroute__timing__setup__ws": { From 7b4aae20ab5d63884cf72d037c2df1d412ffa208 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Sun, 28 Dec 2025 16:28:59 +0900 Subject: [PATCH 174/364] Updated rules-base for failed designs (tighten & failing) Signed-off-by: Jaehyun Kim --- flow/designs/asap7/aes-block/rules-base.json | 113 ++++++++++++++++-- flow/designs/asap7/mock-alu/rules-base.json | 103 +++++++++++++++- .../asap7/swerv_wrapper/rules-base.json | 86 ++++++++++++- flow/designs/asap7/uart/rules-base.json | 95 ++++++++++++++- flow/designs/gf12/ariane/rules-base.json | 30 +---- flow/designs/gf12/bp_single/rules-base.json | 12 +- flow/designs/gf12/ca53/rules-base.json | 22 ++-- .../gf12/swerv_wrapper/rules-base.json | 22 +++- flow/designs/gf180/riscv32i/rules-base.json | 48 +++++++- flow/designs/ihp-sg13g2/ibex/rules-base.json | 37 +++++- flow/designs/nangate45/gcd/rules-base.json | 45 ++++++- .../nangate45/mempool_group/rules-base.json | 95 ++++++++++++++- flow/designs/nangate45/swerv/rules-base.json | 55 ++++++++- .../nangate45/swerv_wrapper/rules-base.json | 52 +++++++- .../nangate45/tinyRocket/rules-base.json | 66 ++++++++-- flow/designs/rapidus2hp/gcd/rules-base.json | 6 +- .../hercules_idecode/rules-base.json | 14 +-- .../hercules_is_int/rules-base.json | 22 ++-- flow/designs/rapidus2hp/ibex/rules-base.json | 10 +- .../sky130hd/microwatt/rules-base.json | 113 ++++++++++++++++-- .../designs/sky130hd/riscv32i/rules-base.json | 52 +++++++- flow/designs/sky130hs/jpeg/rules-base.json | 54 ++++++++- 22 files changed, 1001 insertions(+), 151 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 2ab2be0f73..396615d5fa 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,6 +1,101 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 16, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 55, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { - "value": 2130.06, + "value": 2090.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +103,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 7213, + "value": 7210, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 10608, + "value": 10573, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +115,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 922, + "value": 919, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1796, + "value": 2001, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -137.0, + "value": -127.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10800.0, + "value": -7220.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10200.0, + "value": -7080.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +195,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -6330.0, + "value": -3610.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 5ffcd9cd1d..63bf1d8df0 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1665.04, "compare": "<=" @@ -32,7 +127,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -17000.0, + "value": -16500.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -20300.0, + "value": -20100.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +179,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -12200.0, + "value": -12300.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +195,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -18100.0, + "value": -18200.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 2909448b97..475b2ecb36 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -1,4 +1,84 @@ { + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 53459.06, "compare": "<=" @@ -96,11 +176,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -481.0, + "value": -330.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -244000.0, + "value": -128000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -108,7 +188,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -76000.0, + "value": -80500.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 9fe9d1f0d7..6f8f9319b1 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 83.24, "compare": "<=" @@ -12,7 +97,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 996, + "value": 994, "compare": "<=" }, "detailedplace__design__violations": { @@ -48,11 +133,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -56.5, + "value": -54.6, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1990.0, + "value": -1970.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +169,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -327.0, + "value": -445.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +185,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1190.0, + "value": -1300.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index bff69dbe37..bf58098b90 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -24,26 +24,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0186": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:GPL-0323": { "value": 1, "compare": "<=", @@ -158,11 +138,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -217.0, + "value": -216.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -4820.0, + "value": -725.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -182,7 +162,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -20100.0, + "value": -717.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -198,7 +178,7 @@ "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 4, + "value": 0, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -222,7 +202,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -2550.0, + "value": -3350.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index 06fbcf8889..c23b84bf82 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -25,7 +25,7 @@ "level": "warning" }, "detailedroute__flow__warnings__count:DRT-0120": { - "value": 4, + "value": 6, "compare": "<=", "level": "warning" }, @@ -115,7 +115,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 4, + "value": 6, "compare": "<=", "level": "warning" }, @@ -196,11 +196,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -251.0, + "value": -243.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -1660.0, + "value": -2500.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -252,7 +252,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -1550.0, + "value": -943.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -260,7 +260,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -557.0, + "value": -518.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 41e1c70714..39f2bb3a07 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -1,6 +1,6 @@ { "cts__flow__warnings__count:CTS-0041": { - "value": 3, + "value": 6, "compare": "<=", "level": "warning" }, @@ -25,7 +25,7 @@ "level": "warning" }, "finish__flow__warnings__count:STA-1648": { - "value": 260, + "value": 356, "compare": "<=", "level": "warning" }, @@ -119,11 +119,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -447.0, + "value": -391.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10900.0, + "value": -9090.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -139,11 +139,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -377.0, + "value": -238.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -6480.0, + "value": -2270.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -151,7 +151,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1660.0, + "value": -728.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -183,15 +183,15 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -95400.0, + "value": -73300.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -239.0, + "value": -100.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1450.0, + "value": -400.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -199,7 +199,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2580.0, + "value": -7140.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index f9052efafa..4ee15a5867 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -4,6 +4,16 @@ "compare": "<=", "level": "warning" }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "detailedroute__flow__warnings__count:DRT-0120": { "value": 3, "compare": "<=", @@ -116,11 +126,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -75.0, + "value": -233.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -300.0, + "value": -624.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -144,7 +154,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2535684, + "value": 2388740, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -172,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -51500.0, + "value": -53700.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -184,11 +194,11 @@ "compare": ">=" }, "finish__timing__hold__ws": { - "value": -84.2, + "value": -84.1, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -573.0, + "value": -508.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 1eb94ef725..99d540968f 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -1,4 +1,44 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 56, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 8, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 355874.87, "compare": "<=" @@ -8,7 +48,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 370441, + "value": 434023, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -96,11 +136,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.522, + "value": -0.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.04, + "value": -2.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -112,7 +152,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 388398, + "value": 454654, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index 05ea391b1e..2a104e3587 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -1,4 +1,39 @@ { + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 305820.24, "compare": "<=" @@ -52,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.7, + "value": -4.31, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index dbacd8e38f..065c70882b 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -1,4 +1,39 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 725.6, "compare": "<=" @@ -32,7 +67,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.536, + "value": -1.04, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +87,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.43, + "value": -1.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +119,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -0.322, + "value": -0.439, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +131,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0769, + "value": -0.0767, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.12, + "value": -1.26, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index a69984efe5..e2357872ca 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -1,4 +1,89 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-0450": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0450": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 271098.37, "compare": "<=" @@ -28,7 +113,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.35, + "value": -2.31, "compare": ">=" }, "cts__timing__setup__tns": { @@ -48,7 +133,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.35, + "value": -2.31, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -80,11 +165,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -2.35, + "value": -2.31, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -7700.0, + "value": -9310.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,7 +181,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -2.35, + "value": -2.31, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 7456d96266..434f5c3e07 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 178043.59, "compare": "<=" @@ -32,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10.7, + "value": -11.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -35.4, + "value": -21.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -88,11 +133,11 @@ "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -0.107, + "value": -0.105, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -2.83, + "value": -0.68, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -27.4, + "value": -18.2, "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 ab8cf07f42..7ea338e6af 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -1,4 +1,44 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 724516.2, "compare": "<=" @@ -32,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -150.0, + "value": -147.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +88,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.181, + "value": -0.299, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -108.0, + "value": -164.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -92,7 +132,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -9.48, + "value": -7.74, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -134.0, + "value": -154.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -108,7 +148,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.31, + "value": -1.15, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 1e55b891c9..9294f5f40e 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,4 +1,54 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" @@ -8,11 +58,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 60747, + "value": 60645, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 32247, + "value": 32140, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +70,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 2804, + "value": 2795, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 2804, + "value": 2795, "compare": "<=" }, "cts__timing__setup__ws": { @@ -32,7 +82,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -29.1, + "value": -23.7, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +102,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -41.6, + "value": -46.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +134,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -2.53, + "value": -6.82, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +150,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -36.8, + "value": -42.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index abe947b540..40cc11c15a 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -112,7 +112,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -592.0, + "value": -387.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -132,7 +132,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -635.0, + "value": -936.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -148,7 +148,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -635.0, + "value": -936.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index df0bd5fb0c..e067808641 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -74,11 +69,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -138,7 +128,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -139.0, + "value": -262.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -154,7 +144,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -139.0, + "value": -262.0, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index d1bf4a6fa2..cf63c72348 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -82,7 +82,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 662084, + "value": 661868, "compare": "<=" }, "detailedplace__design__violations": { @@ -90,19 +90,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 57572, + "value": 57554, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 57572, + "value": 57554, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -55.9, + "value": -76.1, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -243000.0, + "value": -294000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -114,15 +114,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 582, + "value": 581, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -331.0, + "value": -325.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1140000.0, + "value": -1260000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,11 +134,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -331.0, + "value": -325.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1140000.0, + "value": -1260000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -150,7 +150,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33676, + "value": 33550, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 77a238d75c..5b72f94375 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -30,7 +30,7 @@ "level": "warning" }, "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, + "value": 5, "compare": "<=", "level": "warning" }, @@ -113,11 +113,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -29.5, + "value": -59.8, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -118.0, + "value": -1430.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -129,11 +129,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -29.5, + "value": -59.8, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -118.0, + "value": -1430.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 3ff578e288..427fdb5674 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,4 +1,99 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 11, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 6, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 47, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0243": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" @@ -32,7 +127,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -456.0, + "value": -419.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,7 +139,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 4370, + "value": 2310, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -52,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -452.0, + "value": -406.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -72,11 +167,11 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 4, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1936, + "value": 1847, "compare": "<=" }, "detailedroute__timing__setup__ws": { @@ -84,7 +179,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -171.0, + "value": -131.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -92,7 +187,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -654.0, + "value": -599.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +195,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -430.0, + "value": -375.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -108,7 +203,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -15.9, + "value": -8.7, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 2af3fa1337..1ee821b888 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -1,4 +1,44 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 70778.51, "compare": "<=" @@ -12,7 +52,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 7314, + "value": 8516, "compare": "<=" }, "detailedplace__design__violations": { @@ -32,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -38.6, + "value": -33.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +88,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.88, + "value": -1.79, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -85.5, + "value": -93.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,11 +136,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -1.72, + "value": -1.58, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -31.6, + "value": -42.2, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index db445440b6..e47c1e856c 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,4 +1,54 @@ { + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 39, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0243": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 13, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" @@ -44,7 +94,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 100, + "value": 165, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -72,7 +122,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { From 61ac36d1412ab6aaa048510c4c592e5bd8f414b4 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Mon, 29 Dec 2025 16:27:18 +0000 Subject: [PATCH 175/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 1a00310987..7de25a98e7 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 1a00310987b10b10b41bd40d0cd0d5c11e197341 +Subproject commit 7de25a98e7b09d2ca4e34717863bf35e243a1acc From adf2872ee3599d89e94ff32e11df4eda636c5015 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 01:41:26 +0100 Subject: [PATCH 176/364] INSTALL_PATH Signed-off-by: Noam Cohen --- build_openroad.sh | 18 ++++++++++-------- env.sh | 1 + 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/build_openroad.sh b/build_openroad.sh index 4a1ddf72e1..26c4cc1e08 100755 --- a/build_openroad.sh +++ b/build_openroad.sh @@ -299,25 +299,27 @@ __local_build() if [ ! -d build ]; then mkdir build fi - cd build if [[ "$OSTYPE" == "darwin"* ]]; then - cmake .. \ - -DCMAKE_BUILD_TYPE=Release \ + cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ -DCMAKE_EXE_LINKER_FLAGS="-flto" \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ - -DCMAKE_INSTALL_RPATH=@executable_path/../lib + -DCMAKE_INSTALL_RPATH='@executable_path/../lib' \ + -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}/kepler-formal" else - cmake .. \ - -DCMAKE_BUILD_TYPE=Release \ + cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ -DCMAKE_EXE_LINKER_FLAGS="-flto" \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ - -DCMAKE_INSTALL_RPATH=\$ORIGIN/../lib + -DCMAKE_INSTALL_RPATH='\$ORIGIN/../lib' \ + -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}/kepler-formal" fi - make -j4 install + + make -j"${PROC}" install + + cd ../../../ if [ ${WITH_VERIFIC} -eq 1 ]; then echo "[INFO FLW-0032] Cleaning up Verific components." diff --git a/env.sh b/env.sh index 563c003a81..9b4241cbf6 100755 --- a/env.sh +++ b/env.sh @@ -13,6 +13,7 @@ function __setpaths() { # developer settings go in ./dev_env.sh export PATH=${DIR}/tools/install/OpenROAD/bin:$PATH export PATH=${DIR}/tools/install/yosys/bin:$PATH + export PATH=${DIR}/tools/install/kepler-formal/bin:$PATH if [[ "$OSTYPE" == "darwin"* ]]; then export PATH="/Applications/KLayout/klayout.app/Contents/MacOS:$PATH" From b63d7b1538bfd190d7d514b2c1d108b053692453 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 03:01:54 +0100 Subject: [PATCH 177/364] remove extra line for formatting Signed-off-by: Noam Cohen --- build_openroad.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/build_openroad.sh b/build_openroad.sh index 26c4cc1e08..e6f4e472a4 100755 --- a/build_openroad.sh +++ b/build_openroad.sh @@ -319,7 +319,6 @@ __local_build() make -j"${PROC}" install - cd ../../../ if [ ${WITH_VERIFIC} -eq 1 ]; then echo "[INFO FLW-0032] Cleaning up Verific components." From 8facb0ec89530a6f0cb958506dd94377b348b412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 30 Dec 2025 12:45:17 +0100 Subject: [PATCH 178/364] scripts: introduce orfs_write_db/sdc wrappers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit is only to simplify the review. Signed-off-by: Øyvind Harboe --- flow/scripts/cts.tcl | 8 ++++---- flow/scripts/density_fill.tcl | 2 +- flow/scripts/detail_place.tcl | 4 ++-- flow/scripts/detail_route.tcl | 4 ++-- flow/scripts/fillcell.tcl | 2 +- flow/scripts/final_report.tcl | 2 +- flow/scripts/floorplan.tcl | 4 ++-- flow/scripts/global_place.tcl | 4 ++-- flow/scripts/global_place_skip_io.tcl | 2 +- flow/scripts/global_route.tcl | 10 +++++----- flow/scripts/io_placement.tcl | 2 +- flow/scripts/macro_place.tcl | 2 +- flow/scripts/pdn.tcl | 2 +- flow/scripts/repair_timing_post_place.tcl | 2 +- flow/scripts/resize.tcl | 2 +- flow/scripts/synth_odb.tcl | 4 ++-- flow/scripts/tapcell.tcl | 2 +- flow/scripts/util.tcl | 14 ++++++++++++++ 18 files changed, 43 insertions(+), 29 deletions(-) diff --git a/flow/scripts/cts.tcl b/flow/scripts/cts.tcl index e281f4b594..66732265eb 100644 --- a/flow/scripts/cts.tcl +++ b/flow/scripts/cts.tcl @@ -9,8 +9,8 @@ repair_clock_inverters proc save_progress { stage } { puts "Run 'make gui_$stage.odb' to load progress snapshot" - write_db $::env(RESULTS_DIR)/$stage.odb - write_sdc -no_timestamp $::env(RESULTS_DIR)/$stage.sdc + orfs_write_db $::env(RESULTS_DIR)/$stage.odb + orfs_write_sdc $::env(RESULTS_DIR)/$stage.sdc } # Run CTS @@ -80,5 +80,5 @@ report_metrics 4 "cts final" source_env_var_if_exists POST_CTS_TCL -write_db $::env(RESULTS_DIR)/4_1_cts.odb -write_sdc -no_timestamp $::env(RESULTS_DIR)/4_cts.sdc +orfs_write_db $::env(RESULTS_DIR)/4_1_cts.odb +orfs_write_sdc $::env(RESULTS_DIR)/4_cts.sdc diff --git a/flow/scripts/density_fill.tcl b/flow/scripts/density_fill.tcl index 08347868d5..a0f45f7276 100644 --- a/flow/scripts/density_fill.tcl +++ b/flow/scripts/density_fill.tcl @@ -8,7 +8,7 @@ if { $::env(USE_FILL) } { # The .v file is just for debugging purposes, not a result of # this stage. write_verilog $::env(RESULTS_DIR)/6_1_fill.v - write_db $::env(RESULTS_DIR)/6_1_fill.odb + orfs_write_db $::env(RESULTS_DIR)/6_1_fill.odb } else { log_cmd exec cp $::env(RESULTS_DIR)/5_route.odb $::env(RESULTS_DIR)/6_1_fill.odb # There is no 5_route.v file to copy diff --git a/flow/scripts/detail_place.tcl b/flow/scripts/detail_place.tcl index eff7a140d0..a0e1775947 100644 --- a/flow/scripts/detail_place.tcl +++ b/flow/scripts/detail_place.tcl @@ -32,10 +32,10 @@ proc do_dpl { } { set result [catch { do_dpl } errMsg] if { $result != 0 } { - write_db $::env(RESULTS_DIR)/3_5_place_dp-failed.odb + orfs_write_db $::env(RESULTS_DIR)/3_5_place_dp-failed.odb error $errMsg } report_metrics 3 "detailed place" true false -write_db $::env(RESULTS_DIR)/3_5_place_dp.odb +orfs_write_db $::env(RESULTS_DIR)/3_5_place_dp.odb diff --git a/flow/scripts/detail_route.tcl b/flow/scripts/detail_route.tcl index 6022daecc1..0a2aa6b5a5 100644 --- a/flow/scripts/detail_route.tcl +++ b/flow/scripts/detail_route.tcl @@ -7,7 +7,7 @@ if { ![grt::have_routes] } { } if { $::env(SKIP_DETAILED_ROUTE) } { - write_db $::env(RESULTS_DIR)/5_2_route.odb + orfs_write_db $::env(RESULTS_DIR)/5_2_route.odb exit } @@ -79,4 +79,4 @@ if { ![design_is_routed] } { report_metrics 5 "detailed route" -write_db $::env(RESULTS_DIR)/5_2_route.odb +orfs_write_db $::env(RESULTS_DIR)/5_2_route.odb diff --git a/flow/scripts/fillcell.tcl b/flow/scripts/fillcell.tcl index ea23e5b24f..ba4b96912e 100644 --- a/flow/scripts/fillcell.tcl +++ b/flow/scripts/fillcell.tcl @@ -8,7 +8,7 @@ if { [env_var_exists_and_non_empty FILL_CELLS] } { log_cmd filler_placement $::env(FILL_CELLS) check_placement - write_db $::env(RESULTS_DIR)/5_3_fillcell.odb + orfs_write_db $::env(RESULTS_DIR)/5_3_fillcell.odb } else { log_cmd exec cp $::env(RESULTS_DIR)/5_2_route.odb $::env(RESULTS_DIR)/5_3_fillcell.odb } diff --git a/flow/scripts/final_report.tcl b/flow/scripts/final_report.tcl index 5cebdf2ea8..928e92bf2b 100644 --- a/flow/scripts/final_report.tcl +++ b/flow/scripts/final_report.tcl @@ -8,7 +8,7 @@ set_propagated_clock [all_clocks] # Ensure all OR created (rsz/cts) instances are connected global_connect -write_db $::env(RESULTS_DIR)/6_final.odb +orfs_write_db $::env(RESULTS_DIR)/6_final.odb # Delete routing obstructions for final DEF source $::env(SCRIPTS_DIR)/deleteRoutingObstructions.tcl diff --git a/flow/scripts/floorplan.tcl b/flow/scripts/floorplan.tcl index 9880250f86..710cef5f16 100644 --- a/flow/scripts/floorplan.tcl +++ b/flow/scripts/floorplan.tcl @@ -150,5 +150,5 @@ report_metrics 2 "floorplan final" false false source_env_var_if_exists POST_FLOORPLAN_TCL source_env_var_if_exists IO_CONSTRAINTS -write_db $::env(RESULTS_DIR)/2_1_floorplan.odb -write_sdc -no_timestamp $::env(RESULTS_DIR)/2_1_floorplan.sdc +orfs_write_db $::env(RESULTS_DIR)/2_1_floorplan.odb +orfs_write_sdc $::env(RESULTS_DIR)/2_1_floorplan.sdc diff --git a/flow/scripts/global_place.tcl b/flow/scripts/global_place.tcl index ef130951b3..7ac604bc07 100644 --- a/flow/scripts/global_place.tcl +++ b/flow/scripts/global_place.tcl @@ -46,7 +46,7 @@ proc do_placement { global_placement_args } { set result [catch { do_placement $global_placement_args } errMsg] if { $result != 0 } { - write_db $::env(RESULTS_DIR)/3_3_place_gp-failed.odb + orfs_write_db $::env(RESULTS_DIR)/3_3_place_gp-failed.odb error $errMsg } @@ -59,4 +59,4 @@ if { $::env(CLUSTER_FLOPS) } { report_metrics 3 "global place" false false -write_db $::env(RESULTS_DIR)/3_3_place_gp.odb +orfs_write_db $::env(RESULTS_DIR)/3_3_place_gp.odb diff --git a/flow/scripts/global_place_skip_io.tcl b/flow/scripts/global_place_skip_io.tcl index b528856448..550df07fb6 100644 --- a/flow/scripts/global_place_skip_io.tcl +++ b/flow/scripts/global_place_skip_io.tcl @@ -13,4 +13,4 @@ if { [env_var_exists_and_non_empty FLOORPLAN_DEF] } { {*}[env_var_or_empty GLOBAL_PLACEMENT_ARGS] } -write_db $::env(RESULTS_DIR)/3_1_place_gp_skip_io.odb +orfs_write_db $::env(RESULTS_DIR)/3_1_place_gp_skip_io.odb diff --git a/flow/scripts/global_route.tcl b/flow/scripts/global_route.tcl index 7d24fcdbc2..6970b759ab 100644 --- a/flow/scripts/global_route.tcl +++ b/flow/scripts/global_route.tcl @@ -29,11 +29,11 @@ proc global_route_helper { } { if { $result != 0 } { if { !$::env(GENERATE_ARTIFACTS_ON_FAILURE) } { - write_db $::env(RESULTS_DIR)/5_1_grt-failed.odb + orfs_write_db $::env(RESULTS_DIR)/5_1_grt-failed.odb error $errMsg } - write_sdc -no_timestamp $::env(RESULTS_DIR)/5_1_grt.sdc - write_db $::env(RESULTS_DIR)/5_1_grt.odb + orfs_write_sdc $::env(RESULTS_DIR)/5_1_grt.sdc + orfs_write_db $::env(RESULTS_DIR)/5_1_grt.odb return } @@ -113,8 +113,8 @@ proc global_route_helper { } { source [file join $::env(SCRIPTS_DIR) "write_ref_sdc.tcl"] write_guides $::env(RESULTS_DIR)/route.guide - write_db $::env(RESULTS_DIR)/5_1_grt.odb - write_sdc -no_timestamp $::env(RESULTS_DIR)/5_1_grt.sdc + orfs_write_db $::env(RESULTS_DIR)/5_1_grt.odb + orfs_write_sdc $::env(RESULTS_DIR)/5_1_grt.sdc } global_route_helper diff --git a/flow/scripts/io_placement.tcl b/flow/scripts/io_placement.tcl index e4f61e0983..0ec25dc545 100644 --- a/flow/scripts/io_placement.tcl +++ b/flow/scripts/io_placement.tcl @@ -11,7 +11,7 @@ if { -hor_layers $::env(IO_PLACER_H) \ -ver_layers $::env(IO_PLACER_V) \ {*}[env_var_or_empty PLACE_PINS_ARGS] - write_db $::env(RESULTS_DIR)/3_2_place_iop.odb + orfs_write_db $::env(RESULTS_DIR)/3_2_place_iop.odb write_pin_placement $::env(RESULTS_DIR)/3_2_place_iop.tcl } else { log_cmd exec cp $::env(RESULTS_DIR)/3_1_place_gp_skip_io.odb $::env(RESULTS_DIR)/3_2_place_iop.odb diff --git a/flow/scripts/macro_place.tcl b/flow/scripts/macro_place.tcl index cc0f7706c6..302dd7b9c7 100644 --- a/flow/scripts/macro_place.tcl +++ b/flow/scripts/macro_place.tcl @@ -4,5 +4,5 @@ load_design 2_1_floorplan.odb 2_1_floorplan.sdc source $::env(SCRIPTS_DIR)/macro_place_util.tcl -write_db $::env(RESULTS_DIR)/2_2_floorplan_macro.odb +orfs_write_db $::env(RESULTS_DIR)/2_2_floorplan_macro.odb write_macro_placement $::env(RESULTS_DIR)/2_2_floorplan_macro.tcl diff --git a/flow/scripts/pdn.tcl b/flow/scripts/pdn.tcl index 72d2c55c14..977fe71f1e 100644 --- a/flow/scripts/pdn.tcl +++ b/flow/scripts/pdn.tcl @@ -18,4 +18,4 @@ foreach net [$block getNets] { } } -write_db $::env(RESULTS_DIR)/2_4_floorplan_pdn.odb +orfs_write_db $::env(RESULTS_DIR)/2_4_floorplan_pdn.odb diff --git a/flow/scripts/repair_timing_post_place.tcl b/flow/scripts/repair_timing_post_place.tcl index a74b8c2b1a..53ce035ab3 100644 --- a/flow/scripts/repair_timing_post_place.tcl +++ b/flow/scripts/repair_timing_post_place.tcl @@ -18,4 +18,4 @@ puts "Estimate parasitics" estimate_parasitics -placement report_metrics 3 "place repair timing" true false -write_db $::env(RESULTS_DIR)/3_6_place_repair_timing.odb +orfs_write_db $::env(RESULTS_DIR)/3_6_place_repair_timing.odb diff --git a/flow/scripts/resize.tcl b/flow/scripts/resize.tcl index 50276a85ec..832855578c 100644 --- a/flow/scripts/resize.tcl +++ b/flow/scripts/resize.tcl @@ -32,4 +32,4 @@ report_metrics 3 "resizer" true false puts "Instance count before $instance_count_before, after [sta::network_leaf_instance_count]" puts "Pin count before $pin_count_before, after [sta::network_leaf_pin_count]" -write_db $::env(RESULTS_DIR)/3_4_place_resized.odb +orfs_write_db $::env(RESULTS_DIR)/3_4_place_resized.odb diff --git a/flow/scripts/synth_odb.tcl b/flow/scripts/synth_odb.tcl index 29553f6cf9..ad56b542e8 100644 --- a/flow/scripts/synth_odb.tcl +++ b/flow/scripts/synth_odb.tcl @@ -3,9 +3,9 @@ source $::env(SCRIPTS_DIR)/load.tcl erase_non_stage_variables synth load_design 1_2_yosys.v 1_2_yosys.sdc -write_db $::env(RESULTS_DIR)/1_synth.odb +orfs_write_db $::env(RESULTS_DIR)/1_synth.odb # Canonicalize 1_synth.sdc. The original SDC_FILE provided by # the user could have dependencies, such as sourcing util.tcl, # which are read in here and a canonicalized version is written # out by OpenSTA that has no dependencies. -write_sdc -no_timestamp $::env(RESULTS_DIR)/1_synth.sdc +orfs_write_sdc $::env(RESULTS_DIR)/1_synth.sdc diff --git a/flow/scripts/tapcell.tcl b/flow/scripts/tapcell.tcl index eb00d11e23..cbd4ede9fc 100644 --- a/flow/scripts/tapcell.tcl +++ b/flow/scripts/tapcell.tcl @@ -9,4 +9,4 @@ if { [env_var_exists_and_non_empty TAPCELL_TCL] } { cut_rows } -write_db $::env(RESULTS_DIR)/2_3_floorplan_tapcell.odb +orfs_write_db $::env(RESULTS_DIR)/2_3_floorplan_tapcell.odb diff --git a/flow/scripts/util.tcl b/flow/scripts/util.tcl index 243e3b7d41..7dbb25a370 100644 --- a/flow/scripts/util.tcl +++ b/flow/scripts/util.tcl @@ -241,3 +241,17 @@ proc find_physical_only_masters { } { } return $physical_only_masters } + +proc orfs_write_db { output_file } { + if { $::env(SINGLE_OPENROAD_INVOCATION_FLOW) } { + return + } + log_cmd write_db $output_file +} + +proc orfs_write_sdc { output_file } { + if { $::env(SINGLE_OPENROAD_INVOCATION_FLOW) } { + return + } + log_cmd write_sdc -no_timestamp $output_file +} From b7a8ba7ef35474a3cfbe9c3a0e46fa6902adc6fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 30 Dec 2025 12:17:41 +0100 Subject: [PATCH 179/364] flow: faster, leaner single openroad invocation flows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no longer save out all .odb/.sdc files automatically, the user can save out as many or as few as they need. Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 4 ++-- flow/scripts/floorplan_to_place.tcl | 5 ++++- flow/scripts/util.tcl | 2 +- flow/scripts/variables.yaml | 9 +++++---- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 178f0f2b0a..eb0130cfa9 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -157,7 +157,6 @@ configuration file. | IO_PLACER_H| A list of metal layers on which the I/O pins are placed horizontally (top and bottom of the die).| | | IO_PLACER_V| A list of metal layers on which the I/O pins are placed vertically (sides of the die).| | | IR_DROP_LAYER| Default metal layer to report IR drop.| | -| KEEP_VARS| Feature toggle to keep intermediate variables during the flow. This is useful for the single-run flow, where all stages of the flow are run in a single OpenROAD instance.| | | KLAYOUT_TECH_FILE| A mapping from LEF/DEF to GDS using the KLayout tool.| | | LATCH_MAP_FILE| Optional mapping file supplied to Yosys to map latches| | | LAYER_PARASITICS_FILE| Path to per layer parasitics file. Defaults to $(PLATFORM_DIR)/setRC.tcl.| | @@ -225,6 +224,7 @@ configuration file. | SETUP_REPAIR_SEQUENCE| Specifies the sequence of moves to do in repair_timing -setup. This should be a string of move keywords separated by commas such as the default when not used: "unbuffer,sizedown,sizeup,swap,buffer,clone,split".| | | SETUP_SLACK_MARGIN| Specifies a time margin for the slack when fixing setup violations. This option allows you to overfix or underfix(negative value, terminate retiming before 0 or positive slack). See HOLD_SLACK_MARGIN for more details.| 0| | SET_RC_TCL| Metal & Via RC definition file path.| | +| SINGLE_OPENROAD_INVOCATION_FLOW| Instead of invoking OpenROAD once per stage and saving out the .odb and .sdc file at each stage, invoke OpenROAD once and run through all stages in a single OpenROAD instance.| 0| | SKIP_ANTENNA_REPAIR| Skips antenna repair entirely.| 0| | SKIP_ANTENNA_REPAIR_POST_DRT| Skips antenna repair post-detailed routing.| 0| | SKIP_ANTENNA_REPAIR_PRE_GRT| Skips antenna repair pre-global routing.| 0| @@ -482,9 +482,9 @@ configuration file. ## All stages variables -- [KEEP_VARS](#KEEP_VARS) - [NUM_CORES](#NUM_CORES) - [OPENROAD_HIERARCHICAL](#OPENROAD_HIERARCHICAL) +- [SINGLE_OPENROAD_INVOCATION_FLOW](#SINGLE_OPENROAD_INVOCATION_FLOW) - [SWAP_ARITH_OPERATORS](#SWAP_ARITH_OPERATORS) - [SYNTH_WRAPPED_OPERATORS](#SYNTH_WRAPPED_OPERATORS) diff --git a/flow/scripts/floorplan_to_place.tcl b/flow/scripts/floorplan_to_place.tcl index 1cab12776e..fcfdab7482 100644 --- a/flow/scripts/floorplan_to_place.tcl +++ b/flow/scripts/floorplan_to_place.tcl @@ -1,5 +1,5 @@ # Enable keeping variables between stages -set ::env(KEEP_VARS) 1 +set ::env(SINGLE_OPENROAD_INVOCATION_FLOW) 1 # Floorplan source $::env(SCRIPTS_DIR)/floorplan.tcl @@ -30,3 +30,6 @@ source $::env(SCRIPTS_DIR)/detail_place.tcl # Repair timing after placement source $::env(SCRIPTS_DIR)/repair_timing_post_place.tcl + +write_db $::env(RESULTS_DIR)/3_6_place_repair_timing.odb +write_sdc -no_timestamp $::env(RESULTS_DIR)/3_6_place_repair_timing.sdc diff --git a/flow/scripts/util.tcl b/flow/scripts/util.tcl index 7dbb25a370..65b6803921 100644 --- a/flow/scripts/util.tcl +++ b/flow/scripts/util.tcl @@ -145,7 +145,7 @@ proc find_macros { } { } proc erase_non_stage_variables { stage_name } { - if { [info exists ::env(KEEP_VARS)] && $::env(KEEP_VARS) == 1 } { + if { $::env(SINGLE_OPENROAD_INVOCATION_FLOW) } { return } # "$::env(SCRIPTS_DIR)/stage_variables.py stage_name" returns list of diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index fe50e320f2..feeda2a0b0 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1232,10 +1232,11 @@ NUM_CORES: routing, or place jobs running at the same time. stages: - All stages -KEEP_VARS: +SINGLE_OPENROAD_INVOCATION_FLOW: description: > - Feature toggle to keep intermediate variables during the flow. - This is useful for the single-run flow, where all stages of the flow - are run in a single OpenROAD instance. + Instead of invoking OpenROAD once per stage and saving out the + .odb and .sdc file at each stage, invoke OpenROAD once and run + through all stages in a single OpenROAD instance. stages: - All stages + default: 0 From d55b7267119b4b75f1f45cace6822c6f3606180e Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 16:24:57 +0100 Subject: [PATCH 180/364] kf Signed-off-by: Noam Cohen --- tools/kepler-formal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/kepler-formal b/tools/kepler-formal index e7e1a2d2af..8deb4acf20 160000 --- a/tools/kepler-formal +++ b/tools/kepler-formal @@ -1 +1 @@ -Subproject commit e7e1a2d2af828b3505298a19c459f25b046dc4df +Subproject commit 8deb4acf20bba724563b4a6acbe477777bb7afe1 From 74f1301487a1e8f2d7180c27f0978cae3029dd05 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 16:42:38 +0100 Subject: [PATCH 181/364] separate to lec_check.tcl Signed-off-by: Noam Cohen --- flow/scripts/cts.tcl | 4 +++- flow/scripts/lec_check.tcl | 35 ++++++++++++++++++++++++++++++++++ flow/scripts/load.tcl | 39 +------------------------------------- 3 files changed, 39 insertions(+), 39 deletions(-) create mode 100644 flow/scripts/lec_check.tcl diff --git a/flow/scripts/cts.tcl b/flow/scripts/cts.tcl index 6fa9e8f36f..e7cda505d2 100644 --- a/flow/scripts/cts.tcl +++ b/flow/scripts/cts.tcl @@ -1,5 +1,6 @@ utl::set_metrics_stage "cts__{}" source $::env(SCRIPTS_DIR)/load.tcl +source $::env(SCRIPTS_DIR)/lec_check.tcl erase_non_stage_variables cts load_design 3_place.odb 3_place.sdc @@ -70,7 +71,8 @@ if { !$::env(SKIP_CTS_REPAIR_TIMING) } { run_equivalence_test } if { [env_var_exists_and_non_empty LEC_CHECK] } { - run_lec_test + write_lec_verilog 4_after_rsz_lec.v + run_lec_test 4_after 4_before_rsz_lec.v 4_after_rsz_lec.v } set result [catch { detailed_placement } msg] diff --git a/flow/scripts/lec_check.tcl b/flow/scripts/lec_check.tcl new file mode 100644 index 0000000000..801f2667cb --- /dev/null +++ b/flow/scripts/lec_check.tcl @@ -0,0 +1,35 @@ +proc write_lec_verilog { filename } { + if { [env_var_exists_and_non_empty REMOVE_CELLS_FOR_EQY] } { + write_verilog -remove_cells $::env(REMOVE_CELLS_FOR_EQY) $::env(RESULTS_DIR)/$filename + } else { + write_verilog $::env(RESULTS_DIR)/$filename + } +} + +proc write_lec_script { step, file1, file2 } { + set outfile [open "$::env(OBJECTS_DIR)/lec_test_${step}.yml" w] + puts $outfile "format: verilog" + puts $outfile "input_paths:" + puts $outfile " - $::env(RESULTS_DIR)/${file1}" + puts $outfile " - $::env(RESULTS_DIR)/${file2}" + # Gold netlist + puts $outfile "liberty_files:" + foreach libFile $::env(LIB_FILES) { + puts $outfile " - $libFile" + } + puts $outfile "log_file: $::env(LOG_DIR)/lec_check.log" + close $outfile +} + +proc run_lec_test { step, file1, file2 } { + write_lec_script + # tclint-disable-next-line command-args + eval exec kepler-formal --config $::env(OBJECTS_DIR)/lec_test_${step}.yml + set count \ + [exec grep -c "Found difference" $::env(LOG_DIR)/lec_check_${step}.log] + if { $count > 0 } { + error "Repair timing output failed lec test" + } else { + puts "Repair timing output passed lec test" + } +} diff --git a/flow/scripts/load.tcl b/flow/scripts/load.tcl index 3261d01efd..f5f32acc0a 100644 --- a/flow/scripts/load.tcl +++ b/flow/scripts/load.tcl @@ -115,41 +115,4 @@ proc run_equivalence_test { } { } else { puts "Repair timing output passed equivalence test" } -} - -proc write_lec_verilog { filename } { - if { [env_var_exists_and_non_empty REMOVE_CELLS_FOR_EQY] } { - write_verilog -remove_cells $::env(REMOVE_CELLS_FOR_EQY) $::env(RESULTS_DIR)/$filename - } else { - write_verilog $::env(RESULTS_DIR)/$filename - } -} - -proc write_lec_script { } { - set outfile [open "$::env(OBJECTS_DIR)/4_lec_test.yml" w] - puts $outfile "format: verilog" - puts $outfile "input_paths:" - puts $outfile " - $::env(RESULTS_DIR)/4_before_rsz_lec.v" - puts $outfile " - $::env(RESULTS_DIR)/4_after_rsz_lec.v" - # Gold netlist - puts $outfile "liberty_files:" - foreach libFile $::env(LIB_FILES) { - puts $outfile " - $libFile" - } - puts $outfile "log_file: $::env(LOG_DIR)/4_lec_check.log" - close $outfile -} - -proc run_lec_test { } { - write_lec_verilog 4_after_rsz_lec.v - write_lec_script - # tclint-disable-next-line command-args - eval exec kepler-formal --config $::env(OBJECTS_DIR)/4_lec_test.yml - set count \ - [exec grep -c "Found difference" $::env(LOG_DIR)/4_lec_check.log] - if { $count > 0 } { - error "Repair timing output failed lec test" - } else { - puts "Repair timing output passed lec test" - } -} +} \ No newline at end of file From bd1146f55eebc35c1c26417a3c91e8bfae3bf094 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 16:53:45 +0100 Subject: [PATCH 182/364] separate to lec_check.tcl Signed-off-by: Noam Cohen --- flow/scripts/cts.tcl | 2 +- flow/scripts/lec_check.tcl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flow/scripts/cts.tcl b/flow/scripts/cts.tcl index e7cda505d2..b299f11d4f 100644 --- a/flow/scripts/cts.tcl +++ b/flow/scripts/cts.tcl @@ -72,7 +72,7 @@ if { !$::env(SKIP_CTS_REPAIR_TIMING) } { } if { [env_var_exists_and_non_empty LEC_CHECK] } { write_lec_verilog 4_after_rsz_lec.v - run_lec_test 4_after 4_before_rsz_lec.v 4_after_rsz_lec.v + run_lec_test 4_rsz 4_before_rsz_lec.v 4_after_rsz_lec.v } set result [catch { detailed_placement } msg] diff --git a/flow/scripts/lec_check.tcl b/flow/scripts/lec_check.tcl index 801f2667cb..df38e68add 100644 --- a/flow/scripts/lec_check.tcl +++ b/flow/scripts/lec_check.tcl @@ -22,7 +22,7 @@ proc write_lec_script { step, file1, file2 } { } proc run_lec_test { step, file1, file2 } { - write_lec_script + write_lec_script step, file1, file2 # tclint-disable-next-line command-args eval exec kepler-formal --config $::env(OBJECTS_DIR)/lec_test_${step}.yml set count \ From 778ec6f4a914e1db394931a60f241aa175b61f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Tue, 30 Dec 2025 16:53:34 +0100 Subject: [PATCH 183/364] Fix top params option for slang, demo on asap7/uart MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Povišer --- flow/designs/asap7/uart/config.mk | 3 ++- flow/scripts/synth_canonicalize.tcl | 5 ----- flow/scripts/synth_preamble.tcl | 32 +++++++++++++++++++++++++---- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/flow/designs/asap7/uart/config.mk b/flow/designs/asap7/uart/config.mk index 05de91bcbb..4b36007d47 100644 --- a/flow/designs/asap7/uart/config.mk +++ b/flow/designs/asap7/uart/config.mk @@ -13,4 +13,5 @@ export TNS_END_PERCENT = 100 export EQUIVALENCE_CHECK ?= 1 export REMOVE_CELLS_FOR_EQY = TAPCELL* export SKIP_GATE_CLONING = 1 -export VERILOG_TOP_PARAMS = DATA_WIDTH 8 +export VERILOG_TOP_PARAMS = DATA_WIDTH 8 +export SYNTH_HDL_FRONTEND = slang diff --git a/flow/scripts/synth_canonicalize.tcl b/flow/scripts/synth_canonicalize.tcl index f7d4c44657..1c4384e200 100644 --- a/flow/scripts/synth_canonicalize.tcl +++ b/flow/scripts/synth_canonicalize.tcl @@ -1,11 +1,6 @@ source $::env(SCRIPTS_DIR)/synth_preamble.tcl read_design_sources -dict for {key value} [env_var_or_empty VERILOG_TOP_PARAMS] { - # Apply toplevel parameters - chparam -set $key $value $::env(DESIGN_NAME) -} - hierarchy -check -top $::env(DESIGN_NAME) source_env_var_if_exists SYNTH_CANONICALIZE_TCL diff --git a/flow/scripts/synth_preamble.tcl b/flow/scripts/synth_preamble.tcl index bc76211583..582f7e2544 100644 --- a/flow/scripts/synth_preamble.tcl +++ b/flow/scripts/synth_preamble.tcl @@ -44,11 +44,25 @@ proc read_design_sources { } { } if { [env_var_equals SYNTH_HDL_FRONTEND slang] } { - # slang requires all files at once plugin -i slang - yosys read_slang -D SYNTHESIS --keep-hierarchy --compat=vcs \ - --ignore-assertions {*}$::env(SYNTH_SLANG_ARGS) --top $::env(DESIGN_NAME) \ - {*}$vIdirsArgs {*}$::env(VERILOG_FILES) {*}[env_var_or_empty VERILOG_DEFINES] + + set slang_args [list \ + -D SYNTHESIS --keep-hierarchy --compat=vcs --ignore-assertions --top $::env(DESIGN_NAME) \ + {*}$vIdirsArgs {*}[env_var_or_empty VERILOG_DEFINES]] + + # slang requires all files at once + lappend slang_args {*}$::env(VERILOG_FILES) + + # Apply top-level parameters + dict for {key value} [env_var_or_empty VERILOG_TOP_PARAMS] { + lappend slang_args -G "$key=$value" + } + + # Add user arguments + lappend slang_args {*}$::env(SYNTH_SLANG_ARGS) + + yosys read_slang {*}$slang_args + # Workaround for yosys-slang#119 setattr -unset init } elseif { [env_var_equals SYNTH_HDL_FRONTEND verific] } { @@ -60,6 +74,11 @@ proc read_design_sources { } { } verific -sv2012 {*}$::env(VERILOG_FILES) verific -import -no-split-complex-ports $::env(DESIGN_NAME) + + dict for {key value} [env_var_or_empty VERILOG_TOP_PARAMS] { + # Apply top-level parameters + chparam -set $key $value $::env(DESIGN_NAME) + } } elseif { ![env_var_exists_and_non_empty SYNTH_HDL_FRONTEND] } { verilog_defaults -push if { [env_var_exists_and_non_empty VERILOG_DEFINES] } { @@ -69,6 +88,11 @@ proc read_design_sources { } { read_verilog -defer -sv {*}$vIdirsArgs $file } verilog_defaults -pop + + dict for {key value} [env_var_or_empty VERILOG_TOP_PARAMS] { + # Apply top-level parameters + chparam -set $key $value $::env(DESIGN_NAME) + } } else { error "Unrecognized HDL frontend: $::env(SYNTH_HDL_FRONTEND)" } From 46116d13618a50275a1639575f8a917ae64805c9 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 17:01:58 +0100 Subject: [PATCH 184/364] separate to lec_check.tcl Signed-off-by: Noam Cohen --- flow/scripts/lec_check.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flow/scripts/lec_check.tcl b/flow/scripts/lec_check.tcl index df38e68add..7218022630 100644 --- a/flow/scripts/lec_check.tcl +++ b/flow/scripts/lec_check.tcl @@ -17,12 +17,12 @@ proc write_lec_script { step, file1, file2 } { foreach libFile $::env(LIB_FILES) { puts $outfile " - $libFile" } - puts $outfile "log_file: $::env(LOG_DIR)/lec_check.log" + puts $outfile "log_file: $::env(LOG_DIR)/lec_check_${step}.log" close $outfile } proc run_lec_test { step, file1, file2 } { - write_lec_script step, file1, file2 + write_lec_script step file1 file2 # tclint-disable-next-line command-args eval exec kepler-formal --config $::env(OBJECTS_DIR)/lec_test_${step}.yml set count \ From ac8e1b53aa72dc76cbb09b9dfa9679e723dcd0cc Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 17:03:36 +0100 Subject: [PATCH 185/364] separate to lec_check.tcl Signed-off-by: Noam Cohen --- flow/scripts/lec_check.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/scripts/lec_check.tcl b/flow/scripts/lec_check.tcl index 7218022630..c457cce3c0 100644 --- a/flow/scripts/lec_check.tcl +++ b/flow/scripts/lec_check.tcl @@ -22,7 +22,7 @@ proc write_lec_script { step, file1, file2 } { } proc run_lec_test { step, file1, file2 } { - write_lec_script step file1 file2 + write_lec_script ${step} ${file1} ${file2} # tclint-disable-next-line command-args eval exec kepler-formal --config $::env(OBJECTS_DIR)/lec_test_${step}.yml set count \ From 3b1c7915d689b0df4c7ad6aa613fe4c8c75a8e45 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 17:07:07 +0100 Subject: [PATCH 186/364] separate to lec_check.tcl Signed-off-by: nanocoh --- flow/designs/asap7/aes/config.mk | 1 - flow/scripts/lec_check.tcl | 8 ++++---- tools/kepler-formal | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/flow/designs/asap7/aes/config.mk b/flow/designs/asap7/aes/config.mk index a8cb544a32..9782c9f9cc 100644 --- a/flow/designs/asap7/aes/config.mk +++ b/flow/designs/asap7/aes/config.mk @@ -13,7 +13,6 @@ export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 2 export PLACE_DENSITY = 0.65 export TNS_END_PERCENT = 100 -export EQUIVALENCE_CHECK ?= 1 export REMOVE_CELLS_FOR_EQY = TAPCELL* ifeq ($(FLOW_VARIANT),top) diff --git a/flow/scripts/lec_check.tcl b/flow/scripts/lec_check.tcl index c457cce3c0..1a273812b8 100644 --- a/flow/scripts/lec_check.tcl +++ b/flow/scripts/lec_check.tcl @@ -6,13 +6,12 @@ proc write_lec_verilog { filename } { } } -proc write_lec_script { step, file1, file2 } { +proc write_lec_script { step file1 file2 } { set outfile [open "$::env(OBJECTS_DIR)/lec_test_${step}.yml" w] puts $outfile "format: verilog" puts $outfile "input_paths:" puts $outfile " - $::env(RESULTS_DIR)/${file1}" puts $outfile " - $::env(RESULTS_DIR)/${file2}" - # Gold netlist puts $outfile "liberty_files:" foreach libFile $::env(LIB_FILES) { puts $outfile " - $libFile" @@ -21,8 +20,8 @@ proc write_lec_script { step, file1, file2 } { close $outfile } -proc run_lec_test { step, file1, file2 } { - write_lec_script ${step} ${file1} ${file2} +proc run_lec_test { step file1 file2 } { + write_lec_script $step $file1 $file2 # tclint-disable-next-line command-args eval exec kepler-formal --config $::env(OBJECTS_DIR)/lec_test_${step}.yml set count \ @@ -33,3 +32,4 @@ proc run_lec_test { step, file1, file2 } { puts "Repair timing output passed lec test" } } + diff --git a/tools/kepler-formal b/tools/kepler-formal index 8deb4acf20..e7e1a2d2af 160000 --- a/tools/kepler-formal +++ b/tools/kepler-formal @@ -1 +1 @@ -Subproject commit 8deb4acf20bba724563b4a6acbe477777bb7afe1 +Subproject commit e7e1a2d2af828b3505298a19c459f25b046dc4df From 5d04268c9047d21d4427e083b182c7e6d441a005 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 19:09:36 +0100 Subject: [PATCH 187/364] bump kf Signed-off-by: Noam Cohen --- flow/designs/asap7/aes/config.mk | 1 + tools/kepler-formal | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/flow/designs/asap7/aes/config.mk b/flow/designs/asap7/aes/config.mk index 9782c9f9cc..a8cb544a32 100644 --- a/flow/designs/asap7/aes/config.mk +++ b/flow/designs/asap7/aes/config.mk @@ -13,6 +13,7 @@ export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 2 export PLACE_DENSITY = 0.65 export TNS_END_PERCENT = 100 +export EQUIVALENCE_CHECK ?= 1 export REMOVE_CELLS_FOR_EQY = TAPCELL* ifeq ($(FLOW_VARIANT),top) diff --git a/tools/kepler-formal b/tools/kepler-formal index e7e1a2d2af..8deb4acf20 160000 --- a/tools/kepler-formal +++ b/tools/kepler-formal @@ -1 +1 @@ -Subproject commit e7e1a2d2af828b3505298a19c459f25b046dc4df +Subproject commit 8deb4acf20bba724563b4a6acbe477777bb7afe1 From 69c546cfa1b24135eb277dd0ab9a517ddc1bd39e Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 19:30:23 +0100 Subject: [PATCH 188/364] kf bin deps fix + 0 count case Signed-off-by: Noam Cohen --- build_openroad.sh | 8 ++++++-- flow/scripts/lec_check.tcl | 11 +++++------ flow/scripts/load.tcl | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/build_openroad.sh b/build_openroad.sh index e6f4e472a4..6b2ac5f03d 100755 --- a/build_openroad.sh +++ b/build_openroad.sh @@ -305,15 +305,19 @@ __local_build() cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ -DCMAKE_EXE_LINKER_FLAGS="-flto" \ - -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ + -DCMAKE_BUILD_RPATH='@executable_path/../lib' \ -DCMAKE_INSTALL_RPATH='@executable_path/../lib' \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}/kepler-formal" else cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ -DCMAKE_EXE_LINKER_FLAGS="-flto" \ - -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ + -DCMAKE_BUILD_RPATH='\$ORIGIN/../lib' \ -DCMAKE_INSTALL_RPATH='\$ORIGIN/../lib' \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}/kepler-formal" fi diff --git a/flow/scripts/lec_check.tcl b/flow/scripts/lec_check.tcl index 1a273812b8..dfa5ed7e43 100644 --- a/flow/scripts/lec_check.tcl +++ b/flow/scripts/lec_check.tcl @@ -24,12 +24,11 @@ proc run_lec_test { step file1 file2 } { write_lec_script $step $file1 $file2 # tclint-disable-next-line command-args eval exec kepler-formal --config $::env(OBJECTS_DIR)/lec_test_${step}.yml - set count \ - [exec grep -c "Found difference" $::env(LOG_DIR)/lec_check_${step}.log] - if { $count > 0 } { - error "Repair timing output failed lec test" - } else { - puts "Repair timing output passed lec test" + try { + set count [exec grep -c "Found difference" $::env(LOG_DIR)/lec_check_${step}.log]] + } trap CHILDSTATUS {results options} { + # This block executes if grep returns a non-zero exit code + set count 0 } } diff --git a/flow/scripts/load.tcl b/flow/scripts/load.tcl index f5f32acc0a..23ea45dc27 100644 --- a/flow/scripts/load.tcl +++ b/flow/scripts/load.tcl @@ -115,4 +115,4 @@ proc run_equivalence_test { } { } else { puts "Repair timing output passed equivalence test" } -} \ No newline at end of file +} From 75ef2630a5860ca6243fe7e6b0a1bd380c20d772 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 19:49:31 +0100 Subject: [PATCH 189/364] count test Signed-off-by: nanocoh --- flow/scripts/lec_check.tcl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/flow/scripts/lec_check.tcl b/flow/scripts/lec_check.tcl index dfa5ed7e43..916b510aad 100644 --- a/flow/scripts/lec_check.tcl +++ b/flow/scripts/lec_check.tcl @@ -30,5 +30,10 @@ proc run_lec_test { step file1 file2 } { # This block executes if grep returns a non-zero exit code set count 0 } + if { $count > 0 } { + error "Repair timing output failed lec test" + } else { + puts "Repair timing output passed lec test" + } } From 0b5c918e49478568071ef0aae4e3236ee7788290 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Dec 2025 19:55:48 +0000 Subject: [PATCH 190/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/uart/rules-base.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 9fe9d1f0d7..83342cbf3f 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1190.0, + "value": -1310.0, "compare": ">=" }, "finish__timing__hold__ws": { From 5fbb37147e231300cbde4303549cb5069a0e3a32 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Tue, 30 Dec 2025 21:04:30 +0100 Subject: [PATCH 191/364] deps fix Signed-off-by: nanocoh --- build_openroad.sh | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/build_openroad.sh b/build_openroad.sh index 6b2ac5f03d..ce151b8c2e 100755 --- a/build_openroad.sh +++ b/build_openroad.sh @@ -301,25 +301,14 @@ __local_build() fi cd build - if [[ "$OSTYPE" == "darwin"* ]]; then cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ -DCMAKE_EXE_LINKER_FLAGS="-flto" \ - -DCMAKE_BUILD_RPATH='@executable_path/../lib' \ - -DCMAKE_INSTALL_RPATH='@executable_path/../lib' \ + -DCMAKE_BUILD_RPATH="${INSTALL_PATH}/kepler-formal/lib" \ + -DCMAKE_INSTALL_RPATH="${INSTALL_PATH}/kepler-formal/lib" \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}/kepler-formal" - else - cmake .. -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ - -DCMAKE_EXE_LINKER_FLAGS="-flto" \ - -DCMAKE_BUILD_RPATH='\$ORIGIN/../lib' \ - -DCMAKE_INSTALL_RPATH='\$ORIGIN/../lib' \ - -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ - -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ - -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}/kepler-formal" - fi make -j"${PROC}" install From 306ef25bfc2e05845f121a97cffced6cb85604bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 30 Dec 2025 21:03:21 +0100 Subject: [PATCH 192/364] openroad: single invocation flow has more knobs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit erasing variables or not and saving sdc/odb after each stage are now different variables Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 6 ++++-- flow/scripts/floorplan_to_place.tcl | 3 ++- flow/scripts/util.tcl | 6 +++--- flow/scripts/variables.yaml | 15 ++++++++++----- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index eb0130cfa9..16fcfffe95 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -157,6 +157,7 @@ configuration file. | IO_PLACER_H| A list of metal layers on which the I/O pins are placed horizontally (top and bottom of the die).| | | IO_PLACER_V| A list of metal layers on which the I/O pins are placed vertically (sides of the die).| | | IR_DROP_LAYER| Default metal layer to report IR drop.| | +| KEEP_VARS| Feature toggle to keep intermediate variables during the flow. This is useful for the single-run flow, where all stages of the flow are run in a single OpenROAD instance.| 0| | KLAYOUT_TECH_FILE| A mapping from LEF/DEF to GDS using the KLayout tool.| | | LATCH_MAP_FILE| Optional mapping file supplied to Yosys to map latches| | | LAYER_PARASITICS_FILE| Path to per layer parasitics file. Defaults to $(PLATFORM_DIR)/setRC.tcl.| | @@ -224,7 +225,6 @@ configuration file. | SETUP_REPAIR_SEQUENCE| Specifies the sequence of moves to do in repair_timing -setup. This should be a string of move keywords separated by commas such as the default when not used: "unbuffer,sizedown,sizeup,swap,buffer,clone,split".| | | SETUP_SLACK_MARGIN| Specifies a time margin for the slack when fixing setup violations. This option allows you to overfix or underfix(negative value, terminate retiming before 0 or positive slack). See HOLD_SLACK_MARGIN for more details.| 0| | SET_RC_TCL| Metal & Via RC definition file path.| | -| SINGLE_OPENROAD_INVOCATION_FLOW| Instead of invoking OpenROAD once per stage and saving out the .odb and .sdc file at each stage, invoke OpenROAD once and run through all stages in a single OpenROAD instance.| 0| | SKIP_ANTENNA_REPAIR| Skips antenna repair entirely.| 0| | SKIP_ANTENNA_REPAIR_POST_DRT| Skips antenna repair post-detailed routing.| 0| | SKIP_ANTENNA_REPAIR_PRE_GRT| Skips antenna repair pre-global routing.| 0| @@ -271,6 +271,7 @@ configuration file. | VERILOG_FILES| The path to the design Verilog/SystemVerilog files providing a description of modules.| | | VERILOG_INCLUDE_DIRS| Specifies the include directories for the Verilog input files.| | | VERILOG_TOP_PARAMS| Apply toplevel params (if exist). Passed in as a list of key value pairs in tcl syntax; separated by spaces: PARAM1 VALUE1 PARAM2 VALUE2 stages: - synth| | +| WRITE_ODB_AND_SDC_EACH_STAGE| Save out .sdc and .odb file after each stage, useful to disable when using a single OpenROAD instance to run all stages of the flow.| 1| | YOSYS_FLAGS| Flags to pass to yosys.| -v 3| ## synth variables @@ -484,9 +485,9 @@ configuration file. - [NUM_CORES](#NUM_CORES) - [OPENROAD_HIERARCHICAL](#OPENROAD_HIERARCHICAL) -- [SINGLE_OPENROAD_INVOCATION_FLOW](#SINGLE_OPENROAD_INVOCATION_FLOW) - [SWAP_ARITH_OPERATORS](#SWAP_ARITH_OPERATORS) - [SYNTH_WRAPPED_OPERATORS](#SYNTH_WRAPPED_OPERATORS) +- [WRITE_ODB_AND_SDC_EACH_STAGE](#WRITE_ODB_AND_SDC_EACH_STAGE) ## generate_abstract variables @@ -519,6 +520,7 @@ configuration file. - [GLOBAL_PLACEMENT_ARGS](#GLOBAL_PLACEMENT_ARGS) - [GUI_TIMING](#GUI_TIMING) - [IR_DROP_LAYER](#IR_DROP_LAYER) +- [KEEP_VARS](#KEEP_VARS) - [KLAYOUT_TECH_FILE](#KLAYOUT_TECH_FILE) - [LAYER_PARASITICS_FILE](#LAYER_PARASITICS_FILE) - [LIB_FILES](#LIB_FILES) diff --git a/flow/scripts/floorplan_to_place.tcl b/flow/scripts/floorplan_to_place.tcl index fcfdab7482..f1d46c118b 100644 --- a/flow/scripts/floorplan_to_place.tcl +++ b/flow/scripts/floorplan_to_place.tcl @@ -1,5 +1,6 @@ # Enable keeping variables between stages -set ::env(SINGLE_OPENROAD_INVOCATION_FLOW) 1 +set ::env(KEEP_VARS) 1 +set ::env(WRITE_ODB_AND_SDC_EACH_STAGE) 0 # Floorplan source $::env(SCRIPTS_DIR)/floorplan.tcl diff --git a/flow/scripts/util.tcl b/flow/scripts/util.tcl index 65b6803921..c06e942d6d 100644 --- a/flow/scripts/util.tcl +++ b/flow/scripts/util.tcl @@ -145,7 +145,7 @@ proc find_macros { } { } proc erase_non_stage_variables { stage_name } { - if { $::env(SINGLE_OPENROAD_INVOCATION_FLOW) } { + if { $::env(KEEP_VARS) } { return } # "$::env(SCRIPTS_DIR)/stage_variables.py stage_name" returns list of @@ -243,14 +243,14 @@ proc find_physical_only_masters { } { } proc orfs_write_db { output_file } { - if { $::env(SINGLE_OPENROAD_INVOCATION_FLOW) } { + if { !$::env(WRITE_ODB_AND_SDC_EACH_STAGE) } { return } log_cmd write_db $output_file } proc orfs_write_sdc { output_file } { - if { $::env(SINGLE_OPENROAD_INVOCATION_FLOW) } { + if { !$::env(WRITE_ODB_AND_SDC_EACH_STAGE) } { return } log_cmd write_sdc -no_timestamp $output_file diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index feeda2a0b0..899c50bae8 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1232,11 +1232,16 @@ NUM_CORES: routing, or place jobs running at the same time. stages: - All stages -SINGLE_OPENROAD_INVOCATION_FLOW: +KEEP_VARS: description: > - Instead of invoking OpenROAD once per stage and saving out the - .odb and .sdc file at each stage, invoke OpenROAD once and run - through all stages in a single OpenROAD instance. + Feature toggle to keep intermediate variables during the flow. + This is useful for the single-run flow, where all stages of the flow + are run in a single OpenROAD instance. + default: 0 +WRITE_ODB_AND_SDC_EACH_STAGE: + description: > + Save out .sdc and .odb file after each stage, useful to disable + when using a single OpenROAD instance to run all stages of the flow. stages: - All stages - default: 0 + default: 1 From 9df59e114e54e12cf126f548bfdaee48f4397603 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Tue, 30 Dec 2025 21:48:55 +0000 Subject: [PATCH 193/364] Update OR for dpl ordering fix (+ metrics) designs/gf12/ca53/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__flow__warnings__count:STA-1648 | 260 | 252 | Tighten | | cts__timing__setup__tns | -10900.0 | -12000.0 | Failing | | globalroute__timing__setup__tns | -6480.0 | -8940.0 | Failing | | globalroute__timing__hold__tns | -1660.0 | -726.0 | Tighten | | detailedroute__timing__hold__tns | -95400.0 | -43800.0 | Tighten | | finish__timing__setup__tns | -1450.0 | -2690.0 | Failing | | finish__timing__hold__tns | -2580.0 | -3040.0 | Failing | designs/rapidus2hp/ethmac/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -35.3 | -34.0 | Tighten | | cts__timing__setup__tns | -739.0 | -738.0 | Tighten | | globalroute__timing__setup__tns | -1590.0 | -1650.0 | Failing | | finish__timing__setup__tns | -1590.0 | -1650.0 | Failing | | finish__design__instance__area | 3586 | 3582 | Tighten | designs/rapidus2hp/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -592.0 | -312.0 | Tighten | | globalroute__timing__setup__ws | -40.6 | -39.9 | Tighten | | globalroute__timing__setup__tns | -635.0 | -684.0 | Failing | | finish__timing__setup__ws | -40.6 | -39.9 | Tighten | | finish__timing__setup__tns | -635.0 | -684.0 | Failing | | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -55.9 | -54.9 | Tighten | | globalroute__timing__setup__ws | -331.0 | -253.0 | Tighten | | globalroute__timing__setup__tns | -1140000.0 | -1170000.0 | Failing | | finish__timing__setup__ws | -331.0 | -253.0 | Tighten | | finish__timing__setup__tns | -1140000.0 | -1170000.0 | Failing | | finish__design__instance__area | 33676 | 33662 | Tighten | designs/rapidus2hp/hercules_is_int/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 34395 | 31900 | Tighten | | placeopt__design__instance__count__stdcell | 747782 | 660729 | Tighten | | cts__design__instance__count__setup_buffer | 65024 | 57455 | Tighten | | cts__design__instance__count__hold_buffer | 65024 | 57455 | Tighten | | cts__timing__setup__ws | -460.0 | -70.3 | Tighten | | cts__timing__setup__tns | -3000000.0 | -285000.0 | Tighten | | globalroute__antenna_diodes_count | 651 | 580 | Tighten | | globalroute__timing__setup__ws | -153.0 | -244.0 | Failing | | finish__timing__setup__ws | -153.0 | -244.0 | Failing | | finish__design__instance__area | 35450 | 33568 | Tighten | designs/rapidus2hp/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -118.0 | -309.0 | Failing | | finish__timing__setup__tns | -118.0 | -309.0 | Failing | designs/gf12/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -997.0 | -7370.0 | Failing | | globalroute__timing__setup__tns | -204.0 | -2440.0 | Failing | Add missing designs/rapidus2hp/ibex/rules-verific.json Signed-off-by: Matt Liberty --- flow/designs/gf12/ca53/rules-base.json | 14 +- flow/designs/gf12/ibex/rules-base.json | 4 +- .../designs/rapidus2hp/ethmac/rules-base.json | 10 +- flow/designs/rapidus2hp/gcd/rules-base.json | 10 +- .../hercules_is_int/rules-base.json | 12 +- .../hercules_is_int/rules-verific.json | 20 +-- flow/designs/rapidus2hp/ibex/rules-base.json | 9 +- .../rapidus2hp/ibex/rules-verific.json | 156 ++++++++++++++++++ tools/OpenROAD | 2 +- 9 files changed, 199 insertions(+), 38 deletions(-) create mode 100644 flow/designs/rapidus2hp/ibex/rules-verific.json diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 41e1c70714..a0e717e735 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -25,7 +25,7 @@ "level": "warning" }, "finish__flow__warnings__count:STA-1648": { - "value": 260, + "value": 252, "compare": "<=", "level": "warning" }, @@ -123,7 +123,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10900.0, + "value": -12000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -143,7 +143,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -6480.0, + "value": -8940.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -151,7 +151,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1660.0, + "value": -726.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -183,7 +183,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -95400.0, + "value": -43800.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -191,7 +191,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1450.0, + "value": -2690.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -199,7 +199,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2580.0, + "value": -3040.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/ibex/rules-base.json b/flow/designs/gf12/ibex/rules-base.json index 01039c8323..606ce50f20 100644 --- a/flow/designs/gf12/ibex/rules-base.json +++ b/flow/designs/gf12/ibex/rules-base.json @@ -92,7 +92,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -997.0, + "value": -7370.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -112,7 +112,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -204.0, + "value": -2440.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index fcb96a7c97..9563cd2254 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -118,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -35.3, + "value": -34.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -739.0, + "value": -738.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -142,7 +142,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1590.0, + "value": -1650.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -158,7 +158,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1590.0, + "value": -1650.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -170,7 +170,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 3586, + "value": 3582, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index abe947b540..01200fb580 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -112,7 +112,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -592.0, + "value": -312.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -128,11 +128,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -40.6, + "value": -39.9, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -635.0, + "value": -684.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -144,11 +144,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -40.6, + "value": -39.9, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -635.0, + "value": -684.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index d1bf4a6fa2..d7f99ec184 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -98,7 +98,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -55.9, + "value": -54.9, "compare": ">=" }, "cts__timing__setup__tns": { @@ -118,11 +118,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -331.0, + "value": -253.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1140000.0, + "value": -1170000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,11 +134,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -331.0, + "value": -253.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1140000.0, + "value": -1170000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -150,7 +150,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33676, + "value": 33662, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index f429a17490..7c3107b6a1 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -83,11 +83,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 34395, + "value": 31900, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 747782, + "value": 660729, "compare": "<=" }, "detailedplace__design__violations": { @@ -95,19 +95,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 65024, + "value": 57455, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 65024, + "value": 57455, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -460.0, + "value": -70.3, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -3000000.0, + "value": -285000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -119,11 +119,11 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 651, + "value": 580, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -153.0, + "value": -244.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -139,7 +139,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -153.0, + "value": -244.0, "compare": ">=" }, "finish__timing__setup__tns": { @@ -155,7 +155,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 35450, + "value": 33568, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 77a238d75c..8a30da00a4 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -54,6 +54,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -117,7 +122,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -118.0, + "value": -309.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -133,7 +138,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -118.0, + "value": -309.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json new file mode 100644 index 0000000000..60862e6983 --- /dev/null +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -0,0 +1,156 @@ +{ + "cts__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0240": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0263": { + "value": 7, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "synth__design__instance__area__stdcell": { + "value": 1050.0, + "compare": "<=" + }, + "constraints__clocks__count": { + "value": 1, + "compare": "==" + }, + "placeopt__design__instance__area": { + "value": 1067, + "compare": "<=" + }, + "placeopt__design__instance__count__stdcell": { + "value": 20608, + "compare": "<=" + }, + "detailedplace__design__violations": { + "value": 0, + "compare": "==" + }, + "cts__design__instance__count__setup_buffer": { + "value": 1792, + "compare": "<=" + }, + "cts__design__instance__count__hold_buffer": { + "value": 1792, + "compare": "<=" + }, + "cts__timing__setup__ws": { + "value": -29.5, + "compare": ">=" + }, + "cts__timing__setup__tns": { + "value": -118.0, + "compare": ">=" + }, + "cts__timing__hold__ws": { + "value": -29.5, + "compare": ">=" + }, + "cts__timing__hold__tns": { + "value": -118.0, + "compare": ">=" + }, + "globalroute__antenna_diodes_count": { + "value": 100, + "compare": "<=" + }, + "globalroute__timing__setup__ws": { + "value": -52.8, + "compare": ">=" + }, + "globalroute__timing__setup__tns": { + "value": -309.0, + "compare": ">=" + }, + "globalroute__timing__hold__ws": { + "value": -29.5, + "compare": ">=" + }, + "globalroute__timing__hold__tns": { + "value": -118.0, + "compare": ">=" + }, + "finish__timing__setup__ws": { + "value": -52.8, + "compare": ">=" + }, + "finish__timing__setup__tns": { + "value": -309.0, + "compare": ">=" + }, + "finish__timing__hold__ws": { + "value": -29.5, + "compare": ">=" + }, + "finish__timing__hold__tns": { + "value": -118.0, + "compare": ">=" + }, + "finish__design__instance__area": { + "value": 1103, + "compare": "<=" + } +} \ No newline at end of file diff --git a/tools/OpenROAD b/tools/OpenROAD index 7de25a98e7..4bd41d2070 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 7de25a98e7b09d2ca4e34717863bf35e243a1acc +Subproject commit 4bd41d2070f85b5d6491fb4d38b7a9824b4642bc From 3e1548bd0779ae5252dc64619d069ffb8181adee Mon Sep 17 00:00:00 2001 From: noam cohen Date: Wed, 31 Dec 2025 00:54:51 +0100 Subject: [PATCH 194/364] fix prefix Signed-off-by: nanocoh --- build_openroad.sh | 7 ++++--- flow/scripts/lec_check.tcl | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/build_openroad.sh b/build_openroad.sh index ce151b8c2e..2990500580 100755 --- a/build_openroad.sh +++ b/build_openroad.sh @@ -301,12 +301,13 @@ __local_build() fi cd build - cmake .. -DCMAKE_BUILD_TYPE=Release \ + cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ -DCMAKE_EXE_LINKER_FLAGS="-flto" \ - -DCMAKE_BUILD_RPATH="${INSTALL_PATH}/kepler-formal/lib" \ + -DCMAKE_BUILD_RPATH="${DIR}/tools/kepler-formal/build/thirdparty/naja/src/dnl:${DIR}/tools/kepler-formal/build/thirdparty/naja/src/nl/nl:${DIR}/tools/kepler-formal/build/thirdparty/naja/src/optimization" \ -DCMAKE_INSTALL_RPATH="${INSTALL_PATH}/kepler-formal/lib" \ - -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}/kepler-formal" diff --git a/flow/scripts/lec_check.tcl b/flow/scripts/lec_check.tcl index 916b510aad..bdae00bc70 100644 --- a/flow/scripts/lec_check.tcl +++ b/flow/scripts/lec_check.tcl @@ -7,7 +7,7 @@ proc write_lec_verilog { filename } { } proc write_lec_script { step file1 file2 } { - set outfile [open "$::env(OBJECTS_DIR)/lec_test_${step}.yml" w] + set outfile [open "$::env(OBJECTS_DIR)/${step}_lec_test.yml" w] puts $outfile "format: verilog" puts $outfile "input_paths:" puts $outfile " - $::env(RESULTS_DIR)/${file1}" @@ -16,16 +16,16 @@ proc write_lec_script { step file1 file2 } { foreach libFile $::env(LIB_FILES) { puts $outfile " - $libFile" } - puts $outfile "log_file: $::env(LOG_DIR)/lec_check_${step}.log" + puts $outfile "log_file: $::env(LOG_DIR)/${step}_lec_check.log" close $outfile } proc run_lec_test { step file1 file2 } { write_lec_script $step $file1 $file2 # tclint-disable-next-line command-args - eval exec kepler-formal --config $::env(OBJECTS_DIR)/lec_test_${step}.yml + eval exec kepler-formal --config $::env(OBJECTS_DIR)/${step}_lec_test.yml try { - set count [exec grep -c "Found difference" $::env(LOG_DIR)/lec_check_${step}.log]] + set count [exec grep -c "Found difference" $::env(LOG_DIR)/${step}_lec_check.log]] } trap CHILDSTATUS {results options} { # This block executes if grep returns a non-zero exit code set count 0 From 96e37ea8afe44b07ef5cc589552885de2f364b90 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Wed, 31 Dec 2025 00:56:25 +0100 Subject: [PATCH 195/364] bump kf Signed-off-by: nanocoh --- tools/kepler-formal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/kepler-formal b/tools/kepler-formal index 8deb4acf20..27e3195947 160000 --- a/tools/kepler-formal +++ b/tools/kepler-formal @@ -1 +1 @@ -Subproject commit 8deb4acf20bba724563b4a6acbe477777bb7afe1 +Subproject commit 27e31959477d528febb79b52109c1978bbabfa0c From 2802a013ddb12caa88bf6747dd9649280e8edeac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 31 Dec 2025 00:40:50 +0000 Subject: [PATCH 196/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-mbff/rules-base.json | 2 +- flow/designs/asap7/aes/rules-base.json | 2 +- flow/designs/asap7/ethmac/rules-base.json | 2 +- flow/designs/asap7/swerv_wrapper/rules-base.json | 2 +- flow/designs/gf180/ibex/rules-base.json | 4 ++-- flow/designs/nangate45/ariane133/rules-base.json | 2 +- flow/designs/nangate45/swerv/rules-base.json | 4 ++-- flow/designs/nangate45/swerv_wrapper/rules-base.json | 6 +++--- flow/designs/sky130hd/microwatt/rules-base.json | 4 ++-- flow/designs/sky130hs/aes/rules-base.json | 4 ++-- 10 files changed, 16 insertions(+), 16 deletions(-) diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 12f7f29d42..5a59fe44c7 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -36.5, + "value": -56.1, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index de15b5226b..6a246131e5 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -36.7, + "value": -57.0, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 0aa7cc31d5..1802c8e36d 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3180.0, + "value": -3350.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 2909448b97..fd09117388 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -108,7 +108,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -76000.0, + "value": -77000.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 618fb35b38..a81f7098ab 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -157.0, + "value": -193.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -141.0, + "value": -151.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 942b5d5648..7f61b8f4f5 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -378.0, + "value": -439.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 7456d96266..046f073f3b 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -35.4, + "value": -46.2, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -27.4, + "value": -34.1, "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 ab8cf07f42..e34f5051ab 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -108.0, + "value": -136.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -9.48, + "value": -10.9, "compare": ">=" }, "finish__timing__setup__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -134.0, + "value": -162.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 3ff578e288..9251ef4b07 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -72,7 +72,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { @@ -92,7 +92,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -654.0, + "value": -660.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index 829de0c050..3eaf7d8b0f 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9.0, + "value": -14.1, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +100,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.73, + "value": -4.48, "compare": ">=" }, "finish__timing__hold__ws": { From 4121e17ef025cf81f493edcd62ff7d02e2d6f3c6 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Wed, 31 Dec 2025 11:24:14 +0900 Subject: [PATCH 197/364] flat, base1231 Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 618ea190f8..9e6f0e0a35 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 618ea190f87e4786f684b3399e8830a5d5aa92b3 +Subproject commit 9e6f0e0a35a95658146a0a99b4b1116ab2c23204 From c2c570abb7f4eba3dd2c6c0490979057902b1a95 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Wed, 31 Dec 2025 11:24:59 +0900 Subject: [PATCH 198/364] flat, fix1231 Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 9e6f0e0a35..ad41cefe7a 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 9e6f0e0a35a95658146a0a99b4b1116ab2c23204 +Subproject commit ad41cefe7a2d1f2f25214354545be2e79c9c932e From dfc16b1729f58ce7c393f498255749bd45785a77 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Wed, 31 Dec 2025 11:32:30 +0900 Subject: [PATCH 199/364] flat, fix1231 + revert rb_opt Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index ad41cefe7a..b005fc7940 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit ad41cefe7a2d1f2f25214354545be2e79c9c932e +Subproject commit b005fc79401b287dd0df5178ea7d525bfe647dcb From 388a2d870fd095d885501d168b6cc0cda6d464ab Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Wed, 31 Dec 2025 11:48:28 +0900 Subject: [PATCH 200/364] flat, base1231 2nd Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index b005fc7940..9e6f0e0a35 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit b005fc79401b287dd0df5178ea7d525bfe647dcb +Subproject commit 9e6f0e0a35a95658146a0a99b4b1116ab2c23204 From 0ec7c553476889d61c49fbac11c908b737161641 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Wed, 31 Dec 2025 04:51:40 +0000 Subject: [PATCH 201/364] designs/asap7/uart/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | synth__design__instance__area__stdcell | 83.24 | 82.7 | Tighten | | placeopt__design__instance__area | 107 | 100 | Tighten | | placeopt__design__instance__count__stdcell | 996 | 912 | Tighten | | cts__timing__setup__ws | -33.8 | -48.0 | Failing | | cts__timing__setup__tns | -1320.0 | -1440.0 | Failing | | globalroute__timing__setup__tns | -1990.0 | -2090.0 | Failing | | detailedroute__timing__setup__ws | -18.8 | -33.5 | Failing | | detailedroute__timing__setup__tns | -327.0 | -446.0 | Failing | | finish__timing__setup__ws | -34.3 | -49.5 | Failing | | finish__timing__setup__tns | -1310.0 | -1520.0 | Failing | Signed-off-by: Matt Liberty --- flow/designs/asap7/uart/rules-base.json | 100 +++++++++++++++++++++--- tools/OpenROAD | 2 +- 2 files changed, 91 insertions(+), 11 deletions(-) diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 83342cbf3f..f7524c6e5c 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -1,6 +1,86 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { - "value": 83.24, + "value": 82.7, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +88,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 107, + "value": 100, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 996, + "value": 912, "compare": "<=" }, "detailedplace__design__violations": { @@ -28,11 +108,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -33.8, + "value": -48.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1320.0, + "value": -1440.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +132,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1990.0, + "value": -2090.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +160,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -18.8, + "value": -33.5, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -327.0, + "value": -446.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -96,11 +176,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -34.3, + "value": -49.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1310.0, + "value": -1520.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/tools/OpenROAD b/tools/OpenROAD index 4bd41d2070..2d5a635a53 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 4bd41d2070f85b5d6491fb4d38b7a9824b4642bc +Subproject commit 2d5a635a535f7d57fdb571e48bff317527a4ee92 From e7cfcfd9c68aa05fbb9d877e05f2f585e5e30715 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 31 Dec 2025 07:03:16 +0100 Subject: [PATCH 202/364] floorplan_to_place: behavior is back to what it was on master MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR now adds the option of skipping saving of .odb/.sdc files only Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 2 +- flow/scripts/floorplan_to_place.tcl | 4 ---- flow/scripts/variables.yaml | 2 ++ 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 16fcfffe95..78e0f99f41 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -483,6 +483,7 @@ configuration file. ## All stages variables +- [KEEP_VARS](#KEEP_VARS) - [NUM_CORES](#NUM_CORES) - [OPENROAD_HIERARCHICAL](#OPENROAD_HIERARCHICAL) - [SWAP_ARITH_OPERATORS](#SWAP_ARITH_OPERATORS) @@ -520,7 +521,6 @@ configuration file. - [GLOBAL_PLACEMENT_ARGS](#GLOBAL_PLACEMENT_ARGS) - [GUI_TIMING](#GUI_TIMING) - [IR_DROP_LAYER](#IR_DROP_LAYER) -- [KEEP_VARS](#KEEP_VARS) - [KLAYOUT_TECH_FILE](#KLAYOUT_TECH_FILE) - [LAYER_PARASITICS_FILE](#LAYER_PARASITICS_FILE) - [LIB_FILES](#LIB_FILES) diff --git a/flow/scripts/floorplan_to_place.tcl b/flow/scripts/floorplan_to_place.tcl index f1d46c118b..1cab12776e 100644 --- a/flow/scripts/floorplan_to_place.tcl +++ b/flow/scripts/floorplan_to_place.tcl @@ -1,6 +1,5 @@ # Enable keeping variables between stages set ::env(KEEP_VARS) 1 -set ::env(WRITE_ODB_AND_SDC_EACH_STAGE) 0 # Floorplan source $::env(SCRIPTS_DIR)/floorplan.tcl @@ -31,6 +30,3 @@ source $::env(SCRIPTS_DIR)/detail_place.tcl # Repair timing after placement source $::env(SCRIPTS_DIR)/repair_timing_post_place.tcl - -write_db $::env(RESULTS_DIR)/3_6_place_repair_timing.odb -write_sdc -no_timestamp $::env(RESULTS_DIR)/3_6_place_repair_timing.sdc diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 899c50bae8..27bba8e9f7 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1238,6 +1238,8 @@ KEEP_VARS: This is useful for the single-run flow, where all stages of the flow are run in a single OpenROAD instance. default: 0 + stages: + - All stages WRITE_ODB_AND_SDC_EACH_STAGE: description: > Save out .sdc and .odb file after each stage, useful to disable From 76cbdf8e2c0d44f6afa51e1a0336e881affe7aa4 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Wed, 31 Dec 2025 17:22:29 +0900 Subject: [PATCH 203/364] flat, fix1231a Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 9e6f0e0a35..f9a6acaf77 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 9e6f0e0a35a95658146a0a99b4b1116ab2c23204 +Subproject commit f9a6acaf77a58c03a8d1284d3fd64b33d0cfd3bc From e5727ff997e3da8722cead3bae4f3fafa58dd849 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 31 Dec 2025 10:27:36 +0100 Subject: [PATCH 204/364] variables: VERILOG_TOP_PARAMS yaml gaffe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 4 ++-- flow/scripts/variables.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 178f0f2b0a..107613a5bf 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -270,7 +270,7 @@ configuration file. | VERILOG_DEFINES| Preprocessor defines passed to the language frontend. Example: `-D HPDCACHE_ASSERT_OFF`| | | VERILOG_FILES| The path to the design Verilog/SystemVerilog files providing a description of modules.| | | VERILOG_INCLUDE_DIRS| Specifies the include directories for the Verilog input files.| | -| VERILOG_TOP_PARAMS| Apply toplevel params (if exist). Passed in as a list of key value pairs in tcl syntax; separated by spaces: PARAM1 VALUE1 PARAM2 VALUE2 stages: - synth| | +| VERILOG_TOP_PARAMS| Apply toplevel params (if exist). Passed in as a list of key value pairs in tcl syntax; separated by spaces: PARAM1 VALUE1 PARAM2 VALUE2| | | YOSYS_FLAGS| Flags to pass to yosys.| -v 3| ## synth variables @@ -306,6 +306,7 @@ configuration file. - [VERILOG_DEFINES](#VERILOG_DEFINES) - [VERILOG_FILES](#VERILOG_FILES) - [VERILOG_INCLUDE_DIRS](#VERILOG_INCLUDE_DIRS) +- [VERILOG_TOP_PARAMS](#VERILOG_TOP_PARAMS) - [YOSYS_FLAGS](#YOSYS_FLAGS) ## floorplan variables @@ -540,5 +541,4 @@ configuration file. - [TAP_CELL_NAME](#TAP_CELL_NAME) - [TECH_LEF](#TECH_LEF) - [USE_FILL](#USE_FILL) -- [VERILOG_TOP_PARAMS](#VERILOG_TOP_PARAMS) diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index fe50e320f2..281d4839b6 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -875,7 +875,7 @@ VERILOG_TOP_PARAMS: description: | Apply toplevel params (if exist). Passed in as a list of key value pairs in tcl syntax; separated by spaces: PARAM1 VALUE1 PARAM2 VALUE2 - stages: + stages: - synth CORE_ASPECT_RATIO: description: > From ffb5773c01db68b97c5eb282bf0556a9d11e5e10 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Wed, 31 Dec 2025 13:59:33 +0000 Subject: [PATCH 205/364] Fixed Rapidus ethmac so that it runs with Verific Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/ethmac/config.mk | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/flow/designs/rapidus2hp/ethmac/config.mk b/flow/designs/rapidus2hp/ethmac/config.mk index cd166bfeb7..a975244aec 100644 --- a/flow/designs/rapidus2hp/ethmac/config.mk +++ b/flow/designs/rapidus2hp/ethmac/config.mk @@ -6,8 +6,10 @@ ifeq ($(FLOW_VARIANT), verific) export SYNTH_HDL_FRONTEND = verific endif -export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/*.v)) -export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc +export SRC_HOME = $(DESIGN_HOME)/src/$(DESIGN_NICKNAME) +export VERILOG_INCLUDE_DIRS = $(SRC_HOME) +export VERILOG_FILES = $(sort $(wildcard $(SRC_HOME)/*.v)) +export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc export ABC_AREA = 1 export CORE_UTILIZATION = 70 From 68012e2e7f34f10072f726d61465fe7f7608bea2 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Tue, 30 Dec 2025 20:49:58 +0000 Subject: [PATCH 206/364] initial PDK 0.3 design tuning to get negative slack Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/cva6/config.mk | 20 ++++++++++++------ .../rapidus2hp/cva6/constraint_0.3_6T.sdc | 16 ++++++++++++++ .../rapidus2hp/cva6/constraint_0.3_8T.sdc | 16 ++++++++++++++ flow/designs/rapidus2hp/ethmac/config.mk | 5 ++++- flow/designs/rapidus2hp/ibex/config.mk | 18 +++++++++++++--- .../rapidus2hp/ibex/constraint_0.3.sdc | 19 +++++++++++++++++ .../rapidus2hp/ibex/constraint_0.3_8T.sdc | 19 +++++++++++++++++ flow/designs/rapidus2hp/jpeg/config.mk | 18 +++++++++------- .../rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc | 21 +++++++++++++++++++ 9 files changed, 135 insertions(+), 17 deletions(-) create mode 100644 flow/designs/rapidus2hp/cva6/constraint_0.3_6T.sdc create mode 100644 flow/designs/rapidus2hp/cva6/constraint_0.3_8T.sdc create mode 100644 flow/designs/rapidus2hp/ibex/constraint_0.3.sdc create mode 100644 flow/designs/rapidus2hp/ibex/constraint_0.3_8T.sdc create mode 100644 flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc diff --git a/flow/designs/rapidus2hp/cva6/config.mk b/flow/designs/rapidus2hp/cva6/config.mk index 8705644ed3..7c2b2b8474 100644 --- a/flow/designs/rapidus2hp/cva6/config.mk +++ b/flow/designs/rapidus2hp/cva6/config.mk @@ -94,16 +94,24 @@ export ADDITIONAL_LIBS += $(PLATFORM_DIR)/ram/lib/sacrls0g0d1p64x128m2b1w0c1p0d0 $(PLATFORM_DIR)/ram/lib/sacrls0g0d1p64x25m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lib -DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc +DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc _0P2A_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_6T.sdc _0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_8T.sdc +_0P3_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.3_6T.sdc +_0P3_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.3_8T.sdc # Use $(if) to defer conditional eval until all makefiles are read -export SDC_FILE = $(strip $(if $(filter 0.2a,$(RAPIDUS_PDK_VERSION)), \ - $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ - $(_0P2A_6T_SDC_FILE), \ - $(_0P2A_8T_SDC_FILE)), \ - $(DEFAULT_SDC_FILE))) +export SDC_FILE = $(strip \ + $(if $(filter 0.2a,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + $(_0P2A_6T_SDC_FILE), \ + $(_0P2A_8T_SDC_FILE) \ + ), \ + $(if $(and $(filter 0.3,$(RAPIDUS_PDK_VERSION)),$(filter ra02h138_DST_45CPP,$(PLACE_SITE))), \ + $(_0P3_6T_SDC_FILE), \ + $(_0P3_8T_SDC_FILE) \ + ) \ + )) # Must be defined before the ifeq's export SYNTH_HDL_FRONTEND = slang diff --git a/flow/designs/rapidus2hp/cva6/constraint_0.3_6T.sdc b/flow/designs/rapidus2hp/cva6/constraint_0.3_6T.sdc new file mode 100644 index 0000000000..2af5e68946 --- /dev/null +++ b/flow/designs/rapidus2hp/cva6/constraint_0.3_6T.sdc @@ -0,0 +1,16 @@ +# Derived from cva6_synth.tcl and Makefiles + +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name main_clk +set clk_port clk_i +set clk_ports_list [list $clk_port] +set clk_period 700 + +convert_time_value clk_period + +set input_delay [convert_time_value 0.46] +set output_delay [convert_time_value 0.11] + + +create_clock [get_ports $clk_port] -name $clk_name -period $clk_period diff --git a/flow/designs/rapidus2hp/cva6/constraint_0.3_8T.sdc b/flow/designs/rapidus2hp/cva6/constraint_0.3_8T.sdc new file mode 100644 index 0000000000..75c8498931 --- /dev/null +++ b/flow/designs/rapidus2hp/cva6/constraint_0.3_8T.sdc @@ -0,0 +1,16 @@ +# Derived from cva6_synth.tcl and Makefiles + +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name main_clk +set clk_port clk_i +set clk_ports_list [list $clk_port] +set clk_period 550 + +convert_time_value clk_period + +set input_delay [convert_time_value 0.46] +set output_delay [convert_time_value 0.11] + + +create_clock [get_ports $clk_port] -name $clk_name -period $clk_period diff --git a/flow/designs/rapidus2hp/ethmac/config.mk b/flow/designs/rapidus2hp/ethmac/config.mk index cd166bfeb7..1fd8f698a5 100644 --- a/flow/designs/rapidus2hp/ethmac/config.mk +++ b/flow/designs/rapidus2hp/ethmac/config.mk @@ -10,7 +10,10 @@ export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NIC export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc export ABC_AREA = 1 -export CORE_UTILIZATION = 70 +export CORE_UTILIZATION = $(strip $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + 65, \ + 70)) + export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 0.75 export PLACE_DENSITY = 0.70 diff --git a/flow/designs/rapidus2hp/ibex/config.mk b/flow/designs/rapidus2hp/ibex/config.mk index 6aa6647a56..a221b8230e 100644 --- a/flow/designs/rapidus2hp/ibex/config.mk +++ b/flow/designs/rapidus2hp/ibex/config.mk @@ -24,15 +24,27 @@ else DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc _0P2A_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_6T.sdc _0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_8T.sdc + _0P3_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.3_8T.sdc + # Use $(if) to defer conditional eval until all makefiles are read - export SDC_FILE = $(strip $(if $(filter 0.2a,$(RAPIDUS_PDK_VERSION)), \ + export SDC_FILE = $(strip \ + $(if $(filter 0.2a,$(RAPIDUS_PDK_VERSION)), \ $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ $(_0P2A_6T_SDC_FILE), \ $(_0P2A_8T_SDC_FILE)), \ - $(DEFAULT_SDC_FILE))) + $(if $(and $(filter 0.3,$(RAPIDUS_PDK_VERSION)),$(filter ra02h184_HST_45CPP,$(PLACE_SITE))), \ + $(_0P3_8T_SDC_FILE), \ + $(DEFAULT_SDC_FILE) \ + ) \ + )) endif -export CORE_UTILIZATION = 70 +export CORE_UTILIZATION = $(strip $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + 60, \ + 65), \ + 70)) + export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 0.75 export PLACE_DENSITY_LB_ADDON = 0.20 diff --git a/flow/designs/rapidus2hp/ibex/constraint_0.3.sdc b/flow/designs/rapidus2hp/ibex/constraint_0.3.sdc new file mode 100644 index 0000000000..fb9decbaa6 --- /dev/null +++ b/flow/designs/rapidus2hp/ibex/constraint_0.3.sdc @@ -0,0 +1,19 @@ +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name core_clock +set clk_port_name clk_i +set clk_period 500 +set clk_io_pct 0.2 + +set clk_port [get_ports $clk_port_name] + +convert_time_value clk_period + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] diff --git a/flow/designs/rapidus2hp/ibex/constraint_0.3_8T.sdc b/flow/designs/rapidus2hp/ibex/constraint_0.3_8T.sdc new file mode 100644 index 0000000000..fb9decbaa6 --- /dev/null +++ b/flow/designs/rapidus2hp/ibex/constraint_0.3_8T.sdc @@ -0,0 +1,19 @@ +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name core_clock +set clk_port_name clk_i +set clk_period 500 +set clk_io_pct 0.2 + +set clk_port [get_ports $clk_port_name] + +convert_time_value clk_period + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] diff --git a/flow/designs/rapidus2hp/jpeg/config.mk b/flow/designs/rapidus2hp/jpeg/config.mk index 15bea64ce6..8ef104608b 100644 --- a/flow/designs/rapidus2hp/jpeg/config.mk +++ b/flow/designs/rapidus2hp/jpeg/config.mk @@ -10,15 +10,19 @@ endif export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/*.v)) export VERILOG_INCLUDE_DIRS = $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/include -DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_7nm.sdc +DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_7nm.sdc _0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.2a_8T.sdc -# Use $(if) to defer conditional eval until all makefiles are read -export SDC_FILE = $(strip $(if $(filter 0.2a,$(RAPIDUS_PDK_VERSION)), \ - $(if $(filter ra02h184_HST_45CPP,$(PLACE_SITE)), \ - $(_0P2A_8T_SDC_FILE), \ - $(DEFAULT_SDC_FILE)), \ - $(DEFAULT_SDC_FILE))) +_0P3_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.3.sdc +# Use $(if) to defer conditional eval until all makefiles are read +export SDC_FILE = $(strip \ + $(if $(and $(filter 0.2a,$(RAPIDUS_PDK_VERSION)),$(filter ra02h184_HST_45CPP,$(PLACE_SITE))), \ + $(_0P2A_8T_SDC_FILE), \ + $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + $(_0P3_SDC_FILE), \ + $(DEFAULT_SDC_FILE) \ + ) \ + )) export ABC_AREA = 1 diff --git a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc new file mode 100644 index 0000000000..4a4df0c300 --- /dev/null +++ b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc @@ -0,0 +1,21 @@ +source $::env(PLATFORM_DIR)/util.tcl + +current_design jpeg_encoder + +set clk_name clk +set clk_port_name clk +set clk_period 230 +set clk_io_pct 0.2 + +convert_time_value clk_period + +set clk_port [get_ports $clk_port_name] + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] From 1f5b2a9c02131646482f363e55667b0616a7ae5c Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Wed, 31 Dec 2025 23:42:19 +0900 Subject: [PATCH 207/364] Rebased rule-*.json files after master merge Signed-off-by: Jaehyun Kim --- flow/designs/asap7/aes-mbff/rules-base.json | 108 +++++++++++++++- flow/designs/asap7/ethmac/rules-base.json | 120 +++++++++++++++++- flow/designs/asap7/mock-alu/rules-base.json | 6 +- flow/designs/asap7/uart/rules-base.json | 19 ++- flow/designs/gf12/bp_single/rules-base.json | 8 +- flow/designs/gf12/ca53/rules-base.json | 23 ++-- flow/designs/gf12/coyote/rules-base.json | 21 +-- flow/designs/gf12/gcd/rules-base.json | 12 +- flow/designs/gf180/riscv32i/rules-base.json | 2 +- flow/designs/ihp-sg13g2/ibex/rules-base.json | 5 + flow/designs/nangate45/aes/rules-base.json | 45 ++++++- .../nangate45/ariane136/rules-base.json | 49 ++++++- .../nangate45/bp_multi_top/rules-base.json | 79 +++++++++++- flow/designs/nangate45/swerv/rules-base.json | 8 +- .../designs/rapidus2hp/ethmac/rules-base.json | 14 +- flow/designs/rapidus2hp/gcd/rules-base.json | 12 +- .../hercules_idecode/rules-base.json | 13 +- .../hercules_is_int/rules-base.json | 14 +- .../hercules_is_int/rules-verific.json | 4 +- flow/designs/rapidus2hp/ibex/rules-base.json | 9 +- .../rapidus2hp/ibex/rules-verific.json | 4 +- .../designs/sky130hd/riscv32i/rules-base.json | 10 +- flow/designs/sky130hs/jpeg/rules-base.json | 11 +- 23 files changed, 473 insertions(+), 123 deletions(-) diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 5a59fe44c7..b76f2c0063 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -1,4 +1,104 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" @@ -32,7 +132,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -706.0, + "value": -687.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +152,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2650.0, + "value": -2160.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,11 +196,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -56.1, + "value": -44.6, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1000.0, + "value": -1130.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 1802c8e36d..9a433a85f5 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -1,4 +1,114 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1212": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 8450.0, "compare": "<=" @@ -28,11 +138,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -160.0, + "value": -156.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2900.0, + "value": -2800.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +162,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -4030.0, + "value": -3720.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +194,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -1870.0, + "value": -1940.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -100,7 +210,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3350.0, + "value": -3040.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 63bf1d8df0..b080ad1eca 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -127,7 +127,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -16500.0, + "value": -16400.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -147,7 +147,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -20100.0, + "value": -20600.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -179,7 +179,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -12300.0, + "value": -12200.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 879fb96e93..1d76d64eb3 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -24,6 +24,11 @@ "compare": "<=", "level": "warning" }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "finish__flow__warnings__count:STA-1212": { "value": 1001, "compare": "<=", @@ -108,11 +113,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -48.0, + "value": -45.1, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1440.0, + "value": -1500.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -132,7 +137,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2090.0, + "value": -1990.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -160,11 +165,11 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -33.5, + "value": -31.4, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -446.0, + "value": -336.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -176,11 +181,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -49.5, + "value": -44.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1520.0, + "value": -1370.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index c23b84bf82..17c51c0db3 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -192,7 +192,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -400.0, + "value": -2300.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -200,7 +200,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -2500.0, + "value": -702.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -220,7 +220,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1360.0, + "value": -1320.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -252,7 +252,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -943.0, + "value": -887.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 02994058b9..0dd3c61e58 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -9,6 +9,11 @@ "compare": "<=", "level": "warning" }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "detailedroute__flow__warnings__count:DRT-0120": { "value": 65, "compare": "<=", @@ -25,7 +30,7 @@ "level": "warning" }, "finish__flow__warnings__count:STA-1648": { - "value": 252, + "value": 360, "compare": "<=", "level": "warning" }, @@ -123,7 +128,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -12000.0, + "value": -9530.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -131,7 +136,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -100.0, + "value": -512.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -139,11 +144,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -238.0, + "value": -233.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8940.0, + "value": -2520.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -151,7 +156,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -726.0, + "value": -1130.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -183,7 +188,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -43800.0, + "value": -67700.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -191,7 +196,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2690.0, + "value": -400.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -199,7 +204,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -3040.0, + "value": -7530.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/coyote/rules-base.json b/flow/designs/gf12/coyote/rules-base.json index 18fac1af5e..d8aed12bad 100644 --- a/flow/designs/gf12/coyote/rules-base.json +++ b/flow/designs/gf12/coyote/rules-base.json @@ -14,21 +14,6 @@ "compare": "<=", "level": "warning" }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "flow__warnings__count:GPL-0302": { "value": 1, "compare": "<=", @@ -158,7 +143,7 @@ "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 0, + "value": 2, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -178,11 +163,11 @@ "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -236.0, + "value": -229.0, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -15100.0, + "value": -2650.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/gcd/rules-base.json b/flow/designs/gf12/gcd/rules-base.json index 747ca462cc..7a33ec346e 100644 --- a/flow/designs/gf12/gcd/rules-base.json +++ b/flow/designs/gf12/gcd/rules-base.json @@ -93,11 +93,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -51.5, + "value": -47.8, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -224.0, + "value": -299.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -113,11 +113,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -59.2, + "value": -55.1, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1020.0, + "value": -342.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -161,11 +161,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -41.3, + "value": -41.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -435.0, + "value": -170.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 99d540968f..1b3030a7d9 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -152,7 +152,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 454654, + "value": 453842, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index 2a104e3587..ffc986853a 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -34,6 +34,11 @@ "compare": "<=", "level": "warning" }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 305820.24, "compare": "<=" diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index c23364c45d..3a8806355f 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -1,4 +1,39 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 21600.0, "compare": "<=" @@ -28,11 +63,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.041, + "value": -0.0868, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.645, + "value": -0.347, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +83,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0595, + "value": -0.108, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2.26, + "value": -1.85, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -100,7 +135,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.21, + "value": -0.625, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index fd2cc76a10..0a954629bf 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -1,4 +1,49 @@ { + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 845982.06, "compare": "<=" @@ -40,7 +85,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -6.07, + "value": -8.5, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -92,7 +137,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -7.67, + "value": -2.72, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index f1fc828518..08f4b13705 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -1,4 +1,69 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-2021": { + "value": 152, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 365, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 44, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 586679.15, "compare": "<=" @@ -28,7 +93,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -4.87, + "value": -4.85, "compare": ">=" }, "cts__timing__setup__tns": { @@ -64,7 +129,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4870472, + "value": 4844335, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,19 +145,19 @@ "compare": "<=" }, "detailedroute__timing__setup__ws": { - "value": -70.5, + "value": -15.7, "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -2680.0, + "value": -1080.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { - "value": -0.277, + "value": -2.24, "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -6.79, + "value": -86.6, "compare": ">=" }, "finish__timing__setup__ws": { @@ -108,7 +173,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.27, + "value": -1.02, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 9c52f24e43..8ba045ee17 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -77,7 +77,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -11.2, + "value": -13.5, "compare": ">=" }, "cts__timing__hold__ws": { @@ -97,7 +97,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -46.2, + "value": -52.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -137,7 +137,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -0.68, + "value": -1.08, "compare": ">=" }, "finish__timing__setup__ws": { @@ -145,7 +145,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -34.1, + "value": -43.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 9563cd2254..17461a357b 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -98,7 +98,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 3416, + "value": 3414, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -122,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -738.0, + "value": -622.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -138,11 +138,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -52.0, + "value": -51.3, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1650.0, + "value": -1410.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -154,11 +154,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -52.0, + "value": -51.3, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1650.0, + "value": -1410.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -170,7 +170,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 3582, + "value": 3577, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index 01200fb580..a05a33ab02 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -108,11 +108,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -27.8, + "value": -25.5, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -312.0, + "value": -296.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -128,11 +128,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -39.9, + "value": -38.9, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -684.0, + "value": -821.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -144,11 +144,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -39.9, + "value": -38.9, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -684.0, + "value": -821.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index e067808641..d815c303f5 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -9,6 +9,11 @@ "compare": "<=", "level": "warning" }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "cts__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -128,11 +133,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -262.0, + "value": -115.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -503000.0, + "value": -404000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -144,11 +149,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -262.0, + "value": -115.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -503000.0, + "value": -404000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 4914dd91f7..6258439593 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -98,11 +98,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -54.9, + "value": -78.7, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -294000.0, + "value": -291000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -118,11 +118,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -253.0, + "value": -243.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1170000.0, + "value": -1300000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,11 +134,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -253.0, + "value": -243.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1170000.0, + "value": -1300000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -150,7 +150,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33662, + "value": 33567, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index 7c3107b6a1..6af6a41cb0 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -123,7 +123,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -244.0, + "value": -385.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -139,7 +139,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -244.0, + "value": -385.0, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 9b222e79ce..ffae0d4394 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -54,11 +54,6 @@ "compare": "<=", "level": "warning" }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalroute__flow__warnings__count:STA-0122": { "value": 27, "compare": "<=", @@ -122,7 +117,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -309.0, + "value": -708.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -138,7 +133,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -309.0, + "value": -708.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json index 60862e6983..cfa597387d 100644 --- a/flow/designs/rapidus2hp/ibex/rules-verific.json +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -122,7 +122,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -309.0, + "value": -591.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -138,7 +138,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -309.0, + "value": -591.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 1ee821b888..40c1fc1487 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -72,7 +72,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -33.8, + "value": -69.3, "compare": ">=" }, "cts__timing__hold__ws": { @@ -88,11 +88,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.79, + "value": -1.76, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -93.4, + "value": -98.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -124,7 +124,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -4.12, + "value": -14.2, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -140,7 +140,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -42.2, + "value": -62.5, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index e47c1e856c..bb1414463b 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,6 +1,6 @@ { "detailedroute__flow__warnings__count:DRT-0120": { - "value": 39, + "value": 52, "compare": "<=", "level": "warning" }, @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "finish__flow__warnings__count:GUI-0076": { "value": 1, "compare": "<=", @@ -94,7 +89,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 165, + "value": 140, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -126,7 +121,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 100, + "value": 104, "compare": "<=" }, "detailedroute__timing__setup__ws": { From b9bcea56991177d5b879e9030d2a666363dcd384 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Thu, 1 Jan 2026 01:42:18 +0900 Subject: [PATCH 208/364] Rebased rules-base.json for sky130hd/microwatt Signed-off-by: Jaehyun Kim --- flow/designs/sky130hd/microwatt/rules-base.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 074213b7b7..e3fbcf99dc 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -139,7 +139,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 2310, + "value": 2600, "compare": "<=" }, "globalroute__timing__setup__ws": { From d683bc7ea43b72411abb710e2857fc1bb7dd1e8f Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Wed, 31 Dec 2025 17:04:14 +0000 Subject: [PATCH 209/364] Removed set_max_time_borrow from SDC Signed-off-by: Jeff Ng --- .../rapidus2hp/hercules_is_int/prects.sdc | 2 -- .../hercules_is_int/rules-base.json | 19 ++++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_is_int/prects.sdc b/flow/designs/rapidus2hp/hercules_is_int/prects.sdc index 5ed9e040ad..51ed806dd5 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/prects.sdc +++ b/flow/designs/rapidus2hp/hercules_is_int/prects.sdc @@ -11,8 +11,6 @@ convert_time_value clk_period set_max_fanout 32 [current_design] set_load [convert_cap_value 10] [all_outputs] set_max_capacitance [convert_cap_value 10] [all_inputs] -# temporarily set max time borrow to workaround STA assert -set_max_time_borrow 0.0 [all_registers -level_sensitive] create_clock -name "clk" -add -period $clk_period \ -waveform [list 0.0 [expr { 0.5 * $clk_period }]] [get_ports clk] diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 6258439593..e404d82b0e 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -9,6 +9,11 @@ "compare": "<=", "level": "warning" }, + "finish__flow__warnings__count:GUI-0076": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -78,11 +83,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 31904, + "value": 31863, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 661868, + "value": 661418, "compare": "<=" }, "detailedplace__design__violations": { @@ -102,7 +107,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -291000.0, + "value": -292000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -118,7 +123,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -243.0, + "value": -275.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -134,7 +139,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -243.0, + "value": -275.0, "compare": ">=" }, "finish__timing__setup__tns": { @@ -150,7 +155,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33567, + "value": 33606, "compare": "<=" } -} \ No newline at end of file +} From 9a352f29247e161cddc8aa7056324137eb598eed Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Fri, 2 Jan 2026 16:22:55 +0000 Subject: [PATCH 210/364] Don't call report_metrics from detail_route.tcl In detail_route.tcl we don't extract or estimate parasitics so the timing and power numbers are wire load based. Just skip here as those will be covered in final. Note that the OR generated metrics are still included at this step. Remove detailedroute__timing__(setup|hold)__(ws|tns) from rules-*.json. Signed-off-by: Matt Liberty --- flow/designs/asap7/aes-block/rules-base.json | 18 +------------- flow/designs/asap7/aes-mbff/rules-base.json | 18 +------------- flow/designs/asap7/aes/rules-base.json | 18 +------------- flow/designs/asap7/aes_lvt/rules-base.json | 18 +------------- flow/designs/asap7/cva6/rules-base.json | 18 +------------- flow/designs/asap7/ethmac/rules-base.json | 18 +------------- flow/designs/asap7/ethmac_lvt/rules-base.json | 18 +------------- flow/designs/asap7/gcd-ccs/rules-base.json | 18 +------------- flow/designs/asap7/gcd/rules-base.json | 18 +------------- flow/designs/asap7/ibex/rules-base.json | 18 +------------- flow/designs/asap7/jpeg/rules-base.json | 18 +------------- flow/designs/asap7/jpeg_lvt/rules-base.json | 18 +------------- flow/designs/asap7/mock-alu/rules-base.json | 18 +------------- flow/designs/asap7/mock-cpu/rules-base.json | 18 +------------- .../asap7/riscv32i-mock-sram/rules-base.json | 18 +------------- flow/designs/asap7/riscv32i/rules-base.json | 18 +------------- .../asap7/swerv_wrapper/rules-base.json | 18 +------------- flow/designs/asap7/uart/rules-base.json | 18 +------------- flow/designs/gf12/aes/rules-base.json | 18 +------------- flow/designs/gf12/ariane/rules-base.json | 18 +------------- flow/designs/gf12/ariane133/rules-base.json | 18 +------------- flow/designs/gf12/bp_dual/rules-base.json | 18 +------------- flow/designs/gf12/bp_quad/rules-base.json | 18 +------------- flow/designs/gf12/bp_single/rules-base.json | 18 +------------- flow/designs/gf12/ca53/rules-base.json | 18 +------------- flow/designs/gf12/coyote/rules-base.json | 18 +------------- flow/designs/gf12/gcd/rules-base.json | 18 +------------- flow/designs/gf12/ibex/rules-base.json | 18 +------------- flow/designs/gf12/jpeg/rules-base.json | 18 +------------- .../gf12/swerv_wrapper/rules-base.json | 18 +------------- flow/designs/gf12/tinyRocket/rules-base.json | 18 +------------- flow/designs/gf180/aes-hybrid/rules-base.json | 18 +------------- flow/designs/gf180/aes/rules-base.json | 18 +------------- flow/designs/gf180/ibex/rules-base.json | 18 +------------- flow/designs/gf180/jpeg/rules-base.json | 18 +------------- flow/designs/gf180/riscv32i/rules-base.json | 18 +------------- .../designs/gf180/uart-blocks/rules-base.json | 18 +------------- flow/designs/ihp-sg13g2/aes/rules-base.json | 18 +------------- flow/designs/ihp-sg13g2/gcd/rules-base.json | 18 +------------- .../i2c-gpio-expander/rules-base.json | 18 +------------- flow/designs/ihp-sg13g2/ibex/rules-base.json | 18 +------------- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 18 +------------- .../ihp-sg13g2/riscv32i/rules-base.json | 18 +------------- flow/designs/ihp-sg13g2/spi/rules-base.json | 18 +------------- flow/designs/nangate45/aes/rules-base.json | 18 +------------- .../nangate45/ariane133/rules-base.json | 18 +------------- .../nangate45/ariane136/rules-base.json | 18 +------------- .../nangate45/black_parrot/rules-base.json | 18 +------------- .../nangate45/bp_be_top/rules-base.json | 18 +------------- .../nangate45/bp_fe_top/rules-base.json | 18 +------------- .../nangate45/bp_multi_top/rules-base.json | 18 +------------- .../designs/nangate45/bp_quad/rules-base.json | 18 +------------- .../nangate45/dynamic_node/rules-base.json | 18 +------------- flow/designs/nangate45/gcd/rules-base.json | 18 +------------- flow/designs/nangate45/ibex/rules-base.json | 18 +------------- flow/designs/nangate45/jpeg/rules-base.json | 18 +------------- .../nangate45/mempool_group/rules-base.json | 18 +------------- flow/designs/nangate45/swerv/rules-base.json | 18 +------------- .../nangate45/swerv_wrapper/rules-base.json | 18 +------------- .../nangate45/tinyRocket/rules-base.json | 18 +------------- flow/designs/sky130hd/aes/rules-base.json | 18 +------------- .../sky130hd/chameleon/rules-base.json | 18 +------------- flow/designs/sky130hd/gcd/rules-base.json | 18 +------------- flow/designs/sky130hd/ibex/rules-base.json | 18 +------------- flow/designs/sky130hd/jpeg/rules-base.json | 18 +------------- .../sky130hd/microwatt/rules-base.json | 18 +------------- .../designs/sky130hd/riscv32i/rules-base.json | 18 +------------- flow/designs/sky130hs/aes/rules-base.json | 18 +------------- flow/designs/sky130hs/gcd/rules-base.json | 18 +------------- flow/designs/sky130hs/ibex/rules-base.json | 18 +------------- flow/designs/sky130hs/jpeg/rules-base.json | 18 +------------- .../designs/sky130hs/riscv32i/rules-base.json | 18 +------------- flow/scripts/detail_route.tcl | 3 ++- flow/util/genRuleFile.py | 24 ------------------- 74 files changed, 74 insertions(+), 1249 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 396615d5fa..2e544c6f0c 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -174,22 +174,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -22.5, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -90.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -22.5, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -90.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -94.5, "compare": ">=" @@ -210,4 +194,4 @@ "value": 7332, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index b76f2c0063..addab0abb7 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -179,22 +179,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -19.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -76.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -19.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -76.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -44.6, "compare": ">=" @@ -215,4 +199,4 @@ "value": 2254, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index 6a246131e5..5849e97ad4 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -19.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -76.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -19.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -76.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -57.0, "compare": ">=" @@ -115,4 +99,4 @@ "value": 2269, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/aes_lvt/rules-base.json b/flow/designs/asap7/aes_lvt/rules-base.json index 53f335a2a9..1e4048da7c 100644 --- a/flow/designs/asap7/aes_lvt/rules-base.json +++ b/flow/designs/asap7/aes_lvt/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -18.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -72.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -18.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -72.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -45.1, "compare": ">=" @@ -115,4 +99,4 @@ "value": 2017, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/cva6/rules-base.json b/flow/designs/asap7/cva6/rules-base.json index 7d8f917a42..7c26ae393d 100644 --- a/flow/designs/asap7/cva6/rules-base.json +++ b/flow/designs/asap7/cva6/rules-base.json @@ -79,22 +79,6 @@ "value": 118, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -50.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -200.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -50.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -200.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -50.0, "compare": ">=" @@ -115,4 +99,4 @@ "value": 20198, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 9a433a85f5..ad382f1b2b 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -189,22 +189,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -121.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1940.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -15.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -60.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -163.0, "compare": ">=" @@ -225,4 +209,4 @@ "value": 8904, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index 319fe534ea..bd5af580ff 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -33.8, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -278.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -15.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -60.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -69.6, "compare": ">=" @@ -115,4 +99,4 @@ "value": 8537, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index e6c6d3a741..9d2d23cb99 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -34.7, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -103.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -15.5, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -62.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -56.6, "compare": ">=" @@ -115,4 +99,4 @@ "value": 54, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index fb774431df..2876de53b4 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -39.3, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -115.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -15.5, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -62.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -55.1, "compare": ">=" @@ -115,4 +99,4 @@ "value": 55, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index 76d0d29e3d..4ff94808b1 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -50.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -200.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -50.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -200.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -177.0, "compare": ">=" @@ -115,4 +99,4 @@ "value": 2867, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/jpeg/rules-base.json b/flow/designs/asap7/jpeg/rules-base.json index e37358b06a..f43573bb62 100644 --- a/flow/designs/asap7/jpeg/rules-base.json +++ b/flow/designs/asap7/jpeg/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -34.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -136.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -34.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -136.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -34.0, "compare": ">=" @@ -115,4 +99,4 @@ "value": 7253, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/jpeg_lvt/rules-base.json b/flow/designs/asap7/jpeg_lvt/rules-base.json index 41dea41ef0..34430b8e1c 100644 --- a/flow/designs/asap7/jpeg_lvt/rules-base.json +++ b/flow/designs/asap7/jpeg_lvt/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -30.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -120.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -30.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -120.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -30.0, "compare": ">=" @@ -115,4 +99,4 @@ "value": 7124, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index b080ad1eca..04a5a28bdf 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -174,22 +174,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -246.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -12200.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -15.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -60.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -289.0, "compare": ">=" @@ -210,4 +194,4 @@ "value": 1858, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index 8074ddc945..ddc3206897 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -97.5, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1720.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -16.6, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -66.6, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -103.0, "compare": ">=" @@ -115,4 +99,4 @@ "value": 7617, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 677d8bc582..59b391d7c5 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -50.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -200.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -50.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -200.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -153.0, "compare": ">=" @@ -115,4 +99,4 @@ "value": 2270, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index 4c45e3146d..299b732968 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -50.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -200.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -50.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -200.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -120.0, "compare": ">=" @@ -115,4 +99,4 @@ "value": 3070, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index eaac0dfdc6..c06a5f8f27 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -159,22 +159,6 @@ "value": 118, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -80.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -320.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -80.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -320.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -330.0, "compare": ">=" @@ -195,4 +179,4 @@ "value": 56249, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 1d76d64eb3..bdb73f80d5 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -164,22 +164,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -31.4, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -336.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -13.5, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -54.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -44.5, "compare": ">=" @@ -200,4 +184,4 @@ "value": 103, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/aes/rules-base.json b/flow/designs/gf12/aes/rules-base.json index 158ae9eb5b..8f02936c9b 100644 --- a/flow/designs/gf12/aes/rules-base.json +++ b/flow/designs/gf12/aes/rules-base.json @@ -159,22 +159,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -21.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -84.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -21.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -84.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -21.0, "compare": ">=" @@ -195,4 +179,4 @@ "value": 4273, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index bf58098b90..23e812f1f1 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -189,22 +189,6 @@ "value": 180, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -202.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -701.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -150.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -3350.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -206.0, "compare": ">=" @@ -225,4 +209,4 @@ "value": 217031, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/ariane133/rules-base.json b/flow/designs/gf12/ariane133/rules-base.json index d145cc4420..954628dc2c 100644 --- a/flow/designs/gf12/ariane133/rules-base.json +++ b/flow/designs/gf12/ariane133/rules-base.json @@ -79,22 +79,6 @@ "value": 5, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": 0.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": 0.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": 0.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": 0.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": 0.0, "compare": ">=" @@ -119,4 +103,4 @@ "value": -10.0, "compare": ">=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/bp_dual/rules-base.json b/flow/designs/gf12/bp_dual/rules-base.json index 560a3822d6..7cec4ad7b6 100644 --- a/flow/designs/gf12/bp_dual/rules-base.json +++ b/flow/designs/gf12/bp_dual/rules-base.json @@ -215,22 +215,6 @@ "value": 5, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -293.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -2720.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -47.5581, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -460.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -165.0, "compare": ">=" @@ -251,4 +235,4 @@ "value": 849384, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/bp_quad/rules-base.json b/flow/designs/gf12/bp_quad/rules-base.json index 4f6ea9184b..83cb115e19 100644 --- a/flow/designs/gf12/bp_quad/rules-base.json +++ b/flow/designs/gf12/bp_quad/rules-base.json @@ -220,22 +220,6 @@ "value": 5, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -292.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -2550.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -105.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -407.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -204.0, "compare": ">=" @@ -256,4 +240,4 @@ "value": 1523750, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index 17c51c0db3..340146cb61 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -239,22 +239,6 @@ "value": 333, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -139.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1410.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -120.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -887.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -109.0, "compare": ">=" @@ -275,4 +259,4 @@ "value": 479804, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 0dd3c61e58..9003fc3c89 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -175,22 +175,6 @@ "value": 528, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -100.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -100.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -224.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -67700.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -100.0, "compare": ">=" @@ -211,4 +195,4 @@ "value": 408918, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/coyote/rules-base.json b/flow/designs/gf12/coyote/rules-base.json index d8aed12bad..d45829c914 100644 --- a/flow/designs/gf12/coyote/rules-base.json +++ b/flow/designs/gf12/coyote/rules-base.json @@ -154,22 +154,6 @@ "value": 333, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -200.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -800.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -229.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -2650.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -200.0, "compare": ">=" @@ -190,4 +174,4 @@ "value": 201687, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/gcd/rules-base.json b/flow/designs/gf12/gcd/rules-base.json index 7a33ec346e..d720d927b6 100644 --- a/flow/designs/gf12/gcd/rules-base.json +++ b/flow/designs/gf12/gcd/rules-base.json @@ -144,22 +144,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -14.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -22.8, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -14.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -14.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -41.0, "compare": ">=" @@ -180,4 +164,4 @@ "value": 490, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/ibex/rules-base.json b/flow/designs/gf12/ibex/rules-base.json index 606ce50f20..01f079ec63 100644 --- a/flow/designs/gf12/ibex/rules-base.json +++ b/flow/designs/gf12/ibex/rules-base.json @@ -139,22 +139,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -51.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -204.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -51.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -204.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -51.0, "compare": ">=" @@ -175,4 +159,4 @@ "value": 7871, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/jpeg/rules-base.json b/flow/designs/gf12/jpeg/rules-base.json index 9ec444cc21..7f089596c5 100644 --- a/flow/designs/gf12/jpeg/rules-base.json +++ b/flow/designs/gf12/jpeg/rules-base.json @@ -159,22 +159,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -38.5, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -154.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -38.5, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -154.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -38.5, "compare": ">=" @@ -195,4 +179,4 @@ "value": 21992, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 4ee15a5867..506eab224c 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -169,22 +169,6 @@ "value": 107, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -75.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -300.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -120.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -53700.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -75.0, "compare": ">=" @@ -205,4 +189,4 @@ "value": 177792, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index 6093298411..c5ec047df7 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -159,22 +159,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -40.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -160.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -52.2, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -984.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -40.0, "compare": ">=" @@ -195,4 +179,4 @@ "value": 17222, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index cdc219fdc1..2167c3f68e 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.743, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -79.5, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.15, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.6, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -1.28, "compare": ">=" @@ -115,4 +99,4 @@ "value": 765254, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index 17d920134b..f706147377 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.662, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -57.2, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.15, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.6, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -1.05, "compare": ">=" @@ -115,4 +99,4 @@ "value": 844209, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index a81f7098ab..a543680476 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.5, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -2.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.5, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -2.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.803, "compare": ">=" @@ -115,4 +99,4 @@ "value": 799557, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index 0860d1527f..5156fd364a 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.375, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.5, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.375, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.5, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.375, "compare": ">=" @@ -115,4 +99,4 @@ "value": 2243765, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 1b3030a7d9..ff41c34b04 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -119,22 +119,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.5, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -2.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.5, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -2.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.5, "compare": ">=" @@ -155,4 +139,4 @@ "value": 453842, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf180/uart-blocks/rules-base.json b/flow/designs/gf180/uart-blocks/rules-base.json index 62c9d9a2af..765dedc336 100644 --- a/flow/designs/gf180/uart-blocks/rules-base.json +++ b/flow/designs/gf180/uart-blocks/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.3, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.2, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.3, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.2, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.3, "compare": ">=" @@ -115,4 +99,4 @@ "value": 70132, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/ihp-sg13g2/aes/rules-base.json b/flow/designs/ihp-sg13g2/aes/rules-base.json index 57d55ca0cb..079dd8c976 100644 --- a/flow/designs/ihp-sg13g2/aes/rules-base.json +++ b/flow/designs/ihp-sg13g2/aes/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.225, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.9, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.225, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.9, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.225, "compare": ">=" @@ -115,4 +99,4 @@ "value": 204761, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/ihp-sg13g2/gcd/rules-base.json b/flow/designs/ihp-sg13g2/gcd/rules-base.json index 440aa3d02a..4a1a8a1d55 100644 --- a/flow/designs/ihp-sg13g2/gcd/rules-base.json +++ b/flow/designs/ihp-sg13g2/gcd/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.13, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.52, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.13, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.52, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.13, "compare": ">=" @@ -115,4 +99,4 @@ "value": 7693, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json index 25ed544149..a0b508b09d 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -1.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -4.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -1.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -4.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -1.0, "compare": ">=" @@ -115,4 +99,4 @@ "value": 42034, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index ffc986853a..547e68448a 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -119,22 +119,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.4, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.6, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.4, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.6, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.4, "compare": ">=" @@ -155,4 +139,4 @@ "value": 314511, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index 733dbb0422..09f129cd44 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -79,22 +79,6 @@ "value": 162, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.4, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.6, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.4, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.6, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.4, "compare": ">=" @@ -115,4 +99,4 @@ "value": 1055178, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json index 0e911b7b11..903bf10519 100644 --- a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json +++ b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.3, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.2, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.3, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.2, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.3, "compare": ">=" @@ -115,4 +99,4 @@ "value": 168818, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/ihp-sg13g2/spi/rules-base.json b/flow/designs/ihp-sg13g2/spi/rules-base.json index dbcc9514a5..712fbaff33 100644 --- a/flow/designs/ihp-sg13g2/spi/rules-base.json +++ b/flow/designs/ihp-sg13g2/spi/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.045, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.18, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.045, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.18, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.045, "compare": ">=" @@ -115,4 +99,4 @@ "value": 2767, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index 3a8806355f..a9dc334a9f 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -114,22 +114,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.041, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.164, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.041, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.164, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.071, "compare": ">=" @@ -150,4 +134,4 @@ "value": 23999, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 7f61b8f4f5..4c685d80f0 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -79,22 +79,6 @@ "value": 194, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.15, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.6, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.15, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.6, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.372, "compare": ">=" @@ -115,4 +99,4 @@ "value": 840911, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 0a954629bf..657a1ee181 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -124,22 +124,6 @@ "value": 202, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.3, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.2, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.3, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -2.72, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.3, "compare": ">=" @@ -160,4 +144,4 @@ "value": 864432, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index ed213682c5..8c8be201a6 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -79,22 +79,6 @@ "value": 5, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -4.97, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -152.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.312, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -7.68, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -2.99, "compare": ">=" @@ -115,4 +99,4 @@ "value": 788072, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 9ac31070ff..d0003e5acc 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -79,22 +79,6 @@ "value": 5, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": 0.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": 0.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": 0.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": 0.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.366, "compare": ">=" @@ -115,4 +99,4 @@ "value": 275387, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index f67016bbd4..1da4f9a292 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -79,22 +79,6 @@ "value": 5, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -2260.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -92800.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": 0.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": 0.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.123, "compare": ">=" @@ -115,4 +99,4 @@ "value": 247483, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index 08f4b13705..e793ca85f5 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -144,22 +144,6 @@ "value": 5, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -15.7, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1080.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -2.24, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -86.6, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -4.68, "compare": ">=" @@ -180,4 +164,4 @@ "value": 595583, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/bp_quad/rules-base.json b/flow/designs/nangate45/bp_quad/rules-base.json index b75071686f..f486e1db81 100644 --- a/flow/designs/nangate45/bp_quad/rules-base.json +++ b/flow/designs/nangate45/bp_quad/rules-base.json @@ -179,22 +179,6 @@ "value": 1713, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -150.0, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -38800000.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -150.0, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -39300000.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -150.0, "compare": ">=" @@ -215,4 +199,4 @@ "value": 6176926, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index a2e7e0e2d0..8f16d870a1 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.3, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.2, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.3, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.2, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.445, "compare": ">=" @@ -115,4 +99,4 @@ "value": 27349, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 065c70882b..36335321d9 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -114,22 +114,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.0525, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.439, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.023, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.092, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.0767, "compare": ">=" @@ -150,4 +134,4 @@ "value": 980, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index a4914cc2fe..8ed88e3428 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.11, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.44, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.11, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.44, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.11, "compare": ">=" @@ -115,4 +99,4 @@ "value": 33440, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 931c090df1..c8b1cdf4a9 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.101, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -7.59, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.05, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.2, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.144, "compare": ">=" @@ -115,4 +99,4 @@ "value": 103424, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index e2357872ca..42d0db0316 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -164,22 +164,6 @@ "value": 170, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -2.31, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -9310.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.15, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.6, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -2.31, "compare": ">=" @@ -200,4 +184,4 @@ "value": 303227, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 8ba045ee17..cdef9f4870 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -124,22 +124,6 @@ "value": 102, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.1, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.4, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.105, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.08, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.235, "compare": ">=" @@ -160,4 +144,4 @@ "value": 183736, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index efea45f81f..77ed397133 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -119,22 +119,6 @@ "value": 109, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.1, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.4, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.103, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -10.9, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.296, "compare": ">=" @@ -155,4 +139,4 @@ "value": 735619, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 9294f5f40e..5418f15047 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -129,22 +129,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.0828, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -6.82, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.06, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.24, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.156, "compare": ">=" @@ -165,4 +149,4 @@ "value": 62486, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hd/aes/rules-base.json b/flow/designs/sky130hd/aes/rules-base.json index 1c13ee5747..786ef3b939 100644 --- a/flow/designs/sky130hd/aes/rules-base.json +++ b/flow/designs/sky130hd/aes/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.225, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.9, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.225, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.9, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.225, "compare": ">=" @@ -115,4 +99,4 @@ "value": 141950, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index dfd57a1e5e..cf6e83928b 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -79,22 +79,6 @@ "value": 153, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.35, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.4, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.35, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.4, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.35, "compare": ">=" @@ -115,4 +99,4 @@ "value": 6531954, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hd/gcd/rules-base.json b/flow/designs/sky130hd/gcd/rules-base.json index dea7849c58..3b371e9f9e 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -2.15, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -89.2, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.055, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.22, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -2.43, "compare": ">=" @@ -115,4 +99,4 @@ "value": 5488, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index e1b1da5509..f0dcf7eb73 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.5, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -2.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.5, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -2.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.762, "compare": ">=" @@ -115,4 +99,4 @@ "value": 183819, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index 2dc408382c..052dd0f0ec 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -79,22 +79,6 @@ "value": 119, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.275, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.1, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.275, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.1, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.275, "compare": ">=" @@ -115,4 +99,4 @@ "value": 520067, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index e3fbcf99dc..b5e5ad2c7c 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -174,22 +174,6 @@ "value": 1847, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -1.39, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -131.0, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -3.13, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -660.0, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -2.18, "compare": ">=" @@ -210,4 +194,4 @@ "value": 5582894, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 40c1fc1487..3d5f4620eb 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -119,22 +119,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.714, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -14.2, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.3, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.2, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -1.58, "compare": ">=" @@ -155,4 +139,4 @@ "value": 83703, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index 3eaf7d8b0f..46a8e44ec4 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.14, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.56, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.14, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.56, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.351, "compare": ">=" @@ -115,4 +99,4 @@ "value": 184400, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index dde21e30fe..129e428d5b 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.326, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -8.86, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.07, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.28, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.491, "compare": ">=" @@ -115,4 +99,4 @@ "value": 8156, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index f0f37cb119..e3b46a1039 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.35, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -1.4, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.35, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -1.4, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.38, "compare": ">=" @@ -115,4 +99,4 @@ "value": 243893, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index bb1414463b..0e312095a1 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -124,22 +124,6 @@ "value": 104, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.2, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.8, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.2, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.8, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -0.2, "compare": ">=" @@ -160,4 +144,4 @@ "value": 724792, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index 47bb7983c2..0f8b07cebb 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -79,22 +79,6 @@ "value": 100, "compare": "<=" }, - "detailedroute__timing__setup__ws": { - "value": -0.24, - "compare": ">=" - }, - "detailedroute__timing__setup__tns": { - "value": -0.96, - "compare": ">=" - }, - "detailedroute__timing__hold__ws": { - "value": -0.24, - "compare": ">=" - }, - "detailedroute__timing__hold__tns": { - "value": -0.96, - "compare": ">=" - }, "finish__timing__setup__ws": { "value": -1.09, "compare": ">=" @@ -115,4 +99,4 @@ "value": 112385, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/scripts/detail_route.tcl b/flow/scripts/detail_route.tcl index 0a2aa6b5a5..e38a03089c 100644 --- a/flow/scripts/detail_route.tcl +++ b/flow/scripts/detail_route.tcl @@ -77,6 +77,7 @@ if { ![design_is_routed] } { error "Design has unrouted nets." } -report_metrics 5 "detailed route" +# Don't report metrics as we have not extracted parasitics, which will happen +# in final so there is no need to repeat it here. orfs_write_db $::env(RESULTS_DIR)/5_2_route.odb diff --git a/flow/util/genRuleFile.py b/flow/util/genRuleFile.py index d0d6ddd0e4..251e0f2881 100755 --- a/flow/util/genRuleFile.py +++ b/flow/util/genRuleFile.py @@ -200,30 +200,6 @@ def gen_rule_file( "round_value": True, "compare": "<=", }, - "detailedroute__timing__setup__ws": { - "mode": "period_padding", - "padding": 5, - "round_value": False, - "compare": ">=", - }, - "detailedroute__timing__setup__tns": { - "mode": "period_padding", - "padding": 20, - "round_value": False, - "compare": ">=", - }, - "detailedroute__timing__hold__ws": { - "mode": "period_padding", - "padding": 5, - "round_value": False, - "compare": ">=", - }, - "detailedroute__timing__hold__tns": { - "mode": "period_padding", - "padding": 20, - "round_value": False, - "compare": ">=", - }, # finish "finish__timing__setup__ws": { "mode": "period_padding", From d9a22818d89303c2139c7ccb6f6f1bb56aa0379a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mai?= Date: Fri, 2 Jan 2026 22:32:19 +0000 Subject: [PATCH 211/364] mpl: honor thresholds during merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: João Mai --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index f9a6acaf77..73f5c05ee2 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit f9a6acaf77a58c03a8d1284d3fd64b33d0cfd3bc +Subproject commit 73f5c05ee23bf99c4e261a8a08cbe5d369f2d0bb From e0a89ad8c74188249470f65b29bb28b84a6832e9 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Sat, 3 Jan 2026 14:16:58 +0000 Subject: [PATCH 212/364] added rapidus2hp ethmac verific rules file Signed-off-by: Jeff Ng --- .../rapidus2hp/ethmac/rules-verific.json | 181 ++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 flow/designs/rapidus2hp/ethmac/rules-verific.json diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json new file mode 100644 index 0000000000..19a4f49521 --- /dev/null +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -0,0 +1,181 @@ +{ + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:GUI-0076": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0075": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GPL-0302": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0240": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0263": { + "value": 7, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0349": { + "value": 10, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:GRT-0246": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-0122": { + "value": 27, + "compare": "<=", + "level": "warning" + }, + "synth__design__instance__area__stdcell": { + "value": 3290.0, + "compare": "<=" + }, + "constraints__clocks__count": { + "value": 3, + "compare": "==" + }, + "placeopt__design__instance__area": { + "value": 3429, + "compare": "<=" + }, + "placeopt__design__instance__count__stdcell": { + "value": 72627, + "compare": "<=" + }, + "detailedplace__design__violations": { + "value": 0, + "compare": "==" + }, + "cts__design__instance__count__setup_buffer": { + "value": 6315, + "compare": "<=" + }, + "cts__design__instance__count__hold_buffer": { + "value": 6315, + "compare": "<=" + }, + "cts__timing__setup__ws": { + "value": -42.0, + "compare": ">=" + }, + "cts__timing__setup__tns": { + "value": -747.0, + "compare": ">=" + }, + "cts__timing__hold__ws": { + "value": -5.5, + "compare": ">=" + }, + "cts__timing__hold__tns": { + "value": -22.0, + "compare": ">=" + }, + "globalroute__antenna_diodes_count": { + "value": 100, + "compare": "<=" + }, + "globalroute__timing__setup__ws": { + "value": -61.3, + "compare": ">=" + }, + "globalroute__timing__setup__tns": { + "value": -1530.0, + "compare": ">=" + }, + "globalroute__timing__hold__ws": { + "value": -5.5, + "compare": ">=" + }, + "globalroute__timing__hold__tns": { + "value": -22.0, + "compare": ">=" + }, + "finish__timing__setup__ws": { + "value": -61.3, + "compare": ">=" + }, + "finish__timing__setup__tns": { + "value": -1530.0, + "compare": ">=" + }, + "finish__timing__hold__ws": { + "value": -5.5, + "compare": ">=" + }, + "finish__timing__hold__tns": { + "value": -22.0, + "compare": ">=" + }, + "finish__design__instance__area": { + "value": 3601, + "compare": "<=" + } +} \ No newline at end of file From 637b431561afee251b0a31648afbb021f25ab673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mai?= Date: Sat, 3 Jan 2026 19:00:21 +0000 Subject: [PATCH 213/364] mpl: honor thresholds during merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: João Mai --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 73f5c05ee2..b2a2369ddb 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 73f5c05ee23bf99c4e261a8a08cbe5d369f2d0bb +Subproject commit b2a2369ddb81d5986b582eb70ac28e3c53ff5e26 From f642b8f44dcf02ba6d0f788edfe23f60ee411999 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Sun, 4 Jan 2026 15:54:03 +0000 Subject: [PATCH 214/364] Initial PDK 0.3 support Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/ethmac/config.mk | 12 ++++++++--- flow/designs/rapidus2hp/gcd/config.mk | 21 +++++++++++++++---- flow/designs/rapidus2hp/ibex/config.mk | 10 ++++++--- .../rapidus2hp/ibex/constraint_0.15.sdc | 19 +++++++++++++++++ flow/designs/rapidus2hp/jpeg/config.mk | 10 ++++++--- .../rapidus2hp/jpeg/jpeg_encoder15_0.15.sdc | 21 +++++++++++++++++++ 6 files changed, 80 insertions(+), 13 deletions(-) create mode 100644 flow/designs/rapidus2hp/ibex/constraint_0.15.sdc create mode 100644 flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15.sdc diff --git a/flow/designs/rapidus2hp/ethmac/config.mk b/flow/designs/rapidus2hp/ethmac/config.mk index 65a51de217..cd2139c796 100644 --- a/flow/designs/rapidus2hp/ethmac/config.mk +++ b/flow/designs/rapidus2hp/ethmac/config.mk @@ -12,9 +12,15 @@ export VERILOG_FILES = $(sort $(wildcard $(SRC_HOME)/*.v)) export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc export ABC_AREA = 1 -export CORE_UTILIZATION = $(strip $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ - 65, \ - 70)) +export CORE_UTILIZATION = $(strip \ + $(if $(filter 0.15,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + 63, \ + 65), \ + $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + 65, \ + 70) \ + )) export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 0.75 diff --git a/flow/designs/rapidus2hp/gcd/config.mk b/flow/designs/rapidus2hp/gcd/config.mk index 846759da7d..5e24cd8d7c 100644 --- a/flow/designs/rapidus2hp/gcd/config.mk +++ b/flow/designs/rapidus2hp/gcd/config.mk @@ -9,11 +9,24 @@ endif export VERILOG_FILES = $(DESIGN_HOME)/src/$(DESIGN_NAME)/gcd.v export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constraint.sdc - # Use $(if) to defer conditional eval until all makefiles are read -export CORE_UTILIZATION = $(strip $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ - 43, \ - 45)) +# +# | PDK | Place Site | Utilization | +# | ---- | ---------- | ----------- | +# | 0.2 | 6T | 43 | +# | 0.2 | 8T | 45 | +# | 0.2a | 6T | 43 | +# | 0.2a | 8T | 45 | +# | 0.15 | 6T | 38 | +# | 0.15 | 8T | 40 | +# +export CORE_UTILIZATION = $(strip $(if $(filter 0.15,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + 36, \ + 40), \ + $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ + 43, \ + 45))) export CORE_MARGIN = .5 export PLACE_DENSITY = 0.42 diff --git a/flow/designs/rapidus2hp/ibex/config.mk b/flow/designs/rapidus2hp/ibex/config.mk index a221b8230e..3af6a1dd57 100644 --- a/flow/designs/rapidus2hp/ibex/config.mk +++ b/flow/designs/rapidus2hp/ibex/config.mk @@ -24,6 +24,7 @@ else DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc _0P2A_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_6T.sdc _0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_8T.sdc + _0P15_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.15.sdc _0P3_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.3_8T.sdc # Use $(if) to defer conditional eval until all makefiles are read @@ -32,9 +33,12 @@ else $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ $(_0P2A_6T_SDC_FILE), \ $(_0P2A_8T_SDC_FILE)), \ - $(if $(and $(filter 0.3,$(RAPIDUS_PDK_VERSION)),$(filter ra02h184_HST_45CPP,$(PLACE_SITE))), \ - $(_0P3_8T_SDC_FILE), \ - $(DEFAULT_SDC_FILE) \ + $(if $(filter 0.15,$(RAPIDUS_PDK_VERSION)), \ + $(_0P15_SDC_FILE), \ + $(if $(and $(filter 0.3,$(RAPIDUS_PDK_VERSION)),$(filter ra02h184_HST_45CPP,$(PLACE_SITE))), \ + $(_0P3_8T_SDC_FILE), \ + $(DEFAULT_SDC_FILE) \ + ) \ ) \ )) endif diff --git a/flow/designs/rapidus2hp/ibex/constraint_0.15.sdc b/flow/designs/rapidus2hp/ibex/constraint_0.15.sdc new file mode 100644 index 0000000000..bdece50956 --- /dev/null +++ b/flow/designs/rapidus2hp/ibex/constraint_0.15.sdc @@ -0,0 +1,19 @@ +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name core_clock +set clk_port_name clk_i +set clk_period 550 +set clk_io_pct 0.2 + +set clk_port [get_ports $clk_port_name] + +convert_time_value clk_period + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] diff --git a/flow/designs/rapidus2hp/jpeg/config.mk b/flow/designs/rapidus2hp/jpeg/config.mk index 8ef104608b..5fc80731f6 100644 --- a/flow/designs/rapidus2hp/jpeg/config.mk +++ b/flow/designs/rapidus2hp/jpeg/config.mk @@ -12,15 +12,19 @@ export VERILOG_INCLUDE_DIRS = $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/include DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_7nm.sdc _0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.2a_8T.sdc +_0P15_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.15.sdc _0P3_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.3.sdc # Use $(if) to defer conditional eval until all makefiles are read export SDC_FILE = $(strip \ $(if $(and $(filter 0.2a,$(RAPIDUS_PDK_VERSION)),$(filter ra02h184_HST_45CPP,$(PLACE_SITE))), \ $(_0P2A_8T_SDC_FILE), \ - $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ - $(_0P3_SDC_FILE), \ - $(DEFAULT_SDC_FILE) \ + $(if $(filter 0.15,$(RAPIDUS_PDK_VERSION)), \ + $(_0P15_SDC_FILE), \ + $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + $(_0P3_SDC_FILE), \ + $(DEFAULT_SDC_FILE) \ + ) \ ) \ )) diff --git a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15.sdc b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15.sdc new file mode 100644 index 0000000000..9687665247 --- /dev/null +++ b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15.sdc @@ -0,0 +1,21 @@ +source $::env(PLATFORM_DIR)/util.tcl + +current_design jpeg_encoder + +set clk_name clk +set clk_port_name clk +set clk_period 300 +set clk_io_pct 0.2 + +convert_time_value clk_period + +set clk_port [get_ports $clk_port_name] + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] From bcc5cacfad31595228881319b856108fbf4cace4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mai?= Date: Sun, 4 Jan 2026 16:27:13 +0000 Subject: [PATCH 215/364] update rules for private designs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit designs/gf12/ariane/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -725.0 | -23400.0 | Failing | | globalroute__timing__setup__ws | -209.0 | -208.0 | Tighten | | globalroute__timing__setup__tns | -717.0 | -716.0 | Tighten | | detailedroute__timing__hold__tns | -3350.0 | -1440.0 | Tighten | designs/gf12/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__route__wirelength | 2388740 | 2388575 | Tighten | | detailedroute__timing__hold__tns | -53700.0 | -55100.0 | Failing | Signed-off-by: João Mai --- flow/designs/gf12/ariane/rules-base.json | 30 ++++--------------- .../gf12/swerv_wrapper/rules-base.json | 4 +-- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index bf58098b90..967218a9d1 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -1,9 +1,4 @@ { - "cts__flow__warnings__count:CTS-0179": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "cts__flow__warnings__count:RSZ-0062": { "value": 1, "compare": "<=", @@ -24,7 +19,7 @@ "compare": "<=", "level": "warning" }, - "flow__warnings__count:GPL-0323": { + "flow__warnings__count:GPL-0324": { "value": 1, "compare": "<=", "level": "warning" @@ -64,21 +59,6 @@ "compare": "<=", "level": "warning" }, - "globalplace__flow__warnings__count:GPL-0323": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0998": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0999": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "globalplace__flow__warnings__count:GRT-0281": { "value": 1, "compare": "<=", @@ -142,7 +122,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -725.0, + "value": -23400.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -158,11 +138,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -209.0, + "value": -208.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -717.0, + "value": -716.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -202,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -3350.0, + "value": -1440.0, "compare": ">=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 4ee15a5867..2ff43db77f 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -154,7 +154,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2388740, + "value": 2388575, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -182,7 +182,7 @@ "compare": ">=" }, "detailedroute__timing__hold__tns": { - "value": -53700.0, + "value": -55100.0, "compare": ">=" }, "finish__timing__setup__ws": { From d8b4a22ddbfa1d44bc5fca304fd136ffefcef715 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 4 Jan 2026 21:50:46 +0000 Subject: [PATCH 216/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 95 --------------- flow/designs/asap7/aes-mbff/rules-base.json | 100 ---------------- flow/designs/asap7/ethmac/rules-base.json | 110 ------------------ flow/designs/asap7/mock-alu/rules-base.json | 95 --------------- .../asap7/swerv_wrapper/rules-base.json | 80 ------------- flow/designs/asap7/uart/rules-base.json | 85 -------------- flow/designs/gf180/riscv32i/rules-base.json | 40 ------- flow/designs/ihp-sg13g2/ibex/rules-base.json | 40 ------- flow/designs/nangate45/aes/rules-base.json | 35 ------ .../nangate45/ariane136/rules-base.json | 45 ------- .../nangate45/bp_multi_top/rules-base.json | 65 ----------- flow/designs/nangate45/gcd/rules-base.json | 35 ------ .../nangate45/mempool_group/rules-base.json | 85 -------------- flow/designs/nangate45/swerv/rules-base.json | 45 ------- .../nangate45/swerv_wrapper/rules-base.json | 40 ------- .../nangate45/tinyRocket/rules-base.json | 50 -------- .../sky130hd/microwatt/rules-base.json | 105 +---------------- .../designs/sky130hd/riscv32i/rules-base.json | 40 ------- flow/designs/sky130hs/jpeg/rules-base.json | 45 ------- 19 files changed, 5 insertions(+), 1230 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 396615d5fa..8ca961ee28 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 16, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 55, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 2090.0, "compare": "<=" diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index b76f2c0063..812a4c38b0 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1928.39, "compare": "<=" diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 9a433a85f5..fdc743bf7b 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -1,114 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8450.0, "compare": "<=" diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index b080ad1eca..9299478fc3 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1665.04, "compare": "<=" diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index eaac0dfdc6..d869399806 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -1,84 +1,4 @@ { - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 53459.06, "compare": "<=" diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 1d76d64eb3..80750db2c6 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1212": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 82.7, "compare": "<=" diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 1b3030a7d9..d55b4d4704 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -1,44 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 56, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 8, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 355874.87, "compare": "<=" diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index ffc986853a..ced6822da9 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -1,44 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 305820.24, "compare": "<=" diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index 3a8806355f..f6774f1b5e 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 21600.0, "compare": "<=" diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 0a954629bf..cfd995e12f 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 845982.06, "compare": "<=" diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index 08f4b13705..398139d7b6 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -1,69 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-2021": { - "value": 152, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 365, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 44, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 586679.15, "compare": "<=" diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 065c70882b..75692cc18b 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -1,39 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 725.6, "compare": "<=" diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index e2357872ca..627ce1eabb 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-0450": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0450": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 271098.37, "compare": "<=" diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 8ba045ee17..7f47980445 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -1,49 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 178043.59, "compare": "<=" diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index efea45f81f..364123fa5d 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 724516.2, "compare": "<=" diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 9294f5f40e..f407fde5ab 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -1,54 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 59681.09, "compare": "<=" diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index e3fbcf99dc..a477a7f2a5 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 11, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0243": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 47, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0243": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 732007.18, "compare": "<=" @@ -143,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.14, + "value": -3.25, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -406.0, + "value": -558.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -179,7 +84,7 @@ "compare": ">=" }, "detailedroute__timing__setup__tns": { - "value": -131.0, + "value": -147.0, "compare": ">=" }, "detailedroute__timing__hold__ws": { @@ -191,11 +96,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -2.18, + "value": -3.35, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -375.0, + "value": -547.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 40c1fc1487..eb6e566dfc 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -1,44 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 70778.51, "compare": "<=" diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index bb1414463b..e48978f7bb 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -1,49 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 52, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 13, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 653350.08, "compare": "<=" From b3acf9e24287e0e73c34b898eda20c906d523336 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 5 Jan 2026 01:43:07 +0000 Subject: [PATCH 217/364] fixed SDC setting for rapidus cva6 Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/cva6/config.mk | 9 +- .../rapidus2hp/cva6/test/test_params.py | 115 ++++++++++++++++++ 2 files changed, 121 insertions(+), 3 deletions(-) create mode 100755 flow/designs/rapidus2hp/cva6/test/test_params.py diff --git a/flow/designs/rapidus2hp/cva6/config.mk b/flow/designs/rapidus2hp/cva6/config.mk index 7c2b2b8474..b0e780c715 100644 --- a/flow/designs/rapidus2hp/cva6/config.mk +++ b/flow/designs/rapidus2hp/cva6/config.mk @@ -107,9 +107,12 @@ export SDC_FILE = $(strip \ $(_0P2A_6T_SDC_FILE), \ $(_0P2A_8T_SDC_FILE) \ ), \ - $(if $(and $(filter 0.3,$(RAPIDUS_PDK_VERSION)),$(filter ra02h138_DST_45CPP,$(PLACE_SITE))), \ - $(_0P3_6T_SDC_FILE), \ - $(_0P3_8T_SDC_FILE) \ + $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + $(_0P3_6T_SDC_FILE), \ + $(_0P3_8T_SDC_FILE) \ + ), \ + $(DEFAULT_SDC_FILE) \ ) \ )) diff --git a/flow/designs/rapidus2hp/cva6/test/test_params.py b/flow/designs/rapidus2hp/cva6/test/test_params.py new file mode 100755 index 0000000000..c980457085 --- /dev/null +++ b/flow/designs/rapidus2hp/cva6/test/test_params.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 + +import os +import re +import subprocess +import unittest + +class TestParams(unittest.TestCase): + """ Unit test for checking correct Makefile settings """ + + def setUp(self): + """ Sets up test variables """ + + self._cmd_base = "make DESIGN_CONFIG=designs/rapidus2hp/cva6/config.mk" + self._pwd = os.getcwd() + self._design_dir = os.path.join(self._pwd, "designs/rapidus2hp/cva6") + self._result_re = re.compile(r"\S+\s+\=\s+(\S+)") + self._ibm_site_list = ["", "SC6T", "SC8T"] + self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h138_DST_45CPP"] + + def _get_track_height(self, place_site): + """ Returns the track height for the place site """ + + if place_site.startswith("SC"): + return place_site[2:] + if place_site == "ra02h138_DST_45CPP": + return "6T" + return "8T" + + def test_pdk_0p2_default(self): + """ Tests PDK 0.2 SDC file - should be default for both 6T and 8T """ + + exp_value = os.path.join(self._design_dir, "constraint.sdc") + for place_site in self._ibm_site_list: + if place_site == "": + cmd = f"{self._cmd_base} print-SDC_FILE" + else: + cmd = f"{self._cmd_base} PLACE_SITE={place_site} print-SDC_FILE" + out = subprocess.run(cmd, check=True, shell=True, + capture_output=True, text=True) + self.assertEqual(out.returncode, 0) + result = self._result_re.match(out.stdout) + self.assertIsNotNone(result) + value = result.group(1) + self.assertEqual(value, exp_value) + + def test_pdk_0p2(self): + """ Tests PDK 0.2 SDC file - should be default for both 6T and 8T """ + exp_value = os.path.join(self._design_dir, "constraint.sdc") + for place_site in self._ibm_site_list: + if place_site == "": + cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2 print-SDC_FILE" + else: + cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2 PLACE_SITE={place_site} print-SDC_FILE" + out = subprocess.run(cmd, check=True, shell=True, + capture_output=True, text=True) + self.assertEqual(out.returncode, 0) + result = self._result_re.match(out.stdout) + self.assertIsNotNone(result) + value = result.group(1) + self.assertEqual(value, exp_value) + + def test_pdk_0p2a(self): + """ + Tests PDK 0.2a SDC file + 6T: constraint_0.2a_6T.sdc + 8T: constraint_0.2a_8T.sdc + """ + + for place_site in self._synopsys_site_list: + if place_site == "": + cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2a print-SDC_FILE" + exp_value = os.path.join(self._design_dir, "constraint_0.2a_8T.sdc") + else: + cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2a PLACE_SITE={place_site} print-SDC_FILE" + track_height = self._get_track_height(place_site) + exp_value = os.path.join(self._design_dir, + f"constraint_0.2a_{track_height}.sdc") + out = subprocess.run(cmd, check=True, shell=True, + capture_output=True, text=True) + self.assertEqual(out.returncode, 0) + result = self._result_re.match(out.stdout) + self.assertIsNotNone(result) + value = result.group(1) + self.assertEqual(value, exp_value) + + def test_pdk_0p3(self): + """ + Tests PDK 0.3 SDC file + 6T: constraint_0.3_6T.sdc + 8T: constraint_0.3_8T.sdc + """ + + for place_site in self._synopsys_site_list: + if place_site == "": + cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.3 print-SDC_FILE" + exp_value = os.path.join(self._design_dir, "constraint_0.3_8T.sdc") + else: + cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.3 PLACE_SITE={place_site} print-SDC_FILE" + track_height = self._get_track_height(place_site) + exp_value = os.path.join(self._design_dir, + f"constraint_0.3_{track_height}.sdc") + out = subprocess.run(cmd, check=True, shell=True, + capture_output=True, text=True) + self.assertEqual(out.returncode, 0) + result = self._result_re.match(out.stdout) + self.assertIsNotNone(result) + value = result.group(1) + self.assertEqual(value, exp_value) + +if __name__ == "__main__": + unittest.main() + + + From 2f1186037261dc23b7bfa44dcbbd36f2f3a69c4e Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Mon, 5 Jan 2026 03:44:56 +0000 Subject: [PATCH 218/364] black format designs/rapidus2hp/cva6/test/test_params.py Signed-off-by: Matt Liberty --- .../rapidus2hp/cva6/test/test_params.py | 61 ++++++++++--------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/test/test_params.py b/flow/designs/rapidus2hp/cva6/test/test_params.py index c980457085..208312e2b2 100755 --- a/flow/designs/rapidus2hp/cva6/test/test_params.py +++ b/flow/designs/rapidus2hp/cva6/test/test_params.py @@ -5,12 +5,13 @@ import subprocess import unittest + class TestParams(unittest.TestCase): - """ Unit test for checking correct Makefile settings """ - + """Unit test for checking correct Makefile settings""" + def setUp(self): - """ Sets up test variables """ - + """Sets up test variables""" + self._cmd_base = "make DESIGN_CONFIG=designs/rapidus2hp/cva6/config.mk" self._pwd = os.getcwd() self._design_dir = os.path.join(self._pwd, "designs/rapidus2hp/cva6") @@ -19,25 +20,26 @@ def setUp(self): self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h138_DST_45CPP"] def _get_track_height(self, place_site): - """ Returns the track height for the place site """ - + """Returns the track height for the place site""" + if place_site.startswith("SC"): return place_site[2:] if place_site == "ra02h138_DST_45CPP": return "6T" return "8T" - + def test_pdk_0p2_default(self): - """ Tests PDK 0.2 SDC file - should be default for both 6T and 8T """ - + """Tests PDK 0.2 SDC file - should be default for both 6T and 8T""" + exp_value = os.path.join(self._design_dir, "constraint.sdc") for place_site in self._ibm_site_list: if place_site == "": cmd = f"{self._cmd_base} print-SDC_FILE" else: cmd = f"{self._cmd_base} PLACE_SITE={place_site} print-SDC_FILE" - out = subprocess.run(cmd, check=True, shell=True, - capture_output=True, text=True) + out = subprocess.run( + cmd, check=True, shell=True, capture_output=True, text=True + ) self.assertEqual(out.returncode, 0) result = self._result_re.match(out.stdout) self.assertIsNotNone(result) @@ -45,15 +47,16 @@ def test_pdk_0p2_default(self): self.assertEqual(value, exp_value) def test_pdk_0p2(self): - """ Tests PDK 0.2 SDC file - should be default for both 6T and 8T """ + """Tests PDK 0.2 SDC file - should be default for both 6T and 8T""" exp_value = os.path.join(self._design_dir, "constraint.sdc") for place_site in self._ibm_site_list: if place_site == "": cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2 print-SDC_FILE" else: cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2 PLACE_SITE={place_site} print-SDC_FILE" - out = subprocess.run(cmd, check=True, shell=True, - capture_output=True, text=True) + out = subprocess.run( + cmd, check=True, shell=True, capture_output=True, text=True + ) self.assertEqual(out.returncode, 0) result = self._result_re.match(out.stdout) self.assertIsNotNone(result) @@ -66,7 +69,7 @@ def test_pdk_0p2a(self): 6T: constraint_0.2a_6T.sdc 8T: constraint_0.2a_8T.sdc """ - + for place_site in self._synopsys_site_list: if place_site == "": cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2a print-SDC_FILE" @@ -74,10 +77,12 @@ def test_pdk_0p2a(self): else: cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2a PLACE_SITE={place_site} print-SDC_FILE" track_height = self._get_track_height(place_site) - exp_value = os.path.join(self._design_dir, - f"constraint_0.2a_{track_height}.sdc") - out = subprocess.run(cmd, check=True, shell=True, - capture_output=True, text=True) + exp_value = os.path.join( + self._design_dir, f"constraint_0.2a_{track_height}.sdc" + ) + out = subprocess.run( + cmd, check=True, shell=True, capture_output=True, text=True + ) self.assertEqual(out.returncode, 0) result = self._result_re.match(out.stdout) self.assertIsNotNone(result) @@ -90,7 +95,7 @@ def test_pdk_0p3(self): 6T: constraint_0.3_6T.sdc 8T: constraint_0.3_8T.sdc """ - + for place_site in self._synopsys_site_list: if place_site == "": cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.3 print-SDC_FILE" @@ -98,18 +103,18 @@ def test_pdk_0p3(self): else: cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.3 PLACE_SITE={place_site} print-SDC_FILE" track_height = self._get_track_height(place_site) - exp_value = os.path.join(self._design_dir, - f"constraint_0.3_{track_height}.sdc") - out = subprocess.run(cmd, check=True, shell=True, - capture_output=True, text=True) + exp_value = os.path.join( + self._design_dir, f"constraint_0.3_{track_height}.sdc" + ) + out = subprocess.run( + cmd, check=True, shell=True, capture_output=True, text=True + ) self.assertEqual(out.returncode, 0) result = self._result_re.match(out.stdout) self.assertIsNotNone(result) value = result.group(1) self.assertEqual(value, exp_value) - + + if __name__ == "__main__": unittest.main() - - - From ce45a662e0e6a94617ea4cb668992d423a5e6138 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 5 Jan 2026 18:36:14 +0000 Subject: [PATCH 219/364] updated rapidus2hp hercules_is_int rules files Signed-off-by: Jeff Ng --- .../hercules_is_int/rules-base.json | 16 ++++++------- .../hercules_is_int/rules-verific.json | 23 +++++++++++-------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index e404d82b0e..838fb35f03 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -103,11 +103,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -78.7, + "value": -52.8, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -292000.0, + "value": -252000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -123,11 +123,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -275.0, + "value": -391.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1300000.0, + "value": -1230000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -139,11 +139,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -275.0, + "value": -391.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1300000.0, + "value": -1230000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -155,7 +155,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33606, + "value": 33600, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index 6af6a41cb0..e8765eb018 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -9,6 +9,11 @@ "compare": "<=", "level": "warning" }, + "finish__flow__warnings__count:GUI-0076": { + "value": 2, + "compare": "<=", + "level": "warning" + }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -83,11 +88,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 31900, + "value": 31872, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 660729, + "value": 659668, "compare": "<=" }, "detailedplace__design__violations": { @@ -95,19 +100,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 57455, + "value": 57362, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 57455, + "value": 57362, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -70.3, + "value": -86.9, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -285000.0, + "value": -316000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -123,7 +128,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -385.0, + "value": -271.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -139,7 +144,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -385.0, + "value": -271.0, "compare": ">=" }, "finish__timing__setup__tns": { @@ -155,7 +160,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33568, + "value": 33555, "compare": "<=" } } \ No newline at end of file From 85926b64c81db0484dc5cb5dad6415fb0ee6ad55 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 5 Jan 2026 14:09:10 +0000 Subject: [PATCH 220/364] Extended param testing to rest of Rapidus designs black formatting updates Signed-off-by: Jeff Ng --- .../rapidus2hp/cva6/test/test_params.py | 131 +++++++----------- .../rapidus2hp/ethmac/test/test_params.py | 70 ++++++++++ .../rapidus2hp/gcd/test/test_params.py | 85 ++++++++++++ .../rapidus2hp/hercules_idecode/config.mk | 4 +- .../hercules_idecode/test/test_params.py | 90 ++++++++++++ .../rapidus2hp/hercules_is_int/config.mk | 4 +- .../hercules_is_int/test/test_params.py | 90 ++++++++++++ .../rapidus2hp/ibex/test/test_params.py | 113 +++++++++++++++ .../rapidus2hp/jpeg/test/test_params.py | 84 +++++++++++ .../rapidus2hp/utils/param_test_base.py | 68 +++++++++ flow/designs/rapidus2hp/utils/run_tests.sh | 17 +++ 11 files changed, 672 insertions(+), 84 deletions(-) create mode 100755 flow/designs/rapidus2hp/ethmac/test/test_params.py create mode 100755 flow/designs/rapidus2hp/gcd/test/test_params.py create mode 100755 flow/designs/rapidus2hp/hercules_idecode/test/test_params.py create mode 100755 flow/designs/rapidus2hp/hercules_is_int/test/test_params.py create mode 100755 flow/designs/rapidus2hp/ibex/test/test_params.py create mode 100755 flow/designs/rapidus2hp/jpeg/test/test_params.py create mode 100644 flow/designs/rapidus2hp/utils/param_test_base.py create mode 100755 flow/designs/rapidus2hp/utils/run_tests.sh diff --git a/flow/designs/rapidus2hp/cva6/test/test_params.py b/flow/designs/rapidus2hp/cva6/test/test_params.py index 208312e2b2..e9816452b2 100755 --- a/flow/designs/rapidus2hp/cva6/test/test_params.py +++ b/flow/designs/rapidus2hp/cva6/test/test_params.py @@ -1,67 +1,47 @@ #!/usr/bin/env python3 import os -import re -import subprocess +import sys import unittest +if __name__ == "__main__": + util_dir = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), + "utils", + ) + sys.path.insert(0, util_dir) +from param_test_base import ParamTestBase + -class TestParams(unittest.TestCase): +class TestParams(ParamTestBase): """Unit test for checking correct Makefile settings""" def setUp(self): """Sets up test variables""" - self._cmd_base = "make DESIGN_CONFIG=designs/rapidus2hp/cva6/config.mk" - self._pwd = os.getcwd() - self._design_dir = os.path.join(self._pwd, "designs/rapidus2hp/cva6") - self._result_re = re.compile(r"\S+\s+\=\s+(\S+)") - self._ibm_site_list = ["", "SC6T", "SC8T"] - self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h138_DST_45CPP"] - - def _get_track_height(self, place_site): - """Returns the track height for the place site""" - - if place_site.startswith("SC"): - return place_site[2:] - if place_site == "ra02h138_DST_45CPP": - return "6T" - return "8T" + ParamTestBase.set_up(self, "cva6") def test_pdk_0p2_default(self): """Tests PDK 0.2 SDC file - should be default for both 6T and 8T""" - exp_value = os.path.join(self._design_dir, "constraint.sdc") - for place_site in self._ibm_site_list: - if place_site == "": - cmd = f"{self._cmd_base} print-SDC_FILE" - else: - cmd = f"{self._cmd_base} PLACE_SITE={place_site} print-SDC_FILE" - out = subprocess.run( - cmd, check=True, shell=True, capture_output=True, text=True - ) - self.assertEqual(out.returncode, 0) - result = self._result_re.match(out.stdout) - self.assertIsNotNone(result) - value = result.group(1) - self.assertEqual(value, exp_value) + pdk_version = "" + exp_sdc = os.path.join(self._design_full_dir, "constraint.sdc") + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + self.execute_cmd( + place_site, pdk_version, front_end, "SDC_FILE", exp_sdc + ) def test_pdk_0p2(self): """Tests PDK 0.2 SDC file - should be default for both 6T and 8T""" - exp_value = os.path.join(self._design_dir, "constraint.sdc") - for place_site in self._ibm_site_list: - if place_site == "": - cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2 print-SDC_FILE" - else: - cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2 PLACE_SITE={place_site} print-SDC_FILE" - out = subprocess.run( - cmd, check=True, shell=True, capture_output=True, text=True - ) - self.assertEqual(out.returncode, 0) - result = self._result_re.match(out.stdout) - self.assertIsNotNone(result) - value = result.group(1) - self.assertEqual(value, exp_value) + + pdk_version = "0.2" + exp_sdc = os.path.join(self._design_full_dir, "constraint.sdc") + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + self.execute_cmd( + place_site, pdk_version, front_end, "SDC_FILE", exp_sdc + ) def test_pdk_0p2a(self): """ @@ -70,24 +50,20 @@ def test_pdk_0p2a(self): 8T: constraint_0.2a_8T.sdc """ - for place_site in self._synopsys_site_list: - if place_site == "": - cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2a print-SDC_FILE" - exp_value = os.path.join(self._design_dir, "constraint_0.2a_8T.sdc") - else: - cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.2a PLACE_SITE={place_site} print-SDC_FILE" - track_height = self._get_track_height(place_site) - exp_value = os.path.join( - self._design_dir, f"constraint_0.2a_{track_height}.sdc" + pdk_version = "0.2a" + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + if place_site == "": + track_height = "8T" + else: + track_height = self.get_track_height(place_site) + exp_sdc = os.path.join( + self._design_full_dir, + f"constraint_{pdk_version}_{track_height}.sdc", + ) + self.execute_cmd( + place_site, pdk_version, front_end, "SDC_FILE", exp_sdc ) - out = subprocess.run( - cmd, check=True, shell=True, capture_output=True, text=True - ) - self.assertEqual(out.returncode, 0) - result = self._result_re.match(out.stdout) - self.assertIsNotNone(result) - value = result.group(1) - self.assertEqual(value, exp_value) def test_pdk_0p3(self): """ @@ -96,24 +72,19 @@ def test_pdk_0p3(self): 8T: constraint_0.3_8T.sdc """ - for place_site in self._synopsys_site_list: - if place_site == "": - cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.3 print-SDC_FILE" - exp_value = os.path.join(self._design_dir, "constraint_0.3_8T.sdc") - else: - cmd = f"{self._cmd_base} RAPIDUS_PDK_VERSION=0.3 PLACE_SITE={place_site} print-SDC_FILE" - track_height = self._get_track_height(place_site) - exp_value = os.path.join( - self._design_dir, f"constraint_0.3_{track_height}.sdc" + pdk_version = "0.3" + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + if place_site == "": + track_height = "8T" + else: + track_height = self.get_track_height(place_site) + exp_sdc = os.path.join( + self._design_full_dir, f"constraint_0.3_{track_height}.sdc" + ) + self.execute_cmd( + place_site, pdk_version, front_end, "SDC_FILE", exp_sdc ) - out = subprocess.run( - cmd, check=True, shell=True, capture_output=True, text=True - ) - self.assertEqual(out.returncode, 0) - result = self._result_re.match(out.stdout) - self.assertIsNotNone(result) - value = result.group(1) - self.assertEqual(value, exp_value) if __name__ == "__main__": diff --git a/flow/designs/rapidus2hp/ethmac/test/test_params.py b/flow/designs/rapidus2hp/ethmac/test/test_params.py new file mode 100755 index 0000000000..0bb5f7e065 --- /dev/null +++ b/flow/designs/rapidus2hp/ethmac/test/test_params.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 + +import os +import sys +import unittest + +if __name__ == "__main__": + util_dir = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), + "utils", + ) + sys.path.insert(0, util_dir) +from param_test_base import ParamTestBase + + +class TestParams(ParamTestBase): + """Unit test for checking correct Makefile settings""" + + def setUp(self): + """Sets up test variables""" + + ParamTestBase.set_up(self, "ethmac") + + def test_pdk_0p2_default(self): + """Tests PDK 0.2 Utilization - should be 70""" + + front_end = "" + pdk_version = "" + exp_util = 70 + for place_site in self._ibm_site_list: + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p2(self): + """Tests PDK 0.2 Utilization - should be 70""" + + front_end = "" + pdk_version = "0.2" + exp_util = 70 + for place_site in self._ibm_site_list: + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p2a(self): + """Tests PDK 0.2a Utilization - should be 70""" + + front_end = "" + pdk_version = "0.2a" + exp_util = 70 + for place_site in self._synopsys_site_list: + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p3(self): + """Tests PDK 0.2a Utilization - should be 65""" + + front_end = "" + pdk_version = "0.3" + exp_util = 65 + for place_site in self._synopsys_site_list: + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/flow/designs/rapidus2hp/gcd/test/test_params.py b/flow/designs/rapidus2hp/gcd/test/test_params.py new file mode 100755 index 0000000000..c6035fa267 --- /dev/null +++ b/flow/designs/rapidus2hp/gcd/test/test_params.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 + +import os +import sys +import unittest + +if __name__ == "__main__": + util_dir = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), + "utils", + ) + sys.path.insert(0, util_dir) +from param_test_base import ParamTestBase + + +class TestParams(ParamTestBase): + """Unit test for checking correct Makefile settings""" + + def setUp(self): + """Sets up test variables""" + + ParamTestBase.set_up(self, "gcd") + + def get_exp_util(self, place_site): + """Returns the expected value""" + + if place_site in ["SC6T", "ra02h138_DST_45CPP"]: + return 43 + return 45 + + def test_pdk_0p2_default(self): + """ + Tests PDK 0.2 utilization + """ + + front_end = "" + pdk_version = "" + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p2(self): + """ + Tests PDK 0.2 utilization + """ + + front_end = "" + pdk_version = "0.2" + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p2a(self): + """ + Tests PDK 0.2a utilization + """ + + front_end = "" + pdk_version = "0.2a" + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p3(self): + """ + Tests PDK 0.3 utilization + """ + + front_end = "" + pdk_version = "0.3" + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/flow/designs/rapidus2hp/hercules_idecode/config.mk b/flow/designs/rapidus2hp/hercules_idecode/config.mk index 5a29351259..4faf134625 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/config.mk +++ b/flow/designs/rapidus2hp/hercules_idecode/config.mk @@ -24,9 +24,9 @@ export SYNTH_HDL_FRONTEND ?= slang # | Front End | Place Site | Utilization | # | --------- | ---------- | ----------- | # | slang | 6T | 44 | -# | slang | 6T | 50 | +# | slang | 8T | 50 | # | verific | 6T | 43 | -# | verific | 6T | 48 | +# | verific | 8T | 48 | export CORE_UTILIZATION = $(strip $(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \ $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ diff --git a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py new file mode 100755 index 0000000000..9991e3d56f --- /dev/null +++ b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 + +import os +import sys +import unittest + +if __name__ == "__main__": + util_dir = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), + "utils", + ) + sys.path.insert(0, util_dir) +from param_test_base import ParamTestBase + + +class TestParams(ParamTestBase): + """Unit test for checking correct Makefile settings""" + + def setUp(self): + """Sets up test variables""" + + ParamTestBase.set_up(self, "hercules_idecode") + + def get_exp_util(self, place_site, front_end): + """Returns the expected value""" + + if front_end == "verific": + if place_site in ["SC6T", "ra02h138_DST_45CPP"]: + return 43 + return 48 + else: + if place_site in ["SC6T", "ra02h138_DST_45CPP"]: + return 44 + return 50 + + def test_pdk_0p2_default(self): + """ + Tests PDK 0.2 utilization + """ + + pdk_version = "" + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p2(self): + """ + Tests PDK 0.2 utilization + """ + + pdk_version = "0.2" + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p2a(self): + """ + Tests PDK 0.2a utilization + """ + + pdk_version = "0.2a" + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p3(self): + """ + Tests PDK 0.3 utilization + """ + + pdk_version = "0.3" + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/flow/designs/rapidus2hp/hercules_is_int/config.mk b/flow/designs/rapidus2hp/hercules_is_int/config.mk index d9cba80c7a..2f88546d1a 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/config.mk +++ b/flow/designs/rapidus2hp/hercules_is_int/config.mk @@ -31,9 +31,9 @@ export SYNTH_HIERARCHICAL ?= 0 # | Front End | Place Site | Utilization | # | --------- | ---------- | ----------- | # | slang | 6T | 30 | -# | slang | 6T | 52 | +# | slang | 8T | 52 | # | verific | 6T | 30 | -# | verific | 6T | 54 | +# | verific | 8T | 54 | export CORE_UTILIZATION = $(strip $(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \ $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ diff --git a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py new file mode 100755 index 0000000000..6fa69bdbe7 --- /dev/null +++ b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 + +import os +import sys +import unittest + +if __name__ == "__main__": + util_dir = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), + "utils", + ) + sys.path.insert(0, util_dir) +from param_test_base import ParamTestBase + + +class TestParams(ParamTestBase): + """Unit test for checking correct Makefile settings""" + + def setUp(self): + """Sets up test variables""" + + ParamTestBase.set_up(self, "hercules_is_int") + + def get_exp_util(self, place_site, front_end): + """Returns the expected value""" + + if front_end == "verific": + if place_site in ["SC6T", "ra02h138_DST_45CPP"]: + return 30 + return 54 + else: + if place_site in ["SC6T", "ra02h138_DST_45CPP"]: + return 30 + return 52 + + def test_pdk_0p2_default(self): + """ + Tests PDK 0.2 utilization + """ + + pdk_version = "" + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p2(self): + """ + Tests PDK 0.2 utilization + """ + + pdk_version = "0.2" + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p2a(self): + """ + Tests PDK 0.2a utilization + """ + + pdk_version = "0.2a" + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p3(self): + """ + Tests PDK 0.3 utilization + """ + + pdk_version = "0.3" + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/flow/designs/rapidus2hp/ibex/test/test_params.py b/flow/designs/rapidus2hp/ibex/test/test_params.py new file mode 100755 index 0000000000..a9847577f2 --- /dev/null +++ b/flow/designs/rapidus2hp/ibex/test/test_params.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python3 + +import os +import sys +import unittest + +if __name__ == "__main__": + util_dir = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), + "utils", + ) + sys.path.insert(0, util_dir) +from param_test_base import ParamTestBase + + +class TestParams(ParamTestBase): + """Unit test for checking correct Makefile settings""" + + def setUp(self): + """Sets up test variables""" + + ParamTestBase.set_up(self, "ibex") + + def get_exp_util(self, place_site, pdk_version): + """Returns the expected utilization""" + + if pdk_version == "0.3": + if place_site == "ra02h138_DST_45CPP": + return 60 + return 65 + return 70 + + def get_exp_sdc(self, place_site, pdk_version): + """Returns the expected SDC file path""" + + if pdk_version == "0.2a": + if place_site == "ra02h138_DST_45CPP": + return os.path.join( + self._design_full_dir, f"constraint_{pdk_version}_6T.sdc" + ) + return os.path.join( + self._design_full_dir, f"constraint_{pdk_version}_8T.sdc" + ) + if pdk_version == "0.3": + if place_site in ["", "ra02h184_HST_45CPP"]: + return os.path.join( + self._design_full_dir, f"constraint_{pdk_version}_8T.sdc" + ) + return os.path.join(self._design_full_dir, "constraint.sdc") + + def test_pdk_0p2_default(self): + """ + Tests PDK 0.2 utilization + """ + + front_end = "" + pdk_version = "" + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + + def test_pdk_0p2(self): + """ + Tests PDK 0.2 utilization + """ + + front_end = "" + pdk_version = "0.2" + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + + def test_pdk_0p2a(self): + """ + Tests PDK 0.2a utilization + """ + + front_end = "" + pdk_version = "0.2a" + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + + def test_pdk_0p3(self): + """ + Tests PDK 0.3 utilization + """ + + front_end = "" + pdk_version = "0.3" + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + + +if __name__ == "__main__": + unittest.main() diff --git a/flow/designs/rapidus2hp/jpeg/test/test_params.py b/flow/designs/rapidus2hp/jpeg/test/test_params.py new file mode 100755 index 0000000000..22e2061d24 --- /dev/null +++ b/flow/designs/rapidus2hp/jpeg/test/test_params.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 + +import os +import sys +import unittest + +if __name__ == "__main__": + util_dir = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), + "utils", + ) + sys.path.insert(0, util_dir) +from param_test_base import ParamTestBase + + +class TestParams(ParamTestBase): + """Unit test for checking correct Makefile settings""" + + def setUp(self): + """Sets up test variables""" + + ParamTestBase.set_up(self, "jpeg") + + def get_exp_sdc(self, place_site, pdk_version): + """Returns the expected SDC file path""" + + if pdk_version == "0.2a": + if place_site in ["", "ra02h184_HST_45CPP"]: + return os.path.join( + self._design_full_dir, f"jpeg_encoder15_{pdk_version}_8T.sdc" + ) + if pdk_version == "0.3": + return os.path.join( + self._design_full_dir, f"jpeg_encoder15_{pdk_version}.sdc" + ) + return os.path.join(self._design_full_dir, "jpeg_encoder15_7nm.sdc") + + def test_pdk_0p2_default(self): + """ + Tests PDK 0.2 utilization + """ + + front_end = "" + pdk_version = "" + for place_site in self._ibm_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + + def test_pdk_0p2(self): + """ + Tests PDK 0.2 utilization + """ + + front_end = "" + pdk_version = "0.2" + for place_site in self._ibm_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + + def test_pdk_0p2a(self): + """ + Tests PDK 0.2a utilization + """ + + front_end = "" + pdk_version = "0.2a" + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + + def test_pdk_0p3(self): + """ + Tests PDK 0.3 utilization + """ + + front_end = "" + pdk_version = "0.3" + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + + +if __name__ == "__main__": + unittest.main() diff --git a/flow/designs/rapidus2hp/utils/param_test_base.py b/flow/designs/rapidus2hp/utils/param_test_base.py new file mode 100644 index 0000000000..735c9d5d9a --- /dev/null +++ b/flow/designs/rapidus2hp/utils/param_test_base.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 + +import os +import re +import subprocess +import unittest + + +class ParamTestBase(unittest.TestCase): + """Base class for testing params""" + + def set_up(self, design_name): + """ + Sets up common member variables. + Assumes we're running in flow directory + """ + + self._platform = "rapidus2hp" + self._design = design_name + self._design_dir = os.path.join("designs", self._platform, self._design) + self._design_full_dir = os.path.join(os.getcwd(), self._design_dir) + self._cmd_base = f"make DESIGN_CONFIG={self._design_dir}/config.mk" + self._result_re = re.compile(r"\S+\s+\=\s+(\S+)") + self._front_end_list = ["", "slang", "verific"] + self._ibm_site_list = ["", "SC6T", "SC8T"] + self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h138_DST_45CPP"] + + def get_track_height(self, place_site): + """Returns the track height for the place site""" + + if place_site.startswith("SC"): + return place_site[2:] + if place_site == "ra02h138_DST_45CPP": + return "6T" + return "8T" + + def build_cmd(self, place_site, pdk_version, front_end, param_name): + """Builds the command to execute""" + + str_buf = [self._cmd_base] + if place_site != "": + str_buf.append(f"PLACE_SITE={place_site}") + if pdk_version != "": + str_buf.append(f"RAPIDUS_PDK_VERSION={pdk_version}") + if front_end == "verific": + str_buf.append(f"SYNTH_HDL_FRONTEND={front_end}") + str_buf.append(f"print-{param_name}") + return " ".join(str_buf) + + def execute_cmd(self, place_site, pdk_version, front_end, param_name, exp_result): + """ + Executes command + check if return code is 0 + check if value matches expected result + """ + + test_tag = f"'{place_site}' '{pdk_version}' '{front_end}'" + cmd = self.build_cmd(place_site, pdk_version, front_end, param_name) + out = subprocess.run( + cmd, check=True, shell=True, capture_output=True, text=True + ) + self.assertEqual(out.returncode, 0, f"Return code for {test_tag} is non-zero") + result = self._result_re.match(out.stdout) + self.assertIsNotNone(result, f"RE result {test_tag} is None") + value = result.group(1) + if isinstance(exp_result, int): + value = int(value) + self.assertEqual(value, exp_result, f"Results for {test_tag} don't match") diff --git a/flow/designs/rapidus2hp/utils/run_tests.sh b/flow/designs/rapidus2hp/utils/run_tests.sh new file mode 100755 index 0000000000..f9e1207745 --- /dev/null +++ b/flow/designs/rapidus2hp/utils/run_tests.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +err_ct=0 + +for design_name in cva6 ethmac gcd hercules_idecode hercules_is_int ibex jpeg; do + ./designs/rapidus2hp/$design_name/test/test_params.py + if [ $? -ne 0 ]; then + ((err_ct++)) + fi +done + +if [ $err_ct -ne 0 ]; then + echo "ERROR: $err_ct errors found" + exit 1 +fi + +exit 0 From caaa5b2398a1bb694957c1b2065c8146c201ff39 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 5 Jan 2026 22:32:08 +0000 Subject: [PATCH 221/364] Updated param tests to include PDK 0.15 Signed-off-by: Jeff Ng --- .../rapidus2hp/cva6/test/test_params.py | 94 ++++++++++--------- .../rapidus2hp/ethmac/test/test_params.py | 38 ++++++-- .../rapidus2hp/gcd/test/test_params.py | 27 +++++- .../hercules_idecode/test/test_params.py | 13 +++ .../hercules_is_int/test/test_params.py | 13 +++ .../rapidus2hp/ibex/test/test_params.py | 17 ++++ .../rapidus2hp/jpeg/test/test_params.py | 13 ++- 7 files changed, 156 insertions(+), 59 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/test/test_params.py b/flow/designs/rapidus2hp/cva6/test/test_params.py index e9816452b2..9456846098 100755 --- a/flow/designs/rapidus2hp/cva6/test/test_params.py +++ b/flow/designs/rapidus2hp/cva6/test/test_params.py @@ -21,70 +21,74 @@ def setUp(self): ParamTestBase.set_up(self, "cva6") + def get_exp_sdc(self, place_site, pdk_version): + """Returns the expected SDC file path""" + + if pdk_version in ["0.2a", "0.3"]: + if place_site == "ra02h138_DST_45CPP": + return os.path.join( + self._design_full_dir, f"constraint_{pdk_version}_6T.sdc" + ) + return os.path.join( + self._design_full_dir, f"constraint_{pdk_version}_8T.sdc" + ) + + return os.path.join(self._design_full_dir, "constraint.sdc") + def test_pdk_0p2_default(self): - """Tests PDK 0.2 SDC file - should be default for both 6T and 8T""" + """ + Tests PDK 0.2 + """ + front_end = "" pdk_version = "" - exp_sdc = os.path.join(self._design_full_dir, "constraint.sdc") - for front_end in self._front_end_list: - for place_site in self._ibm_site_list: - self.execute_cmd( - place_site, pdk_version, front_end, "SDC_FILE", exp_sdc - ) + for place_site in self._ibm_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) def test_pdk_0p2(self): - """Tests PDK 0.2 SDC file - should be default for both 6T and 8T""" + """ + Tests PDK 0.2 + """ + front_end = "" pdk_version = "0.2" - exp_sdc = os.path.join(self._design_full_dir, "constraint.sdc") - for front_end in self._front_end_list: - for place_site in self._ibm_site_list: - self.execute_cmd( - place_site, pdk_version, front_end, "SDC_FILE", exp_sdc - ) + for place_site in self._ibm_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) def test_pdk_0p2a(self): """ - Tests PDK 0.2a SDC file - 6T: constraint_0.2a_6T.sdc - 8T: constraint_0.2a_8T.sdc + Tests PDK 0.2a """ + front_end = "" pdk_version = "0.2a" - for front_end in self._front_end_list: - for place_site in self._synopsys_site_list: - if place_site == "": - track_height = "8T" - else: - track_height = self.get_track_height(place_site) - exp_sdc = os.path.join( - self._design_full_dir, - f"constraint_{pdk_version}_{track_height}.sdc", - ) - self.execute_cmd( - place_site, pdk_version, front_end, "SDC_FILE", exp_sdc - ) + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + + def test_pdk_0p15(self): + """ + Tests PDK 0.15 + """ + + front_end = "" + pdk_version = "0.15" + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) def test_pdk_0p3(self): """ - Tests PDK 0.3 SDC file - 6T: constraint_0.3_6T.sdc - 8T: constraint_0.3_8T.sdc + Tests PDK 0.3 """ + front_end = "" pdk_version = "0.3" - for front_end in self._front_end_list: - for place_site in self._synopsys_site_list: - if place_site == "": - track_height = "8T" - else: - track_height = self.get_track_height(place_site) - exp_sdc = os.path.join( - self._design_full_dir, f"constraint_0.3_{track_height}.sdc" - ) - self.execute_cmd( - place_site, pdk_version, front_end, "SDC_FILE", exp_sdc - ) + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) if __name__ == "__main__": diff --git a/flow/designs/rapidus2hp/ethmac/test/test_params.py b/flow/designs/rapidus2hp/ethmac/test/test_params.py index 0bb5f7e065..5b53e36f14 100755 --- a/flow/designs/rapidus2hp/ethmac/test/test_params.py +++ b/flow/designs/rapidus2hp/ethmac/test/test_params.py @@ -21,46 +21,68 @@ def setUp(self): ParamTestBase.set_up(self, "ethmac") + def get_exp_util(self, place_site, pdk_version): + """Returns the expected utilization""" + + if pdk_version == "0.15": + if place_site == "ra02h138_DST_45CPP": + return 63 + return 65 + if pdk_version == "0.3": + return 65 + return 70 + def test_pdk_0p2_default(self): - """Tests PDK 0.2 Utilization - should be 70""" + """Tests PDK 0.2 Utilization""" front_end = "" pdk_version = "" - exp_util = 70 for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) def test_pdk_0p2(self): - """Tests PDK 0.2 Utilization - should be 70""" + """Tests PDK 0.2 Utilization""" front_end = "" pdk_version = "0.2" - exp_util = 70 for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) def test_pdk_0p2a(self): - """Tests PDK 0.2a Utilization - should be 70""" + """Tests PDK 0.2a Utilization""" front_end = "" pdk_version = "0.2a" - exp_util = 70 for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p15(self): + """Tests PDK 0.15 Utilization""" + + front_end = "" + pdk_version = "0.15" + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) def test_pdk_0p3(self): - """Tests PDK 0.2a Utilization - should be 65""" + """Tests PDK 0.3 Utilization""" front_end = "" pdk_version = "0.3" - exp_util = 65 for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) diff --git a/flow/designs/rapidus2hp/gcd/test/test_params.py b/flow/designs/rapidus2hp/gcd/test/test_params.py index c6035fa267..65b5289800 100755 --- a/flow/designs/rapidus2hp/gcd/test/test_params.py +++ b/flow/designs/rapidus2hp/gcd/test/test_params.py @@ -21,9 +21,13 @@ def setUp(self): ParamTestBase.set_up(self, "gcd") - def get_exp_util(self, place_site): + def get_exp_util(self, place_site, pdk_version): """Returns the expected value""" + if pdk_version == "0.15": + if place_site == "ra02h138_DST_45CPP": + return 36 + return 40 if place_site in ["SC6T", "ra02h138_DST_45CPP"]: return 43 return 45 @@ -36,7 +40,7 @@ def test_pdk_0p2_default(self): front_end = "" pdk_version = "" for place_site in self._ibm_site_list: - exp_util = self.get_exp_util(place_site) + exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) @@ -49,7 +53,7 @@ def test_pdk_0p2(self): front_end = "" pdk_version = "0.2" for place_site in self._ibm_site_list: - exp_util = self.get_exp_util(place_site) + exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) @@ -62,7 +66,20 @@ def test_pdk_0p2a(self): front_end = "" pdk_version = "0.2a" for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site) + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + + def test_pdk_0p15(self): + """ + Tests PDK 0.15 utilization + """ + + front_end = "" + pdk_version = "0.15" + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) @@ -75,7 +92,7 @@ def test_pdk_0p3(self): front_end = "" pdk_version = "0.3" for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site) + exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) diff --git a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py index 9991e3d56f..cbd822fec4 100755 --- a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py @@ -72,6 +72,19 @@ def test_pdk_0p2a(self): place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) + def test_pdk_0p15(self): + """ + Tests PDK 0.15 utilization + """ + + pdk_version = "0.15" + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + def test_pdk_0p3(self): """ Tests PDK 0.3 utilization diff --git a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py index 6fa69bdbe7..32fe35d974 100755 --- a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py @@ -72,6 +72,19 @@ def test_pdk_0p2a(self): place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) + def test_pdk_0p15(self): + """ + Tests PDK 0.15 utilization + """ + + pdk_version = "0.15" + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, front_end) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + def test_pdk_0p3(self): """ Tests PDK 0.3 utilization diff --git a/flow/designs/rapidus2hp/ibex/test/test_params.py b/flow/designs/rapidus2hp/ibex/test/test_params.py index a9847577f2..b52d1f5e94 100755 --- a/flow/designs/rapidus2hp/ibex/test/test_params.py +++ b/flow/designs/rapidus2hp/ibex/test/test_params.py @@ -41,6 +41,8 @@ def get_exp_sdc(self, place_site, pdk_version): return os.path.join( self._design_full_dir, f"constraint_{pdk_version}_8T.sdc" ) + if pdk_version == "0.15": + return os.path.join(self._design_full_dir, f"constraint_{pdk_version}.sdc") if pdk_version == "0.3": if place_site in ["", "ra02h184_HST_45CPP"]: return os.path.join( @@ -93,6 +95,21 @@ def test_pdk_0p2a(self): ) self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + def test_pdk_0p15(self): + """ + Tests PDK 0.15 utilization + """ + + front_end = "" + pdk_version = "0.15" + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + ) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + def test_pdk_0p3(self): """ Tests PDK 0.3 utilization diff --git a/flow/designs/rapidus2hp/jpeg/test/test_params.py b/flow/designs/rapidus2hp/jpeg/test/test_params.py index 22e2061d24..7f2b15e5dc 100755 --- a/flow/designs/rapidus2hp/jpeg/test/test_params.py +++ b/flow/designs/rapidus2hp/jpeg/test/test_params.py @@ -29,7 +29,7 @@ def get_exp_sdc(self, place_site, pdk_version): return os.path.join( self._design_full_dir, f"jpeg_encoder15_{pdk_version}_8T.sdc" ) - if pdk_version == "0.3": + if pdk_version in ["0.15", "0.3"]: return os.path.join( self._design_full_dir, f"jpeg_encoder15_{pdk_version}.sdc" ) @@ -68,6 +68,17 @@ def test_pdk_0p2a(self): exp_sdc = self.get_exp_sdc(place_site, pdk_version) self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + def test_pdk_0p15(self): + """ + Tests PDK 0.15 utilization + """ + + front_end = "" + pdk_version = "0.15" + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + def test_pdk_0p3(self): """ Tests PDK 0.3 utilization From e63d726ea6114d76e798365a0c157b1d678f795a Mon Sep 17 00:00:00 2001 From: Noam Cohen Date: Tue, 6 Jan 2026 00:22:09 +0100 Subject: [PATCH 222/364] fix in kf Signed-off-by: Noam Cohen --- tools/kepler-formal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/kepler-formal b/tools/kepler-formal index 27e3195947..f5562eb1ce 160000 --- a/tools/kepler-formal +++ b/tools/kepler-formal @@ -1 +1 @@ -Subproject commit 27e31959477d528febb79b52109c1978bbabfa0c +Subproject commit f5562eb1ce8252fc787a226ac5d23f94f1e8da33 From 8bb9f57a25b5e275cc18c938aa2714c82d93b1b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Mon, 8 Dec 2025 12:49:56 +0100 Subject: [PATCH 223/364] Update yosys-slang MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Povišer --- tools/yosys-slang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/yosys-slang b/tools/yosys-slang index ccc13eabc3..64b44616a3 160000 --- a/tools/yosys-slang +++ b/tools/yosys-slang @@ -1 +1 @@ -Subproject commit ccc13eabc333a59d3a78bdb1d4a002928050e92d +Subproject commit 64b44616a3798f07453b14ea03e4ac8a16b77313 From b98cfa54f0dd5cb492aad43a5ad3fd9f27e03b36 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 6 Jan 2026 14:00:48 +0000 Subject: [PATCH 224/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/sky130hs/ibex/rules-base.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index f0f37cb119..8ed1b554c8 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -35.7, + "value": -54.1, "compare": ">=" }, "globalroute__timing__hold__ws": { From adc1ee7ac08d408d721b5cf9ec19a9225c29da73 Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Tue, 6 Jan 2026 16:25:16 +0000 Subject: [PATCH 225/364] util: fix for colon metrics In the dashboard DB, colons are replaced with double underscores as it is not possible to store keys with colons in the name. Signed-off-by: Vitor Bandeira --- flow/util/genMetrics.py | 4 ++++ flow/util/genRuleFile.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/flow/util/genMetrics.py b/flow/util/genMetrics.py index 6453f5dd00..6090714532 100755 --- a/flow/util/genMetrics.py +++ b/flow/util/genMetrics.py @@ -346,6 +346,10 @@ def extract_metrics( else: metrics_dict["total_time"] = str(total) + metrics_dict = { + key.replace(":", "__"): value for key, value in metrics_dict.items() + } + if hier_json: # Convert the Metrics dictionary to hierarchical format by stripping # the stage as a 'key' diff --git a/flow/util/genRuleFile.py b/flow/util/genRuleFile.py index d0d6ddd0e4..357cf96e03 100755 --- a/flow/util/genRuleFile.py +++ b/flow/util/genRuleFile.py @@ -298,6 +298,10 @@ def gen_rule_file( matching_fields.append(pattern) for field in matching_fields: + # Replace ':' with '__' as the dashboard DB does not accept + # ':' in # field names. + if ":" in field: + field = field.replace(":", "__") processed_fields.add(field) if isinstance(metrics[field], str): print(f"[WARNING] Skipping string field {field} = {metrics[field]}") From 738f1bd728b3d638d6818787576b56d9dc168fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Tue, 6 Jan 2026 18:20:23 +0000 Subject: [PATCH 226/364] Update private metrics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit designs/rapidus2hp/hercules_is_int/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | synth__design__instance__area__stdcell | 26631.02 | 26600.0 | Tighten | | placeopt__design__instance__area | 31863 | 31764 | Tighten | | placeopt__design__instance__count__stdcell | 661418 | 659714 | Tighten | | cts__design__instance__count__setup_buffer | 57554 | 57366 | Tighten | | cts__design__instance__count__hold_buffer | 57554 | 57366 | Tighten | | cts__timing__setup__ws | -52.8 | -71.9 | Failing | | cts__timing__setup__tns | -252000.0 | -379000.0 | Failing | | globalroute__antenna_diodes_count | 581 | 579 | Tighten | | globalroute__timing__setup__ws | -391.0 | -372.0 | Tighten | | globalroute__timing__setup__tns | -1230000.0 | -1560000.0 | Failing | | finish__timing__setup__ws | -391.0 | -372.0 | Tighten | | finish__timing__setup__tns | -1230000.0 | -1560000.0 | Failing | | finish__design__instance__area | 33600 | 33391 | Tighten | Signed-off-by: Martin Povišer --- .../hercules_is_int/rules-base.json | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 838fb35f03..5941332af4 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -9,11 +9,6 @@ "compare": "<=", "level": "warning" }, - "finish__flow__warnings__count:GUI-0076": { - "value": 2, - "compare": "<=", - "level": "warning" - }, "floorplan__flow__warnings__count:EST-0027": { "value": 1, "compare": "<=", @@ -75,7 +70,7 @@ "level": "warning" }, "synth__design__instance__area__stdcell": { - "value": 26631.02, + "value": 26600.0, "compare": "<=" }, "constraints__clocks__count": { @@ -83,11 +78,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 31863, + "value": 31764, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 661418, + "value": 659714, "compare": "<=" }, "detailedplace__design__violations": { @@ -95,19 +90,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 57554, + "value": 57366, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 57554, + "value": 57366, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -52.8, + "value": -71.9, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -252000.0, + "value": -379000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -119,15 +114,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 581, + "value": 579, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -391.0, + "value": -372.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1230000.0, + "value": -1560000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -139,11 +134,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -391.0, + "value": -372.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1230000.0, + "value": -1560000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -155,7 +150,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33600, + "value": 33391, "compare": "<=" } } \ No newline at end of file From 0086e5f8b39085c969fa3b97f046f788e26d4909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Tue, 6 Jan 2026 20:56:44 +0100 Subject: [PATCH 227/364] synth: Add "has extracted operators" utility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Povišer --- flow/scripts/synth_wrap_operators.tcl | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/flow/scripts/synth_wrap_operators.tcl b/flow/scripts/synth_wrap_operators.tcl index f3510312e3..aa95e0429e 100644 --- a/flow/scripts/synth_wrap_operators.tcl +++ b/flow/scripts/synth_wrap_operators.tcl @@ -74,11 +74,12 @@ foreach info $deferred_cells { # make per-architecture copies of the unmapped module foreach modname [tee -q -s result.string select -list-mod A:arithmetic_operator A:copy_pending %i] { # tclint-disable-line line-length setattr -mod -unset copy_pending $modname + set base [rtlil::get_attr -string -mod $modname implements_operator] + setattr -set implements_operator \"$base\" t:$modname # iterate over non-default architectures foreach arch [lrange $info 3 end] { set suffix [lindex $arch 0] - set base [rtlil::get_attr -string -mod $modname implements_operator] set newname ${base}_${suffix} yosys copy $modname $newname yosys setattr -mod -set architecture \"$suffix\" $newname @@ -109,3 +110,8 @@ chformal -remove setattr -mod -set abc9_script {"+&dch;&nf -R 5;"} A:arithmetic_operator setattr -mod -set abc9_box 1 A:arithmetic_operator techmap -map +/techmap.v -map +/choices/han-carlson.v + +proc design_has_extracted_operators {} { + set no_extracted [yosys tee -q -s result.string select -count a:implements_operator] + return [expr [lindex $no_extracted 0] > 0] +} From 3112464cc51e27f87e1a5139d0a886b944c7caf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 7 Jan 2026 14:18:49 +0100 Subject: [PATCH 228/364] scripts: log_cmd estimate_parasitics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sometimes estimate_parasitics can take an extraordinate amount of time and log_cmd avoids mis-attributing this in progress output Signed-off-by: Øyvind Harboe --- flow/scripts/cts.tcl | 4 ++-- flow/scripts/detail_place.tcl | 2 +- flow/scripts/floorplan.tcl | 2 +- flow/scripts/global_place.tcl | 4 ++-- flow/scripts/global_route.tcl | 6 +++--- flow/scripts/repair_timing_post_place.tcl | 4 ++-- flow/scripts/resize.tcl | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/flow/scripts/cts.tcl b/flow/scripts/cts.tcl index 66732265eb..49262c6dc5 100644 --- a/flow/scripts/cts.tcl +++ b/flow/scripts/cts.tcl @@ -34,7 +34,7 @@ set_dont_use $::env(DONT_USE_CELLS) log_cmd clock_tree_synthesis {*}$cts_args utl::push_metrics_stage "cts__{}__pre_repair_timing" -estimate_parasitics -placement +log_cmd estimate_parasitics -placement if { $::env(DETAILED_METRICS) } { report_metrics 4 "cts pre-repair-timing" } @@ -50,7 +50,7 @@ if { $result != 0 } { error "Detailed placement failed in CTS: $msg" } -estimate_parasitics -placement +log_cmd estimate_parasitics -placement if { $::env(CTS_SNAPSHOTS) } { save_progress 4_1_pre_repair_hold_setup diff --git a/flow/scripts/detail_place.tcl b/flow/scripts/detail_place.tcl index a0e1775947..7c3c433f8a 100644 --- a/flow/scripts/detail_place.tcl +++ b/flow/scripts/detail_place.tcl @@ -27,7 +27,7 @@ proc do_dpl { } { utl::info FLW 12 "Placement violations [check_placement -verbose]." - estimate_parasitics -placement + log_cmd estimate_parasitics -placement } set result [catch { do_dpl } errMsg] diff --git a/flow/scripts/floorplan.tcl b/flow/scripts/floorplan.tcl index 710cef5f16..00c1b8dabe 100644 --- a/flow/scripts/floorplan.tcl +++ b/flow/scripts/floorplan.tcl @@ -130,7 +130,7 @@ if { !$::env(SKIP_REPAIR_TIE_FANOUT) } { } if { [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] } { - estimate_parasitics -placement + log_cmd estimate_parasitics -placement replace_arith_modules } diff --git a/flow/scripts/global_place.tcl b/flow/scripts/global_place.tcl index 7ac604bc07..97628b30c3 100644 --- a/flow/scripts/global_place.tcl +++ b/flow/scripts/global_place.tcl @@ -50,11 +50,11 @@ if { $result != 0 } { error $errMsg } -estimate_parasitics -placement +log_cmd estimate_parasitics -placement if { $::env(CLUSTER_FLOPS) } { cluster_flops - estimate_parasitics -placement + log_cmd estimate_parasitics -placement } report_metrics 3 "global place" false false diff --git a/flow/scripts/global_route.tcl b/flow/scripts/global_route.tcl index 6970b759ab..ba95205db6 100644 --- a/flow/scripts/global_route.tcl +++ b/flow/scripts/global_route.tcl @@ -42,7 +42,7 @@ proc global_route_helper { } { -right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) set_propagated_clock [all_clocks] - estimate_parasitics -global_routing + log_cmd estimate_parasitics -global_routing if { [env_var_exists_and_non_empty DONT_USE_CELLS] } { set_dont_use $::env(DONT_USE_CELLS) @@ -69,7 +69,7 @@ proc global_route_helper { } { # Repair timing using global route parasitics puts "Repair setup and hold violations..." - estimate_parasitics -global_routing + log_cmd estimate_parasitics -global_routing repair_timing_helper @@ -104,7 +104,7 @@ proc global_route_helper { } { } puts "Estimate parasitics..." - estimate_parasitics -global_routing + log_cmd estimate_parasitics -global_routing report_metrics 5 "global route" diff --git a/flow/scripts/repair_timing_post_place.tcl b/flow/scripts/repair_timing_post_place.tcl index 53ce035ab3..88757727ea 100644 --- a/flow/scripts/repair_timing_post_place.tcl +++ b/flow/scripts/repair_timing_post_place.tcl @@ -8,14 +8,14 @@ set_placement_padding -global \ -right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) puts "Repair setup and hold violations" -estimate_parasitics -placement +log_cmd estimate_parasitics -placement log_cmd repair_timing -repair_tns $::env(TNS_END_PERCENT) # Legalize placement after timing repair detailed_placement puts "Estimate parasitics" -estimate_parasitics -placement +log_cmd estimate_parasitics -placement report_metrics 3 "place repair timing" true false orfs_write_db $::env(RESULTS_DIR)/3_6_place_repair_timing.odb diff --git a/flow/scripts/resize.tcl b/flow/scripts/resize.tcl index 832855578c..44f7a410dc 100644 --- a/flow/scripts/resize.tcl +++ b/flow/scripts/resize.tcl @@ -3,7 +3,7 @@ source $::env(SCRIPTS_DIR)/load.tcl erase_non_stage_variables place load_design 3_3_place_gp.odb 2_floorplan.sdc -estimate_parasitics -placement +log_cmd estimate_parasitics -placement set instance_count_before [sta::network_leaf_instance_count] set pin_count_before [sta::network_leaf_pin_count] From f8448f2e83d6716268df77d2b6e4a6653d1cb241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Wed, 7 Jan 2026 15:02:39 +0100 Subject: [PATCH 229/364] synth: Fix blackboxing and clkgate options with slang MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Povišer --- flow/scripts/synth_preamble.tcl | 41 +++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/flow/scripts/synth_preamble.tcl b/flow/scripts/synth_preamble.tcl index 582f7e2544..d8f98c8f69 100644 --- a/flow/scripts/synth_preamble.tcl +++ b/flow/scripts/synth_preamble.tcl @@ -53,11 +53,25 @@ proc read_design_sources { } { # slang requires all files at once lappend slang_args {*}$::env(VERILOG_FILES) + # Add clock gate cell definition, if available + if { [env_var_exists_and_non_empty CLKGATE_MAP_FILE] } { + lappend slang_args $::env(CLKGATE_MAP_FILE) + } + # Apply top-level parameters dict for {key value} [env_var_or_empty VERILOG_TOP_PARAMS] { lappend slang_args -G "$key=$value" } + # Apply module blackboxing based on module names as they appear + # in the input, that is before any module name mangling done + # by elaboration and synthesis + if { [env_var_exists_and_non_empty SYNTH_BLACKBOXES] } { + foreach m $::env(SYNTH_BLACKBOXES) { + lappend slang_args --blackboxed-module "$m" + } + } + # Add user arguments lappend slang_args {*}$::env(SYNTH_SLANG_ARGS) @@ -79,6 +93,10 @@ proc read_design_sources { } { # Apply top-level parameters chparam -set $key $value $::env(DESIGN_NAME) } + + if { [env_var_exists_and_non_empty SYNTH_BLACKBOXES] } { + error "Non-empty SYNTH_BLACKBOXES unsupported with HDL frontend \"verific\"" + } } elseif { ![env_var_exists_and_non_empty SYNTH_HDL_FRONTEND] } { verilog_defaults -push if { [env_var_exists_and_non_empty VERILOG_DEFINES] } { @@ -87,26 +105,25 @@ proc read_design_sources { } { foreach file $::env(VERILOG_FILES) { read_verilog -defer -sv {*}$vIdirsArgs $file } + # Read platform specific mapfile for OPENROAD_CLKGATE cells + if { [env_var_exists_and_non_empty CLKGATE_MAP_FILE] } { + read_verilog -defer $::env(CLKGATE_MAP_FILE) + } verilog_defaults -pop dict for {key value} [env_var_or_empty VERILOG_TOP_PARAMS] { # Apply top-level parameters chparam -set $key $value $::env(DESIGN_NAME) } - } else { - error "Unrecognized HDL frontend: $::env(SYNTH_HDL_FRONTEND)" - } - # Read platform specific mapfile for OPENROAD_CLKGATE cells - if { [env_var_exists_and_non_empty CLKGATE_MAP_FILE] } { - read_verilog -defer $::env(CLKGATE_MAP_FILE) - } - - if { [env_var_exists_and_non_empty SYNTH_BLACKBOXES] } { - hierarchy -check -top $::env(DESIGN_NAME) - foreach m $::env(SYNTH_BLACKBOXES) { - blackbox $m + if { [env_var_exists_and_non_empty SYNTH_BLACKBOXES] } { + hierarchy -check -top $::env(DESIGN_NAME) + foreach m $::env(SYNTH_BLACKBOXES) { + blackbox $m + } } + } else { + error "Unrecognized HDL frontend: $::env(SYNTH_HDL_FRONTEND)" } } From e5504ffd379ace12fe2dcc2ec34b80196661e302 Mon Sep 17 00:00:00 2001 From: Jonas Gava Date: Wed, 7 Jan 2026 18:59:19 +0000 Subject: [PATCH 230/364] update metrics after res-aware modifications Signed-off-by: Jonas Gava --- .../designs/rapidus2hp/ethmac/rules-base.json | 94 +-------------- .../rapidus2hp/ethmac/rules-verific.json | 107 +----------------- flow/designs/rapidus2hp/gcd/rules-base.json | 84 +------------- 3 files changed, 10 insertions(+), 275 deletions(-) diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 17461a357b..9ab5c473f2 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 3290.0, "compare": "<=" @@ -142,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1410.0, + "value": -1730.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -158,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1410.0, + "value": -1730.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json index 19a4f49521..a9f6e7f847 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-verific.json +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 3290.0, "compare": "<=" @@ -123,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -42.0, + "value": -34.4, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -747.0, + "value": -612.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -143,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -61.3, + "value": -58.9, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1530.0, + "value": -1610.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -159,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -61.3, + "value": -58.9, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1530.0, + "value": -1610.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index a05a33ab02..b5dd2214ba 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -1,84 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 146, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 20.89, "compare": "<=" @@ -132,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -821.0, + "value": -875.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -148,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -821.0, + "value": -875.0, "compare": ">=" }, "finish__timing__hold__ws": { From abab2370a6bd6d9158734aae6c0537cf77253064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 7 Jan 2026 21:50:38 +0100 Subject: [PATCH 231/364] synth: out of flow source folder build fix for wrap operators MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use $::env(SCRIPTS_DIR) consistent with other places in scripts Signed-off-by: Øyvind Harboe --- flow/scripts/synth_wrap_operators.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/scripts/synth_wrap_operators.tcl b/flow/scripts/synth_wrap_operators.tcl index f3510312e3..10302046ca 100644 --- a/flow/scripts/synth_wrap_operators.tcl +++ b/flow/scripts/synth_wrap_operators.tcl @@ -11,7 +11,7 @@ set deferred_cells { { \$macc MACC_{CONFIG}_{Y_WIDTH}{%unused} - {BOOTH -max_iter 1 -map ../flow/scripts/synth_wrap_operators-booth.v} + {BOOTH -max_iter 1 -map $::env(SCRIPTS_DIR)/synth_wrap_operators-booth.v} {BASE -map +/choices/han-carlson.v} } } From 770502ab4928cacd2536419a42586ae67b23f429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 7 Jan 2026 23:22:56 +0100 Subject: [PATCH 232/364] slang: add a SYNTH_BLACKBOXES syntax check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Non-existand verilog modules should be ignored to be compartible with Yosys. Signed-off-by: Øyvind Harboe --- flow/designs/asap7/uart/config.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/flow/designs/asap7/uart/config.mk b/flow/designs/asap7/uart/config.mk index 4b36007d47..81a0ed0631 100644 --- a/flow/designs/asap7/uart/config.mk +++ b/flow/designs/asap7/uart/config.mk @@ -5,6 +5,9 @@ export DESIGN_NAME = uart export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/*.v)) export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc +# Exercise syntax on command line for a dummy module and +# check that non-existant modules are silently ignored. +export SYNTH_BLACKBOXES = dummy export PLACE_DENSITY = 0.70 export DIE_AREA = 0 0 17 17 From a521e2c8aa971e9bb065fbc6c561e06e95325151 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Wed, 7 Jan 2026 23:59:18 +0000 Subject: [PATCH 233/364] Update designs/rapidus2hp/ethmac/rules-verific.json: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -42.0 | -34.4 | Tighten | | cts__timing__setup__tns | -747.0 | -612.0 | Tighten | | globalroute__timing__setup__ws | -61.3 | -56.6 | Tighten | | globalroute__timing__setup__tns | -1530.0 | -1610.0 | Failing | | finish__timing__setup__ws | -61.3 | -56.6 | Tighten | | finish__timing__setup__tns | -1530.0 | -1610.0 | Failing | Signed-off-by: Matt Liberty --- .../rapidus2hp/ethmac/rules-verific.json | 107 +----------------- 1 file changed, 6 insertions(+), 101 deletions(-) diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json index 19a4f49521..4bf77d125b 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-verific.json +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -1,99 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 3290.0, "compare": "<=" @@ -123,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -42.0, + "value": -34.4, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -747.0, + "value": -612.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -143,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -61.3, + "value": -56.6, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1530.0, + "value": -1610.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -159,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -61.3, + "value": -56.6, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1530.0, + "value": -1610.0, "compare": ">=" }, "finish__timing__hold__ws": { From d756cd18eaf580b756f8a2268c925cbccc8662ad Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Thu, 8 Jan 2026 06:47:19 +0000 Subject: [PATCH 234/364] enable operator swap for 23 designs Signed-off-by: Cho Moon --- flow/designs/asap7/aes-block/config.mk | 2 ++ flow/designs/asap7/cva6/config.mk | 6 ++++-- flow/designs/asap7/ibex/config.mk | 1 + flow/designs/asap7/mock-alu/config.mk | 2 ++ flow/designs/asap7/riscv32i/config.mk | 2 ++ flow/designs/asap7/swerv_wrapper/config.mk | 2 ++ flow/designs/gf180/ibex/config.mk | 2 ++ flow/designs/gf180/jpeg/config.mk | 2 ++ flow/designs/gf180/riscv32i/config.mk | 2 ++ flow/designs/ihp-sg13g2/gcd/config.mk | 2 ++ flow/designs/ihp-sg13g2/ibex/config.mk | 2 ++ flow/designs/ihp-sg13g2/riscv32i/config.mk | 2 ++ flow/designs/ihp-sg13g2/spi/config.mk | 2 ++ flow/designs/nangate45/aes/config.mk | 2 ++ flow/designs/nangate45/bp_multi_top/config.mk | 2 ++ flow/designs/nangate45/dynamic_node/config.mk | 2 ++ flow/designs/nangate45/swerv_wrapper/config.mk | 2 ++ flow/designs/sky130hd/aes/config.mk | 2 ++ flow/designs/sky130hd/microwatt/config.mk | 2 ++ flow/designs/sky130hd/riscv32i/config.mk | 2 ++ flow/designs/sky130hs/aes/config.mk | 1 + flow/designs/sky130hs/jpeg/config.mk | 2 ++ flow/designs/sky130hs/riscv32i/config.mk | 2 ++ flow/scripts/synth.tcl | 9 +++++++-- flow/scripts/synth_wrap_operators.tcl | 4 ++-- 25 files changed, 55 insertions(+), 6 deletions(-) diff --git a/flow/designs/asap7/aes-block/config.mk b/flow/designs/asap7/aes-block/config.mk index 60a0c336b1..c0be7d1b32 100644 --- a/flow/designs/asap7/aes-block/config.mk +++ b/flow/designs/asap7/aes-block/config.mk @@ -30,3 +30,5 @@ export PWR_NETS_VOLTAGES = export MACRO_PLACE_HALO ?= 3 3 export ROUTING_LAYER_ADJUSTMENT = 0.3 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/asap7/cva6/config.mk b/flow/designs/asap7/cva6/config.mk index 85b00dc9be..09d5d960a5 100644 --- a/flow/designs/asap7/cva6/config.mk +++ b/flow/designs/asap7/cva6/config.mk @@ -88,8 +88,10 @@ export ADDITIONAL_LIBS = $(PLATFORM_DIR)/lib/NLDM/fakeram7_64x256.lib \ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constraint.sdc -export CORE_UTILIZATION = 70 -export CORE_MARGIN = 2 +export DIE_AREA = 0.000 0.000 158.835 158.835 +export CORE_AREA = 2.052 2.160 156.816 156.600 +#export CORE_UTILIZATION = 70 +#export CORE_MARGIN = 2 export MACRO_PLACE_HALO = 3 3 export PLACE_DENSITY = 0.69 diff --git a/flow/designs/asap7/ibex/config.mk b/flow/designs/asap7/ibex/config.mk index 170af31035..222314c1f0 100644 --- a/flow/designs/asap7/ibex/config.mk +++ b/flow/designs/asap7/ibex/config.mk @@ -28,3 +28,4 @@ export ENABLE_DPO = 0 export TNS_END_PERCENT = 100 +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/asap7/mock-alu/config.mk b/flow/designs/asap7/mock-alu/config.mk index 434bbc0065..49dce08ed3 100644 --- a/flow/designs/asap7/mock-alu/config.mk +++ b/flow/designs/asap7/mock-alu/config.mk @@ -7,3 +7,5 @@ export CORE_UTILIZATION = 50 export CORNER = BC export ROUTING_LAYER_ADJUSTMENT = 0.45 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/asap7/riscv32i/config.mk b/flow/designs/asap7/riscv32i/config.mk index 60313250f5..c3ea3c045e 100644 --- a/flow/designs/asap7/riscv32i/config.mk +++ b/flow/designs/asap7/riscv32i/config.mk @@ -26,3 +26,5 @@ export TNS_END_PERCENT = 100 export CTS_CLUSTER_SIZE = 10 export CTS_CLUSTER_DIAMETER = 50 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/asap7/swerv_wrapper/config.mk b/flow/designs/asap7/swerv_wrapper/config.mk index 2a22c2dde9..ce39ca601d 100644 --- a/flow/designs/asap7/swerv_wrapper/config.mk +++ b/flow/designs/asap7/swerv_wrapper/config.mk @@ -58,3 +58,5 @@ export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/swerv_wrapper/io.tcl export PLACE_DENSITY_LB_ADDON = 0.20 export ROUTING_LAYER_ADJUSTMENT = 0.2 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/gf180/ibex/config.mk b/flow/designs/gf180/ibex/config.mk index ed5fd3dd6e..f8b12b6bf4 100644 --- a/flow/designs/gf180/ibex/config.mk +++ b/flow/designs/gf180/ibex/config.mk @@ -14,3 +14,5 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint. export CORE_UTILIZATION = 45 export PLACE_DENSITY_LB_ADDON = 0.1 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/gf180/jpeg/config.mk b/flow/designs/gf180/jpeg/config.mk index c9d0d82196..8a26f534a9 100644 --- a/flow/designs/gf180/jpeg/config.mk +++ b/flow/designs/gf180/jpeg/config.mk @@ -9,3 +9,5 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint. export CORE_UTILIZATION = 45 export PLACE_DENSITY_LB_ADDON = 0.20 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/gf180/riscv32i/config.mk b/flow/designs/gf180/riscv32i/config.mk index 7d5e0451a4..b7a79c990b 100644 --- a/flow/designs/gf180/riscv32i/config.mk +++ b/flow/designs/gf180/riscv32i/config.mk @@ -11,3 +11,5 @@ export TNS_END_PERCENT = 100 export SKIP_GATE_CLONING = 1 export PLACE_PINS_ARGS = -min_distance 5 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/ihp-sg13g2/gcd/config.mk b/flow/designs/ihp-sg13g2/gcd/config.mk index 7fceb006ae..d582cd2bb6 100644 --- a/flow/designs/ihp-sg13g2/gcd/config.mk +++ b/flow/designs/ihp-sg13g2/gcd/config.mk @@ -9,3 +9,5 @@ export USE_FILL = 1 export PLACE_DENSITY ?= 0.88 export CORE_UTILIZATION = 20 export TNS_END_PERCENT = 100 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/ihp-sg13g2/ibex/config.mk b/flow/designs/ihp-sg13g2/ibex/config.mk index df2eb1c30a..ff11fd6c05 100644 --- a/flow/designs/ihp-sg13g2/ibex/config.mk +++ b/flow/designs/ihp-sg13g2/ibex/config.mk @@ -19,3 +19,5 @@ export CORE_UTILIZATION = 70 export PLACE_DENSITY_LB_ADDON = 0.2 export TNS_END_PERCENT = 100 export CTS_BUF_DISTANCE = 60 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/ihp-sg13g2/riscv32i/config.mk b/flow/designs/ihp-sg13g2/riscv32i/config.mk index be6c25a640..790da5d94d 100644 --- a/flow/designs/ihp-sg13g2/riscv32i/config.mk +++ b/flow/designs/ihp-sg13g2/riscv32i/config.mk @@ -11,3 +11,5 @@ export CORE_UTILIZATION = 35 export PLACE_DENSITY_LB_ADDON = 0.2 export TNS_END_PERCENT = 100 export CTS_BUF_DISTANCE = 60 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/ihp-sg13g2/spi/config.mk b/flow/designs/ihp-sg13g2/spi/config.mk index d791fbec23..797d5e3cd5 100644 --- a/flow/designs/ihp-sg13g2/spi/config.mk +++ b/flow/designs/ihp-sg13g2/spi/config.mk @@ -9,3 +9,5 @@ export USE_FILL = 1 export PLACE_DENSITY ?= 0.88 export CORE_UTILIZATION = 20 export TNS_END_PERCENT = 100 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/nangate45/aes/config.mk b/flow/designs/nangate45/aes/config.mk index 7008a46a9f..befacb6e6a 100644 --- a/flow/designs/nangate45/aes/config.mk +++ b/flow/designs/nangate45/aes/config.mk @@ -13,3 +13,5 @@ export REMOVE_CELLS_FOR_EQY = TAPCELL* # workaround for high congestion in post-grt repair export SKIP_INCREMENTAL_REPAIR = 1 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/nangate45/bp_multi_top/config.mk b/flow/designs/nangate45/bp_multi_top/config.mk index e05d37d2e5..0ba11145f9 100644 --- a/flow/designs/nangate45/bp_multi_top/config.mk +++ b/flow/designs/nangate45/bp_multi_top/config.mk @@ -32,3 +32,5 @@ export MACRO_PLACE_HALO = 10 10 export PLACE_DENSITY_LB_ADDON = 0.05 export SKIP_GATE_CLONING = 1 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/nangate45/dynamic_node/config.mk b/flow/designs/nangate45/dynamic_node/config.mk index 33365ed46c..4cfd2d59c7 100644 --- a/flow/designs/nangate45/dynamic_node/config.mk +++ b/flow/designs/nangate45/dynamic_node/config.mk @@ -12,3 +12,5 @@ export CORE_MARGIN = 5 export PLACE_DENSITY_LB_ADDON = 0.20 export TNS_END_PERCENT = 100 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/nangate45/swerv_wrapper/config.mk b/flow/designs/nangate45/swerv_wrapper/config.mk index 2ce3c88234..960972da5a 100644 --- a/flow/designs/nangate45/swerv_wrapper/config.mk +++ b/flow/designs/nangate45/swerv_wrapper/config.mk @@ -23,3 +23,5 @@ export PLACE_DENSITY_LB_ADDON = 0.08 export TNS_END_PERCENT = 100 export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/fastroute.tcl + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/sky130hd/aes/config.mk b/flow/designs/sky130hd/aes/config.mk index 85b0da73d6..769047576a 100644 --- a/flow/designs/sky130hd/aes/config.mk +++ b/flow/designs/sky130hd/aes/config.mk @@ -20,3 +20,5 @@ export REMOVE_ABC_BUFFERS = 1 export CTS_CLUSTER_SIZE = 20 export CTS_CLUSTER_DIAMETER = 50 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/sky130hd/microwatt/config.mk b/flow/designs/sky130hd/microwatt/config.mk index 5365b178e6..5fcd12816d 100644 --- a/flow/designs/sky130hd/microwatt/config.mk +++ b/flow/designs/sky130hd/microwatt/config.mk @@ -48,3 +48,5 @@ ifeq ($(SYNTH_MOCK_LARGE_MEMORIES),1) else export SYNTH_MEMORY_MAX_BITS ?= 42000 endif + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/sky130hd/riscv32i/config.mk b/flow/designs/sky130hd/riscv32i/config.mk index 523df1d1c1..68db818f0c 100644 --- a/flow/designs/sky130hd/riscv32i/config.mk +++ b/flow/designs/sky130hd/riscv32i/config.mk @@ -9,3 +9,5 @@ export CORE_UTILIZATION = 45 export PLACE_DENSITY_LB_ADDON = 0.2 export REMOVE_ABC_BUFFERS = 1 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/sky130hs/aes/config.mk b/flow/designs/sky130hs/aes/config.mk index 4bf78ac5ec..1dd1c6335e 100644 --- a/flow/designs/sky130hs/aes/config.mk +++ b/flow/designs/sky130hs/aes/config.mk @@ -17,3 +17,4 @@ export REMOVE_ABC_BUFFERS = 1 export CTS_CLUSTER_SIZE = 10 export CTS_CLUSTER_DIAMETER = 50 +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/sky130hs/jpeg/config.mk b/flow/designs/sky130hs/jpeg/config.mk index 3ae6575637..434f086632 100644 --- a/flow/designs/sky130hs/jpeg/config.mk +++ b/flow/designs/sky130hs/jpeg/config.mk @@ -16,3 +16,5 @@ export TNS_END_PERCENT = 100 export CTS_CLUSTER_SIZE = 30 export CTS_CLUSTER_DIAMETER = 50 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/sky130hs/riscv32i/config.mk b/flow/designs/sky130hs/riscv32i/config.mk index 1cf6ab1cf9..faa88123e5 100644 --- a/flow/designs/sky130hs/riscv32i/config.mk +++ b/flow/designs/sky130hs/riscv32i/config.mk @@ -14,3 +14,5 @@ export TNS_END_PERCENT = 100 export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/fastroute.tcl export REMOVE_ABC_BUFFERS = 1 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index 40ff7d3d22..8aa974510b 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -155,8 +155,13 @@ opt -purge # Technology mapping of adders if { [env_var_exists_and_non_empty ADDER_MAP_FILE] && - ![env_var_exists_and_non_empty SYNTH_WRAPPED_OPERATORS] && - ![env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] + ( + (![env_var_exists_and_non_empty SYNTH_WRAPPED_OPERATORS] && + ![env_var_exists_and_non_empty SWAP_ARITH_OPERATORS]) || + (([env_var_exists_and_non_empty SYNTH_WRAPPED_OPERATORS] || + [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS]) && + ![design_has_extracted_operators]) + ) } { # extract the full adders extract_fa diff --git a/flow/scripts/synth_wrap_operators.tcl b/flow/scripts/synth_wrap_operators.tcl index aa95e0429e..39a33f1dbe 100644 --- a/flow/scripts/synth_wrap_operators.tcl +++ b/flow/scripts/synth_wrap_operators.tcl @@ -112,6 +112,6 @@ setattr -mod -set abc9_box 1 A:arithmetic_operator techmap -map +/techmap.v -map +/choices/han-carlson.v proc design_has_extracted_operators {} { - set no_extracted [yosys tee -q -s result.string select -count a:implements_operator] - return [expr [lindex $no_extracted 0] > 0] + set no_extracted [yosys select -count a:implements_operator] + return [expr {[lindex $no_extracted 0] > 0}] } From 2c9b7697f347072be8048b9d9db6ad11434b4616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Thu, 8 Jan 2026 10:23:24 +0100 Subject: [PATCH 235/364] synth: wrapped operators fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit expand env vars correctly Signed-off-by: Øyvind Harboe --- flow/scripts/synth_wrap_operators.tcl | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/flow/scripts/synth_wrap_operators.tcl b/flow/scripts/synth_wrap_operators.tcl index 10302046ca..f8c4df91de 100644 --- a/flow/scripts/synth_wrap_operators.tcl +++ b/flow/scripts/synth_wrap_operators.tcl @@ -1,5 +1,5 @@ # Set arithmetic operator modules. Default is the first module in the list. -set deferred_cells { +set deferred_cells [list \ { \$alu ALU_{A_WIDTH}_{A_SIGNED}_{B_WIDTH}_{B_SIGNED}_{Y_WIDTH}{%unused} @@ -7,14 +7,13 @@ set deferred_cells { {KOGGE_STONE -map +/choices/kogge-stone.v} {SKLANSKY -map +/choices/sklansky.v} {BRENT_KUNG} - } - { - \$macc - MACC_{CONFIG}_{Y_WIDTH}{%unused} - {BOOTH -max_iter 1 -map $::env(SCRIPTS_DIR)/synth_wrap_operators-booth.v} - {BASE -map +/choices/han-carlson.v} - } -} + } \ + [list \ + \$macc \ + MACC_\{CONFIG\}_\{Y_WIDTH\}\{%unused\} \ + [list BOOTH -max_iter 1 -map $::env(SCRIPTS_DIR)/synth_wrap_operators-booth.v] \ + {BASE -map +/choices/han-carlson.v}]] + # Reorder the modules based on envar proc reorder_deferred_cells { deferred_cells_var index env_var } { From b69923d12e60b7eee889e514371cfcef2540659f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 7 Jan 2026 23:22:56 +0100 Subject: [PATCH 236/364] slang: add a SYNTH_BLACKBOXES syntax check, part II MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Non-existand verilog modules should be ignored to be compartible with Yosys. Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 2 +- flow/designs/asap7/uart/config.mk | 4 ++-- flow/scripts/variables.yaml | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 841c12d07e..34c1aa7758 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -241,7 +241,7 @@ configuration file. | SLEW_MARGIN| Specifies a slew margin when fixing max slew violations. This option allows you to overfix.| | | SWAP_ARITH_OPERATORS| Improve timing QoR by swapping ALU and MULT arithmetic operators.| | | SYNTH_ARGS| Optional synthesis variables for yosys.| | -| SYNTH_BLACKBOXES| List of cells treated as a black box by Yosys. With Bazel, this can be used to run synthesis in parallel for the large modules of the design.| | +| SYNTH_BLACKBOXES| List of cells treated as a black box by Yosys. With Bazel, this can be used to run synthesis in parallel for the large modules of the design. Non-existant modules are ignored silently, useful when listing modules statically, even if modules come and go dynamically.| | | SYNTH_CANONICALIZE_TCL| Specifies a Tcl script with commands to run as part of the synth canonicalize step.| | | SYNTH_GUT| Load design and remove all internal logic before doing synthesis. This is useful when creating a mock .lef abstract that has a smaller area than the amount of logic would allow. bazel-orfs uses this to mock SRAMs, for instance.| 0| | SYNTH_HDL_FRONTEND| Select an alternative language frontend to ingest the design. Available option is "slang". If the variable is empty, design is read with the Yosys read_verilog command.| | diff --git a/flow/designs/asap7/uart/config.mk b/flow/designs/asap7/uart/config.mk index 81a0ed0631..4ff340d770 100644 --- a/flow/designs/asap7/uart/config.mk +++ b/flow/designs/asap7/uart/config.mk @@ -5,8 +5,8 @@ export DESIGN_NAME = uart export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/*.v)) export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc -# Exercise syntax on command line for a dummy module and -# check that non-existant modules are silently ignored. +# Smoke test for the option; doesn't do anything as the named +# module does not exist export SYNTH_BLACKBOXES = dummy export PLACE_DENSITY = 0.70 diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index bc6a6188f1..bf889978f9 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -255,6 +255,9 @@ SYNTH_BLACKBOXES: description: > List of cells treated as a black box by Yosys. With Bazel, this can be used to run synthesis in parallel for the large modules of the design. + + Non-existant modules are ignored silently, useful when listing modules + statically, even if modules come and go dynamically. stages: - synth SYNTH_NETLIST_FILES: From 5fb699a01c936faa548234db587e55d2421fe108 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Tue, 6 Jan 2026 22:11:02 -0300 Subject: [PATCH 237/364] scripts: retire RTLMP_DEAD_SPACE variable Signed-off-by: Arthur Koucher --- docs/user/FlowVariables.md | 2 -- flow/scripts/macro_place_util.tcl | 1 - flow/scripts/variables.yaml | 7 ------- 3 files changed, 10 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 841c12d07e..8e50572879 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -200,7 +200,6 @@ configuration file. | RTLMP_AREA_WT| Weight for the area of the current floorplan.| 0.1| | RTLMP_ARGS| Overrides all other RTL macro placer arguments.| | | RTLMP_BOUNDARY_WT| Weight for the boundary or how far the hard macro clusters are from boundaries.| 50.0| -| RTLMP_DEAD_SPACE| Specifies the target dead space percentage, which influences the utilization of a cluster.| 0.05| | RTLMP_FENCE_LX| Defines the lower left X coordinate for the global fence bounding box in microns.| 0.0| | RTLMP_FENCE_LY| Defines the lower left Y coordinate for the global fence bounding box in microns.| 0.0| | RTLMP_FENCE_UX| Defines the upper right X coordinate for the global fence bounding box in microns.| 0.0| @@ -343,7 +342,6 @@ configuration file. - [RTLMP_AREA_WT](#RTLMP_AREA_WT) - [RTLMP_ARGS](#RTLMP_ARGS) - [RTLMP_BOUNDARY_WT](#RTLMP_BOUNDARY_WT) -- [RTLMP_DEAD_SPACE](#RTLMP_DEAD_SPACE) - [RTLMP_FENCE_LX](#RTLMP_FENCE_LX) - [RTLMP_FENCE_LY](#RTLMP_FENCE_LY) - [RTLMP_FENCE_UX](#RTLMP_FENCE_UX) diff --git a/flow/scripts/macro_place_util.tcl b/flow/scripts/macro_place_util.tcl index 9cd68575b9..c59e1adead 100644 --- a/flow/scripts/macro_place_util.tcl +++ b/flow/scripts/macro_place_util.tcl @@ -52,7 +52,6 @@ if { [find_macros] != "" } { append_env_var additional_rtlmp_args RTLMP_OUTLINE_WT -outline_weight 1 append_env_var additional_rtlmp_args RTLMP_BOUNDARY_WT -boundary_weight 1 append_env_var additional_rtlmp_args RTLMP_NOTCH_WT -notch_weight 1 - append_env_var additional_rtlmp_args RTLMP_DEAD_SPACE -target_dead_space 1 append_env_var additional_rtlmp_args RTLMP_RPT_DIR -report_directory 1 append_env_var additional_rtlmp_args RTLMP_FENCE_LX -fence_lx 1 append_env_var additional_rtlmp_args RTLMP_FENCE_LY -fence_ly 1 diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index bc6a6188f1..876154bdf3 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1077,13 +1077,6 @@ RTLMP_NOTCH_WT: default: 10.0 stages: - floorplan -RTLMP_DEAD_SPACE: - description: > - Specifies the target dead space percentage, which influences the - utilization of a cluster. - default: 0.05 - stages: - - floorplan RTLMP_RPT_DIR: description: > Path to the directory where reports are saved. From 5db8b407f17a23ab9309251ac08b804943b97e56 Mon Sep 17 00:00:00 2001 From: noam cohen Date: Thu, 8 Jan 2026 16:27:23 +0100 Subject: [PATCH 238/364] implicit nets fix + correct error message on multi drivers Signed-off-by: Noam Cohen --- tools/kepler-formal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/kepler-formal b/tools/kepler-formal index f5562eb1ce..c1edd4a196 160000 --- a/tools/kepler-formal +++ b/tools/kepler-formal @@ -1 +1 @@ -Subproject commit f5562eb1ce8252fc787a226ac5d23f94f1e8da33 +Subproject commit c1edd4a196536385255f4c882e4001d534d4638b From c3d394cd3340a17938e570fc07b203a772113a29 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Thu, 8 Jan 2026 16:46:44 +0000 Subject: [PATCH 239/364] enabled operator swap for aes-block Signed-off-by: Cho Moon --- flow/designs/asap7/aes-block/block.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flow/designs/asap7/aes-block/block.mk b/flow/designs/asap7/aes-block/block.mk index 7bc1fd2acc..82dbd8879c 100644 --- a/flow/designs/asap7/aes-block/block.mk +++ b/flow/designs/asap7/aes-block/block.mk @@ -15,3 +15,5 @@ export MAX_ROUTING_LAYER ?= M5 export PLACE_PINS_ARGS = -annealing export PDN_TCL = $(PLATFORM_DIR)/openRoad/pdn/BLOCK_grid_strategy.tcl + +export SWAP_ARITH_OPERATORS = 1 From 2871a41faa486e2ea4095a43abd780349b6932e8 Mon Sep 17 00:00:00 2001 From: Nish Date: Thu, 8 Jan 2026 14:08:57 +0530 Subject: [PATCH 240/364] Docs: improve installation clarity for new users Signed-off-by: Nish --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dcb8be5791..b1bf55c543 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,12 @@ timeline ## Tool Installation -There are different ways to install and develop OpenROAD and ORFS, which is the best fit depends use-case, experience and personal taste. +There are multiple ways to install and develop OpenROAD and ORFS. However, the best option depends on your use case, experience level, and personal preference. + + + > **Recommendation for new users:** + > If you are new to OpenROAD-flow-scripts, we recommend starting with the Docker-based installation to avoid dependency issues. + ### Use Bazel, avoid installing anything at all and adapt the flow to your needs in your own repository From aeb726bdf8c35ba80244ca882a738a1707e4de95 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Thu, 8 Jan 2026 22:22:21 +0000 Subject: [PATCH 241/364] enabled 21 designs for operator swap Signed-off-by: Cho Moon --- flow/designs/asap7/aes-block/block.mk | 1 - flow/designs/asap7/aes-block/config.mk | 2 -- flow/designs/asap7/ibex/rules-base.json | 18 +++++------ flow/designs/asap7/mock-alu/rules-base.json | 14 ++++----- flow/designs/asap7/riscv32i/rules-base.json | 16 +++++----- .../asap7/swerv_wrapper/rules-base.json | 12 ++++---- flow/designs/gf180/ibex/rules-base.json | 28 ++++++++--------- flow/designs/gf180/jpeg/rules-base.json | 10 +++---- flow/designs/gf180/riscv32i/rules-base.json | 12 ++++---- flow/designs/ihp-sg13g2/gcd/rules-base.json | 12 ++++---- .../ihp-sg13g2/riscv32i/rules-base.json | 12 ++++---- flow/designs/ihp-sg13g2/spi/rules-base.json | 12 ++++---- flow/designs/nangate45/aes/rules-base.json | 20 ++++++------- .../nangate45/bp_multi_top/rules-base.json | 30 +++++++++---------- .../nangate45/dynamic_node/rules-base.json | 28 ++++++++--------- .../nangate45/swerv_wrapper/rules-base.json | 28 ++++++++--------- flow/designs/sky130hd/aes/rules-base.json | 12 ++++---- flow/designs/sky130hd/ibex/rules-base.json | 10 +++---- .../sky130hd/microwatt/rules-base.json | 24 +++++++-------- .../designs/sky130hd/riscv32i/rules-base.json | 16 +++++----- flow/designs/sky130hs/aes/rules-base.json | 20 ++++++------- flow/designs/sky130hs/jpeg/rules-base.json | 16 +++++----- .../designs/sky130hs/riscv32i/rules-base.json | 14 ++++----- flow/scripts/synth_wrap_operators.tcl | 16 +++++----- tools/OpenROAD | 2 +- 25 files changed, 190 insertions(+), 195 deletions(-) diff --git a/flow/designs/asap7/aes-block/block.mk b/flow/designs/asap7/aes-block/block.mk index 82dbd8879c..841f0405bd 100644 --- a/flow/designs/asap7/aes-block/block.mk +++ b/flow/designs/asap7/aes-block/block.mk @@ -16,4 +16,3 @@ export PLACE_PINS_ARGS = -annealing export PDN_TCL = $(PLATFORM_DIR)/openRoad/pdn/BLOCK_grid_strategy.tcl -export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/asap7/aes-block/config.mk b/flow/designs/asap7/aes-block/config.mk index c0be7d1b32..60a0c336b1 100644 --- a/flow/designs/asap7/aes-block/config.mk +++ b/flow/designs/asap7/aes-block/config.mk @@ -30,5 +30,3 @@ export PWR_NETS_VOLTAGES = export MACRO_PLACE_HALO ?= 3 3 export ROUTING_LAYER_ADJUSTMENT = 0.3 - -export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index 4ff94808b1..c66bb3540c 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 2612.69, + "value": 2440.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 2781, + "value": 2745, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -207.0, + "value": -139.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -99200.0, + "value": -8930.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -211.0, + "value": -151.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -117000.0, + "value": -35400.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -177.0, + "value": -126.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -77100.0, + "value": -22600.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 2867, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/mock-alu/rules-base.json b/flow/designs/asap7/mock-alu/rules-base.json index 105ccc4630..b2a7eeaa9f 100644 --- a/flow/designs/asap7/mock-alu/rules-base.json +++ b/flow/designs/asap7/mock-alu/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 1665.04, + "value": 1640.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 1816, + "value": 1808, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -16400.0, + "value": -17700.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -20600.0, + "value": -20200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -289.0, + "value": -271.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -18200.0, + "value": -17200.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 1858, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index 299b732968..8c9b8ad189 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 2908.684535, + "value": 2830.0, "compare": "<=" }, "constraints__clocks__count": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -82.9, + "value": -50.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -575.0, + "value": -200.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -128.0, + "value": -53.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1070.0, + "value": -205.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -120.0, + "value": -50.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -410.0, + "value": -200.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 3070, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 7a09b178e8..4e360e835f 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 53459.06, + "value": 52700.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 55869, + "value": 55836, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -84,19 +84,19 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -128000.0, + "value": -61800.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -374.0, + "value": -356.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -77000.0, + "value": -661000.0, "compare": ">=" }, "finish__design__instance__area": { "value": 56249, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index a543680476..1d4de5942e 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 717000.0, + "value": 673000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 748819, + "value": 735895, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 16536, + "value": 16149, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 1438, + "value": 1404, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1438, + "value": 1404, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.786, + "value": -0.531, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -106.0, + "value": -2.14, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.854, + "value": -0.725, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -193.0, + "value": -4.63, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1428792, + "value": 1369456, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.803, + "value": -0.679, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -151.0, + "value": -2.46, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 799557, + "value": 773257, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index 5156fd364a..e1886d6f75 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 53612, + "value": 51361, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 4662, + "value": 4466, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 4662, + "value": 4466, "compare": "<=" }, "cts__timing__setup__ws": { @@ -72,7 +72,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { @@ -99,4 +99,4 @@ "value": 2243765, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf180/riscv32i/rules-base.json b/flow/designs/gf180/riscv32i/rules-base.json index 56b110f7c7..d21b696a04 100644 --- a/flow/designs/gf180/riscv32i/rules-base.json +++ b/flow/designs/gf180/riscv32i/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 355874.87, + "value": 330000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 434023, + "value": 380929, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 9581, + "value": 8384, "compare": "<=" }, "detailedplace__design__violations": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 809768, + "value": 657404, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 453842, + "value": 392955, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/gcd/rules-base.json b/flow/designs/ihp-sg13g2/gcd/rules-base.json index 4a1a8a1d55..62c1c0a8e9 100644 --- a/flow/designs/ihp-sg13g2/gcd/rules-base.json +++ b/flow/designs/ihp-sg13g2/gcd/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 6828.9632, + "value": 5260.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 7380, + "value": 6197, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 614, + "value": 508, "compare": "<=" }, "detailedplace__design__violations": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 15132, + "value": 11185, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 7693, + "value": 6473, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json index 903bf10519..5edbe27f48 100644 --- a/flow/designs/ihp-sg13g2/riscv32i/rules-base.json +++ b/flow/designs/ihp-sg13g2/riscv32i/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 151466.57, + "value": 137000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 156945, + "value": 155238, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 10816, + "value": 10428, "compare": "<=" }, "detailedplace__design__violations": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 506565, + "value": 470173, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 168818, + "value": 161066, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/spi/rules-base.json b/flow/designs/ihp-sg13g2/spi/rules-base.json index 712fbaff33..c7d454499b 100644 --- a/flow/designs/ihp-sg13g2/spi/rules-base.json +++ b/flow/designs/ihp-sg13g2/spi/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 2232.28, + "value": 2180.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 2662, + "value": 2635, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 179, + "value": 178, "compare": "<=" }, "detailedplace__design__violations": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 3686, + "value": 3632, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 2767, + "value": 2758, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/aes/rules-base.json b/flow/designs/nangate45/aes/rules-base.json index 7cbaff07b8..215e67dff2 100644 --- a/flow/designs/nangate45/aes/rules-base.json +++ b/flow/designs/nangate45/aes/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 21600.0, + "value": 19700.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 23666, + "value": 23359, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0868, + "value": -0.041, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.347, + "value": -0.164, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.108, + "value": -0.0545, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.85, + "value": -0.23, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.071, + "value": -0.0473, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.625, + "value": -0.182, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 23999, + "value": 23609, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/bp_multi_top/rules-base.json b/flow/designs/nangate45/bp_multi_top/rules-base.json index f8e0049bad..725bc4f5f6 100644 --- a/flow/designs/nangate45/bp_multi_top/rules-base.json +++ b/flow/designs/nangate45/bp_multi_top/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 586679.15, + "value": 570000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 587567, + "value": 580304, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 143977, + "value": 110096, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 12520, + "value": 9574, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 12520, + "value": 9574, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -4.85, + "value": -0.24, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -5.28, + "value": -0.96, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -4.94, + "value": -0.24, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -5.4, + "value": -0.96, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4844335, + "value": 3751068, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -4.68, + "value": -0.24, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5.36, + "value": -0.96, "compare": ">=" }, "finish__timing__hold__ws": { @@ -92,11 +92,11 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -1.02, + "value": -0.96, "compare": ">=" }, "finish__design__instance__area": { - "value": 595583, + "value": 587157, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 8f16d870a1..3680551fc7 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 25515.12, + "value": 24000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 25745, + "value": 25251, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 12798, + "value": 12088, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 1113, + "value": 1051, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1113, + "value": 1051, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.468, + "value": -0.423, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -6.87, + "value": -1.51, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.453, + "value": -0.435, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -5.15, + "value": -1.63, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 229747, + "value": 219551, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.445, + "value": -0.408, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.81, + "value": -1.45, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 27349, + "value": 26358, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index 7c0bce72fc..7420e07d3c 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 724516.2, + "value": 712000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 730176, + "value": 729734, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 112854, + "value": 110432, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 9813, + "value": 9603, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 9813, + "value": 9603, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.248, + "value": -0.104, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -147.0, + "value": -0.411, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,15 +44,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 109, + "value": 108, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.299, + "value": -0.1, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -136.0, + "value": -0.4, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -76,15 +76,15 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 109, + "value": 108, "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.296, + "value": -0.225, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -162.0, + "value": -17.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 735619, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hd/aes/rules-base.json b/flow/designs/sky130hd/aes/rules-base.json index 786ef3b939..6ea85566f3 100644 --- a/flow/designs/sky130hd/aes/rules-base.json +++ b/flow/designs/sky130hd/aes/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 99830.94, + "value": 87900.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 136403, + "value": 130193, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 23636, + "value": 22298, "compare": "<=" }, "detailedplace__design__violations": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 897106, + "value": 802994, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 141950, + "value": 135288, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index f0dcf7eb73..d9b52fb1c3 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -3.26, + "value": -2.89, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -14.8, + "value": -6.43, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.762, + "value": -0.741, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3.83, + "value": -2.83, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 183819, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 88ef21ab3b..c1578b86b1 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 732007.18, + "value": 689000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -419.0, + "value": -335.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,15 +44,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 2600, + "value": 2681, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -3.25, + "value": -3.02, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -558.0, + "value": -389.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -72,31 +72,31 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1847, + "value": 1668, "compare": "<=" }, "finish__timing__setup__ws": { - "value": -3.35, + "value": -2.09, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -547.0, + "value": -181.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.866, + "value": -1.68, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -8.7, + "value": -23.1, "compare": ">=" }, "finish__design__instance__area": { "value": 5582894, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index f0a4a2672e..bc784630ed 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 70778.51, + "value": 70000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -1.59, + "value": -0.923, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -69.3, + "value": -11.6, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.76, + "value": -0.937, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -98.6, + "value": -45.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -1.58, + "value": -0.765, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -62.5, + "value": -8.38, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 83703, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index 46a8e44ec4..d3e6d07315 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 132000.0, + "value": 118000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 169958, + "value": 162274, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 19930, + "value": 19666, "compare": "<=" }, "detailedplace__design__violations": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.3, + "value": -0.244, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -14.1, + "value": -2.47, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 722796, + "value": 710228, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.351, + "value": -0.161, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4.48, + "value": -0.632, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 184400, + "value": 178877, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index 2f8d53e69f..82075cccc2 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 63375, + "value": 56403, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 5511, + "value": 4905, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 5511, + "value": 4905, "compare": "<=" }, "cts__timing__setup__ws": { @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 140, + "value": 100, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1619030, + "value": 1579986, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -72,11 +72,11 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 1, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 104, + "value": 103, "compare": "<=" }, "finish__timing__setup__ws": { @@ -99,4 +99,4 @@ "value": 724792, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index 0f8b07cebb..3605a7cd10 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.957, + "value": -0.254, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -369.0, + "value": -0.976, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -1.3, + "value": -0.504, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -95.8, + "value": -10.1, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -1.09, + "value": -0.281, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -37.2, + "value": -1.07, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 112385, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/scripts/synth_wrap_operators.tcl b/flow/scripts/synth_wrap_operators.tcl index 3d15d9aab7..4f0b15e5d7 100644 --- a/flow/scripts/synth_wrap_operators.tcl +++ b/flow/scripts/synth_wrap_operators.tcl @@ -1,5 +1,5 @@ # Set arithmetic operator modules. Default is the first module in the list. -set deferred_cells { +set deferred_cells [list \ { \$alu ALU_{A_WIDTH}_{A_SIGNED}_{B_WIDTH}_{B_SIGNED}_{Y_WIDTH}{%unused} @@ -7,14 +7,12 @@ set deferred_cells { {KOGGE_STONE -map +/choices/kogge-stone.v} {SKLANSKY -map +/choices/sklansky.v} {BRENT_KUNG} - } - { - \$macc - MACC_{CONFIG}_{Y_WIDTH}{%unused} - {BOOTH -max_iter 1 -map $::env(SCRIPTS_DIR)/synth_wrap_operators-booth.v} - {BASE -map +/choices/han-carlson.v} - } -} + } \ + [list \ + \$macc \ + MACC_\{CONFIG\}_\{Y_WIDTH\}\{%unused\} \ + [list BOOTH -max_iter 1 -map $::env(SCRIPTS_DIR)/synth_wrap_operators-booth.v] \ + {BASE -map +/choices/han-carlson.v}]] # Reorder the modules based on envar proc reorder_deferred_cells { deferred_cells_var index env_var } { diff --git a/tools/OpenROAD b/tools/OpenROAD index b2a2369ddb..263b7a9261 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit b2a2369ddb81d5986b582eb70ac28e3c53ff5e26 +Subproject commit 263b7a9261e92eaa0000bcf33f948c36e5160d31 From 2efc2397491eda5e12f89ee331d2b1a017e59ae7 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Thu, 8 Jan 2026 22:25:11 +0000 Subject: [PATCH 242/364] reverted fixed die area change to asap7/cva6 Signed-off-by: Cho Moon --- flow/designs/asap7/cva6/config.mk | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/flow/designs/asap7/cva6/config.mk b/flow/designs/asap7/cva6/config.mk index 09d5d960a5..85b00dc9be 100644 --- a/flow/designs/asap7/cva6/config.mk +++ b/flow/designs/asap7/cva6/config.mk @@ -88,10 +88,8 @@ export ADDITIONAL_LIBS = $(PLATFORM_DIR)/lib/NLDM/fakeram7_64x256.lib \ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constraint.sdc -export DIE_AREA = 0.000 0.000 158.835 158.835 -export CORE_AREA = 2.052 2.160 156.816 156.600 -#export CORE_UTILIZATION = 70 -#export CORE_MARGIN = 2 +export CORE_UTILIZATION = 70 +export CORE_MARGIN = 2 export MACRO_PLACE_HALO = 3 3 export PLACE_DENSITY = 0.69 From b73205b23b6ca5f0f8bbde594aa7bb91472633e0 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Thu, 8 Jan 2026 22:43:08 +0000 Subject: [PATCH 243/364] updated sky130hd/ibex results Signed-off-by: Cho Moon --- flow/designs/sky130hd/ibex/config.mk | 2 ++ flow/designs/sky130hd/ibex/rules-base.json | 18 +++++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/flow/designs/sky130hd/ibex/config.mk b/flow/designs/sky130hd/ibex/config.mk index 5f03b5aae7..251c5b2860 100644 --- a/flow/designs/sky130hd/ibex/config.mk +++ b/flow/designs/sky130hd/ibex/config.mk @@ -25,3 +25,5 @@ export REMOVE_ABC_BUFFERS = 1 export CTS_CLUSTER_SIZE = 20 export CTS_CLUSTER_DIAMETER = 50 + +export SWAP_ARITH_OPERATORS = 1 diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index d9b52fb1c3..59e4306ae2 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 153658.0, + "value": 148000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 169780, + "value": 169126, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.689, + "value": -0.533, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2.89, + "value": -2.05, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.926, + "value": -0.783, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -6.43, + "value": -3.63, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.741, + "value": -0.631, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.83, + "value": -2.13, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 183819, + "value": 180721, "compare": "<=" } } \ No newline at end of file From ef47531efdae5ab1a07ae3cb71cc878f4e93b28f Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Thu, 8 Jan 2026 22:56:16 +0000 Subject: [PATCH 244/364] PDK 0.2a metrics updates Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/cva6/rules-base.json | 97 ++------------- .../rapidus2hp/cva6/rules-verific.json | 109 +++-------------- .../designs/rapidus2hp/ethmac/rules-base.json | 90 -------------- .../rapidus2hp/ethmac/rules-verific.json | 8 +- flow/designs/rapidus2hp/gcd/rules-base.json | 80 ------------- .../designs/rapidus2hp/gcd/rules-verific.json | 97 ++------------- .../hercules_idecode/rules-base.json | 91 +------------- .../hercules_idecode/rules-verific.json | 112 +++--------------- .../hercules_is_int/rules-base.json | 78 +----------- .../hercules_is_int/rules-verific.json | 98 ++------------- flow/designs/rapidus2hp/ibex/rules-base.json | 89 ++------------ .../rapidus2hp/ibex/rules-verific.json | 96 ++------------- flow/designs/rapidus2hp/jpeg/rules-base.json | 94 ++------------- .../rapidus2hp/jpeg/rules-verific.json | 89 ++------------ 14 files changed, 124 insertions(+), 1104 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index 37ee67a560..74cec4c882 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -1,79 +1,4 @@ { - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 12, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 68, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 17100.0, "compare": "<=" @@ -103,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -56.2, + "value": -32.6, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -225.0, + "value": -184.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -115,7 +40,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -225.0, + "value": -596.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -123,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -56.2, + "value": -109.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -225.0, + "value": -126000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -56.2, + "value": -39.2, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -225.0, + "value": -184.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -56.2, + "value": -109.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -225.0, + "value": -126000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -56.2, + "value": -39.2, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -225.0, + "value": -184.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index f89a59206d..3ba2595859 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -1,81 +1,6 @@ { - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 38, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 28, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { - "value": 17300.0, + "value": 17200.0, "compare": "<=" }, "constraints__clocks__count": { @@ -83,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 14353, + "value": 14341, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 178164, + "value": 174240, "compare": "<=" }, "detailedplace__design__violations": { @@ -95,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 15492, + "value": 15151, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 15492, + "value": 15151, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -56.2, + "value": -32.6, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -225.0, + "value": -184.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -115,43 +40,43 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -225.0, + "value": -596.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 150, + "value": 149, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -56.2, + "value": -109.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -225.0, + "value": -126000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -57.1, + "value": -39.2, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -227.0, + "value": -184.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -56.2, + "value": -109.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -225.0, + "value": -126000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -57.1, + "value": -39.2, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -227.0, + "value": -184.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 17461a357b..7ee7c3cb8f 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 3290.0, "compare": "<=" diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json index 4bf77d125b..cce1eb877a 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-verific.json +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -34.4, + "value": -42.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -612.0, + "value": -747.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1610.0, + "value": -1530.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1610.0, + "value": -1530.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index a05a33ab02..6b7afd5858 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -1,84 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 146, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 20.89, "compare": "<=" diff --git a/flow/designs/rapidus2hp/gcd/rules-verific.json b/flow/designs/rapidus2hp/gcd/rules-verific.json index fc2cbd775b..a6afb2c3d9 100644 --- a/flow/designs/rapidus2hp/gcd/rules-verific.json +++ b/flow/designs/rapidus2hp/gcd/rules-verific.json @@ -1,79 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 20, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 22.2, "compare": "<=" @@ -83,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 33, + "value": 32, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 764, + "value": 750, "compare": "<=" }, "detailedplace__design__violations": { @@ -95,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 66, + "value": 65, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 66, + "value": 65, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -31.3, + "value": -26.5, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -392.0, + "value": -345.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -123,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -52.5, + "value": -38.9, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -851.0, + "value": -804.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -139,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -52.5, + "value": -38.9, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -851.0, + "value": -804.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -155,7 +80,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 39, + "value": 36, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index d815c303f5..18fbdfb549 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -1,89 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8732.47, "compare": "<=" @@ -117,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -181000.0, + "value": -145000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -133,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -115.0, + "value": -142.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -149,7 +64,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -115.0, + "value": -142.0, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json index 950f75e0de..c7a86c70b3 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json @@ -1,84 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 8680.0, "compare": "<=" @@ -88,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 12413, + "value": 11625, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 318756, + "value": 298408, "compare": "<=" }, "detailedplace__design__violations": { @@ -100,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 27718, + "value": 25948, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 27718, + "value": 25948, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -240.0, + "value": -81.3, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1050000.0, + "value": -295000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -124,43 +44,43 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 276, + "value": 259, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -327.0, + "value": -152.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -762000.0, + "value": -484000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -12.7, + "value": -12.5, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -50.2, + "value": -50.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -327.0, + "value": -152.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -762000.0, + "value": -484000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -12.7, + "value": -12.5, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -50.2, + "value": -50.0, "compare": ">=" }, "finish__design__instance__area": { - "value": 12694, + "value": 11884, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 5941332af4..ffd2b1c4aa 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -1,74 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 13, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 26600.0, "compare": "<=" @@ -118,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -372.0, + "value": -298.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1560000.0, + "value": -1290000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -134,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -372.0, + "value": -298.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1560000.0, + "value": -1290000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index e8765eb018..4a2d229f3d 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -1,84 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:GUI-0076": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 13, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 26600.0, "compare": "<=" @@ -88,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 31872, + "value": 31868, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 659668, + "value": 659181, "compare": "<=" }, "detailedplace__design__violations": { @@ -100,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 57362, + "value": 57320, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 57362, + "value": 57320, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -86.9, + "value": -62.1, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -316000.0, + "value": -307000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -124,11 +44,11 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 580, + "value": 579, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -271.0, + "value": -308.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -144,7 +64,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -271.0, + "value": -308.0, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index ffae0d4394..5d5d787534 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -1,69 +1,4 @@ { - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1020.0, "compare": "<=" @@ -93,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -29.5, + "value": -24.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -118.0, + "value": -96.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -29.5, + "value": -24.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -118.0, + "value": -96.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -113,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -59.8, + "value": -54.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -708.0, + "value": -10200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -29.5, + "value": -24.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -118.0, + "value": -96.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -59.8, + "value": -54.4, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -708.0, + "value": -10200.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -29.5, + "value": -24.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -118.0, + "value": -96.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json index cfa597387d..13078ef86d 100644 --- a/flow/designs/rapidus2hp/ibex/rules-verific.json +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -1,74 +1,4 @@ { - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1050.0, "compare": "<=" @@ -82,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 20608, + "value": 20402, "compare": "<=" }, "detailedplace__design__violations": { @@ -90,27 +20,27 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 1792, + "value": 1774, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1792, + "value": 1774, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -29.5, + "value": -24.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -118.0, + "value": -96.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -29.5, + "value": -24.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -118.0, + "value": -96.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -122,15 +52,15 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -591.0, + "value": -10200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -29.5, + "value": -24.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -118.0, + "value": -96.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -138,15 +68,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -591.0, + "value": -10200.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -29.5, + "value": -24.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -118.0, + "value": -96.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-base.json b/flow/designs/rapidus2hp/jpeg/rules-base.json index a7726eab45..c6896f08a7 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-base.json +++ b/flow/designs/rapidus2hp/jpeg/rules-base.json @@ -1,74 +1,4 @@ { - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 25, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 3197.7067, "compare": "<=" @@ -98,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -21.2, + "value": -13.2, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -85.0, + "value": -53.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -21.2, + "value": -13.2, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -85.0, + "value": -53.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -118,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -21.2, + "value": -47.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -85.0, + "value": -8370.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -21.2, + "value": -13.2, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -85.0, + "value": -53.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -21.2, + "value": -47.4, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -85.0, + "value": -8370.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -21.2, + "value": -13.2, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -85.0, + "value": -53.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-verific.json b/flow/designs/rapidus2hp/jpeg/rules-verific.json index 81d98f12a6..a249c0f0b3 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-verific.json +++ b/flow/designs/rapidus2hp/jpeg/rules-verific.json @@ -1,69 +1,4 @@ { - "cts__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0240": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0263": { - "value": 7, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0349": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0246": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-0122": { - "value": 27, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 3300.0, "compare": "<=" @@ -93,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -21.2, + "value": -13.2, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -85.0, + "value": -53.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -21.2, + "value": -13.2, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -85.0, + "value": -53.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -113,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -21.2, + "value": -75.1, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -85.0, + "value": -6740.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -21.2, + "value": -13.2, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -85.0, + "value": -53.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -21.2, + "value": -75.1, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -85.0, + "value": -6740.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -21.2, + "value": -13.2, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -85.0, + "value": -53.0, "compare": ">=" }, "finish__design__instance__area": { From 0d71df53a6327a8fb9e756ae6b4ea8582bf9270c Mon Sep 17 00:00:00 2001 From: Nish Date: Fri, 9 Jan 2026 08:10:59 +0530 Subject: [PATCH 245/364] Docs: improve installation clarity for new users Signed-off-by: Nish --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b1bf55c543..177c240986 100644 --- a/README.md +++ b/README.md @@ -49,8 +49,13 @@ timeline There are multiple ways to install and develop OpenROAD and ORFS. However, the best option depends on your use case, experience level, and personal preference. - > **Recommendation for new users:** - > If you are new to OpenROAD-flow-scripts, we recommend starting with the Docker-based installation to avoid dependency issues. +> **Recommendation for new users:** +> If you are new to OpenROAD-flow-scripts, Docker can be a reliable way to get started since it avoids most dependency and environment issues. +> +> On supported platforms, using the pre-built binaries can be an even simpler option as it avoids building from source. +> +> Alternatively, the Bazel-based flow also avoids manual dependency installation (aside from installing Bazelisk itself), similar to how Docker requires installing Docker. + ### Use Bazel, avoid installing anything at all and adapt the flow to your needs in your own repository From 109db4d4896707877c5ae2ae6027058e035377a6 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Fri, 9 Jan 2026 22:33:10 +0000 Subject: [PATCH 246/364] fixed Tcl lint errors Signed-off-by: Cho Moon --- flow/scripts/synth.tcl | 4 ++-- flow/scripts/synth_wrap_operators.tcl | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index 8aa974510b..0af28bd055 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -157,9 +157,9 @@ if { [env_var_exists_and_non_empty ADDER_MAP_FILE] && ( (![env_var_exists_and_non_empty SYNTH_WRAPPED_OPERATORS] && - ![env_var_exists_and_non_empty SWAP_ARITH_OPERATORS]) || + ![env_var_exists_and_non_empty SWAP_ARITH_OPERATORS]) || (([env_var_exists_and_non_empty SYNTH_WRAPPED_OPERATORS] || - [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS]) && + [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS]) && ![design_has_extracted_operators]) ) } { diff --git a/flow/scripts/synth_wrap_operators.tcl b/flow/scripts/synth_wrap_operators.tcl index 4f0b15e5d7..bd66ae3348 100644 --- a/flow/scripts/synth_wrap_operators.tcl +++ b/flow/scripts/synth_wrap_operators.tcl @@ -73,7 +73,7 @@ foreach info $deferred_cells { foreach modname [tee -q -s result.string select -list-mod A:arithmetic_operator A:copy_pending %i] { # tclint-disable-line line-length setattr -mod -unset copy_pending $modname set base [rtlil::get_attr -string -mod $modname implements_operator] - setattr -set implements_operator \"$base\" t:$modname + setattr -set implements_operator \"$base\" t:$modname # iterate over non-default architectures foreach arch [lrange $info 3 end] { @@ -109,7 +109,7 @@ setattr -mod -set abc9_script {"+&dch;&nf -R 5;"} A:arithmetic_operator setattr -mod -set abc9_box 1 A:arithmetic_operator techmap -map +/techmap.v -map +/choices/han-carlson.v -proc design_has_extracted_operators {} { +proc design_has_extracted_operators { } { set no_extracted [yosys select -count a:implements_operator] - return [expr {[lindex $no_extracted 0] > 0}] + return [expr { [lindex $no_extracted 0] > 0 }] } From f199affa233a64cb84751d404bd892e40e07ee1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 7 Jan 2026 22:00:10 +0100 Subject: [PATCH 247/364] synth: fix operator swapping check that hierarchical is enabled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Separation of concerns: require OPENROAD_HIERARCHICAL to be set, but don't set it implicitly. This fixes suprising potential w.r.t. e.g SYNTH_ variables not being set outside of the synthesis stage Signed-off-by: Øyvind Harboe --- flow/scripts/util.tcl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/flow/scripts/util.tcl b/flow/scripts/util.tcl index c06e942d6d..04b4d3727e 100644 --- a/flow/scripts/util.tcl +++ b/flow/scripts/util.tcl @@ -196,10 +196,13 @@ proc source_env_var_if_exists { env_var } { # will be default and this code will be deleted. proc hier_options { } { if { - [env_var_exists_and_non_empty SYNTH_WRAPPED_OPERATORS] || - [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] || - $::env(OPENROAD_HIERARCHICAL) + ([env_var_exists_and_non_empty SYNTH_WRAPPED_OPERATORS] || + [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS]) && + !$::env(OPENROAD_HIERARCHICAL) } { + error "SYNTH_WRAPPED_OPERATORS or SWAP_ARITH_OPERATORS require OPENROAD_HIERARCHICAL to be set." + } + if { $::env(OPENROAD_HIERARCHICAL) } { return "-hier" } else { return "" From 9ea2dad51aaabb017027f10486f020208425a9f7 Mon Sep 17 00:00:00 2001 From: Nish Date: Sat, 10 Jan 2026 09:31:29 +0530 Subject: [PATCH 248/364] fix: quote variables and improve robustness of flow.sh Signed-off-by: Nish --- flow/scripts/flow.sh | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/flow/scripts/flow.sh b/flow/scripts/flow.sh index 96ef5615e0..018031ae2c 100755 --- a/flow/scripts/flow.sh +++ b/flow/scripts/flow.sh @@ -1,11 +1,21 @@ #!/usr/bin/env bash -set -u -eo pipefail -mkdir -p $RESULTS_DIR $LOG_DIR $REPORTS_DIR $OBJECTS_DIR -echo Running $2.tcl, stage $1 -(trap 'mv $LOG_DIR/$1.tmp.log $LOG_DIR/$1.log' EXIT; \ - $OPENROAD_EXE $OPENROAD_ARGS -exit $SCRIPTS_DIR/noop.tcl 2>&1 >$LOG_DIR/$1.tmp.log; \ - eval "$TIME_CMD $OPENROAD_CMD -no_splash $SCRIPTS_DIR/$2.tcl -metrics $LOG_DIR/$1.json" 2>&1 | \ - tee -a $(realpath $LOG_DIR/$1.tmp.log)) +set -euo pipefail + +mkdir -p "$RESULTS_DIR" "$LOG_DIR" "$REPORTS_DIR" "$OBJECTS_DIR" + +echo "Running $2.tcl, stage $1" + +( + trap 'mv "$LOG_DIR/$1.tmp.log" "$LOG_DIR/$1.log"' EXIT + + "$OPENROAD_EXE" $OPENROAD_ARGS -exit "$SCRIPTS_DIR/noop.tcl" \ + >"$LOG_DIR/$1.tmp.log" 2>&1 + + eval "$TIME_CMD $OPENROAD_CMD -no_splash \"$SCRIPTS_DIR/$2.tcl\" -metrics \"$LOG_DIR/$1.json\"" \ + 2>&1 | tee -a "$(realpath "$LOG_DIR/$1.tmp.log")" +) + # Log the hash for this step. The summary "make elapsed" in "make finish", # will not have all the .odb files for the bazel-orfs use-case. -$PYTHON_EXE $UTILS_DIR/genElapsedTime.py --match $1 -d $LOG_DIR | tee -a $(realpath $LOG_DIR/$1.log) +"$PYTHON_EXE" "$UTILS_DIR/genElapsedTime.py" --match "$1" -d "$LOG_DIR" \ + | tee -a "$(realpath "$LOG_DIR/$1.log")" From 278dbe490b8cfdc0eef427ebba293857ecbed943 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sun, 11 Jan 2026 04:44:01 +0000 Subject: [PATCH 249/364] Get revert of LTO in OR submodule Signed-off-by: Matt Liberty --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 263b7a9261..bbf699543a 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 263b7a9261e92eaa0000bcf33f948c36e5160d31 +Subproject commit bbf699543a1adec08d8166bebb6e0cb5ec5fe1e8 From 10594aa350a6e6fa0755b6003ced569a6ecdd1ef Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Sun, 11 Jan 2026 16:01:33 +0000 Subject: [PATCH 250/364] feat(tensorboard): add TensorBoard logging for AutoTuner sweeps * Introduced `TensorBoardLogger` class for logging metrics during sweeps. * Updated `sweep` function to integrate TensorBoard logging. * Enhanced `consumer` function to log metrics after each parameter run. Signed-off-by: Jack Luar --- tools/AutoTuner/src/autotuner/distributed.py | 26 +++++++- .../src/autotuner/tensorboard_logger.py | 65 +++++++++++++++++++ tools/AutoTuner/src/autotuner/utils.py | 37 +++++++++-- 3 files changed, 120 insertions(+), 8 deletions(-) create mode 100644 tools/AutoTuner/src/autotuner/tensorboard_logger.py diff --git a/tools/AutoTuner/src/autotuner/distributed.py b/tools/AutoTuner/src/autotuner/distributed.py index c5b07dc74c..201c9b6799 100644 --- a/tools/AutoTuner/src/autotuner/distributed.py +++ b/tools/AutoTuner/src/autotuner/distributed.py @@ -95,6 +95,7 @@ CONSTRAINTS_SDC, FASTROUTE_TCL, ) +from autotuner.tensorboard_logger import TensorBoardLogger # Name of the final metric METRIC = "metric" @@ -566,6 +567,14 @@ def sweep(): else: repo_dir = os.path.abspath(os.path.join(ORFS_FLOW_DIR, "..")) print(f"[INFO TUN-0012] Log folder {LOCAL_DIR}.") + + tb_log_dir = os.path.join(LOCAL_DIR, args.experiment) + print( + f"[INFO TUN-0034] TensorBoard logging enabled. Run: tensorboard --logdir={tb_log_dir}" + ) + + tb_logger = TensorBoardLogger.remote(log_dir=tb_log_dir) + queue = Queue() parameter_list = list() for name, content in config_dict.items(): @@ -577,14 +586,27 @@ def sweep(): sys.exit(1) parameter_list.append([{name: i} for i in np.arange(*content)]) parameter_list = list(product(*parameter_list)) - for parameter in parameter_list: + for idx, parameter in enumerate(parameter_list): temp = dict() for value in parameter: temp.update(value) - queue.put([args, repo_dir, temp, SDC_ORIGINAL, FR_ORIGINAL, INSTALL_PATH]) + queue.put( + [ + args, + repo_dir, + temp, + SDC_ORIGINAL, + FR_ORIGINAL, + INSTALL_PATH, + idx, + tb_logger, + ] + ) workers = [consumer.remote(queue) for _ in range(args.jobs)] print("[INFO TUN-0009] Waiting for results.") ray.get(workers) + ray.get(tb_logger.close.remote()) + print(f"[INFO TUN-0035] TensorBoard events written to {tb_log_dir}") print("[INFO TUN-0010] Sweep complete.") diff --git a/tools/AutoTuner/src/autotuner/tensorboard_logger.py b/tools/AutoTuner/src/autotuner/tensorboard_logger.py new file mode 100644 index 0000000000..15230a633e --- /dev/null +++ b/tools/AutoTuner/src/autotuner/tensorboard_logger.py @@ -0,0 +1,65 @@ +import logging +import os +from typing import Any, Union + +import ray +from tensorboardX import SummaryWriter + +logger = logging.getLogger(__name__) + + +@ray.remote +class TensorBoardLogger: + """TensorBoard logger for AutoTuner experiments""" + + def __init__(self, log_dir: str): + os.makedirs(log_dir, exist_ok=True) + self.writer = SummaryWriter(log_dir=log_dir) + self.log_dir = log_dir + self.step = 0 + logger.info(f"TensorBoard logs will be written to {log_dir}") + + def log_sweep_metrics( + self, + params: dict[str, Any], + metrics: dict[str, Any], + score: float, + effective_clk_period: Union[float, str], + num_drc: Union[int, str], + die_area: Union[float, str], + ) -> None: + """Log metrics from a single sweep run""" + self.writer.add_scalar("sweep/score", score, self.step) + + if effective_clk_period != "-": + self.writer.add_scalar( + "sweep/effective_clk_period", effective_clk_period, self.step + ) + + if num_drc != "-": + self.writer.add_scalar("sweep/num_drc", num_drc, self.step) + + if die_area != "-": + self.writer.add_scalar("sweep/die_area", die_area, self.step) + + for key, value in metrics.items(): + if isinstance(value, (int, float)): + self.writer.add_scalar(f"metrics/{key}", value, self.step) + + self.writer.add_hparams( + { + k: v if isinstance(v, (int, float, str, bool)) else str(v) + for k, v in params.items() + }, + {"hparam/score": score if score != 999999.0 else 0.0}, + ) + + self.step += 1 + + def close(self) -> None: + """Close the TensorBoard writer and log completion message""" + self.writer.close() + logger.info( + f"Sweep complete. View results with: tensorboard --logdir={self.log_dir}" + ) + logger.info(f"Total runs logged: {self.step}") diff --git a/tools/AutoTuner/src/autotuner/utils.py b/tools/AutoTuner/src/autotuner/utils.py index fadab40325..18da2bd936 100644 --- a/tools/AutoTuner/src/autotuner/utils.py +++ b/tools/AutoTuner/src/autotuner/utils.py @@ -669,9 +669,34 @@ def openroad_distributed( @ray.remote def consumer(queue): """consumer""" - while not queue.empty(): - next_item = queue.get() - name = next_item[1] - print(f"[INFO TUN-0007] Scheduling run for parameter {name}.") - ray.get(openroad_distributed.remote(*next_item)) - print(f"[INFO TUN-0008] Finished run for parameter {name}.") + item = queue.get() + tb_logger = item[7] + + while item: + args, repo_dir, config, sdc, fr, install, idx, _ = item + print(f"[INFO TUN-0007] Scheduling run for parameter {config}.") + metric_file, _ = ray.get( + openroad_distributed.remote(args, repo_dir, config, sdc, fr, install) + ) + print(f"[INFO TUN-0008] Finished run for parameter {config}.") + + metrics = read_metrics(metric_file, args.stop_stage) + effective_clk_period = ( + metrics["clk_period"] - metrics["worst_slack"] + if metrics["worst_slack"] not in ("ERR", "N/A") + else "-" + ) + score = effective_clk_period if effective_clk_period != "-" else 999999.0 + + ray.get( + tb_logger.log_sweep_metrics.remote( + params=config, + metrics=metrics, + score=score, + effective_clk_period=effective_clk_period, + num_drc=metrics.get("num_drc", "-"), + die_area=metrics.get("die_area", "-"), + ) + ) + + item = queue.get() if not queue.empty() else None From b38911eeb68967019df76fdd1c7faa666e5cfdac Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Sun, 11 Jan 2026 16:11:43 +0000 Subject: [PATCH 251/364] remove unused `idx` Signed-off-by: Jack Luar --- tools/AutoTuner/src/autotuner/distributed.py | 3 +-- tools/AutoTuner/src/autotuner/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/AutoTuner/src/autotuner/distributed.py b/tools/AutoTuner/src/autotuner/distributed.py index 201c9b6799..7a3f752553 100644 --- a/tools/AutoTuner/src/autotuner/distributed.py +++ b/tools/AutoTuner/src/autotuner/distributed.py @@ -586,7 +586,7 @@ def sweep(): sys.exit(1) parameter_list.append([{name: i} for i in np.arange(*content)]) parameter_list = list(product(*parameter_list)) - for idx, parameter in enumerate(parameter_list): + for parameter in parameter_list: temp = dict() for value in parameter: temp.update(value) @@ -598,7 +598,6 @@ def sweep(): SDC_ORIGINAL, FR_ORIGINAL, INSTALL_PATH, - idx, tb_logger, ] ) diff --git a/tools/AutoTuner/src/autotuner/utils.py b/tools/AutoTuner/src/autotuner/utils.py index 18da2bd936..cf9e2a0631 100644 --- a/tools/AutoTuner/src/autotuner/utils.py +++ b/tools/AutoTuner/src/autotuner/utils.py @@ -670,10 +670,10 @@ def openroad_distributed( def consumer(queue): """consumer""" item = queue.get() - tb_logger = item[7] + tb_logger = item[6] while item: - args, repo_dir, config, sdc, fr, install, idx, _ = item + args, repo_dir, config, sdc, fr, install, tb_logger = item print(f"[INFO TUN-0007] Scheduling run for parameter {config}.") metric_file, _ = ray.get( openroad_distributed.remote(args, repo_dir, config, sdc, fr, install) From 26821ee562e3d7845c973ca19c6a4373d26a00ed Mon Sep 17 00:00:00 2001 From: vvbandeira <9001905+vvbandeira@users.noreply.github.com> Date: Mon, 12 Jan 2026 08:13:25 +0000 Subject: [PATCH 252/364] [BOT] Update OpenROAD submodule Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index bbf699543a..e06ca0f5f2 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit bbf699543a1adec08d8166bebb6e0cb5ec5fe1e8 +Subproject commit e06ca0f5f2e641cd7b138a4d9b4fdd290359eca8 From 683764c7de60120bce5e4466cc0ab4f735b64355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Mon, 12 Jan 2026 10:05:36 +0100 Subject: [PATCH 253/364] synth: set OPENROAD_HIERARCHICAL=1 as needed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- flow/designs/asap7/ibex/config.mk | 1 + flow/designs/asap7/mock-alu/config.mk | 1 + flow/designs/asap7/riscv32i/config.mk | 1 + flow/designs/asap7/swerv_wrapper/config.mk | 1 + flow/designs/gf180/ibex/config.mk | 1 + flow/designs/gf180/jpeg/config.mk | 1 + flow/designs/gf180/riscv32i/config.mk | 1 + flow/designs/ihp-sg13g2/gcd/config.mk | 1 + flow/designs/ihp-sg13g2/ibex/config.mk | 1 + flow/designs/ihp-sg13g2/riscv32i/config.mk | 1 + flow/designs/ihp-sg13g2/spi/config.mk | 1 + flow/designs/nangate45/aes/config.mk | 1 + flow/designs/nangate45/bp_multi_top/config.mk | 1 + flow/designs/nangate45/dynamic_node/config.mk | 1 + flow/designs/nangate45/swerv_wrapper/config.mk | 1 + flow/designs/sky130hd/aes/config.mk | 1 + flow/designs/sky130hd/ibex/config.mk | 1 + flow/designs/sky130hd/microwatt/config.mk | 1 + flow/designs/sky130hd/riscv32i/config.mk | 1 + flow/designs/sky130hs/aes/config.mk | 1 + flow/designs/sky130hs/jpeg/config.mk | 1 + flow/designs/sky130hs/riscv32i/config.mk | 1 + 22 files changed, 22 insertions(+) diff --git a/flow/designs/asap7/ibex/config.mk b/flow/designs/asap7/ibex/config.mk index 222314c1f0..8a1c644f23 100644 --- a/flow/designs/asap7/ibex/config.mk +++ b/flow/designs/asap7/ibex/config.mk @@ -29,3 +29,4 @@ export ENABLE_DPO = 0 export TNS_END_PERCENT = 100 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/asap7/mock-alu/config.mk b/flow/designs/asap7/mock-alu/config.mk index 49dce08ed3..8dedca1632 100644 --- a/flow/designs/asap7/mock-alu/config.mk +++ b/flow/designs/asap7/mock-alu/config.mk @@ -9,3 +9,4 @@ export CORNER = BC export ROUTING_LAYER_ADJUSTMENT = 0.45 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/asap7/riscv32i/config.mk b/flow/designs/asap7/riscv32i/config.mk index c3ea3c045e..693473f65e 100644 --- a/flow/designs/asap7/riscv32i/config.mk +++ b/flow/designs/asap7/riscv32i/config.mk @@ -28,3 +28,4 @@ export CTS_CLUSTER_SIZE = 10 export CTS_CLUSTER_DIAMETER = 50 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/asap7/swerv_wrapper/config.mk b/flow/designs/asap7/swerv_wrapper/config.mk index ce39ca601d..1356b5d586 100644 --- a/flow/designs/asap7/swerv_wrapper/config.mk +++ b/flow/designs/asap7/swerv_wrapper/config.mk @@ -60,3 +60,4 @@ export PLACE_DENSITY_LB_ADDON = 0.20 export ROUTING_LAYER_ADJUSTMENT = 0.2 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/gf180/ibex/config.mk b/flow/designs/gf180/ibex/config.mk index f8b12b6bf4..50ac1389fa 100644 --- a/flow/designs/gf180/ibex/config.mk +++ b/flow/designs/gf180/ibex/config.mk @@ -16,3 +16,4 @@ export CORE_UTILIZATION = 45 export PLACE_DENSITY_LB_ADDON = 0.1 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/gf180/jpeg/config.mk b/flow/designs/gf180/jpeg/config.mk index 8a26f534a9..799d1aaad6 100644 --- a/flow/designs/gf180/jpeg/config.mk +++ b/flow/designs/gf180/jpeg/config.mk @@ -11,3 +11,4 @@ export PLACE_DENSITY_LB_ADDON = 0.20 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/gf180/riscv32i/config.mk b/flow/designs/gf180/riscv32i/config.mk index b7a79c990b..fedb328e2d 100644 --- a/flow/designs/gf180/riscv32i/config.mk +++ b/flow/designs/gf180/riscv32i/config.mk @@ -13,3 +13,4 @@ export PLACE_PINS_ARGS = -min_distance 5 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/ihp-sg13g2/gcd/config.mk b/flow/designs/ihp-sg13g2/gcd/config.mk index d582cd2bb6..fc554fb8f8 100644 --- a/flow/designs/ihp-sg13g2/gcd/config.mk +++ b/flow/designs/ihp-sg13g2/gcd/config.mk @@ -11,3 +11,4 @@ export CORE_UTILIZATION = 20 export TNS_END_PERCENT = 100 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/ihp-sg13g2/ibex/config.mk b/flow/designs/ihp-sg13g2/ibex/config.mk index ff11fd6c05..6f71860ef2 100644 --- a/flow/designs/ihp-sg13g2/ibex/config.mk +++ b/flow/designs/ihp-sg13g2/ibex/config.mk @@ -21,3 +21,4 @@ export TNS_END_PERCENT = 100 export CTS_BUF_DISTANCE = 60 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/ihp-sg13g2/riscv32i/config.mk b/flow/designs/ihp-sg13g2/riscv32i/config.mk index 790da5d94d..e2bbb90b2d 100644 --- a/flow/designs/ihp-sg13g2/riscv32i/config.mk +++ b/flow/designs/ihp-sg13g2/riscv32i/config.mk @@ -13,3 +13,4 @@ export TNS_END_PERCENT = 100 export CTS_BUF_DISTANCE = 60 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/ihp-sg13g2/spi/config.mk b/flow/designs/ihp-sg13g2/spi/config.mk index 797d5e3cd5..a424342b62 100644 --- a/flow/designs/ihp-sg13g2/spi/config.mk +++ b/flow/designs/ihp-sg13g2/spi/config.mk @@ -11,3 +11,4 @@ export CORE_UTILIZATION = 20 export TNS_END_PERCENT = 100 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/nangate45/aes/config.mk b/flow/designs/nangate45/aes/config.mk index befacb6e6a..e859d0d4a2 100644 --- a/flow/designs/nangate45/aes/config.mk +++ b/flow/designs/nangate45/aes/config.mk @@ -15,3 +15,4 @@ export REMOVE_CELLS_FOR_EQY = TAPCELL* export SKIP_INCREMENTAL_REPAIR = 1 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/nangate45/bp_multi_top/config.mk b/flow/designs/nangate45/bp_multi_top/config.mk index 0ba11145f9..8fd92869a9 100644 --- a/flow/designs/nangate45/bp_multi_top/config.mk +++ b/flow/designs/nangate45/bp_multi_top/config.mk @@ -34,3 +34,4 @@ export PLACE_DENSITY_LB_ADDON = 0.05 export SKIP_GATE_CLONING = 1 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/nangate45/dynamic_node/config.mk b/flow/designs/nangate45/dynamic_node/config.mk index 4cfd2d59c7..3e514eccf8 100644 --- a/flow/designs/nangate45/dynamic_node/config.mk +++ b/flow/designs/nangate45/dynamic_node/config.mk @@ -14,3 +14,4 @@ export PLACE_DENSITY_LB_ADDON = 0.20 export TNS_END_PERCENT = 100 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/nangate45/swerv_wrapper/config.mk b/flow/designs/nangate45/swerv_wrapper/config.mk index 960972da5a..7cfe56aca9 100644 --- a/flow/designs/nangate45/swerv_wrapper/config.mk +++ b/flow/designs/nangate45/swerv_wrapper/config.mk @@ -25,3 +25,4 @@ export TNS_END_PERCENT = 100 export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/fastroute.tcl export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/sky130hd/aes/config.mk b/flow/designs/sky130hd/aes/config.mk index 769047576a..c82a295d40 100644 --- a/flow/designs/sky130hd/aes/config.mk +++ b/flow/designs/sky130hd/aes/config.mk @@ -22,3 +22,4 @@ export CTS_CLUSTER_SIZE = 20 export CTS_CLUSTER_DIAMETER = 50 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/sky130hd/ibex/config.mk b/flow/designs/sky130hd/ibex/config.mk index 251c5b2860..e05fdfbbaf 100644 --- a/flow/designs/sky130hd/ibex/config.mk +++ b/flow/designs/sky130hd/ibex/config.mk @@ -27,3 +27,4 @@ export CTS_CLUSTER_SIZE = 20 export CTS_CLUSTER_DIAMETER = 50 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/sky130hd/microwatt/config.mk b/flow/designs/sky130hd/microwatt/config.mk index 5fcd12816d..6a2021c3f5 100644 --- a/flow/designs/sky130hd/microwatt/config.mk +++ b/flow/designs/sky130hd/microwatt/config.mk @@ -50,3 +50,4 @@ else endif export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/sky130hd/riscv32i/config.mk b/flow/designs/sky130hd/riscv32i/config.mk index 68db818f0c..c13fa5886c 100644 --- a/flow/designs/sky130hd/riscv32i/config.mk +++ b/flow/designs/sky130hd/riscv32i/config.mk @@ -11,3 +11,4 @@ export PLACE_DENSITY_LB_ADDON = 0.2 export REMOVE_ABC_BUFFERS = 1 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/sky130hs/aes/config.mk b/flow/designs/sky130hs/aes/config.mk index 1dd1c6335e..49bdcc926d 100644 --- a/flow/designs/sky130hs/aes/config.mk +++ b/flow/designs/sky130hs/aes/config.mk @@ -18,3 +18,4 @@ export CTS_CLUSTER_SIZE = 10 export CTS_CLUSTER_DIAMETER = 50 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/sky130hs/jpeg/config.mk b/flow/designs/sky130hs/jpeg/config.mk index 434f086632..867415edb2 100644 --- a/flow/designs/sky130hs/jpeg/config.mk +++ b/flow/designs/sky130hs/jpeg/config.mk @@ -18,3 +18,4 @@ export CTS_CLUSTER_SIZE = 30 export CTS_CLUSTER_DIAMETER = 50 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 diff --git a/flow/designs/sky130hs/riscv32i/config.mk b/flow/designs/sky130hs/riscv32i/config.mk index faa88123e5..cfe34db7a9 100644 --- a/flow/designs/sky130hs/riscv32i/config.mk +++ b/flow/designs/sky130hs/riscv32i/config.mk @@ -16,3 +16,4 @@ export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/fastroute.t export REMOVE_ABC_BUFFERS = 1 export SWAP_ARITH_OPERATORS = 1 +export OPENROAD_HIERARCHICAL = 1 From 6a2ec5b0c66dd335353271ec810bdaf10550570b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 12 Jan 2026 10:10:47 +0000 Subject: [PATCH 254/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 14 +++++------ flow/designs/asap7/aes-mbff/rules-base.json | 2 +- flow/designs/asap7/aes/rules-base.json | 10 ++++---- flow/designs/asap7/aes_lvt/rules-base.json | 6 ++--- flow/designs/asap7/cva6/rules-base.json | 2 +- flow/designs/asap7/ethmac/rules-base.json | 2 +- flow/designs/asap7/ethmac_lvt/rules-base.json | 14 +++++------ flow/designs/asap7/gcd-ccs/rules-base.json | 8 +++---- flow/designs/asap7/gcd/rules-base.json | 16 ++++++------- flow/designs/asap7/jpeg/rules-base.json | 6 ++--- flow/designs/asap7/jpeg_lvt/rules-base.json | 4 ++-- flow/designs/asap7/mock-cpu/rules-base.json | 12 +++++----- .../asap7/riscv32i-mock-sram/rules-base.json | 16 ++++++------- flow/designs/asap7/uart/rules-base.json | 2 +- flow/designs/gf180/aes-hybrid/rules-base.json | 8 +++---- flow/designs/gf180/aes/rules-base.json | 8 +++---- .../designs/gf180/uart-blocks/rules-base.json | 4 ++-- flow/designs/ihp-sg13g2/aes/rules-base.json | 2 +- .../i2c-gpio-expander/rules-base.json | 4 ++-- flow/designs/ihp-sg13g2/ibex/rules-base.json | 8 +++---- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 6 ++--- .../nangate45/ariane133/rules-base.json | 14 +++++------ .../nangate45/ariane136/rules-base.json | 6 ++--- .../nangate45/black_parrot/rules-base.json | 8 +++---- .../nangate45/bp_be_top/rules-base.json | 12 +++++----- .../nangate45/bp_fe_top/rules-base.json | 4 ++-- flow/designs/nangate45/gcd/rules-base.json | 10 ++++---- flow/designs/nangate45/ibex/rules-base.json | 4 ++-- flow/designs/nangate45/jpeg/rules-base.json | 8 +++---- .../nangate45/mempool_group/rules-base.json | 6 ++--- flow/designs/nangate45/swerv/rules-base.json | 2 +- .../nangate45/tinyRocket/rules-base.json | 12 +++++----- .../sky130hd/chameleon/rules-base.json | 8 +++---- flow/designs/sky130hd/gcd/rules-base.json | 22 ++++++++--------- flow/designs/sky130hd/jpeg/rules-base.json | 8 +++---- flow/designs/sky130hs/gcd/rules-base.json | 24 +++++++++---------- flow/designs/sky130hs/ibex/rules-base.json | 4 ++-- 37 files changed, 153 insertions(+), 153 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 3363e80ec7..22a5a5797c 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -24,11 +24,11 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 2001, + "value": 1863, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -127.0, + "value": -111.0, "compare": ">=" }, "cts__timing__setup__tns": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -129.0, + "value": -104.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -7080.0, + "value": -7040.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -94.5, + "value": -70.4, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3610.0, + "value": -2990.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 7332, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index a9d1616be5..e3db438ed7 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -99,4 +99,4 @@ "value": 2254, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index 5849e97ad4..c075e2c832 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -620.0, + "value": -607.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2360.0, + "value": -2020.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -57.0, + "value": -44.3, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1130.0, + "value": -779.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 2269, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/aes_lvt/rules-base.json b/flow/designs/asap7/aes_lvt/rules-base.json index 1e4048da7c..e5039648ab 100644 --- a/flow/designs/asap7/aes_lvt/rules-base.json +++ b/flow/designs/asap7/aes_lvt/rules-base.json @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -45.1, + "value": -18.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -182.0, + "value": -72.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 2017, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/cva6/rules-base.json b/flow/designs/asap7/cva6/rules-base.json index 7c26ae393d..e04d4a8b56 100644 --- a/flow/designs/asap7/cva6/rules-base.json +++ b/flow/designs/asap7/cva6/rules-base.json @@ -99,4 +99,4 @@ "value": 20198, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 7edcb75ce5..0caa6f4ffd 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -99,4 +99,4 @@ "value": 8904, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index bd5af580ff..9e4b7f0210 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -69.9, + "value": -62.7, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -901.0, + "value": -816.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -78.4, + "value": -70.3, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1080.0, + "value": -918.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -69.6, + "value": -56.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -911.0, + "value": -696.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 8537, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index 9d2d23cb99..102e04c4e8 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -28,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -36.1, + "value": -33.8, "compare": ">=" }, "cts__timing__setup__tns": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -34.7, + "value": -33.8, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -103.0, + "value": -102.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 54, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index 2876de53b4..77f6e8a8d1 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -59.1, + "value": -53.6, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -321.0, + "value": -281.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -68.7, + "value": -64.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -441.0, + "value": -439.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1388, + "value": 1352, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -55.1, + "value": -48.7, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -299.0, + "value": -270.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 55, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/jpeg/rules-base.json b/flow/designs/asap7/jpeg/rules-base.json index f43573bb62..bbcd2221de 100644 --- a/flow/designs/asap7/jpeg/rules-base.json +++ b/flow/designs/asap7/jpeg/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -38.0, + "value": -34.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -140.0, + "value": -136.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 7253, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/jpeg_lvt/rules-base.json b/flow/designs/asap7/jpeg_lvt/rules-base.json index 34430b8e1c..5304309a43 100644 --- a/flow/designs/asap7/jpeg_lvt/rules-base.json +++ b/flow/designs/asap7/jpeg_lvt/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -546.0, + "value": -120.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 7124, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/mock-cpu/rules-base.json b/flow/designs/asap7/mock-cpu/rules-base.json index ddc3206897..fa1aefe3a0 100644 --- a/flow/designs/asap7/mock-cpu/rules-base.json +++ b/flow/designs/asap7/mock-cpu/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2350.0, + "value": -2070.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -109.0, + "value": -104.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2860.0, + "value": -2350.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -103.0, + "value": -97.7, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2570.0, + "value": -2230.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 7617, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 59b391d7c5..8f41ec20eb 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -148.0, + "value": -50.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -944.0, + "value": -200.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -148.0, + "value": -81.1, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -35500.0, + "value": -318.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 88512, + "value": 84714, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -153.0, + "value": -86.5, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -18100.0, + "value": -2390.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 2270, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index ed7df9f2d5..468e78601f 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -99,4 +99,4 @@ "value": 103, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 2167c3f68e..6aa28e58ef 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -155.0, + "value": -144.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -171.0, + "value": -158.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -165.0, + "value": -154.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 765254, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index f706147377..75ea8f2a34 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -110.0, + "value": -107.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -127.0, + "value": -124.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -122.0, + "value": -119.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 844209, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf180/uart-blocks/rules-base.json b/flow/designs/gf180/uart-blocks/rules-base.json index 765dedc336..550f2f7174 100644 --- a/flow/designs/gf180/uart-blocks/rules-base.json +++ b/flow/designs/gf180/uart-blocks/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 20185, + "value": 18889, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -99,4 +99,4 @@ "value": 70132, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/aes/rules-base.json b/flow/designs/ihp-sg13g2/aes/rules-base.json index 079dd8c976..f656b91241 100644 --- a/flow/designs/ihp-sg13g2/aes/rules-base.json +++ b/flow/designs/ihp-sg13g2/aes/rules-base.json @@ -99,4 +99,4 @@ "value": 204761, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json index a0b508b09d..a17e94afaa 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 38502, + "value": 38152, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -99,4 +99,4 @@ "value": 42034, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/ibex/rules-base.json b/flow/designs/ihp-sg13g2/ibex/rules-base.json index 6b7cd1f174..dc15566d0f 100644 --- a/flow/designs/ihp-sg13g2/ibex/rules-base.json +++ b/flow/designs/ihp-sg13g2/ibex/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 305820.24, + "value": 280000.0, "compare": "<=" }, "constraints__clocks__count": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.414, + "value": -0.406, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -4.31, + "value": -1.61, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 314511, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index 09f129cd44..d28151aba1 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -76,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 162, + "value": 110, "compare": "<=" }, "finish__timing__setup__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 1055178, + "value": 1053077, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 4c685d80f0..f01ef828a7 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.331, + "value": -0.324, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -222.0, + "value": -214.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.374, + "value": -0.361, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -439.0, + "value": -271.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.372, + "value": -0.349, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -391.0, + "value": -258.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 840911, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index ab33451ad3..391b486d1a 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -40,7 +40,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -8.5, + "value": -2.98, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8727932, + "value": 8079438, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -99,4 +99,4 @@ "value": 864432, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index 8c8be201a6..97139c3f3b 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -28,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -3.09, + "value": -2.96, "compare": ">=" }, "cts__timing__setup__tns": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -3.13, + "value": -3.12, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -80,7 +80,7 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -2.99, + "value": -2.94, "compare": ">=" }, "finish__timing__setup__tns": { @@ -99,4 +99,4 @@ "value": 788072, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index d0003e5acc..92bada3a7b 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.294, + "value": -0.263, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -20.1, + "value": -12.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19.2, + "value": -18.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.366, + "value": -0.295, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -29.3, + "value": -17.1, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 275387, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 1da4f9a292..fa8424d1d1 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.85, + "value": -0.795, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 247483, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 20b1f39869..3be227edcb 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1.04, + "value": -0.532, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1.7, + "value": -1.02, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.0767, + "value": -0.0744, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.26, + "value": -0.658, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 980, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/ibex/rules-base.json b/flow/designs/nangate45/ibex/rules-base.json index 8ed88e3428..a0a7b9c806 100644 --- a/flow/designs/nangate45/ibex/rules-base.json +++ b/flow/designs/nangate45/ibex/rules-base.json @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.113, + "value": -0.111, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -99,4 +99,4 @@ "value": 33440, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index c8b1cdf4a9..9560dcdda5 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -40.9, + "value": -36.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -53.0, + "value": -49.2, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -43.6, + "value": -41.1, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 103424, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index 5befff391c..a7488dda8d 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -11500.0, + "value": -10800.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10800.0, + "value": -10400.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 303227, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index a659cb7c28..29a0f9ad75 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -99,4 +99,4 @@ "value": 183736, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 5188db11b1..4a1f0fae64 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.149, + "value": -0.146, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -23.7, + "value": -23.6, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -46.5, + "value": -39.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.156, + "value": -0.154, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -42.1, + "value": -33.7, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 62486, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hd/chameleon/rules-base.json b/flow/designs/sky130hd/chameleon/rules-base.json index cf6e83928b..28a018f4a6 100644 --- a/flow/designs/sky130hd/chameleon/rules-base.json +++ b/flow/designs/sky130hd/chameleon/rules-base.json @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 213, + "value": 105, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -76,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 153, + "value": 100, "compare": "<=" }, "finish__timing__setup__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 6531954, + "value": 6531862, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hd/gcd/rules-base.json b/flow/designs/sky130hd/gcd/rules-base.json index 3b371e9f9e..b7aced2aee 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 4271, + "value": 4161, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 519, + "value": 506, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,7 +20,7 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 46, + "value": 44, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.39, + "value": -2.27, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -125.0, + "value": -94.5, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.58, + "value": -2.48, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 9675, + "value": 8444, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -2.43, + "value": -2.32, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -123.0, + "value": -95.7, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 5488, + "value": 5062, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index 052dd0f0ec..f71c0d3e70 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 161, + "value": 101, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -13.5, + "value": -8.68, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -76,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 119, + "value": 112, "compare": "<=" }, "finish__timing__setup__ws": { @@ -99,4 +99,4 @@ "value": 520067, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 129e428d5b..4a60b077ca 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 6660, + "value": 6478, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 741, + "value": 726, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,7 +20,7 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 69, + "value": 63, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.442, + "value": -0.358, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13.0, + "value": -10.5, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.583, + "value": -0.502, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -20.0, + "value": -16.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 13917, + "value": 12067, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.491, + "value": -0.419, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -16.3, + "value": -12.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 8156, + "value": 7582, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index 5e1baedf93..642d4a3325 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3.0, + "value": -2.86, "compare": ">=" }, "finish__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 243893, "compare": "<=" } -} +} \ No newline at end of file From e54573c46bea8a570b305d52ca670fc341dacc98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mai?= Date: Mon, 12 Jan 2026 22:54:57 +0000 Subject: [PATCH 255/364] mpl: tight packing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: João Mai --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index e06ca0f5f2..0e67816234 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit e06ca0f5f2e641cd7b138a4d9b4fdd290359eca8 +Subproject commit 0e67816234afcb5338c47d35b7dbb3a95cbaa6a8 From 36e70cf73205239016505ddfc7d703a44c76a776 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 13 Jan 2026 06:40:47 +0000 Subject: [PATCH 256/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 12 ++++++------ flow/designs/asap7/swerv_wrapper/rules-base.json | 2 +- flow/designs/nangate45/swerv_wrapper/rules-base.json | 10 +++++----- flow/designs/nangate45/tinyRocket/rules-base.json | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 22a5a5797c..317e20fce4 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -111.0, + "value": -135.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -7220.0, + "value": -8160.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -104.0, + "value": -135.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -7040.0, + "value": -7640.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -70.4, + "value": -98.3, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2990.0, + "value": -3890.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 4e360e835f..e152aca76e 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -88,7 +88,7 @@ "compare": ">=" }, "finish__timing__hold__ws": { - "value": -356.0, + "value": -458.0, "compare": ">=" }, "finish__timing__hold__tns": { diff --git a/flow/designs/nangate45/swerv_wrapper/rules-base.json b/flow/designs/nangate45/swerv_wrapper/rules-base.json index 7420e07d3c..748bd942e9 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.104, + "value": -0.218, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.411, + "value": -70.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.4, + "value": -48.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17.0, + "value": -78.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -1.15, + "value": -2.82, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 4a1f0fae64..26d645bd17 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -39.6, + "value": -45.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -33.7, + "value": -38.2, "compare": ">=" }, "finish__timing__hold__ws": { From def1ab82ff2b5cee9fb926df9c791b3c256b8cc9 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Tue, 13 Jan 2026 17:54:02 +0000 Subject: [PATCH 257/364] designs/rapidus2hp/ethmac/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -42.0 | -34.4 | Tighten | | cts__timing__setup__tns | -747.0 | -612.0 | Tighten | | globalroute__timing__setup__tns | -1530.0 | -1610.0 | Failing | | finish__timing__setup__tns | -1530.0 | -1610.0 | Failing | Signed-off-by: Matt Liberty --- flow/designs/rapidus2hp/ethmac/rules-verific.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json index cce1eb877a..4bf77d125b 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-verific.json +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -42.0, + "value": -34.4, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -747.0, + "value": -612.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1530.0, + "value": -1610.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1530.0, + "value": -1610.0, "compare": ">=" }, "finish__timing__hold__ws": { From a0e07c42f2671e534ab409eb400e5f93ac87334a Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Tue, 13 Jan 2026 20:12:02 +0000 Subject: [PATCH 258/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 0e67816234..a4c5cc3630 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 0e67816234afcb5338c47d35b7dbb3a95cbaa6a8 +Subproject commit a4c5cc36306f583484016e77db3ebff85089458f From 91d1a67d4425446d18c49abe7483839c88f5c66f Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 13 Jan 2026 18:36:44 -0300 Subject: [PATCH 259/364] use Yosys 0.61 Signed-off-by: Eder Monteiro --- tools/yosys | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/yosys b/tools/yosys index 5bafeb77dc..77005b69a2 160000 --- a/tools/yosys +++ b/tools/yosys @@ -1 +1 @@ -Subproject commit 5bafeb77dc71e054fa331ab9efa613e6fb0a1c49 +Subproject commit 77005b69a2f693425294dab62c49164edb15bf10 From aaf6d26523b0248513d58bb921ac8b93b9137245 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Tue, 13 Jan 2026 18:37:17 -0300 Subject: [PATCH 260/364] use latest openroad Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 0e67816234..b42159587e 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 0e67816234afcb5338c47d35b7dbb3a95cbaa6a8 +Subproject commit b42159587eeed9eef0b7fb06327e79ce04d1497b From 140619aee217a342181b29772ea541c620400a5e Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 14 Jan 2026 00:50:33 +0000 Subject: [PATCH 261/364] update metrics for public designs Signed-off-by: Eder Monteiro --- .../asap7/swerv_wrapper/rules-base.json | 8 ++++---- flow/designs/asap7/uart/rules-base.json | 14 ++++++------- .../nangate45/bp_fe_top/rules-base.json | 2 +- .../nangate45/mempool_group/rules-base.json | 8 ++++---- .../sky130hd/microwatt/rules-base.json | 20 +++++++++---------- flow/designs/sky130hs/jpeg/rules-base.json | 14 ++++++------- 6 files changed, 33 insertions(+), 33 deletions(-) diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index e152aca76e..982a122a90 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 55836, + "value": 55798, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -84,15 +84,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -61800.0, + "value": -64500.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -458.0, + "value": -197.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -661000.0, + "value": -33200.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 468e78601f..256594da79 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -45.1, + "value": -36.3, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1500.0, + "value": -783.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -54.6, + "value": -48.7, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1990.0, + "value": -1510.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -44.5, + "value": -37.8, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1370.0, + "value": -840.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 103, + "value": 119, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index fa8424d1d1..fec11277a7 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.795, + "value": -1.46, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index a7488dda8d..b4d56c02a7 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10800.0, + "value": -13000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 170, + "value": 169, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10800.0, + "value": -10600.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10400.0, + "value": -10300.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index c1578b86b1..1f038a6b79 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 5443594, + "value": 5434210, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -335.0, + "value": -332.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,15 +44,15 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 2681, + "value": 2454, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -3.02, + "value": -2.61, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -389.0, + "value": -393.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8055403, + "value": 7854871, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -76,15 +76,15 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1668, + "value": 1388, "compare": "<=" }, "finish__timing__setup__ws": { - "value": -2.09, + "value": -1.92, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -181.0, + "value": -166.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 5582894, + "value": 5578478, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index 82075cccc2..842c8bdc13 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 56403, + "value": 56059, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 4905, + "value": 4875, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 4905, + "value": 4875, "compare": "<=" }, "cts__timing__setup__ws": { @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 100, + "value": 142, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1579986, + "value": 1539927, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -72,11 +72,11 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 1, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 103, + "value": 100, "compare": "<=" }, "finish__timing__setup__ws": { From c3db776499077c9dcbe58cde21f65ab20df5749e Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 14 Jan 2026 03:17:23 +0000 Subject: [PATCH 262/364] update private metrics Signed-off-by: Eder Monteiro --- flow/designs/rapidus2hp/cva6/rules-base.json | 22 ++++++------- .../rapidus2hp/cva6/rules-verific.json | 32 +++++++++---------- .../hercules_idecode/rules-base.json | 22 ++++++------- .../hercules_is_int/rules-base.json | 20 ++++++------ 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index 74cec4c882..b9faa1a39e 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -32.6, + "value": -30.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -184.0, + "value": -120.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -40,7 +40,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -596.0, + "value": -268.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -109.0, + "value": -108.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -126000.0, + "value": -163000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -39.2, + "value": -37.1, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -184.0, + "value": -144.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -109.0, + "value": -108.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -126000.0, + "value": -163000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -39.2, + "value": -37.1, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -184.0, + "value": -144.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index 3ba2595859..9204140e43 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 14341, + "value": 14318, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 174240, + "value": 173997, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 15151, + "value": 15130, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 15151, + "value": 15130, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -32.6, + "value": -30.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -184.0, + "value": -120.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -40,43 +40,43 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -596.0, + "value": -268.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 149, + "value": 148, "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -109.0, + "value": -108.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -126000.0, + "value": -163000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -39.2, + "value": -37.1, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -184.0, + "value": -144.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -109.0, + "value": -108.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -126000.0, + "value": -163000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -39.2, + "value": -37.1, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -184.0, + "value": -144.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index 18fbdfb549..7f45832d79 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 8732.47, + "value": 8720.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 11605, + "value": 11599, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 298185, + "value": 296166, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 25929, + "value": 25754, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 25929, + "value": 25754, "compare": "<=" }, "cts__timing__setup__ws": { @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -145000.0, + "value": -187000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -142.0, + "value": -135.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -404000.0, + "value": -555000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -142.0, + "value": -135.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -404000.0, + "value": -555000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -80,7 +80,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 11873, + "value": 11869, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index ffd2b1c4aa..658b616b80 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 31764, + "value": 31739, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 659714, + "value": 658787, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 57366, + "value": 57286, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 57366, + "value": 57286, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -71.9, + "value": -84.9, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -379000.0, + "value": -396000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -298.0, + "value": -158.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1290000.0, + "value": -1670000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -298.0, + "value": -158.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1290000.0, + "value": -1670000.0, "compare": ">=" }, "finish__timing__hold__ws": { From e658c818d309c96e9fefb8bc0d07a6b35d963b7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 14 Jan 2026 07:43:20 +0100 Subject: [PATCH 263/364] variables: add place stage for GLOBAL_PLACEMENT_ARGS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 2 +- flow/scripts/variables.yaml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 22e56c795e..36f1c3b6d6 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -383,6 +383,7 @@ configuration file. - [DONT_BUFFER_PORTS](#DONT_BUFFER_PORTS) - [EARLY_SIZING_CAP_RATIO](#EARLY_SIZING_CAP_RATIO) - [FLOORPLAN_DEF](#FLOORPLAN_DEF) +- [GLOBAL_PLACEMENT_ARGS](#GLOBAL_PLACEMENT_ARGS) - [GPL_ROUTABILITY_DRIVEN](#GPL_ROUTABILITY_DRIVEN) - [GPL_TIMING_DRIVEN](#GPL_TIMING_DRIVEN) - [IO_PLACER_H](#IO_PLACER_H) @@ -521,7 +522,6 @@ configuration file. - [FLOW_VARIANT](#FLOW_VARIANT) - [GDS_FILES](#GDS_FILES) - [GENERATE_ARTIFACTS_ON_FAILURE](#GENERATE_ARTIFACTS_ON_FAILURE) -- [GLOBAL_PLACEMENT_ARGS](#GLOBAL_PLACEMENT_ARGS) - [GUI_TIMING](#GUI_TIMING) - [IR_DROP_LAYER](#IR_DROP_LAYER) - [KLAYOUT_TECH_FILE](#KLAYOUT_TECH_FILE) diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 6c35de5f87..ad40d59789 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -563,6 +563,8 @@ GLOBAL_PLACEMENT_ARGS: description: > Use additional tuning parameters during global placement other than default args defined in global_place.tcl. + stages: + - place ENABLE_DPO: description: | Enable detail placement with improve_placement feature. From 660d87b0202dea4cf85a5848eb58583863be8936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 14 Jan 2026 07:42:22 +0100 Subject: [PATCH 264/364] variables: add synth stage for SYNTH_ARGS and SYNTH_HIER_SEPARATOR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 4 ++-- flow/scripts/variables.yaml | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 36f1c3b6d6..edf16aebf8 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -287,11 +287,13 @@ configuration file. - [MIN_BUF_CELL_AND_PORTS](#MIN_BUF_CELL_AND_PORTS) - [SDC_FILE](#SDC_FILE) - [SDC_GUT](#SDC_GUT) +- [SYNTH_ARGS](#SYNTH_ARGS) - [SYNTH_BLACKBOXES](#SYNTH_BLACKBOXES) - [SYNTH_CANONICALIZE_TCL](#SYNTH_CANONICALIZE_TCL) - [SYNTH_GUT](#SYNTH_GUT) - [SYNTH_HDL_FRONTEND](#SYNTH_HDL_FRONTEND) - [SYNTH_HIERARCHICAL](#SYNTH_HIERARCHICAL) +- [SYNTH_HIER_SEPARATOR](#SYNTH_HIER_SEPARATOR) - [SYNTH_KEEP_MOCKED_MEMORIES](#SYNTH_KEEP_MOCKED_MEMORIES) - [SYNTH_KEEP_MODULES](#SYNTH_KEEP_MODULES) - [SYNTH_MEMORY_MAX_BITS](#SYNTH_MEMORY_MAX_BITS) @@ -540,8 +542,6 @@ configuration file. - [SEAL_GDS](#SEAL_GDS) - [SET_RC_TCL](#SET_RC_TCL) - [SLEW_MARGIN](#SLEW_MARGIN) -- [SYNTH_ARGS](#SYNTH_ARGS) -- [SYNTH_HIER_SEPARATOR](#SYNTH_HIER_SEPARATOR) - [TAP_CELL_NAME](#TAP_CELL_NAME) - [TECH_LEF](#TECH_LEF) - [USE_FILL](#USE_FILL) diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index ad40d59789..803775af2c 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -891,10 +891,14 @@ SYNTH_KEEP_MODULES: SYNTH_ARGS: description: | Optional synthesis variables for yosys. + stages: + - synth SYNTH_HIER_SEPARATOR: description: | Separator used for the synthesis flatten stage. default: . + stages: + - synth SYNTH_OPT_HIER: description: | Optimize constants across hierarchical boundaries. From e8ffd625012fbeb756265c3cbbedae156b2de0de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 14 Jan 2026 07:42:22 +0100 Subject: [PATCH 265/364] variables: add synth stage for SYNTH_ARGS and SYNTH_HIER_SEPARATOR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 4 ++-- flow/scripts/variables.yaml | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 22e56c795e..b3f773a09d 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -287,11 +287,13 @@ configuration file. - [MIN_BUF_CELL_AND_PORTS](#MIN_BUF_CELL_AND_PORTS) - [SDC_FILE](#SDC_FILE) - [SDC_GUT](#SDC_GUT) +- [SYNTH_ARGS](#SYNTH_ARGS) - [SYNTH_BLACKBOXES](#SYNTH_BLACKBOXES) - [SYNTH_CANONICALIZE_TCL](#SYNTH_CANONICALIZE_TCL) - [SYNTH_GUT](#SYNTH_GUT) - [SYNTH_HDL_FRONTEND](#SYNTH_HDL_FRONTEND) - [SYNTH_HIERARCHICAL](#SYNTH_HIERARCHICAL) +- [SYNTH_HIER_SEPARATOR](#SYNTH_HIER_SEPARATOR) - [SYNTH_KEEP_MOCKED_MEMORIES](#SYNTH_KEEP_MOCKED_MEMORIES) - [SYNTH_KEEP_MODULES](#SYNTH_KEEP_MODULES) - [SYNTH_MEMORY_MAX_BITS](#SYNTH_MEMORY_MAX_BITS) @@ -540,8 +542,6 @@ configuration file. - [SEAL_GDS](#SEAL_GDS) - [SET_RC_TCL](#SET_RC_TCL) - [SLEW_MARGIN](#SLEW_MARGIN) -- [SYNTH_ARGS](#SYNTH_ARGS) -- [SYNTH_HIER_SEPARATOR](#SYNTH_HIER_SEPARATOR) - [TAP_CELL_NAME](#TAP_CELL_NAME) - [TECH_LEF](#TECH_LEF) - [USE_FILL](#USE_FILL) diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 6c35de5f87..6ff20055ec 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -889,10 +889,14 @@ SYNTH_KEEP_MODULES: SYNTH_ARGS: description: | Optional synthesis variables for yosys. + stages: + - synth SYNTH_HIER_SEPARATOR: description: | Separator used for the synthesis flatten stage. default: . + stages: + - synth SYNTH_OPT_HIER: description: | Optimize constants across hierarchical boundaries. From 4bece13c2c7c95ce693a8a0946affe2a54fef42b Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 14 Jan 2026 10:05:20 +0000 Subject: [PATCH 266/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index a4c5cc3630..096a9ffd35 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit a4c5cc36306f583484016e77db3ebff85089458f +Subproject commit 096a9ffd35ab229c81f750733b7952615a51e768 From e21526e4a3cdf3620f763d79123f125fd690cee1 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 14 Jan 2026 12:49:18 +0000 Subject: [PATCH 267/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 096a9ffd35..37dad9e36b 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 096a9ffd35ab229c81f750733b7952615a51e768 +Subproject commit 37dad9e36b39ebe503820240b57803d838c2a631 From fa3401136de1fc1cb6bf766780e87fd8da25c733 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Wed, 14 Jan 2026 13:07:21 +0000 Subject: [PATCH 268/364] nangate45/ariane133: decrease macros halos to ease MPL convergence Signed-off-by: Arthur Koucher --- flow/designs/nangate45/ariane133/config.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/designs/nangate45/ariane133/config.mk b/flow/designs/nangate45/ariane133/config.mk index 7e2d41bd63..a143f420d9 100644 --- a/flow/designs/nangate45/ariane133/config.mk +++ b/flow/designs/nangate45/ariane133/config.mk @@ -18,7 +18,7 @@ export CORE_MARGIN = 5 export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl -export MACRO_PLACE_HALO = 10 10 +export MACRO_PLACE_HALO = 8 8 export SKIP_GATE_CLONING = 1 From 8005c3ccb5660056be95f285385bf52ba0c4b8df Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 14 Jan 2026 13:27:45 +0000 Subject: [PATCH 269/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 37dad9e36b..702e355b15 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 37dad9e36b39ebe503820240b57803d838c2a631 +Subproject commit 702e355b1542851fc2de0b88d99653340fe4191c From 47c82a95c73b3a5db57005d66245142af5344c17 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Wed, 14 Jan 2026 13:37:09 +0000 Subject: [PATCH 270/364] Private metrics for MPL changes gf12/bp_single: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -2300.0 | -1810.0 | Tighten | | cts__timing__hold__ws | -243.0 | -407.0 | Failing | | cts__timing__hold__tns | -702.0 | -5440.0 | Failing | | globalroute__timing__hold__ws | -253.0 | -407.0 | Failing | | globalroute__timing__hold__tns | -1320.0 | -1770.0 | Failing | | finish__timing__setup__tns | -518.0 | -1130.0 | Failing | | finish__timing__hold__ws | -100.0 | -210.0 | Failing | gf12/swerv_wrapper: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -75.0 | -290.0 | Failing | | cts__timing__setup__tns | -300.0 | -999.0 | Failing | | finish__timing__hold__tns | -508.0 | -463.0 | Tighten | gf12/tinyRocket: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -160.0 | -4150.0 | Failing | | globalroute__timing__setup__tns | -359.0 | -642.0 | Failing | rapidus2hp/cva6(base): | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -108.0 | -106.0 | Tighten | | globalroute__timing__setup__tns | -163000.0 | -165000.0 | Failing | | globalroute__timing__hold__ws | -37.1 | -32.9 | Tighten | | globalroute__timing__hold__tns | -144.0 | -125.0 | Tighten | | finish__timing__setup__ws | -108.0 | -106.0 | Tighten | | finish__timing__setup__tns | -163000.0 | -165000.0 | Failing | | finish__timing__hold__ws | -37.1 | -32.9 | Tighten | | finish__timing__hold__tns | -144.0 | -125.0 | Tighten | rapidus2hp/cva6(verific): | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -108.0 | -106.0 | Tighten | | globalroute__timing__setup__tns | -163000.0 | -165000.0 | Failing | | globalroute__timing__hold__ws | -37.1 | -32.9 | Tighten | | globalroute__timing__hold__tns | -144.0 | -125.0 | Tighten | | finish__timing__setup__ws | -108.0 | -106.0 | Tighten | | finish__timing__setup__tns | -163000.0 | -165000.0 | Failing | | finish__timing__hold__ws | -37.1 | -32.9 | Tighten | | finish__timing__hold__tns | -144.0 | -125.0 | Tighten | Signed-off-by: Arthur Koucher --- flow/designs/gf12/bp_single/rules-base.json | 176 +----------------- .../gf12/swerv_wrapper/rules-base.json | 98 +--------- flow/designs/gf12/tinyRocket/rules-base.json | 86 +-------- flow/designs/rapidus2hp/cva6/rules-base.json | 16 +- .../rapidus2hp/cva6/rules-verific.json | 16 +- 5 files changed, 31 insertions(+), 361 deletions(-) diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index 340146cb61..c831fb6161 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -1,164 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 21, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 26, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1020000.0, "compare": "<=" @@ -192,15 +32,15 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2300.0, + "value": -1810.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -243.0, + "value": -407.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -702.0, + "value": -5440.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -216,11 +56,11 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -253.0, + "value": -407.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1320.0, + "value": -1770.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -244,11 +84,11 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -518.0, + "value": -1130.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -100.0, + "value": -210.0, "compare": ">=" }, "finish__timing__hold__tns": { @@ -259,4 +99,4 @@ "value": 479804, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 3eb2bfc31a..ca7d886939 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 156883.93, "compare": "<=" @@ -118,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -75.0, + "value": -290.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -300.0, + "value": -999.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -182,11 +92,11 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -508.0, + "value": -463.0, "compare": ">=" }, "finish__design__instance__area": { "value": 177792, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index c5ec047df7..363ee01720 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -1,84 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 13122.1, "compare": "<=" @@ -112,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -160.0, + "value": -4150.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -132,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -359.0, + "value": -642.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -179,4 +99,4 @@ "value": 17222, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index b9faa1a39e..964e3c8cd0 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -108.0, + "value": -106.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -163000.0, + "value": -165000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -37.1, + "value": -32.9, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -144.0, + "value": -125.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -108.0, + "value": -106.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -163000.0, + "value": -165000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -37.1, + "value": -32.9, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -144.0, + "value": -125.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index 9204140e43..beddfc9e3d 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -108.0, + "value": -106.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -163000.0, + "value": -165000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -37.1, + "value": -32.9, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -144.0, + "value": -125.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -108.0, + "value": -106.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -163000.0, + "value": -165000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -37.1, + "value": -32.9, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -144.0, + "value": -125.0, "compare": ">=" }, "finish__design__instance__area": { From c2fd18d9f70f23762f583c5d9bb59fdd44380f59 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Wed, 14 Jan 2026 13:39:32 +0000 Subject: [PATCH 271/364] update OR Signed-off-by: Arthur Koucher --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index b42159587e..ebfe3fe5f1 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit b42159587eeed9eef0b7fb06327e79ce04d1497b +Subproject commit ebfe3fe5f1daeed5ed89574e20d40c1d581a5e42 From 37993c14bf3a412dfed2fe8c6b9858855efa270c Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Wed, 14 Jan 2026 15:35:34 +0000 Subject: [PATCH 272/364] updated util for is_int on PDK 0.3 Signed-off-by: Jeff Ng --- .../rapidus2hp/cva6/test/test_params.py | 10 +++-- .../rapidus2hp/ethmac/test/test_params.py | 6 +-- .../rapidus2hp/gcd/test/test_params.py | 6 +-- .../hercules_idecode/test/test_params.py | 6 +-- .../rapidus2hp/hercules_is_int/config.mk | 38 ++++++++++++------- .../hercules_is_int/test/test_params.py | 22 ++++++----- .../rapidus2hp/ibex/test/test_params.py | 10 +++-- .../rapidus2hp/jpeg/test/test_params.py | 10 +++-- 8 files changed, 65 insertions(+), 43 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/test/test_params.py b/flow/designs/rapidus2hp/cva6/test/test_params.py index 9456846098..b04c8bc987 100755 --- a/flow/designs/rapidus2hp/cva6/test/test_params.py +++ b/flow/designs/rapidus2hp/cva6/test/test_params.py @@ -24,7 +24,9 @@ def setUp(self): def get_exp_sdc(self, place_site, pdk_version): """Returns the expected SDC file path""" - if pdk_version in ["0.2a", "0.3"]: + if pdk_version in ["", "0.2a", "0.3"]: + if pdk_version == "": + pdk_version = "0.2a" if place_site == "ra02h138_DST_45CPP": return os.path.join( self._design_full_dir, f"constraint_{pdk_version}_6T.sdc" @@ -35,14 +37,14 @@ def get_exp_sdc(self, place_site, pdk_version): return os.path.join(self._design_full_dir, "constraint.sdc") - def test_pdk_0p2_default(self): + def test_pdk_0p2a_default(self): """ - Tests PDK 0.2 + Tests PDK 0.2a """ front_end = "" pdk_version = "" - for place_site in self._ibm_site_list: + for place_site in self._synopsys_site_list: exp_sdc = self.get_exp_sdc(place_site, pdk_version) self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) diff --git a/flow/designs/rapidus2hp/ethmac/test/test_params.py b/flow/designs/rapidus2hp/ethmac/test/test_params.py index 5b53e36f14..cbbe764f02 100755 --- a/flow/designs/rapidus2hp/ethmac/test/test_params.py +++ b/flow/designs/rapidus2hp/ethmac/test/test_params.py @@ -32,12 +32,12 @@ def get_exp_util(self, place_site, pdk_version): return 65 return 70 - def test_pdk_0p2_default(self): - """Tests PDK 0.2 Utilization""" + def test_pdk_0p2a_default(self): + """Tests PDK 0.2a Utilization""" front_end = "" pdk_version = "" - for place_site in self._ibm_site_list: + for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util diff --git a/flow/designs/rapidus2hp/gcd/test/test_params.py b/flow/designs/rapidus2hp/gcd/test/test_params.py index 65b5289800..60cb50d929 100755 --- a/flow/designs/rapidus2hp/gcd/test/test_params.py +++ b/flow/designs/rapidus2hp/gcd/test/test_params.py @@ -32,14 +32,14 @@ def get_exp_util(self, place_site, pdk_version): return 43 return 45 - def test_pdk_0p2_default(self): + def test_pdk_0p2a_default(self): """ - Tests PDK 0.2 utilization + Tests PDK 0.2a utilization """ front_end = "" pdk_version = "" - for place_site in self._ibm_site_list: + for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util diff --git a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py index cbd822fec4..93c5f0d4ff 100755 --- a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py @@ -33,14 +33,14 @@ def get_exp_util(self, place_site, front_end): return 44 return 50 - def test_pdk_0p2_default(self): + def test_pdk_0p2a_default(self): """ - Tests PDK 0.2 utilization + Tests PDK 0.2a utilization """ pdk_version = "" for front_end in self._front_end_list: - for place_site in self._ibm_site_list: + for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, front_end) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util diff --git a/flow/designs/rapidus2hp/hercules_is_int/config.mk b/flow/designs/rapidus2hp/hercules_is_int/config.mk index 2f88546d1a..6dfad00a3d 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/config.mk +++ b/flow/designs/rapidus2hp/hercules_is_int/config.mk @@ -28,20 +28,32 @@ export SYNTH_HIERARCHICAL ?= 0 # Use $(if) to defer conditional eval until all makefiles are read # -# | Front End | Place Site | Utilization | -# | --------- | ---------- | ----------- | -# | slang | 6T | 30 | -# | slang | 8T | 52 | -# | verific | 6T | 30 | -# | verific | 8T | 54 | +# | PDK Version | Front End | Place Site | Utilization | +# | ------------| --------- | ---------- | ----------- | +# | all | slang | 6T | 30 | +# | non-0.3 | slang | 8T | 52 | +# | all | verific | 6T | 30 | +# | non-0.3 | verific | 8T | 54 | +# | 0.3 | slang | 8T | 54 | +# | 0.3 | verific | 8T | 55 | -export CORE_UTILIZATION = $(strip $(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \ - $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ - 30, \ - 52), \ - $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ - 30, \ - 54))) +export CORE_UTILIZATION = $(strip \ + $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \ + 54, \ + 55 \ + ), \ + $(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \ + $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ + 30, \ + 52 \ + ), \ + $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ + 30, \ + 54 \ + ) \ + ) \ + )) export CORE_MARGIN = 1 export PLACE_DENSITY = 0.58 diff --git a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py index 32fe35d974..fa6ed8287f 100755 --- a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py @@ -21,9 +21,13 @@ def setUp(self): ParamTestBase.set_up(self, "hercules_is_int") - def get_exp_util(self, place_site, front_end): + def get_exp_util(self, place_site, front_end, pdk_version): """Returns the expected value""" + if pdk_version == "0.3": + if front_end == "verific": + return 55 + return 54 if front_end == "verific": if place_site in ["SC6T", "ra02h138_DST_45CPP"]: return 30 @@ -33,15 +37,15 @@ def get_exp_util(self, place_site, front_end): return 30 return 52 - def test_pdk_0p2_default(self): + def test_pdk_0p2a_default(self): """ - Tests PDK 0.2 utilization + Tests PDK 0.2a utilization """ pdk_version = "" for front_end in self._front_end_list: - for place_site in self._ibm_site_list: - exp_util = self.get_exp_util(place_site, front_end) + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) @@ -54,7 +58,7 @@ def test_pdk_0p2(self): pdk_version = "0.2" for front_end in self._front_end_list: for place_site in self._ibm_site_list: - exp_util = self.get_exp_util(place_site, front_end) + exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) @@ -67,7 +71,7 @@ def test_pdk_0p2a(self): pdk_version = "0.2a" for front_end in self._front_end_list: for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, front_end) + exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) @@ -80,7 +84,7 @@ def test_pdk_0p15(self): pdk_version = "0.15" for front_end in self._front_end_list: for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, front_end) + exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) @@ -93,7 +97,7 @@ def test_pdk_0p3(self): pdk_version = "0.3" for front_end in self._front_end_list: for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, front_end) + exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) diff --git a/flow/designs/rapidus2hp/ibex/test/test_params.py b/flow/designs/rapidus2hp/ibex/test/test_params.py index b52d1f5e94..4a8aa9fa66 100755 --- a/flow/designs/rapidus2hp/ibex/test/test_params.py +++ b/flow/designs/rapidus2hp/ibex/test/test_params.py @@ -33,7 +33,9 @@ def get_exp_util(self, place_site, pdk_version): def get_exp_sdc(self, place_site, pdk_version): """Returns the expected SDC file path""" - if pdk_version == "0.2a": + if pdk_version in ["", "0.2a"]: + if pdk_version == "": + pdk_version = "0.2a" if place_site == "ra02h138_DST_45CPP": return os.path.join( self._design_full_dir, f"constraint_{pdk_version}_6T.sdc" @@ -50,14 +52,14 @@ def get_exp_sdc(self, place_site, pdk_version): ) return os.path.join(self._design_full_dir, "constraint.sdc") - def test_pdk_0p2_default(self): + def test_pdk_0p2a_default(self): """ - Tests PDK 0.2 utilization + Tests PDK 0.2a utilization """ front_end = "" pdk_version = "" - for place_site in self._ibm_site_list: + for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, pdk_version) exp_sdc = self.get_exp_sdc(place_site, pdk_version) self.execute_cmd( diff --git a/flow/designs/rapidus2hp/jpeg/test/test_params.py b/flow/designs/rapidus2hp/jpeg/test/test_params.py index 7f2b15e5dc..cf35de1be9 100755 --- a/flow/designs/rapidus2hp/jpeg/test/test_params.py +++ b/flow/designs/rapidus2hp/jpeg/test/test_params.py @@ -24,7 +24,9 @@ def setUp(self): def get_exp_sdc(self, place_site, pdk_version): """Returns the expected SDC file path""" - if pdk_version == "0.2a": + if pdk_version in ["", "0.2a"]: + if pdk_version == "": + pdk_version = "0.2a" if place_site in ["", "ra02h184_HST_45CPP"]: return os.path.join( self._design_full_dir, f"jpeg_encoder15_{pdk_version}_8T.sdc" @@ -35,14 +37,14 @@ def get_exp_sdc(self, place_site, pdk_version): ) return os.path.join(self._design_full_dir, "jpeg_encoder15_7nm.sdc") - def test_pdk_0p2_default(self): + def test_pdk_0p2a_default(self): """ - Tests PDK 0.2 utilization + Tests PDK 0.2a utilization """ front_end = "" pdk_version = "" - for place_site in self._ibm_site_list: + for place_site in self._synopsys_site_list: exp_sdc = self.get_exp_sdc(place_site, pdk_version) self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) From f1f1920980b896e65fb56a6ff1a88e63b8fa2539 Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Wed, 14 Jan 2026 17:33:53 +0000 Subject: [PATCH 273/364] * add `calculate_trial_path` function for log path handling, redirecting sdc files to correct dir Signed-off-by: Jack Luar --- tools/AutoTuner/src/autotuner/utils.py | 41 +++++++++++++++++++++----- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/tools/AutoTuner/src/autotuner/utils.py b/tools/AutoTuner/src/autotuner/utils.py index cf9e2a0631..64ee0f684d 100644 --- a/tools/AutoTuner/src/autotuner/utils.py +++ b/tools/AutoTuner/src/autotuner/utils.py @@ -287,6 +287,21 @@ def run_command( raise RuntimeError +def calculate_trial_path(args, base_dir, flow_variant): + """ + Calculate the log path and flow variant + """ + flow_variant_with_experiment = f"{args.experiment}/{flow_variant}" + log_path = os.path.abspath( + os.path.join( + base_dir, + f"flow/logs/{args.platform}/{args.design}", + flow_variant_with_experiment, + ) + ) + return log_path, flow_variant_with_experiment + + def openroad( args, base_dir, @@ -297,10 +312,8 @@ def openroad( """ Run OpenROAD-flow-scripts with a given set of parameters. """ - # Make sure path ends in a slash, i.e., is a folder - flow_variant = f"{args.experiment}/{flow_variant}" - log_path = os.path.abspath( - os.path.join(base_dir, f"flow/logs/{args.platform}/{args.design}", flow_variant) + log_path, flow_variant = calculate_trial_path( + args=args, base_dir=base_dir, flow_variant=flow_variant ) report_path = os.path.abspath( os.path.join( @@ -643,6 +656,20 @@ def openroad_distributed( variant=None, ): """Simple wrapper to run openroad distributed with Ray.""" + if variant is None: + variant_parts = [] + for key, value in config.items(): + if key not in ["_SDC_FILE_PATH", "_FR_FILE_PATH"]: + variant_parts.append(f"{key}_{value}") + variant = "_".join(variant_parts) if variant_parts else "" + flow_variant = f"{uuid.uuid4()}-{variant}" if variant else f"{uuid.uuid4()}" + + trial_path, _ = calculate_trial_path( + args=args, base_dir=repo_dir, flow_variant=flow_variant + ) + + os.makedirs(trial_path, exist_ok=True) + config = parse_config( config=config, base_dir=repo_dir, @@ -651,15 +678,15 @@ def openroad_distributed( constraints_sdc=CONSTRAINTS_SDC, fr_original=fr_original, fastroute_tcl=FASTROUTE_TCL, + path=trial_path, ) - if variant is None: - variant = config.replace(" ", "_").replace("=", "_") + t = time.time() metric_file = openroad( args=args, base_dir=repo_dir, parameters=config, - flow_variant=f"{uuid.uuid4()}-{variant}" if variant else f"{uuid.uuid4()}", + flow_variant=flow_variant, install_path=install_path, ) duration = time.time() - t From 3dd5d4084ab9c3b5489cddcc05f866bd62b3f790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 14 Jan 2026 19:46:49 +0100 Subject: [PATCH 274/364] docs: avoid double negation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 4 ++-- flow/scripts/variables.yaml | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 22e56c795e..61d5375e24 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -110,8 +110,8 @@ configuration file. | CLKGATE_MAP_FILE| Optional mapping file supplied to Yosys to map clock gating cells| | | CLUSTER_FLOPS| Minimum number of flip-flops per sink cluster.| 0| | CORE_AREA| The core area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2).| | -| CORE_ASPECT_RATIO| The core aspect ratio (height / width). This value is ignored if `CORE_UTILIZATION` is undefined.| 1.0| -| CORE_MARGIN| The margin between the core area and die area, specified in microns. Allowed values are either one value for all margins or a set of four values, one for each margin. The order of the four values are: `{bottom top left right}`. This variable is ignored if `CORE_UTILIZATION` is undefined.| 1.0| +| CORE_ASPECT_RATIO| The core aspect ratio (height / width). This variable is only used when `CORE_UTILIZATION` is used.| 1.0| +| CORE_MARGIN| The margin between the core area and die area, specified in microns. Allowed values are either one value for all margins or a set of four values, one for each margin. The order of the four values are: `{bottom top left right}`. This variable is only used when `CORE_UTILIZATION` is used.| 1.0| | CORE_UTILIZATION| The core utilization percentage (0-100).| | | CORNER| PVT corner library selection. Only available for ASAP7 and GF180 PDKs.| | | CTS_ARGS| Override `clock_tree_synthesis` arguments.| | diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 6c35de5f87..f6f4524164 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -906,8 +906,9 @@ VERILOG_TOP_PARAMS: - synth CORE_ASPECT_RATIO: description: > - The core aspect ratio (height / width). This value is ignored if - `CORE_UTILIZATION` is undefined. + The core aspect ratio (height / width). + + This variable is only used when `CORE_UTILIZATION` is used. stages: - floorplan default: 1.0 @@ -918,8 +919,9 @@ CORE_MARGIN: The margin between the core area and die area, specified in microns. Allowed values are either one value for all margins or a set of four values, one for each margin. The order of the four values are: - `{bottom top left right}`. This variable is ignored if `CORE_UTILIZATION` - is undefined. + `{bottom top left right}`. + + This variable is only used when `CORE_UTILIZATION` is used. stages: - floorplan default: 1.0 From ed7233f184918dc74bcd55e2f8c88ad1ac8ab688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Wed, 14 Jan 2026 21:42:10 +0100 Subject: [PATCH 275/364] docs: avoid repetition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 4 ++-- flow/scripts/variables.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 61d5375e24..787b193ad7 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -110,8 +110,8 @@ configuration file. | CLKGATE_MAP_FILE| Optional mapping file supplied to Yosys to map clock gating cells| | | CLUSTER_FLOPS| Minimum number of flip-flops per sink cluster.| 0| | CORE_AREA| The core area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2).| | -| CORE_ASPECT_RATIO| The core aspect ratio (height / width). This variable is only used when `CORE_UTILIZATION` is used.| 1.0| -| CORE_MARGIN| The margin between the core area and die area, specified in microns. Allowed values are either one value for all margins or a set of four values, one for each margin. The order of the four values are: `{bottom top left right}`. This variable is only used when `CORE_UTILIZATION` is used.| 1.0| +| CORE_ASPECT_RATIO| The core aspect ratio (height / width). This variable is only used when `CORE_UTILIZATION` is set.| 1.0| +| CORE_MARGIN| The margin between the core area and die area, specified in microns. Allowed values are either one value for all margins or a set of four values, one for each margin. The order of the four values are: `{bottom top left right}`. This variable is only used when `CORE_UTILIZATION` is set.| 1.0| | CORE_UTILIZATION| The core utilization percentage (0-100).| | | CORNER| PVT corner library selection. Only available for ASAP7 and GF180 PDKs.| | | CTS_ARGS| Override `clock_tree_synthesis` arguments.| | diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index f6f4524164..1c53a9b25d 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -908,7 +908,7 @@ CORE_ASPECT_RATIO: description: > The core aspect ratio (height / width). - This variable is only used when `CORE_UTILIZATION` is used. + This variable is only used when `CORE_UTILIZATION` is set. stages: - floorplan default: 1.0 @@ -921,7 +921,7 @@ CORE_MARGIN: values, one for each margin. The order of the four values are: `{bottom top left right}`. - This variable is only used when `CORE_UTILIZATION` is used. + This variable is only used when `CORE_UTILIZATION` is set. stages: - floorplan default: 1.0 From abaa54a3a85f504b4d6b3a2c33e0d9b4d92278cf Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Wed, 14 Jan 2026 20:55:23 +0000 Subject: [PATCH 276/364] update metrics for private designs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ===================================================== make update_ok for gcd (rapidus2hp)... ===================================================== designs/rapidus2hp/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -25.5 | -25.0 | Tighten | | cts__timing__setup__tns | -296.0 | -408.0 | Failing | | globalroute__timing__setup__ws | -38.9 | -37.2 | Tighten | | globalroute__timing__setup__tns | -821.0 | -857.0 | Failing | | finish__timing__setup__ws | -38.9 | -37.2 | Tighten | | finish__timing__setup__tns | -821.0 | -857.0 | Failing | ===================================================== make update_ok for gcd (rapidus2hp) (verific)... ===================================================== designs/rapidus2hp/gcd/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -26.5 | -26.3 | Tighten | | cts__timing__setup__tns | -345.0 | -212.0 | Tighten | | globalroute__timing__setup__ws | -38.9 | -37.0 | Tighten | | globalroute__timing__setup__tns | -804.0 | -725.0 | Tighten | | finish__timing__setup__ws | -38.9 | -37.0 | Tighten | | finish__timing__setup__tns | -804.0 | -725.0 | Tighten | ===================================================== make update_ok for ethmac (rapidus2hp)... ===================================================== designs/rapidus2hp/ethmac/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -622.0 | -537.0 | Tighten | | globalroute__timing__setup__tns | -1410.0 | -1040.0 | Tighten | | finish__timing__setup__tns | -1410.0 | -1040.0 | Tighten | ===================================================== make update_ok for ethmac (rapidus2hp) (verific)... ===================================================== designs/rapidus2hp/ethmac/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 3429 | 3427 | Tighten | | placeopt__design__instance__count__stdcell | 72627 | 72530 | Tighten | | cts__design__instance__count__setup_buffer | 6315 | 6307 | Tighten | | cts__design__instance__count__hold_buffer | 6315 | 6307 | Tighten | | cts__timing__setup__ws | -34.4 | -29.7 | Tighten | | cts__timing__setup__tns | -612.0 | -449.0 | Tighten | | globalroute__timing__setup__ws | -56.6 | -43.6 | Tighten | | globalroute__timing__setup__tns | -1610.0 | -1070.0 | Tighten | | finish__timing__setup__ws | -56.6 | -43.6 | Tighten | | finish__timing__setup__tns | -1610.0 | -1070.0 | Tighten | | finish__design__instance__area | 3601 | 3599 | Tighten | ===================================================== make update_ok for jpeg (rapidus2hp)... ===================================================== designs/rapidus2hp/jpeg/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -47.4 | -107.0 | Failing | | globalroute__timing__setup__tns | -8370.0 | -44400.0 | Failing | | finish__timing__setup__ws | -47.4 | -107.0 | Failing | | finish__timing__setup__tns | -8370.0 | -44400.0 | Failing | ===================================================== make update_ok for jpeg (rapidus2hp) (verific)... ===================================================== designs/rapidus2hp/jpeg/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | synth__design__instance__area__stdcell | 3300.0 | 3290.0 | Tighten | | placeopt__design__instance__count__stdcell | 99438 | 99405 | Tighten | | cts__design__instance__count__setup_buffer | 8647 | 8644 | Tighten | | cts__design__instance__count__hold_buffer | 8647 | 8644 | Tighten | | globalroute__timing__setup__ws | -75.1 | -53.1 | Tighten | | globalroute__timing__setup__tns | -6740.0 | -8970.0 | Failing | | finish__timing__setup__ws | -75.1 | -53.1 | Tighten | | finish__timing__setup__tns | -6740.0 | -8970.0 | Failing | ===================================================== make update_ok for cva6 (rapidus2hp)... ===================================================== designs/rapidus2hp/cva6/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -163000.0 | -102000.0 | Tighten | | globalroute__timing__hold__ws | -37.1 | -36.1 | Tighten | | globalroute__timing__hold__tns | -144.0 | -134.0 | Tighten | | finish__timing__setup__tns | -163000.0 | -102000.0 | Tighten | | finish__timing__hold__ws | -37.1 | -36.1 | Tighten | | finish__timing__hold__tns | -144.0 | -134.0 | Tighten | ===================================================== make update_ok for cva6 (rapidus2hp) (verific)... ===================================================== designs/rapidus2hp/cva6/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -163000.0 | -102000.0 | Tighten | | globalroute__timing__hold__ws | -37.1 | -36.1 | Tighten | | globalroute__timing__hold__tns | -144.0 | -134.0 | Tighten | | finish__timing__setup__tns | -163000.0 | -102000.0 | Tighten | | finish__timing__hold__ws | -37.1 | -36.1 | Tighten | | finish__timing__hold__tns | -144.0 | -134.0 | Tighten | ===================================================== make update_ok for hercules_idecode (rapidus2hp)... ===================================================== designs/rapidus2hp/hercules_idecode/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -135.0 | -126.0 | Tighten | | globalroute__timing__setup__tns | -555000.0 | -458000.0 | Tighten | | finish__timing__setup__ws | -135.0 | -126.0 | Tighten | | finish__timing__setup__tns | -555000.0 | -458000.0 | Tighten | | finish__design__instance__area | 11869 | 11866 | Tighten | ===================================================== make update_ok for hercules_idecode (rapidus2hp) (verific)... ===================================================== designs/rapidus2hp/hercules_idecode/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -295000.0 | -260000.0 | Tighten | | globalroute__timing__setup__ws | -152.0 | -125.0 | Tighten | | globalroute__timing__setup__tns | -484000.0 | -458000.0 | Tighten | | finish__timing__setup__ws | -152.0 | -125.0 | Tighten | | finish__timing__setup__tns | -484000.0 | -458000.0 | Tighten | ===================================================== make update_ok for hercules_is_int (rapidus2hp)... ===================================================== designs/rapidus2hp/hercules_is_int/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -84.9 | -78.0 | Tighten | | cts__timing__setup__tns | -396000.0 | -308000.0 | Tighten | | globalroute__timing__setup__ws | -158.0 | -270.0 | Failing | | globalroute__timing__setup__tns | -1670000.0 | -1430000.0 | Tighten | | finish__timing__setup__ws | -158.0 | -270.0 | Failing | | finish__timing__setup__tns | -1670000.0 | -1430000.0 | Tighten | | finish__design__instance__area | 33391 | 33364 | Tighten | ===================================================== make update_ok for hercules_is_int (rapidus2hp) (verific)... ===================================================== designs/rapidus2hp/hercules_is_int/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -62.1 | -60.3 | Tighten | | cts__timing__setup__tns | -307000.0 | -301000.0 | Tighten | | globalroute__timing__setup__ws | -308.0 | -255.0 | Tighten | | globalroute__timing__setup__tns | -1380000.0 | -1240000.0 | Tighten | | finish__timing__setup__ws | -308.0 | -255.0 | Tighten | | finish__timing__setup__tns | -1380000.0 | -1240000.0 | Tighten | ===================================================== make update_ok for ibex (rapidus2hp)... ===================================================== designs/rapidus2hp/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -54.4 | -41.4 | Tighten | | globalroute__timing__setup__tns | -10200.0 | -1680.0 | Tighten | | finish__timing__setup__ws | -54.4 | -41.4 | Tighten | | finish__timing__setup__tns | -10200.0 | -1680.0 | Tighten | ===================================================== make update_ok for ibex (rapidus2hp) (verific)... ===================================================== designs/rapidus2hp/ibex/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -52.8 | -41.4 | Tighten | | globalroute__timing__setup__tns | -10200.0 | -1680.0 | Tighten | | finish__timing__setup__ws | -52.8 | -41.4 | Tighten | | finish__timing__setup__tns | -10200.0 | -1680.0 | Tighten | ===================================================== make update_ok for ariane (gf12)... ===================================================== designs/gf12/ariane/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -216.0 | -211.0 | Tighten | | cts__timing__setup__tns | -23400.0 | -720.0 | Tighten | | finish__design__instance__area | 217031 | 216957 | Tighten | ===================================================== make update_ok for gcd (gf12)... ===================================================== designs/gf12/gcd/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -47.8 | -46.3 | Tighten | | cts__timing__setup__tns | -299.0 | -249.0 | Tighten | | globalroute__timing__setup__ws | -55.1 | -54.9 | Tighten | | globalroute__timing__setup__tns | -342.0 | -421.0 | Failing | | finish__timing__setup__ws | -41.0 | -38.5 | Tighten | ===================================================== make update_ok for bp_single (gf12)... ===================================================== designs/gf12/bp_single/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -2300.0 | -400.0 | Tighten | | cts__timing__hold__tns | -702.0 | -681.0 | Tighten | ===================================================== make update_ok for tinyRocket (gf12)... ===================================================== designs/gf12/tinyRocket/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -359.0 | -160.0 | Tighten | ===================================================== make update_ok for coyote (gf12)... ===================================================== designs/gf12/coyote/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | detailedroute__route__drc_errors | 2 | 0 | Tighten | ===================================================== make update_ok for swerv_wrapper (gf12)... ===================================================== designs/gf12/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__ws | -233.0 | -108.0 | Tighten | | cts__timing__hold__tns | -624.0 | -370.0 | Tighten | ===================================================== make update_ok for ibex (gf12)... ===================================================== designs/gf12/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -117.0 | -51.0 | Tighten | | cts__timing__setup__tns | -7370.0 | -204.0 | Tighten | | globalroute__timing__setup__tns | -2440.0 | -204.0 | Tighten | ===================================================== make update_ok for aes (gf12)... ===================================================== designs/gf12/aes/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | synth__design__instance__area__stdcell | 3732.67 | 3710.0 | Tighten | | placeopt__design__instance__area | 4194 | 4159 | Tighten | | finish__design__instance__area | 4273 | 4236 | Tighten | ===================================================== make update_ok for ca53 (gf12)... ===================================================== designs/gf12/ca53/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__tns | -512.0 | -400.0 | Tighten | | globalroute__timing__setup__ws | -233.0 | -225.0 | Tighten | | globalroute__timing__setup__tns | -2520.0 | -1990.0 | Tighten | | globalroute__timing__hold__tns | -1130.0 | -848.0 | Tighten | | finish__timing__hold__tns | -7530.0 | -4200.0 | Tighten | Large percentage changes in failing metrics (>50%): - jpeg (rapidus2hp) globalroute__timing__setup__tns 430.47% (-8370.0 → -44400.0) - jpeg (rapidus2hp) finish__timing__setup__tns 430.47% (-8370.0 → -44400.0) - jpeg (rapidus2hp) globalroute__timing__setup__ws 125.74% (-47.4 → -107.0) - jpeg (rapidus2hp) finish__timing__setup__ws 125.74% (-47.4 → -107.0) - hercules_is_int (rapidus2hp) globalroute__timing__setup__ws 70.89% (-158.0 → -270.0) - hercules_is_int (rapidus2hp) finish__timing__setup__ws 70.89% (-158.0 → -270.0) Large percentage improvements in tighten metrics (>50%): - coyote (gf12) detailedroute__route__drc_errors -100.00% (2 → 0) - ibex (gf12) cts__timing__setup__tns -97.23% (-7370.0 → -204.0) - ariane (gf12) cts__timing__setup__tns -96.92% (-23400.0 → -720.0) - ibex (gf12) globalroute__timing__setup__tns -91.64% (-2440.0 → -204.0) - ibex (rapidus2hp) globalroute__timing__setup__tns -83.53% (-10200.0 → -1680.0) - ibex (rapidus2hp) finish__timing__setup__tns -83.53% (-10200.0 → -1680.0) - ibex (rapidus2hp (verific)) globalroute__timing__setup__tns -83.53% (-10200.0 → -1680.0) - ibex (rapidus2hp (verific)) finish__timing__setup__tns -83.53% (-10200.0 → -1680.0) - bp_single (gf12) cts__timing__setup__tns -82.61% (-2300.0 → -400.0) - ibex (gf12) cts__timing__setup__ws -56.41% (-117.0 → -51.0) - tinyRocket (gf12) globalroute__timing__setup__tns -55.43% (-359.0 → -160.0) - swerv_wrapper (gf12) cts__timing__hold__ws -53.65% (-233.0 → -108.0) Signed-off-by: Augusto Berndt --- flow/designs/gf12/aes/rules-base.json | 88 +--------- flow/designs/gf12/ariane/rules-base.json | 98 +---------- flow/designs/gf12/bp_single/rules-base.json | 166 +----------------- flow/designs/gf12/ca53/rules-base.json | 112 +----------- flow/designs/gf12/coyote/rules-base.json | 79 +-------- flow/designs/gf12/gcd/rules-base.json | 77 +------- flow/designs/gf12/ibex/rules-base.json | 68 +------ flow/designs/gf12/jpeg/rules-base.json | 82 +-------- .../gf12/swerv_wrapper/rules-base.json | 96 +--------- flow/designs/gf12/tinyRocket/rules-base.json | 84 +-------- flow/designs/rapidus2hp/cva6/rules-base.json | 12 +- .../rapidus2hp/cva6/rules-verific.json | 12 +- .../designs/rapidus2hp/ethmac/rules-base.json | 6 +- .../rapidus2hp/ethmac/rules-verific.json | 22 +-- flow/designs/rapidus2hp/gcd/rules-base.json | 12 +- .../designs/rapidus2hp/gcd/rules-verific.json | 12 +- .../hercules_idecode/rules-base.json | 10 +- .../hercules_idecode/rules-verific.json | 10 +- .../hercules_is_int/rules-base.json | 14 +- .../hercules_is_int/rules-verific.json | 12 +- flow/designs/rapidus2hp/ibex/rules-base.json | 8 +- .../rapidus2hp/ibex/rules-verific.json | 8 +- flow/designs/rapidus2hp/jpeg/rules-base.json | 8 +- .../rapidus2hp/jpeg/rules-verific.json | 16 +- 24 files changed, 116 insertions(+), 996 deletions(-) diff --git a/flow/designs/gf12/aes/rules-base.json b/flow/designs/gf12/aes/rules-base.json index 8f02936c9b..300288c9d1 100644 --- a/flow/designs/gf12/aes/rules-base.json +++ b/flow/designs/gf12/aes/rules-base.json @@ -1,86 +1,6 @@ { - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { - "value": 3732.67, + "value": 3710.0, "compare": "<=" }, "constraints__clocks__count": { @@ -88,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 4194, + "value": 4159, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -176,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 4273, + "value": 4236, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/ariane/rules-base.json b/flow/designs/gf12/ariane/rules-base.json index d3f7dd46aa..9f3daf7a8b 100644 --- a/flow/designs/gf12/ariane/rules-base.json +++ b/flow/designs/gf12/ariane/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 22, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0324": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0998": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0999": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 22, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 193105.1, "compare": "<=" @@ -118,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -216.0, + "value": -211.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -23400.0, + "value": -720.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -186,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 217031, + "value": 216957, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index 340146cb61..8ea08edb43 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -1,164 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 21, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 26, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 1020000.0, "compare": "<=" @@ -192,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2300.0, + "value": -400.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -200,7 +40,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -702.0, + "value": -681.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -259,4 +99,4 @@ "value": 479804, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index 9003fc3c89..a645f6104c 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -1,104 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 6, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 65, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:GRT-0281": { - "value": 18, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1648": { - "value": 360, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1650": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 10, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 65, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:GRT-0281": { - "value": 9, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "constraints__clocks__count": { "value": 1, "compare": "==" @@ -136,7 +36,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -512.0, + "value": -400.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -144,11 +44,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -233.0, + "value": -225.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2520.0, + "value": -1990.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -156,7 +56,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1130.0, + "value": -848.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -188,11 +88,11 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -7530.0, + "value": -4200.0, "compare": ">=" }, "finish__design__instance__area": { "value": 408918, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/coyote/rules-base.json b/flow/designs/gf12/coyote/rules-base.json index d45829c914..85ff6a26f9 100644 --- a/flow/designs/gf12/coyote/rules-base.json +++ b/flow/designs/gf12/coyote/rules-base.json @@ -1,79 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 196, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 172000.0, "compare": "<=" @@ -143,7 +68,7 @@ "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 2, + "value": 0, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -174,4 +99,4 @@ "value": 201687, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/gcd/rules-base.json b/flow/designs/gf12/gcd/rules-base.json index d720d927b6..a8115e9696 100644 --- a/flow/designs/gf12/gcd/rules-base.json +++ b/flow/designs/gf12/gcd/rules-base.json @@ -1,69 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:RSZ-0075": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 134.0, "compare": "<=" @@ -93,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -47.8, + "value": -46.3, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -299.0, + "value": -249.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -113,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -55.1, + "value": -54.9, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -342.0, + "value": -421.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -145,7 +80,7 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -41.0, + "value": -38.5, "compare": ">=" }, "finish__timing__setup__tns": { @@ -164,4 +99,4 @@ "value": 490, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/ibex/rules-base.json b/flow/designs/gf12/ibex/rules-base.json index 01f079ec63..3b63acb1a4 100644 --- a/flow/designs/gf12/ibex/rules-base.json +++ b/flow/designs/gf12/ibex/rules-base.json @@ -1,64 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 6241.99, "compare": "<=" @@ -88,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -117.0, + "value": -51.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -7370.0, + "value": -204.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -112,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2440.0, + "value": -204.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -159,4 +99,4 @@ "value": 7871, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/jpeg/rules-base.json b/flow/designs/gf12/jpeg/rules-base.json index 7f089596c5..e8303fd1b0 100644 --- a/flow/designs/gf12/jpeg/rules-base.json +++ b/flow/designs/gf12/jpeg/rules-base.json @@ -1,84 +1,4 @@ { - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GPL-0302": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 20440.28, "compare": "<=" @@ -179,4 +99,4 @@ "value": 21992, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 3eb2bfc31a..91abb7265e 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -1,94 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0066": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0011": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 156883.93, "compare": "<=" @@ -126,11 +36,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -233.0, + "value": -108.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -624.0, + "value": -370.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -189,4 +99,4 @@ "value": 177792, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index c5ec047df7..ff1e79d948 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -1,84 +1,4 @@ { - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0254": { - "value": 3, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0256": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:ODB-0260": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 2, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, "synth__design__instance__area__stdcell": { "value": 13122.1, "compare": "<=" @@ -132,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -359.0, + "value": -160.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -179,4 +99,4 @@ "value": 17222, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index b9faa1a39e..b3d8916728 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -52,15 +52,15 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -163000.0, + "value": -102000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -37.1, + "value": -36.1, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -144.0, + "value": -134.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -68,15 +68,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -163000.0, + "value": -102000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -37.1, + "value": -36.1, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -144.0, + "value": -134.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index 9204140e43..48cf574da6 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -52,15 +52,15 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -163000.0, + "value": -102000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -37.1, + "value": -36.1, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -144.0, + "value": -134.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -68,15 +68,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -163000.0, + "value": -102000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -37.1, + "value": -36.1, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -144.0, + "value": -134.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 7ee7c3cb8f..a36968403c 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -622.0, + "value": -537.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1410.0, + "value": -1040.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1410.0, + "value": -1040.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json index 4bf77d125b..990ef4f3fb 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-verific.json +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 3429, + "value": 3427, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 72627, + "value": 72530, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 6315, + "value": 6307, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 6315, + "value": 6307, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -34.4, + "value": -29.7, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -612.0, + "value": -449.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -56.6, + "value": -43.6, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1610.0, + "value": -1070.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -56.6, + "value": -43.6, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1610.0, + "value": -1070.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -80,7 +80,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 3601, + "value": 3599, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index 6b7afd5858..9c24ceb6c0 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -25.5, + "value": -25.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -296.0, + "value": -408.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -38.9, + "value": -37.2, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -821.0, + "value": -857.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -38.9, + "value": -37.2, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -821.0, + "value": -857.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-verific.json b/flow/designs/rapidus2hp/gcd/rules-verific.json index a6afb2c3d9..d2b3c42749 100644 --- a/flow/designs/rapidus2hp/gcd/rules-verific.json +++ b/flow/designs/rapidus2hp/gcd/rules-verific.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -26.5, + "value": -26.3, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -345.0, + "value": -212.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -38.9, + "value": -37.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -804.0, + "value": -725.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -38.9, + "value": -37.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -804.0, + "value": -725.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index 7f45832d79..c54876bb25 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -135.0, + "value": -126.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -555000.0, + "value": -458000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -135.0, + "value": -126.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -555000.0, + "value": -458000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -80,7 +80,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 11869, + "value": 11866, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json index c7a86c70b3..36024a65e7 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -295000.0, + "value": -260000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -152.0, + "value": -125.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -484000.0, + "value": -458000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -152.0, + "value": -125.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -484000.0, + "value": -458000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 658b616b80..9e2ed517b7 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -84.9, + "value": -78.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -396000.0, + "value": -308000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -158.0, + "value": -270.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1670000.0, + "value": -1430000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -158.0, + "value": -270.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1670000.0, + "value": -1430000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -80,7 +80,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33391, + "value": 33364, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index 4a2d229f3d..12f6d0c3df 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -62.1, + "value": -60.3, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -307000.0, + "value": -301000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -308.0, + "value": -255.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1380000.0, + "value": -1240000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -308.0, + "value": -255.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1380000.0, + "value": -1240000.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 5d5d787534..771eb06f14 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -54.4, + "value": -41.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10200.0, + "value": -1680.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -54.4, + "value": -41.4, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10200.0, + "value": -1680.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json index 13078ef86d..0b5f3e6500 100644 --- a/flow/designs/rapidus2hp/ibex/rules-verific.json +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -52.8, + "value": -41.4, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10200.0, + "value": -1680.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -52.8, + "value": -41.4, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10200.0, + "value": -1680.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-base.json b/flow/designs/rapidus2hp/jpeg/rules-base.json index c6896f08a7..a1ffef6aab 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-base.json +++ b/flow/designs/rapidus2hp/jpeg/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -47.4, + "value": -107.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8370.0, + "value": -44400.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -47.4, + "value": -107.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8370.0, + "value": -44400.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-verific.json b/flow/designs/rapidus2hp/jpeg/rules-verific.json index a249c0f0b3..f56f1591e9 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-verific.json +++ b/flow/designs/rapidus2hp/jpeg/rules-verific.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 3300.0, + "value": 3290.0, "compare": "<=" }, "constraints__clocks__count": { @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 99438, + "value": 99405, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 8647, + "value": 8644, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 8647, + "value": 8644, "compare": "<=" }, "cts__timing__setup__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -75.1, + "value": -53.1, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -6740.0, + "value": -8970.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -75.1, + "value": -53.1, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -6740.0, + "value": -8970.0, "compare": ">=" }, "finish__timing__hold__ws": { From b50b580ebdd7516de258c74c57d4a5d655703be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Thu, 15 Jan 2026 15:39:20 +0100 Subject: [PATCH 277/364] open: remove vestiges from when DRC errors were not in .odb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- flow/scripts/open.tcl | 1 - 1 file changed, 1 deletion(-) diff --git a/flow/scripts/open.tcl b/flow/scripts/open.tcl index 199300a814..48d881afca 100644 --- a/flow/scripts/open.tcl +++ b/flow/scripts/open.tcl @@ -51,7 +51,6 @@ proc read_timing { input_file } { log_cmd estimate_parasitics -global_routing } else { puts "No global routing results available, skipping estimate_parasitics" - puts "Load $::global_route_congestion_report for details" } } elseif { $design_stage >= 3 } { log_cmd estimate_parasitics -placement From 0d6e7a3d25b54ca87296e95ce9b8923271e13f73 Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Thu, 15 Jan 2026 16:44:16 +0000 Subject: [PATCH 278/364] fix tb logger Signed-off-by: Jack Luar --- tools/AutoTuner/src/autotuner/tensorboard_logger.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/AutoTuner/src/autotuner/tensorboard_logger.py b/tools/AutoTuner/src/autotuner/tensorboard_logger.py index 15230a633e..aaf9aed48e 100644 --- a/tools/AutoTuner/src/autotuner/tensorboard_logger.py +++ b/tools/AutoTuner/src/autotuner/tensorboard_logger.py @@ -31,15 +31,15 @@ def log_sweep_metrics( """Log metrics from a single sweep run""" self.writer.add_scalar("sweep/score", score, self.step) - if effective_clk_period != "-": + if isinstance(effective_clk_period, (int, float)): self.writer.add_scalar( "sweep/effective_clk_period", effective_clk_period, self.step ) - if num_drc != "-": + if isinstance(num_drc, (int, float)): self.writer.add_scalar("sweep/num_drc", num_drc, self.step) - if die_area != "-": + if isinstance(die_area, (int, float)): self.writer.add_scalar("sweep/die_area", die_area, self.step) for key, value in metrics.items(): From 3d36cd9d3f502adee6f330e8cd5d875613174838 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Thu, 15 Jan 2026 18:21:33 +0000 Subject: [PATCH 279/364] Revert "Private metrics for MPL changes" This reverts commit 47c82a95c73b3a5db57005d66245142af5344c17. Signed-off-by: Arthur Koucher --- flow/designs/gf12/bp_single/rules-base.json | 176 +++++++++++++++++- .../gf12/swerv_wrapper/rules-base.json | 98 +++++++++- flow/designs/gf12/tinyRocket/rules-base.json | 86 ++++++++- flow/designs/rapidus2hp/cva6/rules-base.json | 16 +- .../rapidus2hp/cva6/rules-verific.json | 16 +- 5 files changed, 361 insertions(+), 31 deletions(-) diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index c831fb6161..340146cb61 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -1,4 +1,164 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 21, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "detailedplace__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 6, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0142": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "finish__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0110": { + "value": 1001, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-0195": { + "value": 26, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-1031": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0015": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0016": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0017": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 4, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 6, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0142": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:STA-1551": { + "value": 40, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 1020000.0, "compare": "<=" @@ -32,15 +192,15 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1810.0, + "value": -2300.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -407.0, + "value": -243.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -5440.0, + "value": -702.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -56,11 +216,11 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -407.0, + "value": -253.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1770.0, + "value": -1320.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -84,11 +244,11 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1130.0, + "value": -518.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -210.0, + "value": -100.0, "compare": ">=" }, "finish__timing__hold__tns": { @@ -99,4 +259,4 @@ "value": 479804, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index ca7d886939..3eb2bfc31a 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -1,4 +1,94 @@ { + "cts__flow__warnings__count:CTS-0041": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "cts__flow__warnings__count:RSZ-0066": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0142": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:IFP-0028": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0011": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-1031": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0015": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0016": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0017": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0120": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0142": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:FLW-0010": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 156883.93, "compare": "<=" @@ -28,11 +118,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -290.0, + "value": -75.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -999.0, + "value": -300.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -92,11 +182,11 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -463.0, + "value": -508.0, "compare": ">=" }, "finish__design__instance__area": { "value": 177792, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index 363ee01720..c5ec047df7 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -1,4 +1,84 @@ { + "cts__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "detailedroute__flow__warnings__count:DRT-0142": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:EST-0027": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0254": { + "value": 3, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0256": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "floorplan__flow__warnings__count:ODB-0260": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:PDN-1031": { + "value": 2, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0014": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0015": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0016": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "flow__warnings__count:TAP-0017": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalplace__flow__warnings__count:GRT-0281": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:DRT-0142": { + "value": 5, + "compare": "<=", + "level": "warning" + }, + "globalroute__flow__warnings__count:RSZ-0062": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0020": { + "value": 1, + "compare": "<=", + "level": "warning" + }, + "placeopt__flow__warnings__count:RSZ-0095": { + "value": 1, + "compare": "<=", + "level": "warning" + }, "synth__design__instance__area__stdcell": { "value": 13122.1, "compare": "<=" @@ -32,7 +112,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -4150.0, + "value": -160.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +132,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -642.0, + "value": -359.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -99,4 +179,4 @@ "value": 17222, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index 964e3c8cd0..b9faa1a39e 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -106.0, + "value": -108.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -165000.0, + "value": -163000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -32.9, + "value": -37.1, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -125.0, + "value": -144.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -106.0, + "value": -108.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -165000.0, + "value": -163000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -32.9, + "value": -37.1, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -125.0, + "value": -144.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index beddfc9e3d..9204140e43 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -106.0, + "value": -108.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -165000.0, + "value": -163000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -32.9, + "value": -37.1, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -125.0, + "value": -144.0, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -106.0, + "value": -108.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -165000.0, + "value": -163000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -32.9, + "value": -37.1, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -125.0, + "value": -144.0, "compare": ">=" }, "finish__design__instance__area": { From 7a70489d98d029146ae11153bae8659bc8fb3086 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Thu, 15 Jan 2026 18:30:15 +0000 Subject: [PATCH 280/364] 1) update OR; 2) update failing private metrics: gf12/tinyRocket: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -160.0 | -1870.0 | Failing | | finish__design__instance__area | 17222 | 17217 | Tighten | gf12/bp_single: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -400.0 | -1900.0 | Failing | | cts__timing__hold__ws | -243.0 | -406.0 | Failing | | cts__timing__hold__tns | -681.0 | -1150.0 | Failing | | globalroute__timing__hold__ws | -253.0 | -409.0 | Failing | | globalroute__timing__hold__tns | -1320.0 | -1930.0 | Failing | | finish__timing__hold__ws | -100.0 | -204.0 | Failing | Signed-off-by: Arthur Koucher --- flow/designs/gf12/bp_single/rules-base.json | 12 ++++++------ flow/designs/gf12/tinyRocket/rules-base.json | 4 ++-- tools/OpenROAD | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index 8ea08edb43..c4dc27553c 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -32,15 +32,15 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -400.0, + "value": -1900.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -243.0, + "value": -406.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -681.0, + "value": -1150.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -56,11 +56,11 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -253.0, + "value": -409.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1320.0, + "value": -1930.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -88,7 +88,7 @@ "compare": ">=" }, "finish__timing__hold__ws": { - "value": -100.0, + "value": -204.0, "compare": ">=" }, "finish__timing__hold__tns": { diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index ff1e79d948..a415c76599 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -160.0, + "value": -1870.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 17222, + "value": 17217, "compare": "<=" } } \ No newline at end of file diff --git a/tools/OpenROAD b/tools/OpenROAD index ebfe3fe5f1..ff8e011a42 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit ebfe3fe5f1daeed5ed89574e20d40c1d581a5e42 +Subproject commit ff8e011a4285952042a25dcd1f084a44717ac833 From 85c2d5a5847990f209abb92d81a1a543edae748d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Thu, 15 Jan 2026 21:01:25 +0100 Subject: [PATCH 281/364] setup: clean out verilator vestiges MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit simulation testing is done from Bazel Signed-off-by: Øyvind Harboe --- etc/DependencyInstaller.sh | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/etc/DependencyInstaller.sh b/etc/DependencyInstaller.sh index 97975ed322..eba9024713 100755 --- a/etc/DependencyInstaller.sh +++ b/etc/DependencyInstaller.sh @@ -11,7 +11,6 @@ fi # package versions klayoutVersion=0.30.3 -verilatorVersion=5.026 numThreads=$(nproc) _versionCompare() { @@ -38,34 +37,6 @@ _installPipCommon() { fi } -_installVerilator() { - local baseDir - if [[ "$constantBuildDir" == "true" ]]; then - baseDir="/tmp/DependencyInstaller-ORFS" - if [[ -d "$baseDir" ]]; then - echo "[INFO] Removing old building directory $baseDir" - fi - mkdir -p "$baseDir" - else - baseDir=$(mktemp -d /tmp/DependencyInstaller-orfs-XXXXXX) - fi - - # Install Verilator - verilatorPrefix=`realpath ${PREFIX:-"/usr/local"}` - if [[ ! -x ${verilatorPrefix}/bin/verilator ]]; then - pushd $baseDir - git clone --depth=1 -b "v$verilatorVersion" https://github.com/verilator/verilator.git - pushd verilator - autoconf - ./configure --prefix "${verilatorPrefix}" - make -j "${numThreads}" - make install - popd - rm -r verilator - popd - fi -} - # Enterprise Linux 7 cleanup _install_EL7_CleanUp() { yum clean -y all @@ -472,7 +443,6 @@ case "${os}" in if [[ "${option}" == "common" || "${option}" == "all" ]]; then _installPipCommon - _installVerilator fi ;; "Ubuntu" | "Debian GNU/Linux rodete" ) @@ -494,7 +464,6 @@ case "${os}" in if _versionCompare ${version} -lt 23.04 ; then _installPipCommon fi - _installVerilator else echo "Skip common for rodete" fi @@ -510,7 +479,6 @@ case "${os}" in fi if [[ "${option}" == "common" || "${option}" == "all" ]]; then _installPipCommon - _installVerilator fi ;; *) From bd04dad406eda8e5b1500a7649d02a59843900b4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 15 Jan 2026 21:35:53 +0000 Subject: [PATCH 282/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 8 ++++---- flow/designs/asap7/swerv_wrapper/rules-base.json | 6 +++--- flow/designs/nangate45/ariane136/rules-base.json | 2 +- flow/designs/nangate45/bp_be_top/rules-base.json | 6 +++--- flow/designs/nangate45/bp_fe_top/rules-base.json | 2 +- flow/designs/nangate45/tinyRocket/rules-base.json | 4 ++-- flow/designs/sky130hd/microwatt/rules-base.json | 6 +++--- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 317e20fce4..93e58335c7 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -135.0, + "value": -173.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -8160.0, + "value": -9760.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -135.0, + "value": -172.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -7640.0, + "value": -8980.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 982a122a90..01884f82c2 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -84,15 +84,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -64500.0, + "value": -77500.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -197.0, + "value": -377.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -33200.0, + "value": -98800.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 391b486d1a..4aa0613a24 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -40,7 +40,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -2.98, + "value": -5.13, "compare": ">=" }, "globalroute__antenna_diodes_count": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 92bada3a7b..1ff3e01973 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -12.8, + "value": -19.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.6, + "value": -23.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17.1, + "value": -24.4, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index fec11277a7..34eb2f3deb 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.46, + "value": -3.9, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 26d645bd17..5ad545c3bd 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -23.6, + "value": -26.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -38.2, + "value": -38.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 1f038a6b79..6dac3e2cb5 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 2454, + "value": 2964, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -76,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1388, + "value": 1712, "compare": "<=" }, "finish__timing__setup__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -23.1, + "value": -36.3, "compare": ">=" }, "finish__design__instance__area": { From 7f4dccb173fcdcb2a7254353e05647824112b205 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Thu, 15 Jan 2026 23:02:35 +0000 Subject: [PATCH 283/364] Updated hercules_is_int utilization for PDK 0.3 Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/hercules_is_int/config.mk | 8 ++------ .../rapidus2hp/hercules_is_int/test/test_params.py | 4 +--- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_is_int/config.mk b/flow/designs/rapidus2hp/hercules_is_int/config.mk index 6dfad00a3d..a23252e545 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/config.mk +++ b/flow/designs/rapidus2hp/hercules_is_int/config.mk @@ -34,15 +34,11 @@ export SYNTH_HIERARCHICAL ?= 0 # | non-0.3 | slang | 8T | 52 | # | all | verific | 6T | 30 | # | non-0.3 | verific | 8T | 54 | -# | 0.3 | slang | 8T | 54 | -# | 0.3 | verific | 8T | 55 | +# | 0.3 | any | 8T | 56 | export CORE_UTILIZATION = $(strip \ $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ - $(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \ - 54, \ - 55 \ - ), \ + 56, \ $(if $(filter slang,$(SYNTH_HDL_FRONTEND)), \ $(if $(filter ra02h138_DST_45CPP SC6T,$(PLACE_SITE)), \ 30, \ diff --git a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py index fa6ed8287f..2a54d98df2 100755 --- a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py @@ -25,9 +25,7 @@ def get_exp_util(self, place_site, front_end, pdk_version): """Returns the expected value""" if pdk_version == "0.3": - if front_end == "verific": - return 55 - return 54 + return 56 if front_end == "verific": if place_site in ["SC6T", "ra02h138_DST_45CPP"]: return 30 From 77848ae1bdbeda82457ecc04d4c3eb9a98586f27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Thu, 15 Jan 2026 13:16:59 +0100 Subject: [PATCH 284/364] synth: improve canonicalization, introduce SYNTH_REPEATABLE_BUILD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 2 ++ flow/designs/nangate45/gcd/config.mk | 1 + flow/scripts/synth_canonicalize.tcl | 5 +++++ flow/scripts/variables.yaml | 10 ++++++++++ 4 files changed, 18 insertions(+) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 849694d481..ae1296a533 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -255,6 +255,7 @@ configuration file. | SYNTH_MOCK_LARGE_MEMORIES| Reduce Yosys inferred memories larger than SYNTH_MEMORY_MAX_BITS to 1 row. Yosys will generally infer memories from behavioral Verilog code, whether the memories are in standalone modules or instantiated within some larger module. fakeram and empty Verilog memories(blackboxes) of memories will not be inferred memories by Yosys and are therefore not affected by this variable. This is useful and convenient to separate the concern of instantiating and placing memories from investigating other issues with a design, though it comes at the expense of the increased accuracy that using realistic fakemem would provide. Memories with a single 1 row will of course have unrealistically good timing and area characteristics, but timing will still correctly terminate in a register. Large port memories, typically register files, will still have the retain a lot of the port logic that can be useful to investigate issues. This can be especially useful during development of designs where the behavioral model comes first and suitable memories are matched up when the design RTL is stable. A typical use case would be Chisel which will generate a behavioral model for a memories with the required clocks, ports, etc. in addition to a computer readable file with the specification of the memories that is used to [automatically](https://chipyard.readthedocs.io/en/stable/Tools/Barstools.html/) match up suitable memory macros later in the flow. During an architectural screening study, a large range of memory configurations can be investigated quickly with this option, without getting bogged down in the concern of how to realize the memories in silicon for emphemral RTL configurations that exist only long enough to run through the ORFS flow to create a table of some characteristics of a design configuration.| 0| | SYNTH_NETLIST_FILES| Skips synthesis and uses the supplied netlist files. If the netlist files contains duplicate modules, which can happen when using hierarchical synthesis on indvidual netlist files and combining here, subsequent modules are silently ignored and only the first module is used.| | | SYNTH_OPT_HIER| Optimize constants across hierarchical boundaries.| | +| SYNTH_REPEATABLE_BUILD| License to prune anything that makes builds less repeatable, typically used with Bazel to ensure that builds are bit-for-bit identical so that caching works optimally. Removes debug information that encodes paths, timestamps, etc.| 0| | SYNTH_RETIME_MODULES| *This is an experimental option and may cause adverse effects.* *No effort has been made to check if the retimed RTL is logically equivalent to the non-retimed RTL.* List of modules to apply automatic retiming to. These modules must not get dissolved and as such they should either be the top module or be included in SYNTH_KEEP_MODULES. The main use case is to quickly identify if performance can be improved by manually retiming the input RTL. Retiming will treat module ports like register endpoints/startpoints. The objective function of retiming isn't informed by SDC, even the clock period is ignored. As such, retiming will optimize for best delay at potentially high register number cost. Automatic retiming can produce suboptimal results as its timing model is crude and it doesn't find the optimal distribution of registers on long pipelines. See OR discussion #8080.| | | SYNTH_SLANG_ARGS| Additional arguments passed to the slang frontend during synthesis.| | | SYNTH_WRAPPED_ADDERS| Specify the adder modules that can be used for synthesis, separated by commas. The default adder module is determined by the first element of this variable.| | @@ -301,6 +302,7 @@ configuration file. - [SYNTH_MOCK_LARGE_MEMORIES](#SYNTH_MOCK_LARGE_MEMORIES) - [SYNTH_NETLIST_FILES](#SYNTH_NETLIST_FILES) - [SYNTH_OPT_HIER](#SYNTH_OPT_HIER) +- [SYNTH_REPEATABLE_BUILD](#SYNTH_REPEATABLE_BUILD) - [SYNTH_RETIME_MODULES](#SYNTH_RETIME_MODULES) - [SYNTH_SLANG_ARGS](#SYNTH_SLANG_ARGS) - [SYNTH_WRAPPED_ADDERS](#SYNTH_WRAPPED_ADDERS) diff --git a/flow/designs/nangate45/gcd/config.mk b/flow/designs/nangate45/gcd/config.mk index d7fc7a8bdd..b8ca1080a2 100644 --- a/flow/designs/nangate45/gcd/config.mk +++ b/flow/designs/nangate45/gcd/config.mk @@ -12,6 +12,7 @@ export CORE_UTILIZATION ?= 55 export PLACE_DENSITY_LB_ADDON = 0.20 export TNS_END_PERCENT = 100 export REMOVE_CELLS_FOR_EQY = TAPCELL* +export SYNTH_REPEATABLE_BUILD ?= 1 # This needs a smaller pitch to accomodate a small block export PDN_TCL ?= $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/grid_strategy-M1-M4-M7.tcl diff --git a/flow/scripts/synth_canonicalize.tcl b/flow/scripts/synth_canonicalize.tcl index 1c4384e200..4ba62a4523 100644 --- a/flow/scripts/synth_canonicalize.tcl +++ b/flow/scripts/synth_canonicalize.tcl @@ -7,5 +7,10 @@ source_env_var_if_exists SYNTH_CANONICALIZE_TCL # Get rid of unused modules opt_clean -purge +if { $::env(SYNTH_REPEATABLE_BUILD) } { + # avoid source line and path info affecting the hash + setattr -unset src * + setattr -mod -unset src * +} # The hash of this file will not change if files not part of synthesis do not change write_rtlil $::env(RESULTS_DIR)/1_1_yosys_canonicalize.rtlil diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 39604101c1..105ba944f7 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -295,6 +295,16 @@ SYNTH_RETIME_MODULES: optimal distribution of registers on long pipelines. See OR discussion #8080. stages: - synth +SYNTH_REPEATABLE_BUILD: + description: > + License to prune anything that makes builds less repeatable, typically + used with Bazel to ensure that builds are bit-for-bit identical so that + caching works optimally. + + Removes debug information that encodes paths, timestamps, etc. + stages: + - synth + default: 0 DFF_MAP_FILE: description: | Optional mapping file supplied to Yosys to map D flip-flops From d7a02f29e444cf16bda728a98850f2387d8bba47 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Fri, 16 Jan 2026 23:54:33 +0900 Subject: [PATCH 285/364] Used the latest OR w/ STA bug fix Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 702e355b15..36764173fa 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 702e355b1542851fc2de0b88d99653340fe4191c +Subproject commit 36764173fae6bb1eb4b35f0c2138f42b3cdfadd8 From 99bd602532f00a6f66ad27e147b4b331fe7089c9 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Fri, 16 Jan 2026 23:55:17 +0900 Subject: [PATCH 286/364] Rebased rules-base.json. **nangate45/ariane133** CORE_UTILIZATION: 60 -> 50 // Due to MPL fail **Private PDK** gf12/tinyRocket [ERROR] cts__timing__setup__tns fail test: -1713.22 >= -160 gf12/bp_single [ERROR] cts__timing__setup__tns fail test: -1503.59 >= -400 [ERROR] cts__timing__hold__ws fail test: -306.007 >= -243 [ERROR] cts__timing__hold__tns fail test: -747.789 >= -681 [ERROR] globalroute__timing__hold__ws fail test: -308.631 >= -253 [ERROR] globalroute__timing__hold__tns fail test: -1530.74 >= -1320 [ERROR] finish__timing__hold__ws fail test: -103.519 >= -100 **Public PDK** designs/asap7/aes-block/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__design__instance__count__hold_buffer | 1863 | 1506 | Tighten | | cts__timing__setup__ws | -135.0 | -173.0 | Failing | | cts__timing__setup__tns | -8160.0 | -9760.0 | Failing | | globalroute__timing__setup__ws | -135.0 | -172.0 | Failing | | globalroute__timing__setup__tns | -7640.0 | -8980.0 | Failing | designs/asap7/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -8930.0 | -35900.0 | Failing | | globalroute__timing__setup__tns | -35400.0 | -51200.0 | Failing | | finish__timing__setup__tns | -22600.0 | -32500.0 | Failing | designs/asap7/riscv32i/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -53.4 | -50.0 | Tighten | | globalroute__timing__setup__tns | -205.0 | -200.0 | Tighten | designs/asap7/riscv32i-mock-sram/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__ws | -81.1 | -54.9 | Tighten | | globalroute__timing__setup__tns | -318.0 | -211.0 | Tighten | | finish__timing__setup__ws | -86.5 | -50.0 | Tighten | | finish__timing__setup__tns | -2390.0 | -200.0 | Tighten | designs/asap7/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__ws | -330.0 | -268.0 | Tighten | | finish__timing__setup__tns | -64500.0 | -77500.0 | Failing | | finish__timing__hold__ws | -197.0 | -377.0 | Failing | | finish__timing__hold__tns | -33200.0 | -98800.0 | Failing | designs/gf180/ibex/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.531 | -0.518 | Tighten | | cts__timing__setup__tns | -2.14 | -2.04 | Tighten | | globalroute__timing__setup__ws | -0.725 | -0.683 | Tighten | | globalroute__timing__setup__tns | -4.63 | -3.74 | Tighten | | detailedroute__route__wirelength | 1369456 | 1368630 | Tighten | designs/gf180/jpeg/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__count__stdcell | 51361 | 51347 | Tighten | | cts__design__instance__count__setup_buffer | 4466 | 4465 | Tighten | | cts__design__instance__count__hold_buffer | 4466 | 4465 | Tighten | designs/gf180/uart-blocks/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__count__stdcell | 726 | 714 | Tighten | | cts__design__instance__count__setup_buffer | 63 | 62 | Tighten | | cts__design__instance__count__hold_buffer | 63 | 62 | Tighten | | detailedroute__route__wirelength | 18889 | 17335 | Tighten | designs/nangate45/ariane136/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__hold__tns | -2.98 | -5.13 | Failing | | detailedroute__route__wirelength | 8079438 | 8034950 | Tighten | designs/nangate45/ariane133/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.324 | -0.499 | Failing | | cts__timing__setup__tns | -214.0 | -582.0 | Failing | | globalroute__timing__setup__ws | -0.361 | -0.599 | Failing | | globalroute__timing__setup__tns | -271.0 | -782.0 | Failing | | detailedroute__route__wirelength | 6662734 | 8528322 | Failing | | finish__timing__setup__ws | -0.349 | -0.595 | Failing | | finish__timing__setup__tns | -258.0 | -810.0 | Failing | designs/nangate45/black_parrot/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -2.96 | -2.88 | Tighten | | globalroute__timing__setup__ws | -3.12 | -3.04 | Tighten | | finish__timing__setup__ws | -2.94 | -2.85 | Tighten | designs/nangate45/bp_be_top/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -12.8 | -19.8 | Failing | | globalroute__timing__setup__tns | -18.6 | -23.8 | Failing | | finish__timing__setup__tns | -17.1 | -24.4 | Failing | designs/nangate45/bp_fe_top/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | finish__timing__setup__tns | -1.46 | -3.9 | Failing | designs/nangate45/swerv/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -13.5 | -4.66 | Tighten | | globalroute__timing__setup__tns | -52.8 | -14.2 | Tighten | | finish__timing__setup__tns | -43.1 | -5.21 | Tighten | designs/nangate45/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 729734 | 726502 | Tighten | | placeopt__design__instance__count__stdcell | 110432 | 108442 | Tighten | | cts__design__instance__count__setup_buffer | 9603 | 9430 | Tighten | | cts__design__instance__count__hold_buffer | 9603 | 9430 | Tighten | | cts__timing__setup__ws | -0.218 | -0.164 | Tighten | | cts__timing__setup__tns | -70.4 | -21.7 | Tighten | | globalroute__antenna_diodes_count | 108 | 106 | Tighten | | globalroute__timing__setup__tns | -48.3 | -0.416 | Tighten | | detailedroute__route__wirelength | 4051905 | 4012435 | Tighten | | detailedroute__antenna_diodes_count | 108 | 106 | Tighten | | finish__timing__setup__ws | -0.225 | -0.2 | Tighten | | finish__timing__setup__tns | -78.0 | -4.12 | Tighten | | finish__timing__hold__tns | -2.82 | -2.35 | Tighten | | finish__design__instance__area | 735619 | 731983 | Tighten | designs/nangate45/tinyRocket/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.146 | -0.14 | Tighten | | cts__timing__setup__tns | -23.6 | -26.4 | Failing | | globalroute__timing__setup__ws | -0.171 | -0.17 | Tighten | | globalroute__timing__setup__tns | -45.7 | -44.5 | Tighten | | finish__timing__setup__tns | -38.2 | -38.6 | Failing | designs/sky130hd/microwatt/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | placeopt__design__instance__area | 5434210 | 5433922 | Tighten | | cts__timing__setup__tns | -332.0 | -281.0 | Tighten | | globalroute__antenna_diodes_count | 2454 | 2964 | Failing | | globalroute__timing__setup__tns | -393.0 | -377.0 | Tighten | | detailedroute__antenna_diodes_count | 1388 | 1712 | Failing | | finish__timing__setup__tns | -166.0 | -150.0 | Tighten | | finish__timing__hold__tns | -23.1 | -36.3 | Failing | Signed-off-by: Jaehyun Kim --- flow/designs/asap7/aes-block/rules-base.json | 10 +++---- flow/designs/asap7/ibex/rules-base.json | 6 ++-- .../asap7/riscv32i-mock-sram/rules-base.json | 8 +++--- flow/designs/asap7/riscv32i/rules-base.json | 4 +-- .../asap7/swerv_wrapper/rules-base.json | 8 +++--- flow/designs/gf12/bp_single/rules-base.json | 12 ++++---- flow/designs/gf12/tinyRocket/rules-base.json | 4 +-- flow/designs/gf180/ibex/rules-base.json | 10 +++---- flow/designs/gf180/jpeg/rules-base.json | 6 ++-- .../designs/gf180/uart-blocks/rules-base.json | 8 +++--- flow/designs/nangate45/ariane133/config.mk | 2 +- .../nangate45/ariane133/rules-base.json | 14 +++++----- .../nangate45/ariane136/rules-base.json | 4 +-- .../nangate45/black_parrot/rules-base.json | 6 ++-- .../nangate45/bp_be_top/rules-base.json | 6 ++-- .../nangate45/bp_fe_top/rules-base.json | 2 +- flow/designs/nangate45/swerv/rules-base.json | 6 ++-- .../nangate45/swerv_wrapper/rules-base.json | 28 +++++++++---------- .../nangate45/tinyRocket/rules-base.json | 10 +++---- .../sky130hd/microwatt/rules-base.json | 14 +++++----- 20 files changed, 84 insertions(+), 84 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 317e20fce4..5faefdc4d1 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -24,15 +24,15 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1863, + "value": 1506, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -135.0, + "value": -173.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -8160.0, + "value": -9760.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -135.0, + "value": -172.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -7640.0, + "value": -8980.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index c66bb3540c..dc798568c4 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -8930.0, + "value": -35900.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -35400.0, + "value": -51200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -22600.0, + "value": -32500.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 8f41ec20eb..08a9101576 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -81.1, + "value": -54.9, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -318.0, + "value": -211.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -86.5, + "value": -50.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2390.0, + "value": -200.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/riscv32i/rules-base.json b/flow/designs/asap7/riscv32i/rules-base.json index 8c9b8ad189..ae37e5c315 100644 --- a/flow/designs/asap7/riscv32i/rules-base.json +++ b/flow/designs/asap7/riscv32i/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -53.4, + "value": -50.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -205.0, + "value": -200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 982a122a90..2df24cb190 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -80,19 +80,19 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -330.0, + "value": -268.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -64500.0, + "value": -77500.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -197.0, + "value": -377.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -33200.0, + "value": -98800.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index 8ea08edb43..b97250dd9f 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -32,15 +32,15 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -400.0, + "value": -1510.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -243.0, + "value": -310.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -681.0, + "value": -750.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -56,11 +56,11 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -253.0, + "value": -310.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1320.0, + "value": -1540.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -88,7 +88,7 @@ "compare": ">=" }, "finish__timing__hold__ws": { - "value": -100.0, + "value": -105.0, "compare": ">=" }, "finish__timing__hold__tns": { diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index ff1e79d948..1ef7ea8e8a 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -160.0, + "value": -1720.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -99,4 +99,4 @@ "value": 17222, "compare": "<=" } -} \ No newline at end of file +} diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 1d4de5942e..d96db84815 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.531, + "value": -0.518, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2.14, + "value": -2.04, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.725, + "value": -0.683, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -4.63, + "value": -3.74, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1369456, + "value": 1368630, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/gf180/jpeg/rules-base.json b/flow/designs/gf180/jpeg/rules-base.json index e1886d6f75..9da8363f53 100644 --- a/flow/designs/gf180/jpeg/rules-base.json +++ b/flow/designs/gf180/jpeg/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 51361, + "value": 51347, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 4466, + "value": 4465, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 4466, + "value": 4465, "compare": "<=" }, "cts__timing__setup__ws": { diff --git a/flow/designs/gf180/uart-blocks/rules-base.json b/flow/designs/gf180/uart-blocks/rules-base.json index 550f2f7174..ebaff07c6e 100644 --- a/flow/designs/gf180/uart-blocks/rules-base.json +++ b/flow/designs/gf180/uart-blocks/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 726, + "value": 714, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 63, + "value": 62, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 63, + "value": 62, "compare": "<=" }, "cts__timing__setup__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 18889, + "value": 17335, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/ariane133/config.mk b/flow/designs/nangate45/ariane133/config.mk index 7e2d41bd63..62f97bc08b 100644 --- a/flow/designs/nangate45/ariane133/config.mk +++ b/flow/designs/nangate45/ariane133/config.mk @@ -12,7 +12,7 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/ariane133/ariane.sdc export ADDITIONAL_LEFS = $(PLATFORM_DIR)/lef/fakeram45_256x16.lef export ADDITIONAL_LIBS = $(PLATFORM_DIR)/lib/fakeram45_256x16.lib -export CORE_UTILIZATION = 60 +export CORE_UTILIZATION = 50 export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 5 diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index f01ef828a7..9117cad73e 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.324, + "value": -0.499, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -214.0, + "value": -582.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.361, + "value": -0.599, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -271.0, + "value": -782.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 6662734, + "value": 8528322, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.349, + "value": -0.595, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -258.0, + "value": -810.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 391b486d1a..11462ccd93 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -40,7 +40,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -2.98, + "value": -5.13, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8079438, + "value": 8034950, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/black_parrot/rules-base.json b/flow/designs/nangate45/black_parrot/rules-base.json index 97139c3f3b..fc21694bef 100644 --- a/flow/designs/nangate45/black_parrot/rules-base.json +++ b/flow/designs/nangate45/black_parrot/rules-base.json @@ -28,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -2.96, + "value": -2.88, "compare": ">=" }, "cts__timing__setup__tns": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -3.12, + "value": -3.04, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -80,7 +80,7 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -2.94, + "value": -2.85, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 92bada3a7b..1ff3e01973 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -12.8, + "value": -19.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.6, + "value": -23.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17.1, + "value": -24.4, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index fec11277a7..34eb2f3deb 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1.46, + "value": -3.9, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv/rules-base.json b/flow/designs/nangate45/swerv/rules-base.json index 29a0f9ad75..2f57d0893b 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13.5, + "value": -4.66, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -52.8, + "value": -14.2, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -43.1, + "value": -5.21, "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 748bd942e9..2c16600267 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 729734, + "value": 726502, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 110432, + "value": 108442, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,19 +20,19 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 9603, + "value": 9430, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 9603, + "value": 9430, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.218, + "value": -0.164, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -70.4, + "value": -21.7, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 108, + "value": 106, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -48.3, + "value": -0.416, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4051905, + "value": 4012435, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -76,15 +76,15 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 108, + "value": 106, "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.225, + "value": -0.2, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -78.0, + "value": -4.12, "compare": ">=" }, "finish__timing__hold__ws": { @@ -92,11 +92,11 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.82, + "value": -2.35, "compare": ">=" }, "finish__design__instance__area": { - "value": 735619, + "value": 731983, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 26d645bd17..3d15e286e3 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.146, + "value": -0.14, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -23.6, + "value": -26.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.171, + "value": -0.17, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -45.7, + "value": -44.5, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -38.2, + "value": -38.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 1f038a6b79..5975158f30 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 5434210, + "value": 5433922, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -332.0, + "value": -281.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 2454, + "value": 2964, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -393.0, + "value": -377.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -76,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1388, + "value": 1712, "compare": "<=" }, "finish__timing__setup__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -166.0, + "value": -150.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -23.1, + "value": -36.3, "compare": ">=" }, "finish__design__instance__area": { From b7c958c20869f736b531c49116c8c885a7570824 Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Fri, 16 Jan 2026 15:13:48 +0000 Subject: [PATCH 287/364] implement score calculation module (used for tune/sweep) Signed-off-by: Jack Luar --- tools/AutoTuner/src/autotuner/distributed.py | 15 ++-------- tools/AutoTuner/src/autotuner/utils.py | 29 ++++++++++++++------ 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/tools/AutoTuner/src/autotuner/distributed.py b/tools/AutoTuner/src/autotuner/distributed.py index 7a3f752553..2a264a4c36 100644 --- a/tools/AutoTuner/src/autotuner/distributed.py +++ b/tools/AutoTuner/src/autotuner/distributed.py @@ -92,6 +92,8 @@ read_config, read_metrics, prepare_ray_server, + calculate_score, + ERROR_METRIC, CONSTRAINTS_SDC, FASTROUTE_TCL, ) @@ -99,8 +101,6 @@ # Name of the final metric METRIC = "metric" -# The worst of optimized metric -ERROR_METRIC = 9e99 # Path to the FLOW_HOME directory ORFS_FLOW_DIR = os.path.abspath( os.path.join(os.path.dirname(__file__), "../../../../flow") @@ -173,16 +173,7 @@ def evaluate(self, metrics): It can change in any form to minimize the score (return value). Default evaluation function optimizes effective clock period. """ - error = "ERR" in metrics.values() - not_found = "N/A" in metrics.values() - if error or not_found: - return (ERROR_METRIC, "-", "-", "-") - effective_clk_period = metrics["clk_period"] - metrics["worst_slack"] - num_drc = metrics["num_drc"] - gamma = effective_clk_period / 10 - score = effective_clk_period - score = score * (100 / self.step_) + gamma * num_drc - return (score, effective_clk_period, num_drc, metrics["die_area"]) + return calculate_score(metrics, step=self.step_) def _is_valid_config(self, config): """ diff --git a/tools/AutoTuner/src/autotuner/utils.py b/tools/AutoTuner/src/autotuner/utils.py index 64ee0f684d..7b43e25c83 100644 --- a/tools/AutoTuner/src/autotuner/utils.py +++ b/tools/AutoTuner/src/autotuner/utils.py @@ -69,6 +69,24 @@ # Name of the TCL script run before routing FASTROUTE_TCL = "fastroute.tcl" DATE = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") +# The worst of optimized metric +ERROR_METRIC = 9e99 + + +def calculate_score(metrics, step=1): + """Calculate optimization score from metrics.""" + error = "ERR" in metrics.values() + not_found = "N/A" in metrics.values() + + if error or not_found: + return (ERROR_METRIC, "-", "-", "-") + + effective_clk_period = metrics["clk_period"] - metrics["worst_slack"] + num_drc = metrics["num_drc"] + gamma = effective_clk_period / 10 + score = effective_clk_period * (100 / step) + gamma * num_drc + + return (score, effective_clk_period, num_drc, metrics["die_area"]) def write_sdc(variables, path, sdc_original, constraints_sdc): @@ -708,12 +726,7 @@ def consumer(queue): print(f"[INFO TUN-0008] Finished run for parameter {config}.") metrics = read_metrics(metric_file, args.stop_stage) - effective_clk_period = ( - metrics["clk_period"] - metrics["worst_slack"] - if metrics["worst_slack"] not in ("ERR", "N/A") - else "-" - ) - score = effective_clk_period if effective_clk_period != "-" else 999999.0 + score, effective_clk_period, num_drc, die_area = calculate_score(metrics) ray.get( tb_logger.log_sweep_metrics.remote( @@ -721,8 +734,8 @@ def consumer(queue): metrics=metrics, score=score, effective_clk_period=effective_clk_period, - num_drc=metrics.get("num_drc", "-"), - die_area=metrics.get("die_area", "-"), + num_drc=num_drc, + die_area=die_area, ) ) From 10e92e9e71f17a9ad72e8ffbfe8027a675341965 Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Fri, 16 Jan 2026 15:56:11 +0000 Subject: [PATCH 288/364] bugfix: use correct hparam/score value for invalids Signed-off-by: Jack Luar --- tools/AutoTuner/src/autotuner/tensorboard_logger.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/AutoTuner/src/autotuner/tensorboard_logger.py b/tools/AutoTuner/src/autotuner/tensorboard_logger.py index aaf9aed48e..59bdc582a6 100644 --- a/tools/AutoTuner/src/autotuner/tensorboard_logger.py +++ b/tools/AutoTuner/src/autotuner/tensorboard_logger.py @@ -5,6 +5,8 @@ import ray from tensorboardX import SummaryWriter +from autotuner.utils import ERROR_METRIC + logger = logging.getLogger(__name__) @@ -51,7 +53,7 @@ def log_sweep_metrics( k: v if isinstance(v, (int, float, str, bool)) else str(v) for k, v in params.items() }, - {"hparam/score": score if score != 999999.0 else 0.0}, + {"hparam/score": score if score < ERROR_METRIC else 0.0}, ) self.step += 1 From 40513d37d957d7941edb1297515aad12a32e519d Mon Sep 17 00:00:00 2001 From: Jonas Gava Date: Fri, 16 Jan 2026 17:22:58 +0000 Subject: [PATCH 289/364] update metrics for new res-aware strategy Signed-off-by: Jonas Gava --- flow/designs/rapidus2hp/ethmac/rules-base.json | 4 ++-- flow/designs/rapidus2hp/ethmac/rules-verific.json | 4 ++-- flow/designs/rapidus2hp/gcd/rules-base.json | 4 ++-- flow/designs/rapidus2hp/gcd/rules-verific.json | 4 ++-- .../rapidus2hp/hercules_idecode/rules-base.json | 10 +++++----- .../designs/rapidus2hp/hercules_is_int/rules-base.json | 10 +++++----- .../rapidus2hp/hercules_is_int/rules-verific.json | 10 +++++----- flow/designs/rapidus2hp/ibex/rules-base.json | 4 ++-- flow/designs/rapidus2hp/ibex/rules-verific.json | 4 ++-- flow/designs/rapidus2hp/jpeg/rules-verific.json | 4 ++-- 10 files changed, 29 insertions(+), 29 deletions(-) diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index a36968403c..1a77558d08 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1040.0, + "value": -1270.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1040.0, + "value": -1270.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json index 990ef4f3fb..d351492acb 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-verific.json +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1070.0, + "value": -1340.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1070.0, + "value": -1340.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index 9c24ceb6c0..e0caadde8b 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -857.0, + "value": -951.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -857.0, + "value": -951.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-verific.json b/flow/designs/rapidus2hp/gcd/rules-verific.json index d2b3c42749..6c9e4ff94c 100644 --- a/flow/designs/rapidus2hp/gcd/rules-verific.json +++ b/flow/designs/rapidus2hp/gcd/rules-verific.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -725.0, + "value": -822.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -725.0, + "value": -822.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index c54876bb25..2754aace13 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -126.0, + "value": -120.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -458000.0, + "value": -474000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -126.0, + "value": -120.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -458000.0, + "value": -474000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -80,7 +80,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 11866, + "value": 11865, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 9e2ed517b7..75fcb503f2 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -270.0, + "value": -145.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1430000.0, + "value": -1530000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -270.0, + "value": -145.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1430000.0, + "value": -1530000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -80,7 +80,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33364, + "value": 33275, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index 12f6d0c3df..8196310acd 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -255.0, + "value": -136.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1240000.0, + "value": -1640000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -255.0, + "value": -136.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1240000.0, + "value": -1640000.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -80,7 +80,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 33555, + "value": 33377, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 771eb06f14..1e1502f520 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1680.0, + "value": -5770.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1680.0, + "value": -5770.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json index 0b5f3e6500..061ec4e8ff 100644 --- a/flow/designs/rapidus2hp/ibex/rules-verific.json +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1680.0, + "value": -5770.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1680.0, + "value": -5770.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-verific.json b/flow/designs/rapidus2hp/jpeg/rules-verific.json index f56f1591e9..2238d634e0 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-verific.json +++ b/flow/designs/rapidus2hp/jpeg/rules-verific.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8970.0, + "value": -15400.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8970.0, + "value": -15400.0, "compare": ">=" }, "finish__timing__hold__ws": { From 714bab73bf1f462c3317accbdda34e0ad04332ca Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Fri, 16 Jan 2026 14:24:57 -0300 Subject: [PATCH 290/364] use grt_merge branch Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index ff8e011a42..01c26e41cc 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit ff8e011a4285952042a25dcd1f084a44717ac833 +Subproject commit 01c26e41cc1b16f263193547c6b58c2f32988967 From 717073334d50bda35dff4cf63b97366d1361c5d4 Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Fri, 16 Jan 2026 17:28:56 +0000 Subject: [PATCH 291/364] * hparam/score -> hparam/metric * metrics: show error scores as 9e99 Signed-off-by: Jack Luar --- tools/AutoTuner/src/autotuner/tensorboard_logger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/AutoTuner/src/autotuner/tensorboard_logger.py b/tools/AutoTuner/src/autotuner/tensorboard_logger.py index 59bdc582a6..6e0dbf9200 100644 --- a/tools/AutoTuner/src/autotuner/tensorboard_logger.py +++ b/tools/AutoTuner/src/autotuner/tensorboard_logger.py @@ -53,7 +53,7 @@ def log_sweep_metrics( k: v if isinstance(v, (int, float, str, bool)) else str(v) for k, v in params.items() }, - {"hparam/score": score if score < ERROR_METRIC else 0.0}, + {"hparam/metric": score}, ) self.step += 1 From 8d0a1c861ccdc06b5a3007bf247a39ef1ba19877 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Fri, 16 Jan 2026 18:06:33 +0000 Subject: [PATCH 292/364] Tightened rapidus2hp cva6 for PDK 0.2 metrics update for verific Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/cva6/config.mk | 2 +- flow/designs/rapidus2hp/cva6/constraint.sdc | 2 +- flow/designs/rapidus2hp/cva6/rules-verific.json | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/config.mk b/flow/designs/rapidus2hp/cva6/config.mk index b0e780c715..d5f01835b3 100644 --- a/flow/designs/rapidus2hp/cva6/config.mk +++ b/flow/designs/rapidus2hp/cva6/config.mk @@ -117,7 +117,7 @@ export SDC_FILE = $(strip \ )) # Must be defined before the ifeq's -export SYNTH_HDL_FRONTEND = slang +export SYNTH_HDL_FRONTEND ?= slang export SYNTH_HIERARCHICAL = 1 export CORE_UTILIZATION = 65 diff --git a/flow/designs/rapidus2hp/cva6/constraint.sdc b/flow/designs/rapidus2hp/cva6/constraint.sdc index 159a0649cc..3107eb6e7c 100644 --- a/flow/designs/rapidus2hp/cva6/constraint.sdc +++ b/flow/designs/rapidus2hp/cva6/constraint.sdc @@ -5,7 +5,7 @@ source $::env(PLATFORM_DIR)/util.tcl set clk_name main_clk set clk_port clk_i set clk_ports_list [list $clk_port] -set clk_period 1125 +set clk_period 800 convert_time_value clk_period diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index 48cf574da6..b08cad7363 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -36,11 +36,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -56.2, + "value": -54.9, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -268.0, + "value": -1320.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -52,15 +52,15 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -102000.0, + "value": -89500.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -36.1, + "value": -31.4, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -134.0, + "value": -125.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -68,15 +68,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -102000.0, + "value": -89500.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -36.1, + "value": -31.4, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -134.0, + "value": -125.0, "compare": ">=" }, "finish__design__instance__area": { From 45528605fe5754529bb258bc96a2404ccedbbcd6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 16 Jan 2026 19:15:47 +0000 Subject: [PATCH 293/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/nangate45/ariane133/rules-base.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 9117cad73e..b7e8e15724 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -582.0, + "value": -626.0, "compare": ">=" }, "cts__timing__hold__ws": { From 6e01e1570208923a82e6a18a8b354957e3ab54df Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Fri, 16 Jan 2026 17:54:53 -0300 Subject: [PATCH 294/364] bump or Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 01c26e41cc..1c530cdcaf 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 01c26e41cc1b16f263193547c6b58c2f32988967 +Subproject commit 1c530cdcafe63105330d6aab0e69484433b5bebc From c7beb1529b5e73eb6aab77b9c5418803d9d9fa86 Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Sat, 17 Jan 2026 13:44:39 +0000 Subject: [PATCH 295/364] at: enable sweeping over categorical/string parameters in sweep mode * can now perform multi-parameter sweeps combining numeric ranges and discrete string choices Signed-off-by: Jack Luar --- tools/AutoTuner/src/autotuner/distributed.py | 21 +++++++++++++++----- tools/AutoTuner/src/autotuner/utils.py | 2 ++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/tools/AutoTuner/src/autotuner/distributed.py b/tools/AutoTuner/src/autotuner/distributed.py index c5b07dc74c..3208fcded2 100644 --- a/tools/AutoTuner/src/autotuner/distributed.py +++ b/tools/AutoTuner/src/autotuner/distributed.py @@ -569,13 +569,24 @@ def sweep(): queue = Queue() parameter_list = list() for name, content in config_dict.items(): - if not isinstance(content, list): + if isinstance(content, dict) and content.get("type") == "string": + if "values" not in content: + print( + f"[ERROR TUN-0016] {name} string parameter missing 'values' field." + ) + sys.exit(1) + if not isinstance(content["values"], list) or len(content["values"]) == 0: + print(f"[ERROR TUN-0017] {name} 'values' must be a non-empty list.") + sys.exit(1) + parameter_list.append([{name: i} for i in content["values"]]) + elif isinstance(content, list): + if content[-1] == 0: + print("[ERROR TUN-0014] Sweep does not support step value zero.") + sys.exit(1) + parameter_list.append([{name: i} for i in np.arange(*content)]) + else: print(f"[ERROR TUN-0015] {name} sweep is not supported.") sys.exit(1) - if content[-1] == 0: - print("[ERROR TUN-0014] Sweep does not support step value zero.") - sys.exit(1) - parameter_list.append([{name: i} for i in np.arange(*content)]) parameter_list = list(product(*parameter_list)) for parameter in parameter_list: temp = dict() diff --git a/tools/AutoTuner/src/autotuner/utils.py b/tools/AutoTuner/src/autotuner/utils.py index fadab40325..7fc7f577c0 100644 --- a/tools/AutoTuner/src/autotuner/utils.py +++ b/tools/AutoTuner/src/autotuner/utils.py @@ -442,6 +442,8 @@ def read(path): return ret def read_sweep(this): + if this.get("type") == "string": + return {"type": "string", "values": this["values"]} return [*this["minmax"], this["step"]] def apply_condition(config, data): From e3b5bd547eac4da8e6a6d592210bf61ed5b2a90d Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Sat, 17 Jan 2026 14:51:43 +0000 Subject: [PATCH 296/364] bump or again Signed-off-by: Eder Monteiro --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 1c530cdcaf..bdb8e7c239 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 1c530cdcafe63105330d6aab0e69484433b5bebc +Subproject commit bdb8e7c23968b99d60200d819ba7a5227cf09fbe From c41017b2085923e4314ca0ae9985fd9924f40aec Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sat, 17 Jan 2026 15:47:41 +0000 Subject: [PATCH 297/364] testing: fast default local smoke testing of future slang and hierachical Signed-off-by: Matt Liberty --- flow/designs/sky130hs/gcd/config.mk | 3 +++ flow/designs/sky130hs/gcd/rules-base.json | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/flow/designs/sky130hs/gcd/config.mk b/flow/designs/sky130hs/gcd/config.mk index bb3841d55a..51b0d87b38 100644 --- a/flow/designs/sky130hs/gcd/config.mk +++ b/flow/designs/sky130hs/gcd/config.mk @@ -13,3 +13,6 @@ export PLACE_DENSITY_LB_ADDON = 0.1 export TNS_END_PERCENT = 100 export EQUIVALENCE_CHECK ?= 1 export REMOVE_CELLS_FOR_EQY = sky130_fd_sc_hs__tapvpwrvgnd* + +#export SYNTH_HDL_FRONTEND ?= slang +#export OPENROAD_HIERARCHICAL ?= 1 diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 4a60b077ca..3122a2c09a 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10.5, + "value": -11.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -16.3, + "value": -16.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -12.0, + "value": -12.7, "compare": ">=" }, "finish__timing__hold__ws": { From f62ba8db45567f27ff2c3cf3b3fca693d6e6435d Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Sat, 17 Jan 2026 17:12:33 +0000 Subject: [PATCH 298/364] update public metrics for grt merge nets fix Signed-off-by: Eder Monteiro --- flow/designs/asap7/aes/rules-base.json | 4 ++-- flow/designs/asap7/ibex/rules-base.json | 4 ++-- flow/designs/gf180/aes-hybrid/rules-base.json | 2 +- flow/designs/nangate45/bp_fe_top/rules-base.json | 2 +- flow/designs/nangate45/jpeg/rules-base.json | 2 +- flow/designs/nangate45/mempool_group/rules-base.json | 6 +++--- flow/designs/sky130hd/jpeg/rules-base.json | 6 +++--- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index c075e2c832..cfbcbb4447 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2020.0, + "value": -2010.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -779.0, + "value": -911.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index dc798568c4..64b8f30c8a 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -126.0, + "value": -125.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -32500.0, + "value": -34700.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 6aa28e58ef..c0223ba3c1 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -158.0, + "value": -160.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 34eb2f3deb..7155a327f1 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3.9, + "value": -4.33, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 9560dcdda5..77ce68793d 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -49.2, + "value": -50.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index b4d56c02a7..bfc08e6fa3 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10600.0, + "value": -10700.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -76,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 170, + "value": 169, "compare": "<=" }, "finish__timing__setup__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10300.0, + "value": -12500.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index f71c0d3e70..beaa90b067 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 101, + "value": 102, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8.68, + "value": -6.89, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -76,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 112, + "value": 119, "compare": "<=" }, "finish__timing__setup__ws": { From b43338b360e2f199d6112430b60ab7ffae989acb Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Sun, 18 Jan 2026 01:26:58 +0000 Subject: [PATCH 299/364] update metrics for private designs Signed-off-by: Eder Monteiro --- flow/designs/rapidus2hp/cva6/rules-base.json | 16 ++++++++-------- flow/designs/rapidus2hp/cva6/rules-verific.json | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index b3d8916728..828239ab23 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -36,11 +36,11 @@ "compare": ">=" }, "cts__timing__hold__ws": { - "value": -56.2, + "value": -34.4, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -268.0, + "value": -127.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -52,15 +52,15 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -102000.0, + "value": -180000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -36.1, + "value": -30.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -134.0, + "value": -120.0, "compare": ">=" }, "finish__timing__setup__ws": { @@ -68,15 +68,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -102000.0, + "value": -180000.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -36.1, + "value": -30.0, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -134.0, + "value": -120.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index b08cad7363..f8002e2289 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -108.0, + "value": -90.6, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -89500.0, + "value": -151000.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -108.0, + "value": -90.6, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -89500.0, + "value": -151000.0, "compare": ">=" }, "finish__timing__hold__ws": { From 752126d490debb6c8d02b7a3041f06d919ab1d09 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sun, 18 Jan 2026 16:58:03 +0000 Subject: [PATCH 300/364] black format with 26.1.0 Signed-off-by: Matt Liberty --- flow/util/appendStatsToDb.py | 1 - flow/util/genMassive.py | 1 - flow/util/genReport.py | 1 + flow/util/plot_congestion.py | 1 - tools/AutoTuner/src/autotuner/distributed.py | 2 +- 5 files changed, 2 insertions(+), 4 deletions(-) diff --git a/flow/util/appendStatsToDb.py b/flow/util/appendStatsToDb.py index a4ef3da524..dbf73ac177 100755 --- a/flow/util/appendStatsToDb.py +++ b/flow/util/appendStatsToDb.py @@ -14,7 +14,6 @@ import uuid from collections import OrderedDict - # Parse and validate arguments # ============================================================================== parser = argparse.ArgumentParser(description="Appends test metadata to master database") diff --git a/flow/util/genMassive.py b/flow/util/genMassive.py index c05da0926e..14260a48b0 100644 --- a/flow/util/genMassive.py +++ b/flow/util/genMassive.py @@ -11,7 +11,6 @@ import itertools import glob - PUBLIC = ["nangate45", "sky130hd", "sky130hs", "asap7"] # The number of generated config files into diff --git a/flow/util/genReport.py b/flow/util/genReport.py index 402c0efde4..f08fdd20e6 100755 --- a/flow/util/genReport.py +++ b/flow/util/genReport.py @@ -2,6 +2,7 @@ """ Generate reports from current logs """ + import argparse import os import re diff --git a/flow/util/plot_congestion.py b/flow/util/plot_congestion.py index da6ce3056b..dfa0e600a1 100644 --- a/flow/util/plot_congestion.py +++ b/flow/util/plot_congestion.py @@ -4,7 +4,6 @@ import re import os - sweep = sys.argv[1] output = sys.argv[2] remainder = sys.argv[3:] diff --git a/tools/AutoTuner/src/autotuner/distributed.py b/tools/AutoTuner/src/autotuner/distributed.py index c5b07dc74c..f49f9b6451 100644 --- a/tools/AutoTuner/src/autotuner/distributed.py +++ b/tools/AutoTuner/src/autotuner/distributed.py @@ -154,7 +154,7 @@ def step(self): install_path=INSTALL_PATH, ) self.step_ += 1 - (score, effective_clk_period, num_drc, die_area) = self.evaluate( + score, effective_clk_period, num_drc, die_area = self.evaluate( read_metrics(metrics_file, args.stop_stage) ) # Feed the score back to Tune. From 4026f5fc3712281136ff9ed5a208602f82e2d29e Mon Sep 17 00:00:00 2001 From: Noam Cohen Date: Mon, 19 Jan 2026 18:57:31 +0100 Subject: [PATCH 301/364] recent fixes(mainly name sorting) + run time improvement Signed-off-by: nanocoh --- tools/kepler-formal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/kepler-formal b/tools/kepler-formal index c1edd4a196..7878b973b4 160000 --- a/tools/kepler-formal +++ b/tools/kepler-formal @@ -1 +1 @@ -Subproject commit c1edd4a196536385255f4c882e4001d534d4638b +Subproject commit 7878b973b427ff733c1e0325517438543e5c1849 From 80e55b65cc56f595308aedeccf0a00c06b4cd774 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Mon, 19 Jan 2026 16:56:47 -0300 Subject: [PATCH 302/364] flow: add MPL variable for data flow driven macro placement Signed-off-by: Arthur Koucher --- docs/user/FlowVariables.md | 2 ++ flow/scripts/macro_place_util.tcl | 4 ++++ flow/scripts/variables.yaml | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index ae1296a533..3c6f82902e 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -202,6 +202,7 @@ configuration file. | RTLMP_AREA_WT| Weight for the area of the current floorplan.| 0.1| | RTLMP_ARGS| Overrides all other RTL macro placer arguments.| | | RTLMP_BOUNDARY_WT| Weight for the boundary or how far the hard macro clusters are from boundaries.| 50.0| +| RTLMP_DATA_FLOW_DRIVEN| Specifies whether the macro placer should use data-flow driven macro placement. Data-flow driven works by adding a wire length component that takes into account the data paths of the design. This optional can increase run time significantly for large designs.| 1| | RTLMP_FENCE_LX| Defines the lower left X coordinate for the global fence bounding box in microns.| 0.0| | RTLMP_FENCE_LY| Defines the lower left Y coordinate for the global fence bounding box in microns.| 0.0| | RTLMP_FENCE_UX| Defines the upper right X coordinate for the global fence bounding box in microns.| 0.0| @@ -348,6 +349,7 @@ configuration file. - [RTLMP_AREA_WT](#RTLMP_AREA_WT) - [RTLMP_ARGS](#RTLMP_ARGS) - [RTLMP_BOUNDARY_WT](#RTLMP_BOUNDARY_WT) +- [RTLMP_DATA_FLOW_DRIVEN](#RTLMP_DATA_FLOW_DRIVEN) - [RTLMP_FENCE_LX](#RTLMP_FENCE_LX) - [RTLMP_FENCE_LY](#RTLMP_FENCE_LY) - [RTLMP_FENCE_UX](#RTLMP_FENCE_UX) diff --git a/flow/scripts/macro_place_util.tcl b/flow/scripts/macro_place_util.tcl index c59e1adead..ab64deb685 100644 --- a/flow/scripts/macro_place_util.tcl +++ b/flow/scripts/macro_place_util.tcl @@ -60,6 +60,10 @@ if { [find_macros] != "" } { append additional_rtlmp_args " -target_util [place_density_with_lb_addon]" + if { $::env(RTLMP_DATA_FLOW_DRIVEN) } { + append additional_rtlmp_args " -data_flow_driven" + } + set all_args $additional_rtlmp_args if { [env_var_exists_and_non_empty RTLMP_ARGS] } { diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 105ba944f7..4a75744397 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1155,6 +1155,15 @@ RTLMP_FENCE_UY: default: 0.0 stages: - floorplan +RTLMP_DATA_FLOW_DRIVEN: + description: > + Specifies whether the macro placer should use data-flow driven macro placement. + Data-flow driven works by adding a wire length component that takes into account + the data paths of the design. This optional can increase run time significantly + for large designs. + default: 1 + stages: + - floorplan RTLMP_ARGS: description: > Overrides all other RTL macro placer arguments. From b5a00bf0278b8811203e953ce8d16c7306c5aedd Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Mon, 19 Jan 2026 16:57:36 -0300 Subject: [PATCH 303/364] update OR Signed-off-by: Arthur Koucher --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index bdb8e7c239..701085d1e5 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit bdb8e7c23968b99d60200d819ba7a5227cf09fbe +Subproject commit 701085d1e57df45a6aee387c04309628e0233ba8 From 769389f60979d22a37d4d7aaa25768ecc0772e09 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Tue, 20 Jan 2026 16:15:12 +0000 Subject: [PATCH 304/364] gf12/bp_quad: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -13100.0 | -53900.0 | Failing | | globalroute__timing__setup__ws | -119.0 | -117.0 | Tighten | | globalroute__timing__setup__tns | -462.0 | -448.0 | Tighten | | detailedroute__route__drc_errors | 4 | 0 | Tighten | | finish__timing__setup__ws | -204.0 | -201.0 | Tighten | | finish__timing__setup__tns | -1380.0 | -1330.0 | Tighten | Signed-off-by: Matt Liberty --- flow/designs/gf12/bp_quad/rules-base.json | 159 +--------------------- 1 file changed, 7 insertions(+), 152 deletions(-) diff --git a/flow/designs/gf12/bp_quad/rules-base.json b/flow/designs/gf12/bp_quad/rules-base.json index 83cb115e19..7d4687acda 100644 --- a/flow/designs/gf12/bp_quad/rules-base.json +++ b/flow/designs/gf12/bp_quad/rules-base.json @@ -1,149 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 21, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 76, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 39, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 76, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, "constraints__clocks__count": { "value": 8, "compare": "==" @@ -173,7 +28,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13100.0, + "value": -53900.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -189,11 +44,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -119.0, + "value": -117.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -462.0, + "value": -448.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -209,7 +64,7 @@ "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 4, + "value": 0, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -221,11 +76,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -204.0, + "value": -201.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1380.0, + "value": -1330.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -240,4 +95,4 @@ "value": 1523750, "compare": "<=" } -} +} \ No newline at end of file From c29c386fdc9be12f82b7f22d0dc499204f108220 Mon Sep 17 00:00:00 2001 From: Noam Cohen Date: Tue, 20 Jan 2026 18:02:17 +0100 Subject: [PATCH 305/364] tcl lint Signed-off-by: nanocoh --- flow/scripts/lec_check.tcl | 1 - 1 file changed, 1 deletion(-) diff --git a/flow/scripts/lec_check.tcl b/flow/scripts/lec_check.tcl index bdae00bc70..b89b8cb5ad 100644 --- a/flow/scripts/lec_check.tcl +++ b/flow/scripts/lec_check.tcl @@ -36,4 +36,3 @@ proc run_lec_test { step file1 file2 } { puts "Repair timing output passed lec test" } } - From 8a409458a9eb45a328455c17fec5afb1e7435837 Mon Sep 17 00:00:00 2001 From: luis201420 Date: Tue, 20 Jan 2026 18:11:51 +0000 Subject: [PATCH 306/364] update asap7/ethmac metrics Signed-off-by: luis201420 --- flow/designs/asap7/ethmac/rules-base.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flow/designs/asap7/ethmac/rules-base.json b/flow/designs/asap7/ethmac/rules-base.json index 0caa6f4ffd..4830c0904e 100644 --- a/flow/designs/asap7/ethmac/rules-base.json +++ b/flow/designs/asap7/ethmac/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -2800.0, + "value": -2870.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3720.0, + "value": -3840.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3040.0, + "value": -3180.0, "compare": ">=" }, "finish__timing__hold__ws": { From 0c444a1c9b07b89c375d44a9cdb412ff71fe0be7 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Tue, 20 Jan 2026 15:35:16 -0300 Subject: [PATCH 307/364] update OR Signed-off-by: Arthur Koucher --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 701085d1e5..9383f3306f 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 701085d1e57df45a6aee387c04309628e0233ba8 +Subproject commit 9383f3306fae9210055a71166877b59b0680a4b9 From ae5c0c9e6799d6ff7f20a4d4d3706b5d0b203094 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Tue, 20 Jan 2026 17:32:39 +0000 Subject: [PATCH 308/364] Fixed SYNTH_HDL_FRONTEND for rapidus2hp ibex when FLOW_VARIANT is verific black formatting Signed-off-by: Jeff Ng --- .../rapidus2hp/cva6/test/test_params.py | 12 ++++++++++- .../rapidus2hp/ethmac/test/test_params.py | 2 +- .../rapidus2hp/gcd/test/test_params.py | 2 +- .../hercules_idecode/test/test_params.py | 12 ++++++++++- .../hercules_is_int/test/test_params.py | 12 ++++++++++- flow/designs/rapidus2hp/ibex/config.mk | 6 ++++-- .../rapidus2hp/ibex/rules-verific.json | 18 ++++++++-------- .../rapidus2hp/ibex/test/test_params.py | 12 ++++++++++- .../rapidus2hp/jpeg/test/test_params.py | 2 +- .../rapidus2hp/utils/param_test_base.py | 21 ++++++++++++++----- 10 files changed, 76 insertions(+), 23 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/test/test_params.py b/flow/designs/rapidus2hp/cva6/test/test_params.py index b04c8bc987..22872457f5 100755 --- a/flow/designs/rapidus2hp/cva6/test/test_params.py +++ b/flow/designs/rapidus2hp/cva6/test/test_params.py @@ -19,7 +19,7 @@ class TestParams(ParamTestBase): def setUp(self): """Sets up test variables""" - ParamTestBase.set_up(self, "cva6") + ParamTestBase.setUp(self, "cva6") def get_exp_sdc(self, place_site, pdk_version): """Returns the expected SDC file path""" @@ -92,6 +92,16 @@ def test_pdk_0p3(self): exp_sdc = self.get_exp_sdc(place_site, pdk_version) self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + def test_flow_variant(self): + """Tests that setting the flow variant uses the right frontend""" + + test_tag = "flow_variant default" + cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND") + self.execute_cmd_int(cmd, test_tag, "slang") + test_tag = "flow_variant verific" + cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND", "verific") + self.execute_cmd_int(cmd, test_tag, "verific") + if __name__ == "__main__": unittest.main() diff --git a/flow/designs/rapidus2hp/ethmac/test/test_params.py b/flow/designs/rapidus2hp/ethmac/test/test_params.py index cbbe764f02..a024b3d317 100755 --- a/flow/designs/rapidus2hp/ethmac/test/test_params.py +++ b/flow/designs/rapidus2hp/ethmac/test/test_params.py @@ -19,7 +19,7 @@ class TestParams(ParamTestBase): def setUp(self): """Sets up test variables""" - ParamTestBase.set_up(self, "ethmac") + ParamTestBase.setUp(self, "ethmac") def get_exp_util(self, place_site, pdk_version): """Returns the expected utilization""" diff --git a/flow/designs/rapidus2hp/gcd/test/test_params.py b/flow/designs/rapidus2hp/gcd/test/test_params.py index 60cb50d929..e79f23ae1f 100755 --- a/flow/designs/rapidus2hp/gcd/test/test_params.py +++ b/flow/designs/rapidus2hp/gcd/test/test_params.py @@ -19,7 +19,7 @@ class TestParams(ParamTestBase): def setUp(self): """Sets up test variables""" - ParamTestBase.set_up(self, "gcd") + ParamTestBase.setUp(self, "gcd") def get_exp_util(self, place_site, pdk_version): """Returns the expected value""" diff --git a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py index 93c5f0d4ff..d60fa4aa74 100755 --- a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py @@ -19,7 +19,7 @@ class TestParams(ParamTestBase): def setUp(self): """Sets up test variables""" - ParamTestBase.set_up(self, "hercules_idecode") + ParamTestBase.setUp(self, "hercules_idecode") def get_exp_util(self, place_site, front_end): """Returns the expected value""" @@ -98,6 +98,16 @@ def test_pdk_0p3(self): place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) + def test_flow_variant(self): + """Tests that setting the flow variant uses the right frontend""" + + test_tag = "flow_variant default" + cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND") + self.execute_cmd_int(cmd, test_tag, "slang") + test_tag = "flow_variant verific" + cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND", "verific") + self.execute_cmd_int(cmd, test_tag, "verific") + if __name__ == "__main__": unittest.main() diff --git a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py index 2a54d98df2..4844d65900 100755 --- a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py @@ -19,7 +19,7 @@ class TestParams(ParamTestBase): def setUp(self): """Sets up test variables""" - ParamTestBase.set_up(self, "hercules_is_int") + ParamTestBase.setUp(self, "hercules_is_int") def get_exp_util(self, place_site, front_end, pdk_version): """Returns the expected value""" @@ -100,6 +100,16 @@ def test_pdk_0p3(self): place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util ) + def test_flow_variant(self): + """Tests that setting the flow variant uses the right frontend""" + + test_tag = "flow_variant default" + cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND") + self.execute_cmd_int(cmd, test_tag, "slang") + test_tag = "flow_variant verific" + cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND", "verific") + self.execute_cmd_int(cmd, test_tag, "verific") + if __name__ == "__main__": unittest.main() diff --git a/flow/designs/rapidus2hp/ibex/config.mk b/flow/designs/rapidus2hp/ibex/config.mk index 3af6a1dd57..e41753f71c 100644 --- a/flow/designs/rapidus2hp/ibex/config.mk +++ b/flow/designs/rapidus2hp/ibex/config.mk @@ -7,13 +7,15 @@ ifeq ($(FLOW_VARIANT), verific) export SYNTH_HDL_FRONTEND = verific endif -export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/ibex_sv/*.sv)) \ +export VERILOG_FILES = \ + $(DESIGN_HOME)/src/ibex_sv/ibex_pkg.sv \ + $(sort $(wildcard $(DESIGN_HOME)/src/ibex_sv/*.sv)) \ $(DESIGN_HOME)/src/ibex_sv/syn/rtl/prim_clock_gating.v export VERILOG_INCLUDE_DIRS = \ $(DESIGN_HOME)/src/ibex_sv/vendor/lowrisc_ip/prim/rtl/ -export SYNTH_HDL_FRONTEND = slang +export SYNTH_HDL_FRONTEND ?= slang # if FLOW_VARIANT == pos_slack, use an SDC file that has a larger clock diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json index 061ec4e8ff..71ae0f471c 100644 --- a/flow/designs/rapidus2hp/ibex/rules-verific.json +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -1,6 +1,6 @@ { "synth__design__instance__area__stdcell": { - "value": 1050.0, + "value": 1030.0, "compare": "<=" }, "constraints__clocks__count": { @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 1067, + "value": 1060, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 20402, + "value": 20243, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,11 +20,11 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 1774, + "value": 1760, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1774, + "value": 1760, "compare": "<=" }, "cts__timing__setup__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -41.4, + "value": -97.8, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -5770.0, + "value": -47700.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -41.4, + "value": -97.8, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5770.0, + "value": -47700.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/test/test_params.py b/flow/designs/rapidus2hp/ibex/test/test_params.py index 4a8aa9fa66..1496793c1b 100755 --- a/flow/designs/rapidus2hp/ibex/test/test_params.py +++ b/flow/designs/rapidus2hp/ibex/test/test_params.py @@ -19,7 +19,7 @@ class TestParams(ParamTestBase): def setUp(self): """Sets up test variables""" - ParamTestBase.set_up(self, "ibex") + ParamTestBase.setUp(self, "ibex") def get_exp_util(self, place_site, pdk_version): """Returns the expected utilization""" @@ -127,6 +127,16 @@ def test_pdk_0p3(self): ) self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + def test_flow_variant(self): + """Tests that setting the flow variant uses the right frontend""" + + test_tag = "flow_variant default" + cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND") + self.execute_cmd_int(cmd, test_tag, "slang") + test_tag = "flow_variant verific" + cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND", "verific") + self.execute_cmd_int(cmd, test_tag, "verific") + if __name__ == "__main__": unittest.main() diff --git a/flow/designs/rapidus2hp/jpeg/test/test_params.py b/flow/designs/rapidus2hp/jpeg/test/test_params.py index cf35de1be9..f0d784a61d 100755 --- a/flow/designs/rapidus2hp/jpeg/test/test_params.py +++ b/flow/designs/rapidus2hp/jpeg/test/test_params.py @@ -19,7 +19,7 @@ class TestParams(ParamTestBase): def setUp(self): """Sets up test variables""" - ParamTestBase.set_up(self, "jpeg") + ParamTestBase.setUp(self, "jpeg") def get_exp_sdc(self, place_site, pdk_version): """Returns the expected SDC file path""" diff --git a/flow/designs/rapidus2hp/utils/param_test_base.py b/flow/designs/rapidus2hp/utils/param_test_base.py index 735c9d5d9a..3f720e3ca9 100644 --- a/flow/designs/rapidus2hp/utils/param_test_base.py +++ b/flow/designs/rapidus2hp/utils/param_test_base.py @@ -9,7 +9,7 @@ class ParamTestBase(unittest.TestCase): """Base class for testing params""" - def set_up(self, design_name): + def setUp(self, design_name): """ Sets up common member variables. Assumes we're running in flow directory @@ -18,8 +18,8 @@ def set_up(self, design_name): self._platform = "rapidus2hp" self._design = design_name self._design_dir = os.path.join("designs", self._platform, self._design) - self._design_full_dir = os.path.join(os.getcwd(), self._design_dir) self._cmd_base = f"make DESIGN_CONFIG={self._design_dir}/config.mk" + self._design_full_dir = os.path.join(os.getcwd(), self._design_dir) self._result_re = re.compile(r"\S+\s+\=\s+(\S+)") self._front_end_list = ["", "slang", "verific"] self._ibm_site_list = ["", "SC6T", "SC8T"] @@ -34,7 +34,9 @@ def get_track_height(self, place_site): return "6T" return "8T" - def build_cmd(self, place_site, pdk_version, front_end, param_name): + def build_cmd( + self, place_site, pdk_version, front_end, param_name, flow_variant=None + ): """Builds the command to execute""" str_buf = [self._cmd_base] @@ -44,18 +46,27 @@ def build_cmd(self, place_site, pdk_version, front_end, param_name): str_buf.append(f"RAPIDUS_PDK_VERSION={pdk_version}") if front_end == "verific": str_buf.append(f"SYNTH_HDL_FRONTEND={front_end}") + if flow_variant and flow_variant != "": + str_buf.append(f"FLOW_VARIANT={flow_variant}") str_buf.append(f"print-{param_name}") return " ".join(str_buf) def execute_cmd(self, place_site, pdk_version, front_end, param_name, exp_result): """ Executes command - check if return code is 0 - check if value matches expected result """ test_tag = f"'{place_site}' '{pdk_version}' '{front_end}'" cmd = self.build_cmd(place_site, pdk_version, front_end, param_name) + self.execute_cmd_int(cmd, test_tag, exp_result) + + def execute_cmd_int(self, cmd, test_tag, exp_result): + """ + Executes command + check if return code is 0 + check if value matches expected result + """ + out = subprocess.run( cmd, check=True, shell=True, capture_output=True, text=True ) From 06cdb7aaa270011f8f1a187d9620a17d1f460943 Mon Sep 17 00:00:00 2001 From: luis201420 Date: Tue, 20 Jan 2026 18:18:50 +0000 Subject: [PATCH 309/364] update rapidus2hp/ethmac metrics Signed-off-by: luis201420 --- flow/designs/rapidus2hp/ethmac/rules-base.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 1a77558d08..d3c19c1286 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -28,7 +28,7 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -34.0, + "value": -31.4, "compare": ">=" }, "cts__timing__setup__tns": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1270.0, + "value": -1570.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1270.0, + "value": -1570.0, "compare": ">=" }, "finish__timing__hold__ws": { From 16472efa92760ecd642ee387691c9bcb97f00131 Mon Sep 17 00:00:00 2001 From: luis201420 Date: Tue, 20 Jan 2026 18:19:07 +0000 Subject: [PATCH 310/364] update rapidus2hp/hercules_is_int metrics Signed-off-by: luis201420 --- flow/designs/rapidus2hp/hercules_is_int/rules-base.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 75fcb503f2..34bfd00d50 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -308000.0, + "value": -370000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -145.0, + "value": -143.0, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -64,7 +64,7 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -145.0, + "value": -143.0, "compare": ">=" }, "finish__timing__setup__tns": { From a9fc2fa6cb286dec977591d9310522adffb7398c Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Wed, 21 Jan 2026 12:05:25 +0900 Subject: [PATCH 311/364] flat, orig code Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 702e355b15..9d40ad5fd8 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 702e355b1542851fc2de0b88d99653340fe4191c +Subproject commit 9d40ad5fd89386c27b120c1742ef47c1477a87fe From 7f8b783a679f08e3a626f99af66acca4d11df702 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Wed, 21 Jan 2026 12:09:43 +0900 Subject: [PATCH 312/364] flat, enable fix Signed-off-by: Jaehyun Kim --- flow/scripts/cts.tcl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flow/scripts/cts.tcl b/flow/scripts/cts.tcl index 49262c6dc5..5be0c9ed2a 100644 --- a/flow/scripts/cts.tcl +++ b/flow/scripts/cts.tcl @@ -3,6 +3,8 @@ source $::env(SCRIPTS_DIR)/load.tcl erase_non_stage_variables cts load_design 3_place.odb 3_place.sdc +set_debug_level CTS htree_builder_fix 1 + # Clone clock tree inverters next to register loads # so cts does not try to buffer the inverted clocks. repair_clock_inverters From 2229af1f72ac52ac73255a5c6f4765813619b389 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Wed, 21 Jan 2026 14:52:10 +0900 Subject: [PATCH 313/364] flat, orig code (2nd. to trigger secure-CI) Signed-off-by: Jaehyun Kim --- flow/scripts/cts.tcl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flow/scripts/cts.tcl b/flow/scripts/cts.tcl index 5be0c9ed2a..7114801eb2 100644 --- a/flow/scripts/cts.tcl +++ b/flow/scripts/cts.tcl @@ -3,7 +3,8 @@ source $::env(SCRIPTS_DIR)/load.tcl erase_non_stage_variables cts load_design 3_place.odb 3_place.sdc -set_debug_level CTS htree_builder_fix 1 +# jk: +#set_debug_level CTS htree_builder_fix 1 # Clone clock tree inverters next to register loads # so cts does not try to buffer the inverted clocks. From 47f5960ef2e859d9ea233f63da3aa8f086ee90c5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 21 Jan 2026 13:20:47 +0000 Subject: [PATCH 314/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 4 ++-- flow/designs/ihp-sg13g2/jpeg/rules-base.json | 2 +- flow/designs/sky130hd/microwatt/rules-base.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 5faefdc4d1..7bc97adbfe 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8980.0, + "value": -9110.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3890.0, + "value": -4470.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/ihp-sg13g2/jpeg/rules-base.json b/flow/designs/ihp-sg13g2/jpeg/rules-base.json index d28151aba1..98d0190bdc 100644 --- a/flow/designs/ihp-sg13g2/jpeg/rules-base.json +++ b/flow/designs/ihp-sg13g2/jpeg/rules-base.json @@ -76,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 110, + "value": 115, "compare": "<=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 5975158f30..fc7ffeab0e 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -72,11 +72,11 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 6, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1712, + "value": 1756, "compare": "<=" }, "finish__timing__setup__ws": { From e3165843d6967345ed8782a65fb84d8575d3f65b Mon Sep 17 00:00:00 2001 From: Noam Cohen Date: Wed, 21 Jan 2026 22:48:53 +0100 Subject: [PATCH 315/364] fixing gcd Signed-off-by: nanocoh --- tools/kepler-formal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/kepler-formal b/tools/kepler-formal index 7878b973b4..2c0f78e748 160000 --- a/tools/kepler-formal +++ b/tools/kepler-formal @@ -1 +1 @@ -Subproject commit 7878b973b427ff733c1e0325517438543e5c1849 +Subproject commit 2c0f78e7483333dd0d5340cbb3567f96dd290d53 From 163255a46d6feec0f855d2976f5dd31ed26f0a2a Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Thu, 22 Jan 2026 11:44:39 +0900 Subject: [PATCH 316/364] flat, fix2 (removed debug codes) Signed-off-by: Jaehyun Kim --- flow/scripts/cts.tcl | 3 --- tools/OpenROAD | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/flow/scripts/cts.tcl b/flow/scripts/cts.tcl index 7114801eb2..49262c6dc5 100644 --- a/flow/scripts/cts.tcl +++ b/flow/scripts/cts.tcl @@ -3,9 +3,6 @@ source $::env(SCRIPTS_DIR)/load.tcl erase_non_stage_variables cts load_design 3_place.odb 3_place.sdc -# jk: -#set_debug_level CTS htree_builder_fix 1 - # Clone clock tree inverters next to register loads # so cts does not try to buffer the inverted clocks. repair_clock_inverters diff --git a/tools/OpenROAD b/tools/OpenROAD index 9d40ad5fd8..e7ee9a0582 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 9d40ad5fd89386c27b120c1742ef47c1477a87fe +Subproject commit e7ee9a058232e6401a342111da1e075ae9587348 From 04c1cebcc2c7bb8fc9d5c42a78dc4cd4cabd8da3 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Thu, 22 Jan 2026 16:03:16 +0900 Subject: [PATCH 317/364] flat, fix3 (after master merge) Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index e7ee9a0582..7aefdbd814 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit e7ee9a058232e6401a342111da1e075ae9587348 +Subproject commit 7aefdbd8148380b2ce49aa34c02b7e640481ae2a From ed0f86bc1d69e24225bd95473f0c94de7b1ff78f Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Thu, 22 Jan 2026 16:04:34 +0900 Subject: [PATCH 318/364] hier, fix3 Signed-off-by: Jaehyun Kim --- flow/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flow/Makefile b/flow/Makefile index 43d7eb60f6..7f4dd25a30 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -2,6 +2,8 @@ # file to avoid having to adding the to the make command line. -include settings.mk +export OPENROAD_HIERARCHICAL=1 + # ============================================================================== # Uncomment or add the design to run # ============================================================================== From 5bdab63c1ab5c53ef91160d5c865e8e2fd441293 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Thu, 22 Jan 2026 16:09:11 +0900 Subject: [PATCH 319/364] wrap, fix3 Signed-off-by: Jaehyun Kim --- flow/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/flow/Makefile b/flow/Makefile index 7f4dd25a30..cd111e20b7 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -3,6 +3,7 @@ -include settings.mk export OPENROAD_HIERARCHICAL=1 +export SYNTH_WRAPPED_OPERATORS=1 # ============================================================================== # Uncomment or add the design to run From 685b529a9d5c28a824bb98b1dbc20bac03c8c73a Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Thu, 22 Jan 2026 16:09:50 +0900 Subject: [PATCH 320/364] swap, fix3 Signed-off-by: Jaehyun Kim --- flow/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flow/Makefile b/flow/Makefile index cd111e20b7..35d4393735 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -3,7 +3,8 @@ -include settings.mk export OPENROAD_HIERARCHICAL=1 -export SYNTH_WRAPPED_OPERATORS=1 +#export SYNTH_WRAPPED_OPERATORS=1 +export SWAP_ARITH_OPERATORS=1 # ============================================================================== # Uncomment or add the design to run From 6ce36445681b8c4d7f301dfee7e332a2af94c6b3 Mon Sep 17 00:00:00 2001 From: vvbandeira <9001905+vvbandeira@users.noreply.github.com> Date: Thu, 22 Jan 2026 08:12:48 +0000 Subject: [PATCH 321/364] [BOT] Update OpenROAD submodule Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 9383f3306f..3e96f9860f 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 9383f3306fae9210055a71166877b59b0680a4b9 +Subproject commit 3e96f9860f0808c6eea40d4f12b635fff2cb5061 From 4add1bfafb0e1d9b1fe5da960d1376ab943ff133 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Thu, 22 Jan 2026 22:44:39 +0900 Subject: [PATCH 322/364] flat, ORFS master merge Signed-off-by: Jaehyun Kim --- flow/Makefile | 4 ---- tools/OpenROAD | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/flow/Makefile b/flow/Makefile index 35d4393735..43d7eb60f6 100644 --- a/flow/Makefile +++ b/flow/Makefile @@ -2,10 +2,6 @@ # file to avoid having to adding the to the make command line. -include settings.mk -export OPENROAD_HIERARCHICAL=1 -#export SYNTH_WRAPPED_OPERATORS=1 -export SWAP_ARITH_OPERATORS=1 - # ============================================================================== # Uncomment or add the design to run # ============================================================================== diff --git a/tools/OpenROAD b/tools/OpenROAD index 7aefdbd814..3943eb487b 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 7aefdbd8148380b2ce49aa34c02b7e640481ae2a +Subproject commit 3943eb487bc06ec99b1831d1d35dbc5c993a03e0 From 3dd85085002afe6619893dde528e8543690d29c0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 22 Jan 2026 14:50:42 +0000 Subject: [PATCH 323/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 8 ++++---- flow/designs/asap7/aes-mbff/rules-base.json | 2 +- flow/designs/asap7/gcd/rules-base.json | 2 +- .../asap7/riscv32i-mock-sram/rules-base.json | 4 ++-- flow/designs/asap7/uart/rules-base.json | 2 +- flow/designs/gf180/ibex/rules-base.json | 2 +- flow/designs/gf180/uart-blocks/rules-base.json | 2 +- flow/designs/ihp-sg13g2/gcd/rules-base.json | 2 +- .../i2c-gpio-expander/rules-base.json | 2 +- .../nangate45/ariane133/rules-base.json | 10 +++++----- .../nangate45/ariane136/rules-base.json | 2 +- .../nangate45/bp_be_top/rules-base.json | 2 +- .../nangate45/mempool_group/rules-base.json | 2 +- flow/designs/nangate45/swerv/rules-base.json | 2 +- .../nangate45/swerv_wrapper/rules-base.json | 4 ++-- .../nangate45/tinyRocket/rules-base.json | 4 ++-- flow/designs/sky130hd/aes/rules-base.json | 2 +- flow/designs/sky130hd/ibex/rules-base.json | 2 +- .../designs/sky130hd/microwatt/rules-base.json | 18 +++++++++--------- flow/designs/sky130hd/riscv32i/rules-base.json | 4 ++-- flow/designs/sky130hs/aes/rules-base.json | 6 +++--- flow/designs/sky130hs/gcd/rules-base.json | 8 ++++---- flow/designs/sky130hs/jpeg/rules-base.json | 2 +- flow/designs/sky130hs/riscv32i/rules-base.json | 4 ++-- 24 files changed, 49 insertions(+), 49 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 7bc97adbfe..452f89b05f 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -24,15 +24,15 @@ "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 1506, + "value": 1445, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -173.0, + "value": -163.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9760.0, + "value": -8890.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -172.0, + "value": -164.0, "compare": ">=" }, "globalroute__timing__setup__tns": { diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index e3db438ed7..3cee923179 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1130.0, + "value": -1100.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index 77f6e8a8d1..5b577397e3 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -80,7 +80,7 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -48.7, + "value": -48.6, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json index 08a9101576..b0a71d4efa 100644 --- a/flow/designs/asap7/riscv32i-mock-sram/rules-base.json +++ b/flow/designs/asap7/riscv32i-mock-sram/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -54.9, + "value": -51.5, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -211.0, + "value": -202.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index 256594da79..f139ae980d 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -840.0, + "value": -839.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index d96db84815..584f9efefe 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1368630, + "value": 1368568, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/gf180/uart-blocks/rules-base.json b/flow/designs/gf180/uart-blocks/rules-base.json index ebaff07c6e..40b0e2f6c8 100644 --- a/flow/designs/gf180/uart-blocks/rules-base.json +++ b/flow/designs/gf180/uart-blocks/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 17335, + "value": 17036, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/ihp-sg13g2/gcd/rules-base.json b/flow/designs/ihp-sg13g2/gcd/rules-base.json index 62c1c0a8e9..8c7b58a53a 100644 --- a/flow/designs/ihp-sg13g2/gcd/rules-base.json +++ b/flow/designs/ihp-sg13g2/gcd/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 11185, + "value": 11161, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json index a17e94afaa..e34b64b083 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 38152, + "value": 37773, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index b7e8e15724..1cf85e854d 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.599, + "value": -0.517, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -782.0, + "value": -661.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8528322, + "value": 8342718, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.595, + "value": -0.528, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -810.0, + "value": -647.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 11462ccd93..17cc692cd7 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8034950, + "value": 8034900, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 1ff3e01973..a74ae56a33 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -24.4, + "value": -23.7, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index bfc08e6fa3..c2b9bf2945 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -12500.0, + "value": -10500.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 2f57d0893b..51c8d3918e 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5.21, + "value": -4.89, "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 2c16600267..71d29f2924 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4012435, + "value": 4011972, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -92,7 +92,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.35, + "value": -2.03, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 3d15e286e3..116bee4297 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -44.5, + "value": -43.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -38.6, + "value": -37.9, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hd/aes/rules-base.json b/flow/designs/sky130hd/aes/rules-base.json index 6ea85566f3..4ab859b230 100644 --- a/flow/designs/sky130hd/aes/rules-base.json +++ b/flow/designs/sky130hd/aes/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 802994, + "value": 802985, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/sky130hd/ibex/rules-base.json b/flow/designs/sky130hd/ibex/rules-base.json index 59e4306ae2..595e1fde89 100644 --- a/flow/designs/sky130hd/ibex/rules-base.json +++ b/flow/designs/sky130hd/ibex/rules-base.json @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 180721, + "value": 180708, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index fc7ffeab0e..3f891c550a 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -281.0, + "value": -249.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,7 +44,7 @@ "compare": ">=" }, "globalroute__antenna_diodes_count": { - "value": 2964, + "value": 2808, "compare": "<=" }, "globalroute__timing__setup__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -377.0, + "value": -334.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -72,19 +72,19 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 6, + "value": 0, "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 1756, + "value": 1565, "compare": "<=" }, "finish__timing__setup__ws": { - "value": -1.92, + "value": -1.75, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -150.0, + "value": -94.8, "compare": ">=" }, "finish__timing__hold__ws": { @@ -92,11 +92,11 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -36.3, + "value": -21.2, "compare": ">=" }, "finish__design__instance__area": { - "value": 5578478, + "value": 5578282, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index bc784630ed..52c3429878 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -45.6, + "value": -43.6, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,7 +80,7 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.765, + "value": -0.759, "compare": ">=" }, "finish__timing__setup__tns": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index d3e6d07315..98e55b441f 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2.47, + "value": -2.42, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 710228, + "value": 708830, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 178877, + "value": 178643, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 3122a2c09a..5046a8aa31 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -11.2, + "value": -10.5, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -16.7, + "value": -16.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.419, + "value": -0.406, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -12.7, + "value": -11.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index 842c8bdc13..85b2a9616b 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1539927, + "value": 1539919, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/sky130hs/riscv32i/rules-base.json b/flow/designs/sky130hs/riscv32i/rules-base.json index 3605a7cd10..38b5b87ef3 100644 --- a/flow/designs/sky130hs/riscv32i/rules-base.json +++ b/flow/designs/sky130hs/riscv32i/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.504, + "value": -0.499, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10.1, + "value": -9.86, "compare": ">=" }, "globalroute__timing__hold__ws": { From d046fe658f99f5330d2d98c4973822e24acff4a6 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Thu, 22 Jan 2026 15:57:55 +0000 Subject: [PATCH 324/364] Rules updates for Rapidus designs for PDK 0.3 updated ibex results after merging Signed-off-by: Jeff Ng --- docs/user/FlowVariables.md | 2 +- flow/designs/rapidus2hp/cva6/rules-base.json | 24 ++++++------- .../rapidus2hp/cva6/rules-verific.json | 24 ++++++------- .../rapidus2hp/cva6/test/test_params.py | 6 ++-- .../designs/rapidus2hp/ethmac/rules-base.json | 30 ++++++++-------- .../rapidus2hp/ethmac/rules-verific.json | 30 ++++++++-------- .../rapidus2hp/ethmac/test/test_params.py | 6 ++-- flow/designs/rapidus2hp/gcd/rules-base.json | 24 ++++++------- .../designs/rapidus2hp/gcd/rules-verific.json | 34 +++++++++---------- .../rapidus2hp/gcd/test/test_params.py | 4 +-- .../hercules_idecode/rules-base.json | 24 ++++++------- .../hercules_idecode/rules-verific.json | 24 ++++++------- .../hercules_idecode/test/test_params.py | 4 +-- .../hercules_is_int/rules-base.json | 24 ++++++------- .../hercules_is_int/rules-verific.json | 24 ++++++------- .../hercules_is_int/test/test_params.py | 6 ++-- flow/designs/rapidus2hp/ibex/rules-base.json | 24 ++++++------- .../rapidus2hp/ibex/rules-verific.json | 24 ++++++------- .../rapidus2hp/ibex/test/test_params.py | 14 ++++---- flow/designs/rapidus2hp/jpeg/rules-base.json | 28 +++++++-------- .../rapidus2hp/jpeg/rules-verific.json | 28 +++++++-------- .../rapidus2hp/jpeg/test/test_params.py | 12 +++---- flow/scripts/variables.yaml | 2 +- 23 files changed, 211 insertions(+), 211 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 3c6f82902e..9ef2d66264 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -143,7 +143,7 @@ configuration file. | FLOW_VARIANT| Flow variant to use, used in the flow variant directory name.| base| | FOOTPRINT| Custom footprint definition file for ICeWall-based floorplan initialization. Mutually exclusive with FLOORPLAN_DEF or DIE_AREA/CORE_AREA or CORE_UTILIZATION.| | | FOOTPRINT_TCL| Specifies a Tcl script with custom footprint-related commands for floorplan setup.| | -| GDS_ALLOW_EMPTY| Regular expression of module names of macros that have no .gds file| | +| GDS_ALLOW_EMPTY| Single regular expression of module names of macros that have no .gds file| | | GDS_FILES| Path to platform GDS files.| | | GENERATE_ARTIFACTS_ON_FAILURE| For instance Bazel needs artifacts (.odb and .rpt files) on a failure to allow the user to save hours on re-running the failed step locally, but when working with a Makefile flow, it is more natural to fail the step and leave the user to manually inspect the logs and artifacts directly via the file system. Set to 1 to change the behavior to generate artifacts upon failure to e.g. do a global route. The exit code will still be non-zero on all other failures that aren't covered by the "useful to inspect the artifacts on failure" use-case. Example: just like detailed routing, a global route that fails with congestion, is not a build failure(as in exit code non-zero), it is a successful(as in zero exit code) global route that produce reports detailing the problem. Detailed route will not proceed, if there is global routing congestion This allows build systems, such as bazel, to create artifacts for global and detailed route, even if the operation had problems, without having know about the semantics between global and detailed route. Considering that global and detailed route can run for a long time and use a lot of memory, this allows inspecting results on a laptop for a build that ran on a server.| 0| | GLOBAL_PLACEMENT_ARGS| Use additional tuning parameters during global placement other than default args defined in global_place.tcl.| | diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index 828239ab23..a5dd65058b 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -30.0, + "value": -0.0409, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -120.0, + "value": -9.84, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -34.4, + "value": -0.0627, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -127.0, + "value": -1.34, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -108.0, + "value": -0.117, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -180000.0, + "value": -263.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -30.0, + "value": -0.0308, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -120.0, + "value": -0.123, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -108.0, + "value": -0.117, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -180000.0, + "value": -263.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -30.0, + "value": -0.0308, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -120.0, + "value": -0.123, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index f8002e2289..d4715bb3c9 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -30.0, + "value": -0.0275, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -120.0, + "value": -0.11, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -54.9, + "value": -0.0275, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -1320.0, + "value": -0.11, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -90.6, + "value": -0.0949, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -151000.0, + "value": -136.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -31.4, + "value": -0.0275, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -125.0, + "value": -0.11, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -90.6, + "value": -0.0949, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -151000.0, + "value": -136.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -31.4, + "value": -0.0275, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -125.0, + "value": -0.11, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/test/test_params.py b/flow/designs/rapidus2hp/cva6/test/test_params.py index 22872457f5..8afbbc3a02 100755 --- a/flow/designs/rapidus2hp/cva6/test/test_params.py +++ b/flow/designs/rapidus2hp/cva6/test/test_params.py @@ -26,7 +26,7 @@ def get_exp_sdc(self, place_site, pdk_version): if pdk_version in ["", "0.2a", "0.3"]: if pdk_version == "": - pdk_version = "0.2a" + pdk_version = "0.3" if place_site == "ra02h138_DST_45CPP": return os.path.join( self._design_full_dir, f"constraint_{pdk_version}_6T.sdc" @@ -37,9 +37,9 @@ def get_exp_sdc(self, place_site, pdk_version): return os.path.join(self._design_full_dir, "constraint.sdc") - def test_pdk_0p2a_default(self): + def test_pdk_0p3_default(self): """ - Tests PDK 0.2a + Tests PDK 0.3 """ front_end = "" diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index d3c19c1286..5e0cef19e1 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 3414, + "value": 4564, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 68181, + "value": 88225, "compare": "<=" }, "detailedplace__design__violations": { @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -31.4, + "value": -0.0236, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -537.0, + "value": -0.272, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -5.5, + "value": -0.0055, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -22.0, + "value": -0.022, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,39 +48,39 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -51.3, + "value": -0.04, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1570.0, + "value": -0.703, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -5.5, + "value": -0.0055, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -22.0, + "value": -0.022, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -51.3, + "value": -0.04, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1570.0, + "value": -0.703, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -5.5, + "value": -0.0055, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -22.0, + "value": -0.022, "compare": ">=" }, "finish__design__instance__area": { - "value": 3577, + "value": 4731, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json index d351492acb..c604accce1 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-verific.json +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 3427, + "value": 4537, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 72530, + "value": 86842, "compare": "<=" }, "detailedplace__design__violations": { @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -29.7, + "value": -0.0224, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -449.0, + "value": -0.297, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -5.5, + "value": -0.0055, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -22.0, + "value": -0.022, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,39 +48,39 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -43.6, + "value": -0.0417, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1340.0, + "value": -0.742, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -5.5, + "value": -0.0055, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -22.0, + "value": -0.022, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -43.6, + "value": -0.0417, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1340.0, + "value": -0.742, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -5.5, + "value": -0.0055, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -22.0, + "value": -0.022, "compare": ">=" }, "finish__design__instance__area": { - "value": 3599, + "value": 4707, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ethmac/test/test_params.py b/flow/designs/rapidus2hp/ethmac/test/test_params.py index a024b3d317..04e36754f4 100755 --- a/flow/designs/rapidus2hp/ethmac/test/test_params.py +++ b/flow/designs/rapidus2hp/ethmac/test/test_params.py @@ -28,12 +28,12 @@ def get_exp_util(self, place_site, pdk_version): if place_site == "ra02h138_DST_45CPP": return 63 return 65 - if pdk_version == "0.3": + if pdk_version in ["", "0.3"]: return 65 return 70 - def test_pdk_0p2a_default(self): - """Tests PDK 0.2a Utilization""" + def test_pdk_0p3_default(self): + """Tests PDK 0.3 Utilization""" front_end = "" pdk_version = "" diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index e0caadde8b..1129e774f0 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -25.0, + "value": -0.0219, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -408.0, + "value": -0.151, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -5.0, + "value": -0.005, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -20.0, + "value": -0.02, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -37.2, + "value": -0.0326, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -951.0, + "value": -0.361, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -5.0, + "value": -0.005, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -20.0, + "value": -0.02, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -37.2, + "value": -0.0326, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -951.0, + "value": -0.361, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -5.0, + "value": -0.005, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -20.0, + "value": -0.02, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/gcd/rules-verific.json b/flow/designs/rapidus2hp/gcd/rules-verific.json index 6c9e4ff94c..4a3aef2511 100644 --- a/flow/designs/rapidus2hp/gcd/rules-verific.json +++ b/flow/designs/rapidus2hp/gcd/rules-verific.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 32, + "value": 29, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 750, + "value": 692, "compare": "<=" }, "detailedplace__design__violations": { @@ -20,27 +20,27 @@ "compare": "==" }, "cts__design__instance__count__setup_buffer": { - "value": 65, + "value": 60, "compare": "<=" }, "cts__design__instance__count__hold_buffer": { - "value": 65, + "value": 60, "compare": "<=" }, "cts__timing__setup__ws": { - "value": -26.3, + "value": -0.023, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -212.0, + "value": -0.176, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -5.0, + "value": -0.005, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -20.0, + "value": -0.02, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,39 +48,39 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -37.0, + "value": -0.0339, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -822.0, + "value": -0.338, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -5.0, + "value": -0.005, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -20.0, + "value": -0.02, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -37.0, + "value": -0.0339, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -822.0, + "value": -0.338, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -5.0, + "value": -0.005, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -20.0, + "value": -0.02, "compare": ">=" }, "finish__design__instance__area": { - "value": 36, + "value": 31, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/gcd/test/test_params.py b/flow/designs/rapidus2hp/gcd/test/test_params.py index e79f23ae1f..d384ba8311 100755 --- a/flow/designs/rapidus2hp/gcd/test/test_params.py +++ b/flow/designs/rapidus2hp/gcd/test/test_params.py @@ -32,9 +32,9 @@ def get_exp_util(self, place_site, pdk_version): return 43 return 45 - def test_pdk_0p2a_default(self): + def test_pdk_0p3_default(self): """ - Tests PDK 0.2a utilization + Tests PDK 0.3 utilization """ front_end = "" diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index 2754aace13..acfbf7676d 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -69.9, + "value": -0.0276, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -187000.0, + "value": -9.87, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -120.0, + "value": -0.0623, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -474000.0, + "value": -146.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -120.0, + "value": -0.0623, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -474000.0, + "value": -146.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json index 36024a65e7..00016e719f 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -81.3, + "value": -0.031, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -260000.0, + "value": -13.5, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -125.0, + "value": -0.0667, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -458000.0, + "value": -190.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -125.0, + "value": -0.0667, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -458000.0, + "value": -190.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py index d60fa4aa74..1656e89d69 100755 --- a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py @@ -33,9 +33,9 @@ def get_exp_util(self, place_site, front_end): return 44 return 50 - def test_pdk_0p2a_default(self): + def test_pdk_0p3_default(self): """ - Tests PDK 0.2a utilization + Tests PDK 0.3 utilization """ pdk_version = "" diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 34bfd00d50..3e4e649571 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -78.0, + "value": -0.0333, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -370000.0, + "value": -41.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -143.0, + "value": -0.111, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1530000.0, + "value": -978.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -143.0, + "value": -0.111, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1530000.0, + "value": -978.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index 8196310acd..3c0be24c5e 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -60.3, + "value": -0.0532, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -301000.0, + "value": -70.2, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -136.0, + "value": -0.139, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1640000.0, + "value": -994.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -136.0, + "value": -0.139, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1640000.0, + "value": -994.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -12.5, + "value": -0.0125, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -50.0, + "value": -0.05, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py index 4844d65900..0abcb6b62a 100755 --- a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py @@ -24,7 +24,7 @@ def setUp(self): def get_exp_util(self, place_site, front_end, pdk_version): """Returns the expected value""" - if pdk_version == "0.3": + if pdk_version in ["", "0.3"]: return 56 if front_end == "verific": if place_site in ["SC6T", "ra02h138_DST_45CPP"]: @@ -35,9 +35,9 @@ def get_exp_util(self, place_site, front_end, pdk_version): return 30 return 52 - def test_pdk_0p2a_default(self): + def test_pdk_0p3_default(self): """ - Tests PDK 0.2a utilization + Tests PDK 0.3 utilization """ pdk_version = "" diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 1e1502f520..0304ebc994 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -24.0, + "value": -0.025, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -96.0, + "value": -0.1, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -24.0, + "value": -0.025, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -96.0, + "value": -0.1, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -41.4, + "value": -0.0271, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -5770.0, + "value": -0.115, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -24.0, + "value": -0.025, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -96.0, + "value": -0.1, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -41.4, + "value": -0.0271, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5770.0, + "value": -0.115, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -24.0, + "value": -0.025, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -96.0, + "value": -0.1, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json index 71ae0f471c..def3e17c5d 100644 --- a/flow/designs/rapidus2hp/ibex/rules-verific.json +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -24.0, + "value": -0.025, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -96.0, + "value": -0.1, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -24.0, + "value": -0.025, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -96.0, + "value": -0.1, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -97.8, + "value": -0.025, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -47700.0, + "value": -0.1, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -24.0, + "value": -0.025, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -96.0, + "value": -0.1, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -97.8, + "value": -0.025, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -47700.0, + "value": -0.1, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -24.0, + "value": -0.025, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -96.0, + "value": -0.1, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/ibex/test/test_params.py b/flow/designs/rapidus2hp/ibex/test/test_params.py index 1496793c1b..ccb27b381d 100755 --- a/flow/designs/rapidus2hp/ibex/test/test_params.py +++ b/flow/designs/rapidus2hp/ibex/test/test_params.py @@ -24,7 +24,7 @@ def setUp(self): def get_exp_util(self, place_site, pdk_version): """Returns the expected utilization""" - if pdk_version == "0.3": + if pdk_version in ["", "0.3"]: if place_site == "ra02h138_DST_45CPP": return 60 return 65 @@ -33,9 +33,7 @@ def get_exp_util(self, place_site, pdk_version): def get_exp_sdc(self, place_site, pdk_version): """Returns the expected SDC file path""" - if pdk_version in ["", "0.2a"]: - if pdk_version == "": - pdk_version = "0.2a" + if pdk_version == "0.2a": if place_site == "ra02h138_DST_45CPP": return os.path.join( self._design_full_dir, f"constraint_{pdk_version}_6T.sdc" @@ -45,16 +43,18 @@ def get_exp_sdc(self, place_site, pdk_version): ) if pdk_version == "0.15": return os.path.join(self._design_full_dir, f"constraint_{pdk_version}.sdc") - if pdk_version == "0.3": + if pdk_version in ["", "0.3"]: + if pdk_version == "": + pdk_version = "0.3" if place_site in ["", "ra02h184_HST_45CPP"]: return os.path.join( self._design_full_dir, f"constraint_{pdk_version}_8T.sdc" ) return os.path.join(self._design_full_dir, "constraint.sdc") - def test_pdk_0p2a_default(self): + def test_pdk_0p3_default(self): """ - Tests PDK 0.2a utilization + Tests PDK 0.3 utilization """ front_end = "" diff --git a/flow/designs/rapidus2hp/jpeg/rules-base.json b/flow/designs/rapidus2hp/jpeg/rules-base.json index a1ffef6aab..5859be3b81 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-base.json +++ b/flow/designs/rapidus2hp/jpeg/rules-base.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 3326, + "value": 3936, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -13.2, + "value": -0.0115, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -53.0, + "value": -0.046, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -13.2, + "value": -0.0115, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -53.0, + "value": -0.046, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,39 +48,39 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -107.0, + "value": -0.0493, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -44400.0, + "value": -18.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -13.2, + "value": -0.0115, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -53.0, + "value": -0.046, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -107.0, + "value": -0.0493, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -44400.0, + "value": -18.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -13.2, + "value": -0.0115, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -53.0, + "value": -0.046, "compare": ">=" }, "finish__design__instance__area": { - "value": 3437, + "value": 4037, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/jpeg/rules-verific.json b/flow/designs/rapidus2hp/jpeg/rules-verific.json index 2238d634e0..13016c8069 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-verific.json +++ b/flow/designs/rapidus2hp/jpeg/rules-verific.json @@ -8,7 +8,7 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 3378, + "value": 3950, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -13.2, + "value": -0.0115, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -53.0, + "value": -0.046, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -13.2, + "value": -0.0115, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -53.0, + "value": -0.046, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,39 +48,39 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -53.1, + "value": -0.0696, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -15400.0, + "value": -19.7, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -13.2, + "value": -0.0115, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -53.0, + "value": -0.046, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -53.1, + "value": -0.0696, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -15400.0, + "value": -19.7, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -13.2, + "value": -0.0115, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -53.0, + "value": -0.046, "compare": ">=" }, "finish__design__instance__area": { - "value": 3474, + "value": 4048, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/jpeg/test/test_params.py b/flow/designs/rapidus2hp/jpeg/test/test_params.py index f0d784a61d..4d9efa0c4c 100755 --- a/flow/designs/rapidus2hp/jpeg/test/test_params.py +++ b/flow/designs/rapidus2hp/jpeg/test/test_params.py @@ -24,22 +24,22 @@ def setUp(self): def get_exp_sdc(self, place_site, pdk_version): """Returns the expected SDC file path""" - if pdk_version in ["", "0.2a"]: - if pdk_version == "": - pdk_version = "0.2a" + if pdk_version == "0.2a": if place_site in ["", "ra02h184_HST_45CPP"]: return os.path.join( self._design_full_dir, f"jpeg_encoder15_{pdk_version}_8T.sdc" ) - if pdk_version in ["0.15", "0.3"]: + if pdk_version in ["", "0.15", "0.3"]: + if pdk_version == "": + pdk_version = "0.3" return os.path.join( self._design_full_dir, f"jpeg_encoder15_{pdk_version}.sdc" ) return os.path.join(self._design_full_dir, "jpeg_encoder15_7nm.sdc") - def test_pdk_0p2a_default(self): + def test_pdk_0p3_default(self): """ - Tests PDK 0.2a utilization + Tests PDK 0.3 utilization """ front_end = "" diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 4a75744397..9e5208f529 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1171,7 +1171,7 @@ RTLMP_ARGS: - floorplan GDS_ALLOW_EMPTY: description: > - Regular expression of module names of macros that have no .gds file + Single regular expression of module names of macros that have no .gds file stages: - final RUN_SCRIPT: From 940ccef7b4f1cdfea93fb47a93fff98eefb5be33 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Fri, 23 Jan 2026 10:03:25 +0900 Subject: [PATCH 325/364] Update OR Signed-off-by: Jaehyun Kim --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 3943eb487b..7c57b1b222 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 3943eb487bc06ec99b1831d1d35dbc5c993a03e0 +Subproject commit 7c57b1b222c2be09cf1493d96b1c216f2f1d36c7 From 418086a80b51a5c2abcaefbda3dcf6c1a4c88ea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Fri, 23 Jan 2026 05:58:50 +0100 Subject: [PATCH 326/364] synth: add SYNTH_INSBUF for parallel synthesis MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- docs/user/FlowVariables.md | 2 ++ flow/scripts/synth.tcl | 6 ++++-- flow/scripts/variables.yaml | 10 ++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 9ef2d66264..59d919b223 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -249,6 +249,7 @@ configuration file. | SYNTH_HDL_FRONTEND| Select an alternative language frontend to ingest the design. Available option is "slang". If the variable is empty, design is read with the Yosys read_verilog command.| | | SYNTH_HIERARCHICAL| Enable to Synthesis hierarchically, otherwise considered flat synthesis.| 0| | SYNTH_HIER_SEPARATOR| Separator used for the synthesis flatten stage.| .| +| SYNTH_INSBUF| Insert input buffers on top-level input ports during synthesis. Useful to disable when doing parallel synthesis and concatenating netlists later as we're generating netlists of submodules.| 1| | SYNTH_KEEP_MOCKED_MEMORIES| When `SYNTH_MOCK_LARGE_MEMORIES=1`, setting this to 1, will keep mocked memories (not flattening them). This preserves some of the access logic complexity and avoids optimizations outside of the mocked memory.| 1| | SYNTH_KEEP_MODULES| Mark modules to keep from getting removed in flattening.| | | SYNTH_MEMORY_MAX_BITS| Maximum number of bits for memory synthesis. Ideally, real RAM or realistic fakeram should be used for RAMs much larger than 1024 bits. To temporarily ignore the RAM concerns and investigate other aspects of the design, consider setting `SYNTH_MOCK_LARGE_MEMORIES=1`, or adjusting `SYNTH_MEMORY_MAX_BITS`.| 4096| @@ -296,6 +297,7 @@ configuration file. - [SYNTH_HDL_FRONTEND](#SYNTH_HDL_FRONTEND) - [SYNTH_HIERARCHICAL](#SYNTH_HIERARCHICAL) - [SYNTH_HIER_SEPARATOR](#SYNTH_HIER_SEPARATOR) +- [SYNTH_INSBUF](#SYNTH_INSBUF) - [SYNTH_KEEP_MOCKED_MEMORIES](#SYNTH_KEEP_MOCKED_MEMORIES) - [SYNTH_KEEP_MODULES](#SYNTH_KEEP_MODULES) - [SYNTH_MEMORY_MAX_BITS](#SYNTH_MEMORY_MAX_BITS) diff --git a/flow/scripts/synth.tcl b/flow/scripts/synth.tcl index 0af28bd055..8554f6d61c 100644 --- a/flow/scripts/synth.tcl +++ b/flow/scripts/synth.tcl @@ -218,8 +218,10 @@ hilomap -singleton \ -hicell {*}$::env(TIEHI_CELL_AND_PORT) \ -locell {*}$::env(TIELO_CELL_AND_PORT) -# Insert buffer cells for pass through wires -insbuf -buf {*}$::env(MIN_BUF_CELL_AND_PORTS) +if { $::env(SYNTH_INSBUF) } { + # Insert buffer cells for pass through wires + insbuf -buf {*}$::env(MIN_BUF_CELL_AND_PORTS) +} # Reports tee -o $::env(REPORTS_DIR)/synth_check.txt check diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 9e5208f529..9483713f27 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -305,6 +305,16 @@ SYNTH_REPEATABLE_BUILD: stages: - synth default: 0 +SYNTH_INSBUF: + description: > + Insert input buffers on top-level input ports during synthesis. + + Useful to disable when doing parallel synthesis and + concatenating netlists later as we're generating netlists + of submodules. + stages: + - synth + default: 1 DFF_MAP_FILE: description: | Optional mapping file supplied to Yosys to map D flip-flops From f1f55f7de19385752f20c87cd2d2b5379e10fc7f Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Fri, 23 Jan 2026 16:10:13 +0900 Subject: [PATCH 327/364] Update rules-base.json for public & private PDKs Signed-off-by: Jaehyun Kim --- flow/designs/asap7/aes-block/rules-base.json | 8 ++++---- .../asap7/swerv_wrapper/rules-base.json | 4 ++-- flow/designs/gf12/bp_single/rules-base.json | 2 +- flow/designs/gf12/ca53/rules-base.json | 12 ++++++------ .../designs/gf12/swerv_wrapper/rules-base.json | 2 +- flow/designs/gf12/tinyRocket/rules-base.json | 2 +- flow/designs/gf180/ibex/rules-base.json | 2 +- .../nangate45/ariane133/rules-base.json | 8 ++++---- .../nangate45/ariane136/rules-base.json | 2 +- .../nangate45/bp_fe_top/rules-base.json | 2 +- .../nangate45/swerv_wrapper/rules-base.json | 2 +- flow/designs/rapidus2hp/cva6/rules-base.json | 18 +++++++++--------- flow/designs/rapidus2hp/ethmac/rules-base.json | 8 ++++---- .../rapidus2hp/ethmac/rules-verific.json | 8 ++++---- .../hercules_idecode/rules-base.json | 4 ++-- .../hercules_idecode/rules-verific.json | 4 ++-- .../rapidus2hp/hercules_is_int/rules-base.json | 10 +++++----- .../hercules_is_int/rules-verific.json | 10 +++++----- 18 files changed, 54 insertions(+), 54 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 452f89b05f..5b4956b551 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -163.0, + "value": -162.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -8890.0, + "value": -9030.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -9110.0, + "value": -8540.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4470.0, + "value": -3240.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/swerv_wrapper/rules-base.json b/flow/designs/asap7/swerv_wrapper/rules-base.json index 2df24cb190..7e95b63643 100644 --- a/flow/designs/asap7/swerv_wrapper/rules-base.json +++ b/flow/designs/asap7/swerv_wrapper/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -77500.0, + "value": -80300.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -92,7 +92,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -98800.0, + "value": -104000.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index b97250dd9f..8e81809358 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -518.0, + "value": -931.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf12/ca53/rules-base.json b/flow/designs/gf12/ca53/rules-base.json index a645f6104c..5f715384cf 100644 --- a/flow/designs/gf12/ca53/rules-base.json +++ b/flow/designs/gf12/ca53/rules-base.json @@ -24,11 +24,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -391.0, + "value": -100.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9530.0, + "value": -400.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -44,11 +44,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -225.0, + "value": -100.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1990.0, + "value": -400.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -56,7 +56,7 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -848.0, + "value": -793.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -88,7 +88,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -4200.0, + "value": -3590.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 91abb7265e..8a01dd8252 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 2388575, + "value": 2369199, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/gf12/tinyRocket/rules-base.json b/flow/designs/gf12/tinyRocket/rules-base.json index c7dc203968..ca3c09a855 100644 --- a/flow/designs/gf12/tinyRocket/rules-base.json +++ b/flow/designs/gf12/tinyRocket/rules-base.json @@ -99,4 +99,4 @@ "value": 17217, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index 584f9efefe..bf6e1eeebb 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -3.74, + "value": -2.95, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 1cf85e854d..a663981188 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.517, + "value": -0.503, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -661.0, + "value": -620.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.528, + "value": -0.503, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -647.0, + "value": -606.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane136/rules-base.json b/flow/designs/nangate45/ariane136/rules-base.json index 17cc692cd7..f712069808 100644 --- a/flow/designs/nangate45/ariane136/rules-base.json +++ b/flow/designs/nangate45/ariane136/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8034900, + "value": 8033923, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index 7155a327f1..ad4bdfabef 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4.33, + "value": -3.48, "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 71d29f2924..14afb31503 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4.12, + "value": -5.76, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index a5dd65058b..fafdba0eee 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0409, + "value": -0.0403, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9.84, + "value": -10.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -40,7 +40,7 @@ "compare": ">=" }, "cts__timing__hold__tns": { - "value": -1.34, + "value": -1.33, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -52,15 +52,15 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -263.0, + "value": -323.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0308, + "value": -0.0285, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.123, + "value": -0.111, "compare": ">=" }, "finish__timing__setup__ws": { @@ -68,15 +68,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -263.0, + "value": -323.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.0308, + "value": -0.0285, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.123, + "value": -0.111, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 5e0cef19e1..33f18282c7 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0236, + "value": -0.0228, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.272, + "value": -0.251, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.703, + "value": -0.733, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.703, + "value": -0.733, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json index c604accce1..f2cdfc443e 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-verific.json +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0417, + "value": -0.0389, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.742, + "value": -0.651, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0417, + "value": -0.0389, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.742, + "value": -0.651, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index acfbf7676d..e7cffd303b 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -146.0, + "value": -154.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -146.0, + "value": -154.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json index 00016e719f..1a3b7ddd78 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.031, + "value": -0.0306, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13.5, + "value": -13.6, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 3e4e649571..5182d3f47c 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -41.0, + "value": -51.3, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.111, + "value": -0.106, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -978.0, + "value": -962.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.111, + "value": -0.106, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -978.0, + "value": -962.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index 3c0be24c5e..86a5a231dc 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -70.2, + "value": -71.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.139, + "value": -0.12, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -994.0, + "value": -1190.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.139, + "value": -0.12, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -994.0, + "value": -1190.0, "compare": ">=" }, "finish__timing__hold__ws": { From 4710f253cd4ec5a82cba8df822b766cbe5961bff Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Fri, 23 Jan 2026 22:24:02 +0000 Subject: [PATCH 328/364] Fixed rapidus ibex verilog list Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/ibex/config.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/designs/rapidus2hp/ibex/config.mk b/flow/designs/rapidus2hp/ibex/config.mk index e41753f71c..8e7f821859 100644 --- a/flow/designs/rapidus2hp/ibex/config.mk +++ b/flow/designs/rapidus2hp/ibex/config.mk @@ -9,7 +9,7 @@ endif export VERILOG_FILES = \ $(DESIGN_HOME)/src/ibex_sv/ibex_pkg.sv \ - $(sort $(wildcard $(DESIGN_HOME)/src/ibex_sv/*.sv)) \ + $(sort $(filter-out %/ibex_pkg.sv, $(wildcard $(DESIGN_HOME)/src/ibex_sv/*.sv))) \ $(DESIGN_HOME)/src/ibex_sv/syn/rtl/prim_clock_gating.v export VERILOG_INCLUDE_DIRS = \ From dca9bb8c50a05323b5589e96d6b8b639c8957fde Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Sat, 24 Jan 2026 05:38:35 +0000 Subject: [PATCH 329/364] updated OR to secure-bufrem-fix Signed-off-by: Cho Moon --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 3e96f9860f..2e49efe3d8 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 3e96f9860f0808c6eea40d4f12b635fff2cb5061 +Subproject commit 2e49efe3d888dba50cfd6432f7617f6d80aa6d3e From 0f9221fcbb9b7f1aa19295f39f7105e35dada2eb Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Sat, 24 Jan 2026 15:23:20 +0000 Subject: [PATCH 330/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 7c57b1b222..6c1bac3b3b 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 7c57b1b222c2be09cf1493d96b1c216f2f1d36c7 +Subproject commit 6c1bac3b3bb7a1ed90610316687d732ec46b1ac9 From bab0134ebddd1cf0063ebd35d835cd60befd877a Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Sat, 24 Jan 2026 15:26:40 +0000 Subject: [PATCH 331/364] maintain default behavior after gpl modifcation to default initial position of insntaces, now gpl by default always fetch positions from odb, if available Signed-off-by: Augusto Berndt --- flow/scripts/global_place.tcl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flow/scripts/global_place.tcl b/flow/scripts/global_place.tcl index a879f5ac5e..6ef3df9a34 100644 --- a/flow/scripts/global_place.tcl +++ b/flow/scripts/global_place.tcl @@ -43,6 +43,8 @@ if { $min_phi > $max_phi } { MAX_PLACE_STEP_COEF ($max_phi)" } +lappend global_placement_args -force_center_initial_place + lappend global_placement_args -min_phi_coef $::env(MIN_PLACE_STEP_COEF) lappend global_placement_args -max_phi_coef $::env(MAX_PLACE_STEP_COEF) From 4b9bd753c432b423111bfd80169dcef282a10205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Sat, 24 Jan 2026 17:04:42 +0100 Subject: [PATCH 332/364] variables: create ad-hoc small .yaml files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- flow/scripts/README.md | 14 ++++++++++++++ flow/scripts/variables.mk | 3 +-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/flow/scripts/README.md b/flow/scripts/README.md index be55534412..c8f19f0c08 100644 --- a/flow/scripts/README.md +++ b/flow/scripts/README.md @@ -94,3 +94,17 @@ Load synthesis result and list modules that were kept in hierarchical synthesis: aes_cipher_top aes_key_expand_128 % + +## Creating a .yaml file with specific variable values + +Print any variable in .yaml syntax. To create a .yaml file that +contains value of variables, run: + + make print-CORE_UTILIZATION print-PLACE_DENSITY > foo.yaml + +Outputs foo.yaml: + + CORE_UTILIZATION: 55 + PLACE_DENSITY: 0.30 + +Useful in bazel-orfs flows or debugging configuration. diff --git a/flow/scripts/variables.mk b/flow/scripts/variables.mk index 81de8d10e8..ad7f867fb4 100644 --- a/flow/scripts/variables.mk +++ b/flow/scripts/variables.mk @@ -213,7 +213,6 @@ vars: $(UTILS_DIR)/generate-vars.sh $(OBJECTS_DIR)/vars .PHONY: print-% -# Print any variable, for instance: make print-DIE_AREA print-%: # HERE BE DRAGONS! # @@ -224,6 +223,6 @@ print-%: # We have to use $(file ...) because we want to be able # to print variables that contain newlines. $(file >/tmp/print_tmp$$,$($*)) - @echo -n "$* = " + @echo -n "$*: " @cat /tmp/print_tmp$$ @rm /tmp/print_tmp$$ From d3f93bbe1d34145e95a6655cb8af93732b71a561 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Sat, 24 Jan 2026 16:11:47 +0000 Subject: [PATCH 333/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 6c1bac3b3b..5480bfa4a1 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 6c1bac3b3bb7a1ed90610316687d732ec46b1ac9 +Subproject commit 5480bfa4a153e74b1f7f927b0b1c6c6e361dc0e9 From 2e289d228b64edacc765b60ab5b4f3211c3b000b Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Sat, 24 Jan 2026 16:58:51 +0000 Subject: [PATCH 334/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 5480bfa4a1..006dbbba74 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 5480bfa4a153e74b1f7f927b0b1c6c6e361dc0e9 +Subproject commit 006dbbba7410deae43f1f9b154b38de8dec27872 From 47acf7298d64fe182c8e6bd38b04f2978bd0d098 Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Sun, 25 Jan 2026 15:49:25 +0000 Subject: [PATCH 335/364] support different output from make Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/utils/param_test_base.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/flow/designs/rapidus2hp/utils/param_test_base.py b/flow/designs/rapidus2hp/utils/param_test_base.py index 3f720e3ca9..e20efeb98f 100644 --- a/flow/designs/rapidus2hp/utils/param_test_base.py +++ b/flow/designs/rapidus2hp/utils/param_test_base.py @@ -20,7 +20,10 @@ def setUp(self, design_name): self._design_dir = os.path.join("designs", self._platform, self._design) self._cmd_base = f"make DESIGN_CONFIG={self._design_dir}/config.mk" self._design_full_dir = os.path.join(os.getcwd(), self._design_dir) - self._result_re = re.compile(r"\S+\s+\=\s+(\S+)") + # Handle different make output + # param: value + # param = value + self._result_re = re.compile(r"\S+\s*(?:=|:)\s*(\S+)") self._front_end_list = ["", "slang", "verific"] self._ibm_site_list = ["", "SC6T", "SC8T"] self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h138_DST_45CPP"] @@ -71,7 +74,8 @@ def execute_cmd_int(self, cmd, test_tag, exp_result): cmd, check=True, shell=True, capture_output=True, text=True ) self.assertEqual(out.returncode, 0, f"Return code for {test_tag} is non-zero") - result = self._result_re.match(out.stdout) + stdout_str = out.stdout.rstrip() + result = self._result_re.match(stdout_str) self.assertIsNotNone(result, f"RE result {test_tag} is None") value = result.group(1) if isinstance(exp_result, int): From 2d8d610dbc591cc3e0a52b61ae1380fc4afd44f3 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Mon, 26 Jan 2026 00:30:02 +0000 Subject: [PATCH 336/364] updated OR Signed-off-by: Cho Moon --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 2e49efe3d8..95c6ead4f7 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 2e49efe3d888dba50cfd6432f7617f6d80aa6d3e +Subproject commit 95c6ead4f79d7c7c75401a33583ac7e57e31c55b From e0f7ec215769981f4a5b283f211167ead4cb93ab Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 26 Jan 2026 00:30:50 +0000 Subject: [PATCH 337/364] rapidus design tuning for PDK 0.3 Signed-off-by: Jeff Ng --- .../rapidus2hp/cva6/constraint_0.3_8T.sdc | 2 +- flow/designs/rapidus2hp/cva6/rules-base.json | 24 ++++++++--------- .../rapidus2hp/cva6/rules-verific.json | 16 ++++++------ .../rapidus2hp/ibex/constraint_0.3.sdc | 19 -------------- .../rapidus2hp/ibex/constraint_0.3_8T.sdc | 2 +- flow/designs/rapidus2hp/ibex/rules-base.json | 24 ++++++++--------- .../rapidus2hp/ibex/rules-verific.json | 26 +++++++++---------- .../rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc | 2 +- flow/designs/rapidus2hp/jpeg/rules-base.json | 26 +++++++++---------- .../rapidus2hp/jpeg/rules-verific.json | 26 +++++++++---------- .../rapidus2hp/utils/param_test_base.py | 8 ++++-- 11 files changed, 80 insertions(+), 95 deletions(-) delete mode 100644 flow/designs/rapidus2hp/ibex/constraint_0.3.sdc diff --git a/flow/designs/rapidus2hp/cva6/constraint_0.3_8T.sdc b/flow/designs/rapidus2hp/cva6/constraint_0.3_8T.sdc index 75c8498931..c663984bf1 100644 --- a/flow/designs/rapidus2hp/cva6/constraint_0.3_8T.sdc +++ b/flow/designs/rapidus2hp/cva6/constraint_0.3_8T.sdc @@ -5,7 +5,7 @@ source $::env(PLATFORM_DIR)/util.tcl set clk_name main_clk set clk_port clk_i set clk_ports_list [list $clk_port] -set clk_period 550 +set clk_period 500 convert_time_value clk_period diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index fafdba0eee..a86ed3ea43 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0403, + "value": -0.0939, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10.2, + "value": -193.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.0627, + "value": -0.025, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -1.33, + "value": -0.1, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.117, + "value": -0.15, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -323.0, + "value": -364.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0285, + "value": -0.0269, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.111, + "value": -0.103, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.117, + "value": -0.15, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -323.0, + "value": -364.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.0285, + "value": -0.0269, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.111, + "value": -0.103, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index d4715bb3c9..329c83d9d3 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0275, + "value": -0.0871, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.11, + "value": -139.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.0275, + "value": -0.025, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -0.11, + "value": -0.1, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0949, + "value": -0.172, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -136.0, + "value": -500.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0949, + "value": -0.172, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -136.0, + "value": -500.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/constraint_0.3.sdc b/flow/designs/rapidus2hp/ibex/constraint_0.3.sdc deleted file mode 100644 index fb9decbaa6..0000000000 --- a/flow/designs/rapidus2hp/ibex/constraint_0.3.sdc +++ /dev/null @@ -1,19 +0,0 @@ -source $::env(PLATFORM_DIR)/util.tcl - -set clk_name core_clock -set clk_port_name clk_i -set clk_period 500 -set clk_io_pct 0.2 - -set clk_port [get_ports $clk_port_name] - -convert_time_value clk_period - -create_clock -name $clk_name -period $clk_period $clk_port - -set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] - -set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ - $non_clock_inputs -set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ - [all_outputs] diff --git a/flow/designs/rapidus2hp/ibex/constraint_0.3_8T.sdc b/flow/designs/rapidus2hp/ibex/constraint_0.3_8T.sdc index fb9decbaa6..f539d55b82 100644 --- a/flow/designs/rapidus2hp/ibex/constraint_0.3_8T.sdc +++ b/flow/designs/rapidus2hp/ibex/constraint_0.3_8T.sdc @@ -2,7 +2,7 @@ source $::env(PLATFORM_DIR)/util.tcl set clk_name core_clock set clk_port_name clk_i -set clk_period 500 +set clk_period 450 set clk_io_pct 0.2 set clk_port [get_ports $clk_port_name] diff --git a/flow/designs/rapidus2hp/ibex/rules-base.json b/flow/designs/rapidus2hp/ibex/rules-base.json index 0304ebc994..9e7564b3de 100644 --- a/flow/designs/rapidus2hp/ibex/rules-base.json +++ b/flow/designs/rapidus2hp/ibex/rules-base.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.025, + "value": -0.0225, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.1, + "value": -0.09, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.025, + "value": -0.0225, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -0.1, + "value": -0.09, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0271, + "value": -0.0254, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.115, + "value": -0.0963, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.025, + "value": -0.0225, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.1, + "value": -0.09, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0271, + "value": -0.0254, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.115, + "value": -0.0963, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.025, + "value": -0.0225, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.1, + "value": -0.09, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json index def3e17c5d..73f7714f8d 100644 --- a/flow/designs/rapidus2hp/ibex/rules-verific.json +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 20243, + "value": 23447, "compare": "<=" }, "detailedplace__design__violations": { @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.025, + "value": -0.0225, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.1, + "value": -0.09, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.025, + "value": -0.0225, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -0.1, + "value": -0.09, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.025, + "value": -0.0476, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.1, + "value": -5.1, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.025, + "value": -0.0225, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.1, + "value": -0.09, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.025, + "value": -0.0476, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.1, + "value": -5.1, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.025, + "value": -0.0225, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.1, + "value": -0.09, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc index 4a4df0c300..261dc57983 100644 --- a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc +++ b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc @@ -4,7 +4,7 @@ current_design jpeg_encoder set clk_name clk set clk_port_name clk -set clk_period 230 +set clk_period 200 set clk_io_pct 0.2 convert_time_value clk_period diff --git a/flow/designs/rapidus2hp/jpeg/rules-base.json b/flow/designs/rapidus2hp/jpeg/rules-base.json index 5859be3b81..4f071789ad 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-base.json +++ b/flow/designs/rapidus2hp/jpeg/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 97540, + "value": 116278, "compare": "<=" }, "detailedplace__design__violations": { @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0115, + "value": -0.01, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.046, + "value": -0.04, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.0115, + "value": -0.01, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -0.046, + "value": -0.04, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0493, + "value": -0.0629, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.0, + "value": -35.4, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0115, + "value": -0.01, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.046, + "value": -0.04, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0493, + "value": -0.0629, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -18.0, + "value": -35.4, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.0115, + "value": -0.01, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.046, + "value": -0.04, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-verific.json b/flow/designs/rapidus2hp/jpeg/rules-verific.json index 13016c8069..1da1eb4af6 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-verific.json +++ b/flow/designs/rapidus2hp/jpeg/rules-verific.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 99405, + "value": 117602, "compare": "<=" }, "detailedplace__design__violations": { @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0115, + "value": -0.01, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.046, + "value": -0.04, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.0115, + "value": -0.01, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -0.046, + "value": -0.04, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0696, + "value": -0.0683, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -19.7, + "value": -50.9, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0115, + "value": -0.01, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.046, + "value": -0.04, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0696, + "value": -0.0683, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -19.7, + "value": -50.9, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.0115, + "value": -0.01, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.046, + "value": -0.04, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/utils/param_test_base.py b/flow/designs/rapidus2hp/utils/param_test_base.py index 3f720e3ca9..e20efeb98f 100644 --- a/flow/designs/rapidus2hp/utils/param_test_base.py +++ b/flow/designs/rapidus2hp/utils/param_test_base.py @@ -20,7 +20,10 @@ def setUp(self, design_name): self._design_dir = os.path.join("designs", self._platform, self._design) self._cmd_base = f"make DESIGN_CONFIG={self._design_dir}/config.mk" self._design_full_dir = os.path.join(os.getcwd(), self._design_dir) - self._result_re = re.compile(r"\S+\s+\=\s+(\S+)") + # Handle different make output + # param: value + # param = value + self._result_re = re.compile(r"\S+\s*(?:=|:)\s*(\S+)") self._front_end_list = ["", "slang", "verific"] self._ibm_site_list = ["", "SC6T", "SC8T"] self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h138_DST_45CPP"] @@ -71,7 +74,8 @@ def execute_cmd_int(self, cmd, test_tag, exp_result): cmd, check=True, shell=True, capture_output=True, text=True ) self.assertEqual(out.returncode, 0, f"Return code for {test_tag} is non-zero") - result = self._result_re.match(out.stdout) + stdout_str = out.stdout.rstrip() + result = self._result_re.match(stdout_str) self.assertIsNotNone(result, f"RE result {test_tag} is None") value = result.group(1) if isinstance(exp_result, int): From b6281746352fb78d71ed85ce72ac4c13b2a5f3f2 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Mon, 26 Jan 2026 01:20:12 +0000 Subject: [PATCH 338/364] updated OR Signed-off-by: Cho Moon --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 95c6ead4f7..481620b8b7 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 95c6ead4f79d7c7c75401a33583ac7e57e31c55b +Subproject commit 481620b8b7b414aa025e2c718fee95df2d977f55 From 95e410ead4900fda5d497017dfd5c1003588bb88 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Mon, 26 Jan 2026 02:37:44 +0000 Subject: [PATCH 339/364] updated OR Signed-off-by: Cho Moon --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 481620b8b7..dab08e1483 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 481620b8b7b414aa025e2c718fee95df2d977f55 +Subproject commit dab08e1483a3419c5457f9961fcc6ea45e4076b9 From a81382da922b30b52d622512f6b9d4b92e6ff487 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Mon, 26 Jan 2026 15:01:33 +0000 Subject: [PATCH 340/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 006dbbba74..2e36dd25dd 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 006dbbba7410deae43f1f9b154b38de8dec27872 +Subproject commit 2e36dd25dd884e62523c14c50dd06e2e83bcbacb From 166cc7f3a1830e2760f4dac48ae312d4a5988874 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Mon, 26 Jan 2026 15:53:39 +0000 Subject: [PATCH 341/364] master version Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 2e36dd25dd..95a6515d51 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 2e36dd25dd884e62523c14c50dd06e2e83bcbacb +Subproject commit 95a6515d51419a14fc51b54c9d2efcdf8120803c From 4af5bc34c2ed91fba6afb77fdf683084a481782c Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Mon, 26 Jan 2026 15:55:18 +0000 Subject: [PATCH 342/364] master version Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 95a6515d51..c85a988692 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 95a6515d51419a14fc51b54c9d2efcdf8120803c +Subproject commit c85a988692208bce0f0598cd779d5eff5c63e60b From eae7fd9388593d8d1094edcb6f8bd651e57384b1 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Mon, 26 Jan 2026 16:19:20 +0000 Subject: [PATCH 343/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index c85a988692..1979041475 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit c85a988692208bce0f0598cd779d5eff5c63e60b +Subproject commit 1979041475236df40956bf5e368b63ed52840a7a From ef67553bd37f3fb6969687a71e77f4954db61ecf Mon Sep 17 00:00:00 2001 From: Jack Luar Date: Mon, 26 Jan 2026 16:24:42 +0000 Subject: [PATCH 344/364] enable custom sdc/fr files for sweep mode Signed-off-by: Jack Luar --- tools/AutoTuner/src/autotuner/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/AutoTuner/src/autotuner/utils.py b/tools/AutoTuner/src/autotuner/utils.py index 722ad39b5a..1aad0a489c 100644 --- a/tools/AutoTuner/src/autotuner/utils.py +++ b/tools/AutoTuner/src/autotuner/utils.py @@ -271,10 +271,10 @@ def parse_config( print(f"[ERROR TUN-0017] Variable {key} is not tunable.") sys.exit(1) options += f" {key}={value}" - if sdc: + if sdc or sdc_original: write_sdc(sdc, path, sdc_original, constraints_sdc) options += f" SDC_FILE={path}/{constraints_sdc}" - if fast_route: + if fast_route or fr_original: write_fast_route(fast_route, path, platform, fr_original, fastroute_tcl) options += f" FASTROUTE_TCL={path}/{fastroute_tcl}" return options From 87d3bdb42738bc1dcc5289f70ccbe59142d2436b Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Mon, 26 Jan 2026 13:33:18 -0300 Subject: [PATCH 345/364] build: kepler - don't use cd - use CMake to build - don't touch submodules Signed-off-by: Vitor Bandeira --- build_openroad.sh | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/build_openroad.sh b/build_openroad.sh index 2990500580..74303aa69e 100755 --- a/build_openroad.sh +++ b/build_openroad.sh @@ -292,28 +292,17 @@ __local_build() ${NICE} make install -C tools/yosys-slang -j "${PROC}" YOSYS_PREFIX="${INSTALL_PATH}/yosys/bin/" CMAKE_FLAGS="-DYOSYS_SLANG_REVISION=unknown -DSLANG_REVISION=unknown" echo "[INFO FLW-0031] Compiling kepler-formal" - cd tools/kepler-formal - git submodule update --init --recursive + ${NICE} cmake -B tools/kepler-formal/build tools/kepler-formal \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ + -DCMAKE_EXE_LINKER_FLAGS="-flto" \ + -DCMAKE_BUILD_RPATH="${DIR}/tools/kepler-formal/build/thirdparty/naja/src/dnl:${DIR}/tools/kepler-formal/build/thirdparty/naja/src/nl/nl:${DIR}/tools/kepler-formal/build/thirdparty/naja/src/optimization" \ + -DCMAKE_INSTALL_RPATH="${INSTALL_PATH}/kepler-formal/lib" \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ + -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}/kepler-formal" + ${NICE} cmake --build tools/kepler-formal/build --target install -j "${PROC}" - # if build dir does not exist, create it - if [ ! -d build ]; then - mkdir build - fi - cd build - - cmake .. \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS_RELEASE="-Ofast -march=native -ffast-math -flto" \ - -DCMAKE_EXE_LINKER_FLAGS="-flto" \ - -DCMAKE_BUILD_RPATH="${DIR}/tools/kepler-formal/build/thirdparty/naja/src/dnl:${DIR}/tools/kepler-formal/build/thirdparty/naja/src/nl/nl:${DIR}/tools/kepler-formal/build/thirdparty/naja/src/optimization" \ - -DCMAKE_INSTALL_RPATH="${INSTALL_PATH}/kepler-formal/lib" \ - -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF \ - -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ - -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}/kepler-formal" - - make -j"${PROC}" install - - cd ../../../ if [ ${WITH_VERIFIC} -eq 1 ]; then echo "[INFO FLW-0032] Cleaning up Verific components." rm -rf verific From b6b635a2e0a247e7ee0142cebff5041b35a0a635 Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Mon, 26 Jan 2026 17:21:35 +0000 Subject: [PATCH 346/364] set visible true to all physical instances other than filler cells Signed-off-by: Augusto Berndt --- flow/scripts/save_images.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/scripts/save_images.tcl b/flow/scripts/save_images.tcl index 6a480e905c..ed4618a99e 100644 --- a/flow/scripts/save_images.tcl +++ b/flow/scripts/save_images.tcl @@ -37,7 +37,7 @@ save_image -resolution $resolution $::env(REPORTS_DIR)/final_routing.webp # The placement view without routing gui::set_display_controls "Shape Types/Routing/*" visible false -gui::set_display_controls "Instances/Physical/*" visible false +gui::set_display_controls "Instances/Physical/Fill cell" visible false gui::set_display_controls "Misc/Instances/*" visible false save_image -resolution $resolution $::env(REPORTS_DIR)/final_placement.webp From 682b84ab1806e7295ff721975699d69b82b0cefa Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 26 Jan 2026 18:06:42 +0000 Subject: [PATCH 347/364] rapidus param test re-factoring Signed-off-by: Jeff Ng --- .../rapidus2hp/cva6/test/test_params.py | 74 +++++++--- .../rapidus2hp/ethmac/test/test_params.py | 90 ++++++++---- .../rapidus2hp/gcd/test/test_params.py | 80 +++++++---- .../hercules_idecode/test/test_params.py | 34 ++++- .../hercules_is_int/test/test_params.py | 34 ++++- .../rapidus2hp/ibex/test/test_params.py | 133 ++++++++++++------ .../rapidus2hp/jpeg/test/test_params.py | 80 ++++++++--- .../rapidus2hp/utils/param_test_base.py | 26 +++- 8 files changed, 387 insertions(+), 164 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/test/test_params.py b/flow/designs/rapidus2hp/cva6/test/test_params.py index 8afbbc3a02..c421d07b8d 100755 --- a/flow/designs/rapidus2hp/cva6/test/test_params.py +++ b/flow/designs/rapidus2hp/cva6/test/test_params.py @@ -42,64 +42,94 @@ def test_pdk_0p3_default(self): Tests PDK 0.3 """ - front_end = "" pdk_version = "" - for place_site in self._synopsys_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2(self): """ Tests PDK 0.2 """ - front_end = "" pdk_version = "0.2" - for place_site in self._ibm_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2a(self): """ Tests PDK 0.2a """ - front_end = "" pdk_version = "0.2a" - for place_site in self._synopsys_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p15(self): """ Tests PDK 0.15 """ - front_end = "" pdk_version = "0.15" - for place_site in self._synopsys_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p3(self): """ Tests PDK 0.3 """ - front_end = "" pdk_version = "0.3" - for place_site in self._synopsys_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_flow_variant(self): """Tests that setting the flow variant uses the right frontend""" test_tag = "flow_variant default" - cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND") + cmd = self.build_cmd("SYNTH_HDL_FRONTEND") self.execute_cmd_int(cmd, test_tag, "slang") test_tag = "flow_variant verific" - cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND", "verific") + cmd = self.build_cmd("SYNTH_HDL_FRONTEND", flow_variant="verific") self.execute_cmd_int(cmd, test_tag, "verific") diff --git a/flow/designs/rapidus2hp/ethmac/test/test_params.py b/flow/designs/rapidus2hp/ethmac/test/test_params.py index 04e36754f4..2c3ed37ef2 100755 --- a/flow/designs/rapidus2hp/ethmac/test/test_params.py +++ b/flow/designs/rapidus2hp/ethmac/test/test_params.py @@ -35,57 +35,87 @@ def get_exp_util(self, place_site, pdk_version): def test_pdk_0p3_default(self): """Tests PDK 0.3 Utilization""" - front_end = "" pdk_version = "" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2(self): """Tests PDK 0.2 Utilization""" - front_end = "" pdk_version = "0.2" - for place_site in self._ibm_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2a(self): """Tests PDK 0.2a Utilization""" - front_end = "" pdk_version = "0.2a" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p15(self): """Tests PDK 0.15 Utilization""" - front_end = "" pdk_version = "0.15" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p3(self): """Tests PDK 0.3 Utilization""" - front_end = "" pdk_version = "0.3" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) + + def test_flow_variant(self): + """Tests that setting the flow variant uses the right frontend""" + + test_tag = "flow_variant default" + cmd = self.build_cmd("SYNTH_HDL_FRONTEND") + self.execute_cmd_int(cmd, test_tag, None) + test_tag = "flow_variant verific" + cmd = self.build_cmd("SYNTH_HDL_FRONTEND", flow_variant="verific") + self.execute_cmd_int(cmd, test_tag, "verific") if __name__ == "__main__": diff --git a/flow/designs/rapidus2hp/gcd/test/test_params.py b/flow/designs/rapidus2hp/gcd/test/test_params.py index d384ba8311..dfe28307b0 100755 --- a/flow/designs/rapidus2hp/gcd/test/test_params.py +++ b/flow/designs/rapidus2hp/gcd/test/test_params.py @@ -37,65 +37,85 @@ def test_pdk_0p3_default(self): Tests PDK 0.3 utilization """ - front_end = "" pdk_version = "" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2(self): """ Tests PDK 0.2 utilization """ - front_end = "" pdk_version = "0.2" - for place_site in self._ibm_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2a(self): """ Tests PDK 0.2a utilization """ - front_end = "" pdk_version = "0.2a" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p15(self): """ Tests PDK 0.15 utilization """ - front_end = "" pdk_version = "0.15" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p3(self): """ Tests PDK 0.3 utilization """ - front_end = "" pdk_version = "0.3" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) if __name__ == "__main__": diff --git a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py index 1656e89d69..25a812a563 100755 --- a/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_idecode/test/test_params.py @@ -43,7 +43,11 @@ def test_pdk_0p3_default(self): for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, front_end) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_pdk_0p2(self): @@ -56,7 +60,11 @@ def test_pdk_0p2(self): for place_site in self._ibm_site_list: exp_util = self.get_exp_util(place_site, front_end) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_pdk_0p2a(self): @@ -69,7 +77,11 @@ def test_pdk_0p2a(self): for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, front_end) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_pdk_0p15(self): @@ -82,7 +94,11 @@ def test_pdk_0p15(self): for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, front_end) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_pdk_0p3(self): @@ -95,17 +111,21 @@ def test_pdk_0p3(self): for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, front_end) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_flow_variant(self): """Tests that setting the flow variant uses the right frontend""" test_tag = "flow_variant default" - cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND") + cmd = self.build_cmd("SYNTH_HDL_FRONTEND") self.execute_cmd_int(cmd, test_tag, "slang") test_tag = "flow_variant verific" - cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND", "verific") + cmd = self.build_cmd("SYNTH_HDL_FRONTEND", flow_variant="verific") self.execute_cmd_int(cmd, test_tag, "verific") diff --git a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py index 0abcb6b62a..a1b8330b9a 100755 --- a/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py +++ b/flow/designs/rapidus2hp/hercules_is_int/test/test_params.py @@ -45,7 +45,11 @@ def test_pdk_0p3_default(self): for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_pdk_0p2(self): @@ -58,7 +62,11 @@ def test_pdk_0p2(self): for place_site in self._ibm_site_list: exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_pdk_0p2a(self): @@ -71,7 +79,11 @@ def test_pdk_0p2a(self): for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_pdk_0p15(self): @@ -84,7 +96,11 @@ def test_pdk_0p15(self): for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_pdk_0p3(self): @@ -97,17 +113,21 @@ def test_pdk_0p3(self): for place_site in self._synopsys_site_list: exp_util = self.get_exp_util(place_site, front_end, pdk_version) self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, ) def test_flow_variant(self): """Tests that setting the flow variant uses the right frontend""" test_tag = "flow_variant default" - cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND") + cmd = self.build_cmd("SYNTH_HDL_FRONTEND") self.execute_cmd_int(cmd, test_tag, "slang") test_tag = "flow_variant verific" - cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND", "verific") + cmd = self.build_cmd("SYNTH_HDL_FRONTEND", flow_variant="verific") self.execute_cmd_int(cmd, test_tag, "verific") diff --git a/flow/designs/rapidus2hp/ibex/test/test_params.py b/flow/designs/rapidus2hp/ibex/test/test_params.py index ccb27b381d..e70cf7a79c 100755 --- a/flow/designs/rapidus2hp/ibex/test/test_params.py +++ b/flow/designs/rapidus2hp/ibex/test/test_params.py @@ -57,60 +57,100 @@ def test_pdk_0p3_default(self): Tests PDK 0.3 utilization """ - front_end = "" pdk_version = "" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2(self): """ Tests PDK 0.2 utilization """ - front_end = "" pdk_version = "0.2" - for place_site in self._ibm_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2a(self): """ Tests PDK 0.2a utilization """ - front_end = "" pdk_version = "0.2a" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p15(self): """ Tests PDK 0.15 utilization """ - front_end = "" pdk_version = "0.15" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p3(self): """ @@ -119,22 +159,33 @@ def test_pdk_0p3(self): front_end = "" pdk_version = "0.3" - for place_site in self._synopsys_site_list: - exp_util = self.get_exp_util(place_site, pdk_version) - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd( - place_site, pdk_version, front_end, "CORE_UTILIZATION", exp_util - ) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_util = self.get_exp_util(place_site, pdk_version) + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "CORE_UTILIZATION", + exp_util, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_flow_variant(self): """Tests that setting the flow variant uses the right frontend""" test_tag = "flow_variant default" - cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND") + cmd = self.build_cmd("SYNTH_HDL_FRONTEND") self.execute_cmd_int(cmd, test_tag, "slang") test_tag = "flow_variant verific" - cmd = self.build_cmd("", "", "", "SYNTH_HDL_FRONTEND", "verific") + cmd = self.build_cmd("SYNTH_HDL_FRONTEND", flow_variant="verific") self.execute_cmd_int(cmd, test_tag, "verific") diff --git a/flow/designs/rapidus2hp/jpeg/test/test_params.py b/flow/designs/rapidus2hp/jpeg/test/test_params.py index 4d9efa0c4c..c6c0d54088 100755 --- a/flow/designs/rapidus2hp/jpeg/test/test_params.py +++ b/flow/designs/rapidus2hp/jpeg/test/test_params.py @@ -42,55 +42,95 @@ def test_pdk_0p3_default(self): Tests PDK 0.3 utilization """ - front_end = "" pdk_version = "" - for place_site in self._synopsys_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2(self): """ Tests PDK 0.2 utilization """ - front_end = "" pdk_version = "0.2" - for place_site in self._ibm_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._ibm_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p2a(self): """ Tests PDK 0.2a utilization """ - front_end = "" pdk_version = "0.2a" - for place_site in self._synopsys_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p15(self): """ Tests PDK 0.15 utilization """ - front_end = "" pdk_version = "0.15" - for place_site in self._synopsys_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) def test_pdk_0p3(self): """ Tests PDK 0.3 utilization """ - front_end = "" pdk_version = "0.3" - for place_site in self._synopsys_site_list: - exp_sdc = self.get_exp_sdc(place_site, pdk_version) - self.execute_cmd(place_site, pdk_version, front_end, "SDC_FILE", exp_sdc) + for front_end in self._front_end_list: + for place_site in self._synopsys_site_list: + exp_sdc = self.get_exp_sdc(place_site, pdk_version) + self.execute_cmd( + "SDC_FILE", + exp_sdc, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) + + def test_flow_variant(self): + """Tests that setting the flow variant uses the right frontend""" + + test_tag = "flow_variant default" + cmd = self.build_cmd("SYNTH_HDL_FRONTEND") + self.execute_cmd_int(cmd, test_tag, None) + test_tag = "flow_variant verific" + cmd = self.build_cmd("SYNTH_HDL_FRONTEND", flow_variant="verific") + self.execute_cmd_int(cmd, test_tag, "verific") if __name__ == "__main__": diff --git a/flow/designs/rapidus2hp/utils/param_test_base.py b/flow/designs/rapidus2hp/utils/param_test_base.py index e20efeb98f..8ddcd40e0d 100644 --- a/flow/designs/rapidus2hp/utils/param_test_base.py +++ b/flow/designs/rapidus2hp/utils/param_test_base.py @@ -23,7 +23,7 @@ def setUp(self, design_name): # Handle different make output # param: value # param = value - self._result_re = re.compile(r"\S+\s*(?:=|:)\s*(\S+)") + self._result_re = re.compile(r"\S+\s*(?:=|:)\s*(\S+)?") self._front_end_list = ["", "slang", "verific"] self._ibm_site_list = ["", "SC6T", "SC8T"] self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h138_DST_45CPP"] @@ -38,29 +38,41 @@ def get_track_height(self, place_site): return "8T" def build_cmd( - self, place_site, pdk_version, front_end, param_name, flow_variant=None + self, + param_name, + place_site=None, + pdk_version=None, + front_end=None, + flow_variant=None, ): """Builds the command to execute""" str_buf = [self._cmd_base] - if place_site != "": + if place_site and place_site != "": str_buf.append(f"PLACE_SITE={place_site}") - if pdk_version != "": + if pdk_version and pdk_version != "": str_buf.append(f"RAPIDUS_PDK_VERSION={pdk_version}") - if front_end == "verific": + if front_end and front_end == "verific": str_buf.append(f"SYNTH_HDL_FRONTEND={front_end}") if flow_variant and flow_variant != "": str_buf.append(f"FLOW_VARIANT={flow_variant}") str_buf.append(f"print-{param_name}") return " ".join(str_buf) - def execute_cmd(self, place_site, pdk_version, front_end, param_name, exp_result): + def execute_cmd( + self, param_name, exp_result, place_site=None, pdk_version=None, front_end=None + ): """ Executes command """ test_tag = f"'{place_site}' '{pdk_version}' '{front_end}'" - cmd = self.build_cmd(place_site, pdk_version, front_end, param_name) + cmd = self.build_cmd( + param_name, + place_site=place_site, + pdk_version=pdk_version, + front_end=front_end, + ) self.execute_cmd_int(cmd, test_tag, exp_result) def execute_cmd_int(self, cmd, test_tag, exp_result): From 94344d721c3f746ce56d175dd79785920c4cea69 Mon Sep 17 00:00:00 2001 From: Cho Moon Date: Tue, 27 Jan 2026 01:20:47 +0000 Subject: [PATCH 348/364] updated metrics for public and private PDK designs Signed-off-by: Cho Moon --- flow/designs/asap7/aes-block/rules-base.json | 4 ++-- flow/designs/asap7/aes-mbff/rules-base.json | 8 ++++---- flow/designs/asap7/aes/rules-base.json | 6 +++--- flow/designs/asap7/cva6/rules-base.json | 4 ++-- flow/designs/asap7/ethmac_lvt/rules-base.json | 6 +++--- flow/designs/asap7/uart/rules-base.json | 8 ++++---- flow/designs/gf180/aes-hybrid/rules-base.json | 4 ++-- flow/designs/gf180/aes/rules-base.json | 2 +- .../nangate45/ariane133/rules-base.json | 14 +++++++------- .../nangate45/dynamic_node/rules-base.json | 2 +- .../nangate45/mempool_group/rules-base.json | 6 +++--- flow/designs/nangate45/swerv/rules-base.json | 6 +++--- .../nangate45/swerv_wrapper/rules-base.json | 12 ++++++------ .../nangate45/tinyRocket/rules-base.json | 8 ++++---- flow/designs/rapidus2hp/cva6/rules-base.json | 18 +++++++++--------- .../designs/rapidus2hp/cva6/rules-verific.json | 12 ++++++------ .../hercules_idecode/rules-base.json | 2 +- .../hercules_idecode/rules-verific.json | 10 +++++----- .../rapidus2hp/hercules_is_int/rules-base.json | 2 +- .../hercules_is_int/rules-verific.json | 10 +++++----- flow/designs/sky130hd/gcd/rules-base.json | 12 ++++++------ flow/designs/sky130hd/jpeg/rules-base.json | 2 +- flow/designs/sky130hd/riscv32i/rules-base.json | 6 +++--- flow/designs/sky130hs/aes/rules-base.json | 6 +++--- flow/designs/sky130hs/gcd/rules-base.json | 12 ++++++------ flow/designs/sky130hs/ibex/rules-base.json | 2 +- flow/designs/sky130hs/jpeg/rules-base.json | 2 +- 27 files changed, 93 insertions(+), 93 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 5b4956b551..1e1ae45e57 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9030.0, + "value": -9000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8540.0, + "value": -8520.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index 3cee923179..e74cce5db2 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -687.0, + "value": -1130.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2160.0, + "value": -2470.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -44.6, + "value": -42.3, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1100.0, + "value": -986.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes/rules-base.json b/flow/designs/asap7/aes/rules-base.json index cfbcbb4447..130b1932c9 100644 --- a/flow/designs/asap7/aes/rules-base.json +++ b/flow/designs/asap7/aes/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -607.0, + "value": -1250.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2010.0, + "value": -2660.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -911.0, + "value": -1100.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/cva6/rules-base.json b/flow/designs/asap7/cva6/rules-base.json index e04d4a8b56..6de4b33e01 100644 --- a/flow/designs/asap7/cva6/rules-base.json +++ b/flow/designs/asap7/cva6/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -50.4, + "value": -50.0, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -201.0, + "value": -200.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/ethmac_lvt/rules-base.json b/flow/designs/asap7/ethmac_lvt/rules-base.json index 9e4b7f0210..db9c06a286 100644 --- a/flow/designs/asap7/ethmac_lvt/rules-base.json +++ b/flow/designs/asap7/ethmac_lvt/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -816.0, + "value": -951.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -918.0, + "value": -1150.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -696.0, + "value": -904.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/uart/rules-base.json b/flow/designs/asap7/uart/rules-base.json index f139ae980d..2d249c9335 100644 --- a/flow/designs/asap7/uart/rules-base.json +++ b/flow/designs/asap7/uart/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -783.0, + "value": -928.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1510.0, + "value": -1640.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1754, + "value": 2030, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -839.0, + "value": -1030.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index c0223ba3c1..c68c0f2987 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -144.0, + "value": -145.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -154.0, + "value": -156.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index 75ea8f2a34..316c98c609 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -119.0, + "value": -118.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index a663981188..277fa0a002 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.499, + "value": -0.261, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -626.0, + "value": -106.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.503, + "value": -0.258, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -620.0, + "value": -102.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8342718, + "value": 7775102, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -0.503, + "value": -0.254, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -606.0, + "value": -95.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/dynamic_node/rules-base.json b/flow/designs/nangate45/dynamic_node/rules-base.json index 3680551fc7..ace72b7a9d 100644 --- a/flow/designs/nangate45/dynamic_node/rules-base.json +++ b/flow/designs/nangate45/dynamic_node/rules-base.json @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.435, + "value": -0.434, "compare": ">=" }, "globalroute__timing__setup__tns": { diff --git a/flow/designs/nangate45/mempool_group/rules-base.json b/flow/designs/nangate45/mempool_group/rules-base.json index c2b9bf2945..e24a88539d 100644 --- a/flow/designs/nangate45/mempool_group/rules-base.json +++ b/flow/designs/nangate45/mempool_group/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13000.0, + "value": -11000.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -10700.0, + "value": -11100.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -10500.0, + "value": -10700.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 51c8d3918e..89d210b90e 100644 --- a/flow/designs/nangate45/swerv/rules-base.json +++ b/flow/designs/nangate45/swerv/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -4.66, + "value": -9.64, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -14.2, + "value": -37.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -4.89, + "value": -23.9, "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 14afb31503..9c6ab8315c 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.164, + "value": -0.163, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -21.7, + "value": -24.1, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.416, + "value": -1.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,15 +84,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5.76, + "value": -7.3, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.114, + "value": -0.11, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -2.03, + "value": -1.14, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 116bee4297..0c8f20cd5e 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -26.4, + "value": -28.1, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -43.8, + "value": -44.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 549212, + "value": 545695, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -37.9, + "value": -40.3, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index fafdba0eee..afc82dd92e 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -32,15 +32,15 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10.2, + "value": -34.3, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.0627, + "value": -0.0275, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -1.33, + "value": -0.11, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -52,15 +52,15 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -323.0, + "value": -249.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0285, + "value": -0.0275, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.111, + "value": -0.11, "compare": ">=" }, "finish__timing__setup__ws": { @@ -68,15 +68,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -323.0, + "value": -249.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.0285, + "value": -0.0275, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.111, + "value": -0.11, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index d4715bb3c9..d98b320547 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0275, + "value": -0.148, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.11, + "value": -347.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0949, + "value": -0.189, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -136.0, + "value": -677.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0949, + "value": -0.189, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -136.0, + "value": -677.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index e7cffd303b..4bd405e348 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9.87, + "value": -7.79, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json index 1a3b7ddd78..c2a7ffdb4c 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13.6, + "value": -15.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0667, + "value": -0.0661, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -190.0, + "value": -194.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0667, + "value": -0.0661, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -190.0, + "value": -194.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 5182d3f47c..41f5d59d35 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -51.3, + "value": -50.6, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index 86a5a231dc..1ec201ffa8 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -71.0, + "value": -72.6, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.12, + "value": -0.118, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1190.0, + "value": -1020.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.12, + "value": -0.118, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1190.0, + "value": -1020.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 b7aced2aee..1421149341 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -94.5, + "value": -94.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -2.48, + "value": -2.43, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8444, + "value": 8413, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -2.32, + "value": -2.29, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -95.7, + "value": -95.5, "compare": ">=" }, "finish__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 5062, + "value": 5056, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index beaa90b067..5ccdcc00ab 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -76,7 +76,7 @@ "compare": "<=" }, "detailedroute__antenna_diodes_count": { - "value": 119, + "value": 131, "compare": "<=" }, "finish__timing__setup__ws": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 52c3429878..907158840e 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -11.6, + "value": -17.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -43.6, + "value": -21.1, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8.38, + "value": -18.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index 98e55b441f..e2f22f9f5e 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2.42, + "value": -2.33, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 708830, + "value": 708382, "compare": "<=" }, "detailedroute__route__drc_errors": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.632, + "value": -0.605, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 5046a8aa31..66e0043059 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 6478, + "value": 6389, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 726, + "value": 721, "compare": "<=" }, "detailedplace__design__violations": { @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10.5, + "value": -11.4, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.502, + "value": -0.499, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -16.3, + "value": -15.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -96,7 +96,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 7582, + "value": 7546, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/sky130hs/ibex/rules-base.json b/flow/designs/sky130hs/ibex/rules-base.json index 642d4a3325..2115fef374 100644 --- a/flow/designs/sky130hs/ibex/rules-base.json +++ b/flow/designs/sky130hs/ibex/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -54.1, + "value": -68.4, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/sky130hs/jpeg/rules-base.json b/flow/designs/sky130hs/jpeg/rules-base.json index 85b2a9616b..4529722811 100644 --- a/flow/designs/sky130hs/jpeg/rules-base.json +++ b/flow/designs/sky130hs/jpeg/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 1539919, + "value": 1539590, "compare": "<=" }, "detailedroute__route__drc_errors": { From ae23d644ff11cdcd2da94f6dc8734fc0f43d53fe Mon Sep 17 00:00:00 2001 From: Augusto Berndt Date: Tue, 27 Jan 2026 11:56:58 +0000 Subject: [PATCH 349/364] update OR Signed-off-by: Augusto Berndt --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 1979041475..47d801c67d 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 1979041475236df40956bf5e368b63ed52840a7a +Subproject commit 47d801c67dab1e938040aab13c9e32cf35b23336 From a5c2be13e665d0c53dd507ee4e523256d89a663f Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Tue, 27 Jan 2026 14:35:53 +0000 Subject: [PATCH 350/364] Metrics update for PDK 0.3 corner cell change Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/cva6/rules-base.json | 16 ++++++++-------- .../designs/rapidus2hp/cva6/rules-verific.json | 18 +++++++++--------- flow/designs/rapidus2hp/ethmac/rules-base.json | 10 +++++----- .../rapidus2hp/ethmac/rules-verific.json | 10 +++++----- flow/designs/rapidus2hp/gcd/rules-base.json | 14 +++++++------- flow/designs/rapidus2hp/gcd/rules-verific.json | 6 +++--- .../hercules_idecode/rules-base.json | 12 ++++++------ .../hercules_idecode/rules-verific.json | 8 ++++---- .../rapidus2hp/hercules_is_int/rules-base.json | 6 +++--- .../hercules_is_int/rules-verific.json | 8 ++++---- .../designs/rapidus2hp/ibex/rules-verific.json | 10 +++++----- flow/designs/rapidus2hp/jpeg/rules-base.json | 4 ++-- .../designs/rapidus2hp/jpeg/rules-verific.json | 8 ++++---- 13 files changed, 65 insertions(+), 65 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index a86ed3ea43..6c0960e767 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0939, + "value": -0.088, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -193.0, + "value": -183.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,15 +52,15 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -364.0, + "value": -432.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0269, + "value": -0.025, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.103, + "value": -0.1, "compare": ">=" }, "finish__timing__setup__ws": { @@ -68,15 +68,15 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -364.0, + "value": -432.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.0269, + "value": -0.025, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.103, + "value": -0.1, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index 329c83d9d3..5da5d0ecbc 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0871, + "value": -0.0776, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -139.0, + "value": -124.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,7 +48,7 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.172, + "value": -0.152, "compare": ">=" }, "globalroute__timing__setup__tns": { @@ -56,27 +56,27 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0275, + "value": -0.025, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.11, + "value": -0.1, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.172, + "value": -0.152, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -500.0, + "value": -439.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.0275, + "value": -0.025, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.11, + "value": -0.1, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-base.json b/flow/designs/rapidus2hp/ethmac/rules-base.json index 33f18282c7..324893eb5d 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-base.json +++ b/flow/designs/rapidus2hp/ethmac/rules-base.json @@ -8,11 +8,11 @@ "compare": "==" }, "placeopt__design__instance__area": { - "value": 4564, + "value": 4563, "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 88225, + "value": 88223, "compare": "<=" }, "detailedplace__design__violations": { @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.251, + "value": -0.278, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.733, + "value": -0.792, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.733, + "value": -0.792, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/rules-verific.json b/flow/designs/rapidus2hp/ethmac/rules-verific.json index f2cdfc443e..546127d51f 100644 --- a/flow/designs/rapidus2hp/ethmac/rules-verific.json +++ b/flow/designs/rapidus2hp/ethmac/rules-verific.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 86842, + "value": 86838, "compare": "<=" }, "detailedplace__design__violations": { @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0224, + "value": -0.0223, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.297, + "value": -0.28, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.651, + "value": -0.738, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.651, + "value": -0.738, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/gcd/rules-base.json b/flow/designs/rapidus2hp/gcd/rules-base.json index 1129e774f0..15db8e0393 100644 --- a/flow/designs/rapidus2hp/gcd/rules-base.json +++ b/flow/designs/rapidus2hp/gcd/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0219, + "value": -0.0195, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.151, + "value": -0.14, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0326, + "value": -0.0314, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.361, + "value": -0.405, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0326, + "value": -0.0314, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.361, + "value": -0.405, "compare": ">=" }, "finish__timing__hold__ws": { @@ -80,7 +80,7 @@ "compare": ">=" }, "finish__design__instance__area": { - "value": 34, + "value": 33, "compare": "<=" } } \ No newline at end of file diff --git a/flow/designs/rapidus2hp/gcd/rules-verific.json b/flow/designs/rapidus2hp/gcd/rules-verific.json index 4a3aef2511..adeba60f64 100644 --- a/flow/designs/rapidus2hp/gcd/rules-verific.json +++ b/flow/designs/rapidus2hp/gcd/rules-verific.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 692, + "value": 690, "compare": "<=" }, "detailedplace__design__violations": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.338, + "value": -0.529, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.338, + "value": -0.529, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index e7cffd303b..cf36f89b60 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0276, + "value": -0.0472, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -9.87, + "value": -53.6, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0623, + "value": -0.0811, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -154.0, + "value": -213.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0623, + "value": -0.0811, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -154.0, + "value": -178.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json index 1a3b7ddd78..c43c2b35df 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0306, + "value": -0.0229, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -13.6, + "value": -6.75, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -190.0, + "value": -234.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -190.0, + "value": -234.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 5182d3f47c..b2d56bc857 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -51.3, + "value": -57.1, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -962.0, + "value": -894.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -962.0, + "value": -894.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index 86a5a231dc..ad5ba144dc 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0532, + "value": -0.0441, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -71.0, + "value": -77.3, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1190.0, + "value": -1090.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1190.0, + "value": -1090.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json index 73f7714f8d..b8de3f4d9a 100644 --- a/flow/designs/rapidus2hp/ibex/rules-verific.json +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 23447, + "value": 23391, "compare": "<=" }, "detailedplace__design__violations": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0476, + "value": -0.0265, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -5.1, + "value": -0.111, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0476, + "value": -0.0265, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -5.1, + "value": -0.111, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-base.json b/flow/designs/rapidus2hp/jpeg/rules-base.json index 4f071789ad..b795f61c99 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-base.json +++ b/flow/designs/rapidus2hp/jpeg/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -35.4, + "value": -35.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -35.4, + "value": -35.7, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-verific.json b/flow/designs/rapidus2hp/jpeg/rules-verific.json index 1da1eb4af6..f08741e892 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-verific.json +++ b/flow/designs/rapidus2hp/jpeg/rules-verific.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0683, + "value": -0.0649, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -50.9, + "value": -39.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0683, + "value": -0.0649, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -50.9, + "value": -39.0, "compare": ">=" }, "finish__timing__hold__ws": { From 897a5219a17e83fb36a5b01b6bf118aac97fa8d9 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Tue, 27 Jan 2026 21:42:40 +0000 Subject: [PATCH 351/364] update or Signed-off-by: Matt Liberty --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 7c57b1b222..751e9e18f4 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 7c57b1b222c2be09cf1493d96b1c216f2f1d36c7 +Subproject commit 751e9e18f4a9a9b492f4c305098eabddb960f03b From 237bf74dff1d9d8f10c4049190d0b21c5c21b46d Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Wed, 28 Jan 2026 20:31:25 +0000 Subject: [PATCH 352/364] Tuning designs for PDK 0.3 using 6T library Signed-off-by: Jeff Ng --- .../rapidus2hp/cva6/constraint_0.3_6T.sdc | 2 +- flow/designs/rapidus2hp/ibex/config.mk | 11 ++++++--- .../rapidus2hp/ibex/constraint_0.3_6T.sdc | 19 +++++++++++++++ .../rapidus2hp/ibex/test/test_params.py | 8 +++++-- .../rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc | 2 +- flow/designs/rapidus2hp/jpeg/rules-base.json | 24 +++++++++---------- .../rapidus2hp/jpeg/rules-verific.json | 24 +++++++++---------- 7 files changed, 59 insertions(+), 31 deletions(-) create mode 100644 flow/designs/rapidus2hp/ibex/constraint_0.3_6T.sdc diff --git a/flow/designs/rapidus2hp/cva6/constraint_0.3_6T.sdc b/flow/designs/rapidus2hp/cva6/constraint_0.3_6T.sdc index 2af5e68946..3b08af9063 100644 --- a/flow/designs/rapidus2hp/cva6/constraint_0.3_6T.sdc +++ b/flow/designs/rapidus2hp/cva6/constraint_0.3_6T.sdc @@ -5,7 +5,7 @@ source $::env(PLATFORM_DIR)/util.tcl set clk_name main_clk set clk_port clk_i set clk_ports_list [list $clk_port] -set clk_period 700 +set clk_period 650 convert_time_value clk_period diff --git a/flow/designs/rapidus2hp/ibex/config.mk b/flow/designs/rapidus2hp/ibex/config.mk index 8e7f821859..0ea4d351fa 100644 --- a/flow/designs/rapidus2hp/ibex/config.mk +++ b/flow/designs/rapidus2hp/ibex/config.mk @@ -27,6 +27,7 @@ else _0P2A_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_6T.sdc _0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_8T.sdc _0P15_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.15.sdc + _0P3_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.3_6T.sdc _0P3_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.3_8T.sdc # Use $(if) to defer conditional eval until all makefiles are read @@ -34,11 +35,15 @@ else $(if $(filter 0.2a,$(RAPIDUS_PDK_VERSION)), \ $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ $(_0P2A_6T_SDC_FILE), \ - $(_0P2A_8T_SDC_FILE)), \ + $(_0P2A_8T_SDC_FILE) \ + ), \ $(if $(filter 0.15,$(RAPIDUS_PDK_VERSION)), \ $(_0P15_SDC_FILE), \ - $(if $(and $(filter 0.3,$(RAPIDUS_PDK_VERSION)),$(filter ra02h184_HST_45CPP,$(PLACE_SITE))), \ - $(_0P3_8T_SDC_FILE), \ + $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + $(_0P3_6T_SDC_FILE), \ + $(_0P3_8T_SDC_FILE) \ + ), \ $(DEFAULT_SDC_FILE) \ ) \ ) \ diff --git a/flow/designs/rapidus2hp/ibex/constraint_0.3_6T.sdc b/flow/designs/rapidus2hp/ibex/constraint_0.3_6T.sdc new file mode 100644 index 0000000000..bdece50956 --- /dev/null +++ b/flow/designs/rapidus2hp/ibex/constraint_0.3_6T.sdc @@ -0,0 +1,19 @@ +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name core_clock +set clk_port_name clk_i +set clk_period 550 +set clk_io_pct 0.2 + +set clk_port [get_ports $clk_port_name] + +convert_time_value clk_period + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] diff --git a/flow/designs/rapidus2hp/ibex/test/test_params.py b/flow/designs/rapidus2hp/ibex/test/test_params.py index e70cf7a79c..946efc41b5 100755 --- a/flow/designs/rapidus2hp/ibex/test/test_params.py +++ b/flow/designs/rapidus2hp/ibex/test/test_params.py @@ -46,10 +46,14 @@ def get_exp_sdc(self, place_site, pdk_version): if pdk_version in ["", "0.3"]: if pdk_version == "": pdk_version = "0.3" - if place_site in ["", "ra02h184_HST_45CPP"]: + if place_site == "ra02h138_DST_45CPP": return os.path.join( - self._design_full_dir, f"constraint_{pdk_version}_8T.sdc" + self._design_full_dir, f"constraint_{pdk_version}_6T.sdc" ) + return os.path.join( + self._design_full_dir, f"constraint_{pdk_version}_8T.sdc" + ) + return os.path.join(self._design_full_dir, "constraint.sdc") def test_pdk_0p3_default(self): diff --git a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc index 261dc57983..3263c5e01a 100644 --- a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc +++ b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.3.sdc @@ -4,7 +4,7 @@ current_design jpeg_encoder set clk_name clk set clk_port_name clk -set clk_period 200 +set clk_period 150 set clk_io_pct 0.2 convert_time_value clk_period diff --git a/flow/designs/rapidus2hp/jpeg/rules-base.json b/flow/designs/rapidus2hp/jpeg/rules-base.json index b795f61c99..4af3c87f90 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-base.json +++ b/flow/designs/rapidus2hp/jpeg/rules-base.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.01, + "value": -0.0432, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.04, + "value": -29.2, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.01, + "value": -0.0075, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -0.04, + "value": -0.03, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0629, + "value": -0.0952, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -35.7, + "value": -142.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.01, + "value": -0.0075, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.04, + "value": -0.03, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0629, + "value": -0.0952, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -35.7, + "value": -142.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.01, + "value": -0.0075, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.04, + "value": -0.03, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/rapidus2hp/jpeg/rules-verific.json b/flow/designs/rapidus2hp/jpeg/rules-verific.json index f08741e892..6dd3abb241 100644 --- a/flow/designs/rapidus2hp/jpeg/rules-verific.json +++ b/flow/designs/rapidus2hp/jpeg/rules-verific.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.01, + "value": -0.0529, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -0.04, + "value": -30.9, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.01, + "value": -0.0075, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -0.04, + "value": -0.03, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -48,35 +48,35 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.0649, + "value": -0.092, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -39.0, + "value": -126.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.01, + "value": -0.0075, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.04, + "value": -0.03, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.0649, + "value": -0.092, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -39.0, + "value": -126.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.01, + "value": -0.0075, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.04, + "value": -0.03, "compare": ">=" }, "finish__design__instance__area": { From 04964860332bb3df7695392bfc54a52eef9940ce Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Fri, 30 Jan 2026 06:10:00 +0000 Subject: [PATCH 353/364] update or post-merge Signed-off-by: Matt Liberty --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 47d801c67d..69c1719db1 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 47d801c67dab1e938040aab13c9e32cf35b23336 +Subproject commit 69c1719db1ac0322923030ad3a3b8ca6620dfd4a From 9b4655a8baa177d933e152ece5d1ba1781c7282a Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Fri, 30 Jan 2026 22:53:31 +0000 Subject: [PATCH 354/364] designs/rapidus2hp/cva6/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.088 | -0.0808 | Tighten | | cts__timing__setup__tns | -34.3 | -120.0 | Failing | | cts__timing__hold__ws | -0.0275 | -0.025 | Tighten | | cts__timing__hold__tns | -0.11 | -0.1 | Tighten | | globalroute__timing__setup__tns | -249.0 | -434.0 | Failing | | globalroute__timing__hold__ws | -0.0275 | -0.025 | Tighten | | globalroute__timing__hold__tns | -0.11 | -0.1 | Tighten | | finish__timing__setup__tns | -249.0 | -434.0 | Failing | | finish__timing__hold__ws | -0.0275 | -0.025 | Tighten | | finish__timing__hold__tns | -0.11 | -0.1 | Tighten | designs/rapidus2hp/cva6/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -347.0 | -344.0 | Tighten | | globalroute__timing__setup__tns | -677.0 | -820.0 | Failing | | finish__timing__setup__tns | -677.0 | -820.0 | Failing | designs/rapidus2hp/hercules_idecode/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -15.4 | -6.74 | Tighten | | globalroute__timing__setup__tns | -194.0 | -197.0 | Failing | | finish__timing__setup__tns | -194.0 | -197.0 | Failing | designs/rapidus2hp/hercules_idecode/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -7.79 | -45.3 | Failing | | globalroute__timing__setup__tns | -213.0 | -176.0 | Tighten | | finish__timing__setup__tns | -178.0 | -176.0 | Tighten | designs/rapidus2hp/ibex/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | globalroute__timing__setup__tns | -0.111 | -0.236 | Failing | | finish__timing__setup__tns | -0.111 | -0.236 | Failing | designs/rapidus2hp/hercules_is_int/rules-verific.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -72.6 | -77.5 | Failing | | globalroute__timing__setup__tns | -1020.0 | -1300.0 | Failing | | finish__timing__setup__tns | -1020.0 | -1300.0 | Failing | designs/rapidus2hp/hercules_is_int/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -50.6 | -63.8 | Failing | | globalroute__timing__setup__ws | -0.106 | -0.12 | Failing | | globalroute__timing__setup__tns | -894.0 | -1160.0 | Failing | | finish__timing__setup__ws | -0.106 | -0.12 | Failing | | finish__timing__setup__tns | -894.0 | -1160.0 | Failing | Signed-off-by: Matt Liberty --- flow/designs/rapidus2hp/cva6/rules-base.json | 22 +++++++++---------- .../rapidus2hp/cva6/rules-verific.json | 8 +++---- .../hercules_idecode/rules-base.json | 8 +++---- .../hercules_idecode/rules-verific.json | 8 +++---- .../hercules_is_int/rules-base.json | 12 +++++----- .../hercules_is_int/rules-verific.json | 8 +++---- .../rapidus2hp/ibex/rules-verific.json | 4 ++-- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index 2a2d9346b5..c24cff7ca8 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -28,19 +28,19 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.088, + "value": -0.0808, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -34.3, + "value": -120.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -0.0275, + "value": -0.025, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -0.11, + "value": -0.1, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -52,15 +52,15 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -249.0, + "value": -434.0, "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -0.0275, + "value": -0.025, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.11, + "value": -0.1, "compare": ">=" }, "finish__timing__setup__ws": { @@ -68,19 +68,19 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -249.0, + "value": -434.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -0.0275, + "value": -0.025, "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.11, + "value": -0.1, "compare": ">=" }, "finish__design__instance__area": { "value": 14360, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/cva6/rules-verific.json b/flow/designs/rapidus2hp/cva6/rules-verific.json index 6cbc6d9daf..b867052476 100644 --- a/flow/designs/rapidus2hp/cva6/rules-verific.json +++ b/flow/designs/rapidus2hp/cva6/rules-verific.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -347.0, + "value": -344.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -677.0, + "value": -820.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -677.0, + "value": -820.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -83,4 +83,4 @@ "value": 14642, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json index 83760f2e8f..c9d9368e99 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -7.79, + "value": -45.3, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -213.0, + "value": -176.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -178.0, + "value": -176.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -83,4 +83,4 @@ "value": 11865, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json index 3c5161f0fa..3be7653d95 100644 --- a/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_idecode/rules-verific.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -15.4, + "value": -6.74, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -194.0, + "value": -197.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -194.0, + "value": -197.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -83,4 +83,4 @@ "value": 11884, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json index 5f0c32397d..a1b0565a73 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-base.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -50.6, + "value": -63.8, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.106, + "value": -0.12, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -894.0, + "value": -1160.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -64,11 +64,11 @@ "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.106, + "value": -0.12, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -894.0, + "value": -1160.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -83,4 +83,4 @@ "value": 33275, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json index cf39d544cb..f754b07bde 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json +++ b/flow/designs/rapidus2hp/hercules_is_int/rules-verific.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -72.6, + "value": -77.5, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -1020.0, + "value": -1300.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1020.0, + "value": -1300.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -83,4 +83,4 @@ "value": 33377, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/rapidus2hp/ibex/rules-verific.json b/flow/designs/rapidus2hp/ibex/rules-verific.json index b8de3f4d9a..d69e039649 100644 --- a/flow/designs/rapidus2hp/ibex/rules-verific.json +++ b/flow/designs/rapidus2hp/ibex/rules-verific.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.111, + "value": -0.236, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -68,7 +68,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.111, + "value": -0.236, "compare": ">=" }, "finish__timing__hold__ws": { From 8bb1fd1741c2ba570a122e1e444b5ef2b3796acd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Sat, 31 Jan 2026 10:35:49 +0100 Subject: [PATCH 355/364] make: print-FOO temp file gaffe for parallel builds within the same process MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- flow/scripts/variables.mk | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/flow/scripts/variables.mk b/flow/scripts/variables.mk index ad7f867fb4..ea0cbd1b7c 100644 --- a/flow/scripts/variables.mk +++ b/flow/scripts/variables.mk @@ -222,7 +222,8 @@ print-%: # # We have to use $(file ...) because we want to be able # to print variables that contain newlines. - $(file >/tmp/print_tmp$$,$($*)) + $(eval TEMP_FILE := $(shell mktemp /tmp/print_tmp.XXXXXX)) + @$(file >$(TEMP_FILE),$($*)) @echo -n "$*: " - @cat /tmp/print_tmp$$ - @rm /tmp/print_tmp$$ + @cat $(TEMP_FILE) + @rm -f $(TEMP_FILE) From 7954c9eaed764bf612655db38630655507783084 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sat, 31 Jan 2026 20:58:42 +0000 Subject: [PATCH 356/364] update OR submodule Signed-off-by: Matt Liberty --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 403cfc7223..919abce98a 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 403cfc722377d3368c48f68adc03262ce6046ab1 +Subproject commit 919abce98aa814d073fbe59131ab78b520cdb3a6 From 0766ef9807d82843ecb78ba7d01b86007b93f766 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sat, 31 Jan 2026 21:00:56 +0000 Subject: [PATCH 357/364] designs/rapidus2hp/cva6/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -0.0808 | -0.114 | Failing | | cts__timing__setup__tns | -120.0 | -215.0 | Failing | | globalroute__timing__setup__ws | -0.15 | -0.186 | Failing | | globalroute__timing__setup__tns | -434.0 | -544.0 | Failing | | globalroute__timing__hold__tns | -0.1 | -0.23 | Failing | | finish__timing__setup__ws | -0.15 | -0.186 | Failing | | finish__timing__setup__tns | -434.0 | -544.0 | Failing | | finish__timing__hold__tns | -0.1 | -0.23 | Failing | Signed-off-by: Matt Liberty --- flow/designs/rapidus2hp/cva6/rules-base.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/flow/designs/rapidus2hp/cva6/rules-base.json b/flow/designs/rapidus2hp/cva6/rules-base.json index c24cff7ca8..9a8f587748 100644 --- a/flow/designs/rapidus2hp/cva6/rules-base.json +++ b/flow/designs/rapidus2hp/cva6/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -0.0808, + "value": -0.114, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -120.0, + "value": -215.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.15, + "value": -0.186, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -434.0, + "value": -544.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -60,15 +60,15 @@ "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -0.1, + "value": -0.23, "compare": ">=" }, "finish__timing__setup__ws": { - "value": -0.15, + "value": -0.186, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -434.0, + "value": -544.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -76,7 +76,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -0.1, + "value": -0.23, "compare": ">=" }, "finish__design__instance__area": { From 722306ccf2e289c07e83453a85961b6338a43f38 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Sat, 31 Jan 2026 21:01:42 +0000 Subject: [PATCH 358/364] designs/gf12/swerv_wrapper/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -75.0 | -172.0 | Failing | | cts__timing__setup__tns | -300.0 | -899.0 | Failing | Signed-off-by: Matt Liberty --- flow/designs/gf12/swerv_wrapper/rules-base.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flow/designs/gf12/swerv_wrapper/rules-base.json b/flow/designs/gf12/swerv_wrapper/rules-base.json index 8a01dd8252..63b42752d6 100644 --- a/flow/designs/gf12/swerv_wrapper/rules-base.json +++ b/flow/designs/gf12/swerv_wrapper/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -75.0, + "value": -172.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -300.0, + "value": -899.0, "compare": ">=" }, "cts__timing__hold__ws": { From e572337c8a4171f5e6068fd1662c07b2dbe92f2f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 31 Jan 2026 23:25:46 +0000 Subject: [PATCH 359/364] flow: update rules Signed-off-by: github-actions[bot] --- flow/designs/asap7/aes-block/rules-base.json | 4 ++-- flow/designs/asap7/ibex/rules-base.json | 2 +- flow/designs/gf180/ibex/rules-base.json | 4 ++-- flow/designs/nangate45/ariane133/rules-base.json | 6 +++--- flow/designs/nangate45/bp_be_top/rules-base.json | 6 +++--- flow/designs/nangate45/bp_fe_top/rules-base.json | 2 +- flow/designs/nangate45/jpeg/rules-base.json | 6 +++--- flow/designs/nangate45/swerv_wrapper/rules-base.json | 2 +- flow/designs/sky130hd/microwatt/rules-base.json | 4 ++-- flow/designs/sky130hd/riscv32i/rules-base.json | 2 +- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 1e1ae45e57..8623bdac5f 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -80,11 +80,11 @@ "compare": "<=" }, "finish__timing__setup__ws": { - "value": -98.3, + "value": -129.0, "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3240.0, + "value": -3780.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/ibex/rules-base.json b/flow/designs/asap7/ibex/rules-base.json index 64b8f30c8a..b3d7ced325 100644 --- a/flow/designs/asap7/ibex/rules-base.json +++ b/flow/designs/asap7/ibex/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -51200.0, + "value": -57400.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/gf180/ibex/rules-base.json b/flow/designs/gf180/ibex/rules-base.json index bf6e1eeebb..3f7a62d37a 100644 --- a/flow/designs/gf180/ibex/rules-base.json +++ b/flow/designs/gf180/ibex/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2.95, + "value": -23.8, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -2.46, + "value": -11.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/ariane133/rules-base.json b/flow/designs/nangate45/ariane133/rules-base.json index 277fa0a002..65f75e24d5 100644 --- a/flow/designs/nangate45/ariane133/rules-base.json +++ b/flow/designs/nangate45/ariane133/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -106.0, + "value": -272.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -102.0, + "value": -409.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -95.0, + "value": -387.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index a74ae56a33..f991e58505 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -19.8, + "value": -22.5, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -23.8, + "value": -25.3, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -23.7, + "value": -26.3, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index ad4bdfabef..e98d566dbf 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -3.48, + "value": -6.17, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 77ce68793d..e0b322c635 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -36.4, + "value": -41.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -50.0, + "value": -54.2, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -41.1, + "value": -42.1, "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 9c6ab8315c..54ec05cb2f 100644 --- a/flow/designs/nangate45/swerv_wrapper/rules-base.json +++ b/flow/designs/nangate45/swerv_wrapper/rules-base.json @@ -92,7 +92,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -1.14, + "value": -2.0, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hd/microwatt/rules-base.json b/flow/designs/sky130hd/microwatt/rules-base.json index 3f891c550a..b416ccb8b5 100644 --- a/flow/designs/sky130hd/microwatt/rules-base.json +++ b/flow/designs/sky130hd/microwatt/rules-base.json @@ -72,7 +72,7 @@ "compare": "<=" }, "detailedroute__antenna__violating__nets": { - "value": 0, + "value": 3, "compare": "<=" }, "detailedroute__antenna_diodes_count": { @@ -92,7 +92,7 @@ "compare": ">=" }, "finish__timing__hold__tns": { - "value": -21.2, + "value": -47.8, "compare": ">=" }, "finish__design__instance__area": { diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index 907158840e..bf28876dde 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -17.8, + "value": -24.7, "compare": ">=" }, "cts__timing__hold__ws": { From 987eed67c2b14ba1e02cf192f1eed6fa55fa5ffe Mon Sep 17 00:00:00 2001 From: Nishanth Date: Mon, 2 Feb 2026 11:20:36 +0530 Subject: [PATCH 360/364] mem_dump: add summary of inferred memory usage Signed-off-by: Nishanth --- flow/scripts/mem_dump.py | 76 ++++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 27 deletions(-) diff --git a/flow/scripts/mem_dump.py b/flow/scripts/mem_dump.py index 36956bece8..aac74f9e56 100644 --- a/flow/scripts/mem_dump.py +++ b/flow/scripts/mem_dump.py @@ -4,8 +4,6 @@ def find_top_modules(data): - # There can be some cruft in the modules list so that - # we have multiple top level candidates. top_module = [] instantiations = set( [ @@ -14,7 +12,7 @@ def find_top_modules(data): for cell in minfo2["cells"].values() ] ) - for mname, minfo in data["modules"].items(): + for mname in data["modules"].keys(): if mname not in instantiations: top_module.append(mname) return top_module @@ -23,16 +21,6 @@ def find_top_modules(data): def find_cells_by_type_in_module( module_name, data, target_type, current_path, matching_cells ): - """ - Searches through hierarchy starting at module_name to find all instances of - the given module/type in the hierarchy. - - Returns list of cell paths, which are constructed as: - - .(.+). - - where the child_inst_name/child_module_name pairs are repeated for each level of the hierarchy. - """ for cell_name, cell in data["modules"][module_name]["cells"].items(): cell_path = ( f"{current_path}.{module_name}.{cell_name}" @@ -42,18 +30,15 @@ def find_cells_by_type_in_module( if cell["type"] == target_type: matching_cells.append(cell_path) elif cell["type"] in data["modules"]: - # Recursively search within the module matching_cells.extend( find_cells_by_type_in_module( cell["type"], data, target_type, cell_path, [] ) ) - return matching_cells def find_cells_by_type(top_modules, data, module_name, current_path=""): - # first find top module, the module without any submodules names = [] for top_module in top_modules: names.extend( @@ -69,13 +54,12 @@ def format_ram_table_from_json(data, max_bits=None): formatting = "{:>5} | {:>5} | {:>6} | {:<20} | {:<80}\n" table = formatting.format("Rows", "Width", "Bits", "Module", "Instances") table += "-" * len(table) + "\n" + max_ok = True entries = [] - # Collect the entries in a list for module_name, module_info in data["modules"].items(): - cells = module_info["cells"] - for cell in cells.values(): + for cell in module_info["cells"].values(): if not cell["type"].startswith("$mem"): continue parameters = cell["parameters"] @@ -84,18 +68,38 @@ def format_ram_table_from_json(data, max_bits=None): instances = find_cells_by_type(top_modules, data, module_name) instance_bits = size * width bits = instance_bits * len(instances) + entries.append((size, width, bits, module_name, ", ".join(instances))) + if max_bits is not None and instance_bits > max_bits: max_ok = False - # Sort the entries by descending bits entries.sort(key=lambda x: x[2], reverse=True) - # Format the sorted entries into the table for entry in entries: table += formatting.format(*entry) - return table, max_ok + # ---- Summary statistics ---- + total_bits = sum(e[2] for e in entries) + + largest_instance_bits = 0 + largest_instance_module = None + + for size, width, _, module, _ in entries: + instance_bits = size * width + if instance_bits > largest_instance_bits: + largest_instance_bits = instance_bits + largest_instance_module = module + + summary = { + "memory_count": len(entries), + "largest_instance_bits": largest_instance_bits, + "largest_instance_module": largest_instance_module, + "largest_total_bits": entries[0][2] if entries else 0, + "total_bits": total_bits, + } + + return table, max_ok, summary if __name__ == "__main__": @@ -119,9 +123,27 @@ def format_ram_table_from_json(data, max_bits=None): print(" " + "\n ".join(src_files)) print("Memories found in the design:") - formatted_table, max_ok = format_ram_table_from_json(json_data, args.max_bits) + formatted_table, max_ok, summary = format_ram_table_from_json( + json_data, args.max_bits + ) + print(formatted_table) - if not max_ok: - sys.exit( - f"Error: Synthesized memory size {args.max_bits} exceeds SYNTH_MEMORY_MAX_BITS" - ) + + print("Summary:") + print(f"- Total inferred memories: {summary['memory_count']}") + print( + f"- Largest single memory instance: " + f"{summary['largest_instance_bits']} bits " + f"(module {summary['largest_instance_module']})" + ) + print(f"- Total inferred memory bits (all instances): {summary['total_bits']}") + + if args.max_bits is not None: + status = "OK" if max_ok else "FAIL" + print(f"- SYNTH_MEMORY_MAX_BITS: {args.max_bits}") + print(f"- Status: {status}") + + if not max_ok: + sys.exit( + f"Error: Synthesized memory size {args.max_bits} exceeds SYNTH_MEMORY_MAX_BITS" + ) From 84fc8e5df94706682c3c8d55259a5d9876830691 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Mon, 2 Feb 2026 16:39:52 +0000 Subject: [PATCH 361/364] Update gf12 bp_* metrics designs/gf12/bp_single/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__tns | -1510.0 | -400.0 | Tighten | | cts__timing__hold__ws | -310.0 | -306.0 | Tighten | | cts__timing__hold__tns | -750.0 | -4360.0 | Failing | | globalroute__timing__hold__ws | -310.0 | -187.0 | Tighten | | globalroute__timing__hold__tns | -1540.0 | -2360.0 | Failing | | finish__timing__setup__tns | -931.0 | -507.0 | Tighten | | finish__timing__hold__ws | -105.0 | -100.0 | Tighten | designs/gf12/bp_dual/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -202.0 | -100.0 | Tighten | | cts__timing__setup__tns | -17800.0 | -400.0 | Tighten | | detailedroute__route__wirelength | 11876263 | 13738224 | Failing | | detailedroute__route__drc_errors | 4 | 0 | Tighten | | finish__timing__setup__tns | -1630.0 | -1440.0 | Tighten | designs/gf12/bp_quad/rules-base.json updates: | Metric | Old | New | Type | | ------ | --- | --- | ---- | | cts__timing__setup__ws | -271.0 | -572.0 | Failing | | cts__timing__setup__tns | -53900.0 | -659000.0 | Failing | Signed-off-by: Matt Liberty --- flow/designs/gf12/bp_dual/rules-base.json | 152 +------------------- flow/designs/gf12/bp_quad/rules-base.json | 4 +- flow/designs/gf12/bp_single/rules-base.json | 14 +- 3 files changed, 15 insertions(+), 155 deletions(-) diff --git a/flow/designs/gf12/bp_dual/rules-base.json b/flow/designs/gf12/bp_dual/rules-base.json index 7cec4ad7b6..08ba233a67 100644 --- a/flow/designs/gf12/bp_dual/rules-base.json +++ b/flow/designs/gf12/bp_dual/rules-base.json @@ -1,144 +1,4 @@ { - "cts__flow__warnings__count:CTS-0041": { - "value": 21, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:RSZ-0062": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "cts__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "detailedplace__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0120": { - "value": 54, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "detailedroute__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "finish__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:EST-0027": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:IFP-0028": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "floorplan__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0110": { - "value": 1001, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-0195": { - "value": 33, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:PDN-1031": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0014": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0015": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0016": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "flow__warnings__count:TAP-0017": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:GRT-0281": { - "value": 4, - "compare": "<=", - "level": "warning" - }, - "globalplace__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0120": { - "value": 54, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:DRT-0142": { - "value": 5, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:FLW-0010": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "globalroute__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0020": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:RSZ-0095": { - "value": 1, - "compare": "<=", - "level": "warning" - }, - "placeopt__flow__warnings__count:STA-1551": { - "value": 40, - "compare": "<=", - "level": "warning" - }, "constraints__clocks__count": { "value": 8, "compare": "==" @@ -164,11 +24,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -202.0, + "value": -100.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -17800.0, + "value": -400.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -200,11 +60,11 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 11876263, + "value": 13738224, "compare": "<=" }, "detailedroute__route__drc_errors": { - "value": 4, + "value": 0, "compare": "<=" }, "detailedroute__antenna__violating__nets": { @@ -220,7 +80,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1630.0, + "value": -1440.0, "compare": ">=" }, "finish__timing__hold__ws": { @@ -235,4 +95,4 @@ "value": 849384, "compare": "<=" } -} +} \ No newline at end of file diff --git a/flow/designs/gf12/bp_quad/rules-base.json b/flow/designs/gf12/bp_quad/rules-base.json index 7d4687acda..9f06523d88 100644 --- a/flow/designs/gf12/bp_quad/rules-base.json +++ b/flow/designs/gf12/bp_quad/rules-base.json @@ -24,11 +24,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -271.0, + "value": -572.0, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -53900.0, + "value": -659000.0, "compare": ">=" }, "cts__timing__hold__ws": { diff --git a/flow/designs/gf12/bp_single/rules-base.json b/flow/designs/gf12/bp_single/rules-base.json index 8e81809358..b6dff8a62b 100644 --- a/flow/designs/gf12/bp_single/rules-base.json +++ b/flow/designs/gf12/bp_single/rules-base.json @@ -32,15 +32,15 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -1510.0, + "value": -400.0, "compare": ">=" }, "cts__timing__hold__ws": { - "value": -310.0, + "value": -306.0, "compare": ">=" }, "cts__timing__hold__tns": { - "value": -750.0, + "value": -4360.0, "compare": ">=" }, "globalroute__antenna_diodes_count": { @@ -56,11 +56,11 @@ "compare": ">=" }, "globalroute__timing__hold__ws": { - "value": -310.0, + "value": -187.0, "compare": ">=" }, "globalroute__timing__hold__tns": { - "value": -1540.0, + "value": -2360.0, "compare": ">=" }, "detailedroute__route__wirelength": { @@ -84,11 +84,11 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -931.0, + "value": -507.0, "compare": ">=" }, "finish__timing__hold__ws": { - "value": -105.0, + "value": -100.0, "compare": ">=" }, "finish__timing__hold__tns": { From db99cd96bd7495f80948fa9bf8a218038b541555 Mon Sep 17 00:00:00 2001 From: trabdelbasset Date: Tue, 3 Feb 2026 01:42:30 +0100 Subject: [PATCH 362/364] ihp-sg13g2: update SRAM variations and fix broken DRC download links Expanded the SRAM file list to include new 1P and 2P macros and commented out deprecated DRC paths that were causing 404 errors. Signed-off-by: trabdelbasset --- flow/platforms/ihp-sg13g2/sg13g2_update.py | 34 +++++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/flow/platforms/ihp-sg13g2/sg13g2_update.py b/flow/platforms/ihp-sg13g2/sg13g2_update.py index 78919bbf48..ad358f8d7b 100644 --- a/flow/platforms/ihp-sg13g2/sg13g2_update.py +++ b/flow/platforms/ihp-sg13g2/sg13g2_update.py @@ -52,16 +52,33 @@ def download_github_file( sram_files = [ + "RM_IHPSG13_1P_64x64_c2_bm_bist", + "RM_IHPSG13_1P_256x8_c3_bm_bist", + "RM_IHPSG13_1P_256x16_c2_bm_bist", + "RM_IHPSG13_1P_256x32_c2_bm_bist", + "RM_IHPSG13_1P_256x48_c2_bm_bist", + "RM_IHPSG13_1P_256x64_c2_bm_bist", + "RM_IHPSG13_1P_512x8_c3_bm_bist", + "RM_IHPSG13_1P_512x16_c2_bm_bist", + "RM_IHPSG13_1P_512x32_c2_bm_bist", + "RM_IHPSG13_1P_512x64_c2_bm_bist", + "RM_IHPSG13_1P_1024x8_c2_bm_bist", "RM_IHPSG13_1P_1024x16_c2_bm_bist", + "RM_IHPSG13_1P_1024x32_c2_bm_bist", "RM_IHPSG13_1P_1024x64_c2_bm_bist", - "RM_IHPSG13_1P_1024x8_c2_bm_bist", "RM_IHPSG13_1P_2048x64_c2_bm_bist", - "RM_IHPSG13_1P_256x48_c2_bm_bist", - "RM_IHPSG13_1P_256x64_c2_bm_bist", - "RM_IHPSG13_1P_4096x16_c3_bm_bist", "RM_IHPSG13_1P_4096x8_c3_bm_bist", - "RM_IHPSG13_1P_512x64_c2_bm_bist", - "RM_IHPSG13_1P_64x64_c2_bm_bist", + "RM_IHPSG13_1P_4096x16_c3_bm_bist", + "RM_IHPSG13_1P_8192x32_c4", + "RM_IHPSG13_2P_64x32_c2", + "RM_IHPSG13_2P_256x8_c2_bm_bist", + "RM_IHPSG13_2P_256x16_c2_bm_bist", + "RM_IHPSG13_2P_256x32_c2_bm_bist", + "RM_IHPSG13_2P_512x8_c2_bm_bist", + "RM_IHPSG13_2P_512x16_c2_bm_bist", + "RM_IHPSG13_2P_512x32_c2_bm_bist", + "RM_IHPSG13_2P_1024x16_c2_bm_bist", + "RM_IHPSG13_2P_1024x32_c2_bm_bist", ] sram_lib_corners = [ "slow_1p08V_125C", @@ -73,8 +90,9 @@ def download_github_file( download_github_file("ihp-sg13g2/libs.tech/klayout/tech/sg13g2.lyp") download_github_file("ihp-sg13g2/libs.tech/klayout/tech/sg13g2.lyt") download_github_file("ihp-sg13g2/libs.tech/klayout/tech/sg13g2.map") -download_github_file("ihp-sg13g2/libs.tech/klayout/tech/drc/sg13g2_minimal.lydrc", "drc") -download_github_file("ihp-sg13g2/libs.tech/klayout/tech/drc/sg13g2_maximal.lydrc", "drc") +# The minimal/maximal DRC scripts have been replaced by a parameterizable sg13g2.drc in the main branch of IHP-Open-PDK. +#download_github_file("ihp-sg13g2/libs.tech/klayout/tech/drc/sg13g2_minimal.lydrc", "drc") +#download_github_file("ihp-sg13g2/libs.tech/klayout/tech/drc/sg13g2_maximal.lydrc", "drc") # LIB download_github_file("ihp-sg13g2/libs.ref/sg13g2_stdcell/lib/sg13g2_stdcell_slow_1p35V_125C.lib", "lib") download_github_file("ihp-sg13g2/libs.ref/sg13g2_stdcell/lib/sg13g2_stdcell_slow_1p08V_125C.lib", "lib") From f475260b12d0302fb0ed920d119e884d903827ee Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Tue, 3 Feb 2026 01:47:11 +0000 Subject: [PATCH 363/364] Updated cva6, ibex, and jpeg for PDK 0.15 black formatting Signed-off-by: Jeff Ng --- flow/designs/rapidus2hp/cva6/config.mk | 17 ++++++++++----- .../rapidus2hp/cva6/constraint_0.15_8T.sdc | 16 ++++++++++++++ .../rapidus2hp/cva6/test/test_params.py | 4 ++++ flow/designs/rapidus2hp/ibex/config.mk | 17 +++++++++++---- .../rapidus2hp/ibex/constraint_0.15.sdc | 2 +- .../rapidus2hp/ibex/test/test_params.py | 4 ++++ flow/designs/rapidus2hp/jpeg/config.mk | 8 +++++-- .../jpeg/jpeg_encoder15_0.15_6T.sdc | 21 +++++++++++++++++++ .../jpeg/jpeg_encoder15_0.15_8T.sdc | 21 +++++++++++++++++++ .../rapidus2hp/jpeg/test/test_params.py | 10 ++++++++- .../rapidus2hp/utils/param_test_base.py | 12 +++++++++-- 11 files changed, 117 insertions(+), 15 deletions(-) create mode 100644 flow/designs/rapidus2hp/cva6/constraint_0.15_8T.sdc create mode 100644 flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15_6T.sdc create mode 100644 flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15_8T.sdc diff --git a/flow/designs/rapidus2hp/cva6/config.mk b/flow/designs/rapidus2hp/cva6/config.mk index d5f01835b3..c517b6ffcd 100644 --- a/flow/designs/rapidus2hp/cva6/config.mk +++ b/flow/designs/rapidus2hp/cva6/config.mk @@ -97,6 +97,7 @@ export ADDITIONAL_LIBS += $(PLATFORM_DIR)/ram/lib/sacrls0g0d1p64x128m2b1w0c1p0d0 DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc _0P2A_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_6T.sdc _0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.2a_8T.sdc +_0P15_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.15_8T.sdc _0P3_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.3_6T.sdc _0P3_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint_0.3_8T.sdc @@ -107,12 +108,18 @@ export SDC_FILE = $(strip \ $(_0P2A_6T_SDC_FILE), \ $(_0P2A_8T_SDC_FILE) \ ), \ - $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ - $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ - $(_0P3_6T_SDC_FILE), \ - $(_0P3_8T_SDC_FILE) \ + $(if $(filter 0.15,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h184_HST_45CPP,$(PLACE_SITE)), \ + $(_0P15_8T_SDC_FILE), \ + $(DEFAULT_SDC_FILE) \ ), \ - $(DEFAULT_SDC_FILE) \ + $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + $(_0P3_6T_SDC_FILE), \ + $(_0P3_8T_SDC_FILE) \ + ), \ + $(DEFAULT_SDC_FILE) \ + ) \ ) \ )) diff --git a/flow/designs/rapidus2hp/cva6/constraint_0.15_8T.sdc b/flow/designs/rapidus2hp/cva6/constraint_0.15_8T.sdc new file mode 100644 index 0000000000..3b08af9063 --- /dev/null +++ b/flow/designs/rapidus2hp/cva6/constraint_0.15_8T.sdc @@ -0,0 +1,16 @@ +# Derived from cva6_synth.tcl and Makefiles + +source $::env(PLATFORM_DIR)/util.tcl + +set clk_name main_clk +set clk_port clk_i +set clk_ports_list [list $clk_port] +set clk_period 650 + +convert_time_value clk_period + +set input_delay [convert_time_value 0.46] +set output_delay [convert_time_value 0.11] + + +create_clock [get_ports $clk_port] -name $clk_name -period $clk_period diff --git a/flow/designs/rapidus2hp/cva6/test/test_params.py b/flow/designs/rapidus2hp/cva6/test/test_params.py index c421d07b8d..74639da262 100755 --- a/flow/designs/rapidus2hp/cva6/test/test_params.py +++ b/flow/designs/rapidus2hp/cva6/test/test_params.py @@ -34,6 +34,10 @@ def get_exp_sdc(self, place_site, pdk_version): return os.path.join( self._design_full_dir, f"constraint_{pdk_version}_8T.sdc" ) + if pdk_version == "0.15" and place_site in ["", "ra02h184_HST_45CPP"]: + return os.path.join( + self._design_full_dir, f"constraint_{pdk_version}_8T.sdc" + ) return os.path.join(self._design_full_dir, "constraint.sdc") diff --git a/flow/designs/rapidus2hp/ibex/config.mk b/flow/designs/rapidus2hp/ibex/config.mk index 0ea4d351fa..3a1b18e49e 100644 --- a/flow/designs/rapidus2hp/ibex/config.mk +++ b/flow/designs/rapidus2hp/ibex/config.mk @@ -50,11 +50,20 @@ else )) endif -export CORE_UTILIZATION = $(strip $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ - $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ +export CORE_UTILIZATION = $(strip \ + $(if $(filter 0.15,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + 52, \ + 65 \ + ), \ + $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ 60, \ - 65), \ - 70)) + 65 \ + ), \ + 70 \ + ) \ + )) export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 0.75 diff --git a/flow/designs/rapidus2hp/ibex/constraint_0.15.sdc b/flow/designs/rapidus2hp/ibex/constraint_0.15.sdc index bdece50956..f539d55b82 100644 --- a/flow/designs/rapidus2hp/ibex/constraint_0.15.sdc +++ b/flow/designs/rapidus2hp/ibex/constraint_0.15.sdc @@ -2,7 +2,7 @@ source $::env(PLATFORM_DIR)/util.tcl set clk_name core_clock set clk_port_name clk_i -set clk_period 550 +set clk_period 450 set clk_io_pct 0.2 set clk_port [get_ports $clk_port_name] diff --git a/flow/designs/rapidus2hp/ibex/test/test_params.py b/flow/designs/rapidus2hp/ibex/test/test_params.py index 946efc41b5..9953c62ccd 100755 --- a/flow/designs/rapidus2hp/ibex/test/test_params.py +++ b/flow/designs/rapidus2hp/ibex/test/test_params.py @@ -28,6 +28,10 @@ def get_exp_util(self, place_site, pdk_version): if place_site == "ra02h138_DST_45CPP": return 60 return 65 + if pdk_version == "0.15": + if place_site == "ra02h138_DST_45CPP": + return 52 + return 65 return 70 def get_exp_sdc(self, place_site, pdk_version): diff --git a/flow/designs/rapidus2hp/jpeg/config.mk b/flow/designs/rapidus2hp/jpeg/config.mk index 5fc80731f6..54c251dbf8 100644 --- a/flow/designs/rapidus2hp/jpeg/config.mk +++ b/flow/designs/rapidus2hp/jpeg/config.mk @@ -12,7 +12,8 @@ export VERILOG_INCLUDE_DIRS = $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/include DEFAULT_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_7nm.sdc _0P2A_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.2a_8T.sdc -_0P15_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.15.sdc +_0P15_6T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.15_6T.sdc +_0P15_8T_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.15_8T.sdc _0P3_SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/jpeg_encoder15_0.3.sdc # Use $(if) to defer conditional eval until all makefiles are read @@ -20,7 +21,10 @@ export SDC_FILE = $(strip \ $(if $(and $(filter 0.2a,$(RAPIDUS_PDK_VERSION)),$(filter ra02h184_HST_45CPP,$(PLACE_SITE))), \ $(_0P2A_8T_SDC_FILE), \ $(if $(filter 0.15,$(RAPIDUS_PDK_VERSION)), \ - $(_0P15_SDC_FILE), \ + $(if $(filter ra02h138_DST_45CPP,$(PLACE_SITE)), \ + $(_0P15_6T_SDC_FILE), \ + $(_0P15_8T_SDC_FILE) \ + ), \ $(if $(filter 0.3,$(RAPIDUS_PDK_VERSION)), \ $(_0P3_SDC_FILE), \ $(DEFAULT_SDC_FILE) \ diff --git a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15_6T.sdc b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15_6T.sdc new file mode 100644 index 0000000000..3263c5e01a --- /dev/null +++ b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15_6T.sdc @@ -0,0 +1,21 @@ +source $::env(PLATFORM_DIR)/util.tcl + +current_design jpeg_encoder + +set clk_name clk +set clk_port_name clk +set clk_period 150 +set clk_io_pct 0.2 + +convert_time_value clk_period + +set clk_port [get_ports $clk_port_name] + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] diff --git a/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15_8T.sdc b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15_8T.sdc new file mode 100644 index 0000000000..b8396d16eb --- /dev/null +++ b/flow/designs/rapidus2hp/jpeg/jpeg_encoder15_0.15_8T.sdc @@ -0,0 +1,21 @@ +source $::env(PLATFORM_DIR)/util.tcl + +current_design jpeg_encoder + +set clk_name clk +set clk_port_name clk +set clk_period 250 +set clk_io_pct 0.2 + +convert_time_value clk_period + +set clk_port [get_ports $clk_port_name] + +create_clock -name $clk_name -period $clk_period $clk_port + +set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] + +set_input_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + $non_clock_inputs +set_output_delay [expr { $clk_period * $clk_io_pct }] -clock $clk_name \ + [all_outputs] diff --git a/flow/designs/rapidus2hp/jpeg/test/test_params.py b/flow/designs/rapidus2hp/jpeg/test/test_params.py index c6c0d54088..b04eed5eab 100755 --- a/flow/designs/rapidus2hp/jpeg/test/test_params.py +++ b/flow/designs/rapidus2hp/jpeg/test/test_params.py @@ -29,7 +29,15 @@ def get_exp_sdc(self, place_site, pdk_version): return os.path.join( self._design_full_dir, f"jpeg_encoder15_{pdk_version}_8T.sdc" ) - if pdk_version in ["", "0.15", "0.3"]: + if pdk_version == "0.15": + if place_site in ["", "ra02h184_HST_45CPP"]: + return os.path.join( + self._design_full_dir, f"jpeg_encoder15_{pdk_version}_8T.sdc" + ) + return os.path.join( + self._design_full_dir, f"jpeg_encoder15_{pdk_version}_6T.sdc" + ) + if pdk_version in ["", "0.3"]: if pdk_version == "": pdk_version = "0.3" return os.path.join( diff --git a/flow/designs/rapidus2hp/utils/param_test_base.py b/flow/designs/rapidus2hp/utils/param_test_base.py index 8ddcd40e0d..d171e10518 100644 --- a/flow/designs/rapidus2hp/utils/param_test_base.py +++ b/flow/designs/rapidus2hp/utils/param_test_base.py @@ -26,7 +26,7 @@ def setUp(self, design_name): self._result_re = re.compile(r"\S+\s*(?:=|:)\s*(\S+)?") self._front_end_list = ["", "slang", "verific"] self._ibm_site_list = ["", "SC6T", "SC8T"] - self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h138_DST_45CPP"] + self._synopsys_site_list = ["", "ra02h138_DST_45CPP", "ra02h184_HST_45CPP"] def get_track_height(self, place_site): """Returns the track height for the place site""" @@ -60,7 +60,13 @@ def build_cmd( return " ".join(str_buf) def execute_cmd( - self, param_name, exp_result, place_site=None, pdk_version=None, front_end=None + self, + param_name, + exp_result, + place_site=None, + pdk_version=None, + front_end=None, + debug=False, ): """ Executes command @@ -73,6 +79,8 @@ def execute_cmd( pdk_version=pdk_version, front_end=front_end, ) + if debug: + print(cmd) self.execute_cmd_int(cmd, test_tag, exp_result) def execute_cmd_int(self, cmd, test_tag, exp_result): From ef77445cb2c73f6946237262962254f29f96ec85 Mon Sep 17 00:00:00 2001 From: jeffng-or <177239724+jeffng-or@users.noreply.github.com> Date: Wed, 4 Feb 2026 15:40:09 +0000 Subject: [PATCH 364/364] [BOT] Update yosys submodule Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- tools/yosys | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/yosys b/tools/yosys index 77005b69a2..9ed031ddd5 160000 --- a/tools/yosys +++ b/tools/yosys @@ -1 +1 @@ -Subproject commit 77005b69a2f693425294dab62c49164edb15bf10 +Subproject commit 9ed031ddd588442f22be13ce608547a5809b62f0