From 8c5739698ad26c0d6f0de8506b4fa622d539d86b Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Fri, 21 Aug 2026 00:36:04 +0000 Subject: [PATCH 1/3] test: check flow metrics under bazel The bazel flow tests ran the RTL-to-GDS flow but checked only the exit code: BIG_TESTS get check_log=False, and PASSFAIL_TESTS is just commands_without_load, so check_passfail was False too. The .metrics_limits files were read only by flow_metrics.tcl, which only ./regression sources, so a green bazel run said nothing about QoR. Add a check_metrics attribute to regression_rule_test. When set, regression_test.sh passes -metrics so openroad writes the result json, then compares it against .metrics_limits and fails the test on a violation. Enabled for the 13 BIG_TESTS that have a limits file, derived from a glob so a new design opts in by adding one. The comparison reuses the metric table and margins from flow_metrics.tcl via a new compare_metrics_files, so bazel and ./regression apply the same limits and report the same message. It reads the json with a new read_flat_json rather than tcllib's json package, which the bazel-built openroad does not carry; the metrics files are machine written flat objects of scalars, and nested json is rejected rather than guessed at. read_flat_json returns dicts identical to json::json2dict for all 31 metrics and limits files in the tree. This surfaces four pre-existing QoR violations under bazel: aes_asap7 (also fails ./regression, so its limit is genuinely stale), plus aes_nangate45, aes_sky130hs and jpeg_sky130hs, which pass ./regression and differ only because the bazel binary's QoR differs from cmake's. The limits are unchanged here; these tests stay tagged manual, so default CI is unaffected. Signed-off-by: Matt Liberty --- test/BUILD | 12 ++++ test/check_metrics.tcl | 29 +++++++++ test/flow_metrics.tcl | 134 +++++++++++++++++++++++++++++++++++----- test/regression.bzl | 6 ++ test/regression_test.sh | 16 ++++- 5 files changed, 182 insertions(+), 15 deletions(-) create mode 100644 test/check_metrics.tcl diff --git a/test/BUILD b/test/BUILD index d673038434c..99358993d22 100644 --- a/test/BUILD +++ b/test/BUILD @@ -181,6 +181,17 @@ BIG_TESTS = [ "tinyRocket_nangate45", ] +# BIG_TESTS produce no golden log, so their QoR is what there is to check. The +# limits file is the opt-in: every BIG_TEST has one except gcd_sky130hd_fast_slow. +FLOW_METRIC_TESTS = [ + test_name + for test_name in BIG_TESTS + if test_name + ".metrics_limits" in glob( + ["*.metrics_limits"], + allow_empty = True, + ) +] + # upf_aes does its own diff internally (regions-only under BAZEL_TEST) since # the full DEF output is not bit-stable across Bazel/CMake; the Tcl script # fails the test on mismatch, so the log diff against .ok is suppressed. @@ -189,6 +200,7 @@ BIG_TESTS = [ name = test_name, size = "enormous" if test_name in BIG_TESTS else "medium", check_log = False if test_name in PASSFAIL_TESTS + BIG_TESTS + ["upf_aes"] else True, + check_metrics = True if test_name in FLOW_METRIC_TESTS else False, check_passfail = True if test_name in PASSFAIL_TESTS else False, data = ["//src/odb/test:design_odb_data"] if test_name == "two_designs" else [], tags = ["manual"] if test_name in BIG_TESTS else [], diff --git a/test/check_metrics.tcl b/test/check_metrics.tcl new file mode 100644 index 00000000000..ca7ac39d1f8 --- /dev/null +++ b/test/check_metrics.tcl @@ -0,0 +1,29 @@ +## SPDX-License-Identifier: BSD-3-Clause +## Copyright (c) 2026, The OpenROAD Authors + +# Compare a flow test's result metrics against its metrics limits and exit +# non-zero when a metric is outside its limit. regression_test.sh runs this +# after the flow, which is what makes bazel check flow QoR; ./regression +# instead calls check_test_metrics directly. +# +# The file paths come from the environment rather than argv because this runs +# under the openroad binary, which consumes its own command line. + +set metrics_dir [file dirname [file normalize [info script]]] +source [file join $metrics_dir "flow_metrics.tcl"] + +foreach var {METRICS_FILE METRICS_LIMITS_FILE} { + if { ![info exists ::env($var)] || $::env($var) == "" } { + puts "Error: $var is not set." + exit 1 + } +} + +set result [compare_metrics_files $::env(METRICS_FILE) \ + $::env(METRICS_LIMITS_FILE)] +if { $result != "pass" } { + puts "Metrics do not satisfy limits: $result" + exit 1 +} +puts "Metrics satisfy limits." +exit 0 diff --git a/test/flow_metrics.tcl b/test/flow_metrics.tcl index 8a099a4c665..897a890f2bd 100644 --- a/test/flow_metrics.tcl +++ b/test/flow_metrics.tcl @@ -107,32 +107,138 @@ define_metric "DRT::ANT::errors" "" "ANT" 3 "%3d" "<=" {$value} ################################################################ +# Read a flat json object of scalar values into a dict. +# +# The metrics and metrics limits files are machine written, by utl::metric and +# by save_metric_limits below, so they are always one object of string or +# number values. Reading them here rather than with tcllib's json package keeps +# the metrics check working under the bazel-built openroad, whose Tcl carries no +# tcllib. Nested objects and arrays are rejected instead of guessed at, so a +# format change fails loudly rather than comparing the wrong numbers. +proc read_flat_json { file_name } { + set stream [open $file_name r] + set text [read $stream] + close $stream + + set result {} + set len [string length $text] + set i [skip_json_space $text 0 $len] + if { $i >= $len || [string index $text $i] != "\{" } { + error "expected a json object at the start of $file_name" + } + incr i + + while { 1 } { + set i [skip_json_space $text $i $len] + if { $i >= $len } { + error "unterminated json object in $file_name" + } + set c [string index $text $i] + if { $c == "\}" } { + return $result + } + if { $c == "," } { + incr i + continue + } + if { $c != "\"" } { + error "expected a key string at offset $i of $file_name" + } + lassign [parse_json_string $text $i $len] key i + + set i [skip_json_space $text $i $len] + if { [string index $text $i] != ":" } { + error "expected ':' after key $key in $file_name" + } + incr i + + set i [skip_json_space $text $i $len] + set c [string index $text $i] + if { $c == "\{" || $c == "\[" } { + error "nested json is not supported, at key $key in $file_name" + } + if { $c == "\"" } { + lassign [parse_json_string $text $i $len] value i + } else { + # A bare number, true, false or null. + set start $i + while { + $i < $len + && [string first [string index $text $i] " \t\n\r,\}"] == -1 + } { + incr i + } + set value [string range $text $start [expr { $i - 1 }]] + } + dict set result $key $value + } +} + +proc skip_json_space { text i len } { + while { $i < $len && [string is space [string index $text $i]] } { + incr i + } + return $i +} + +# text[i] is the opening quote. Returns the string and the offset past it. +proc parse_json_string { text i len } { + incr i + set value "" + while { $i < $len } { + set c [string index $text $i] + if { $c == "\"" } { + return [list $value [expr { $i + 1 }]] + } + if { $c == "\\" } { + incr i + set escape [string index $text $i] + switch -- $escape { + "n" { append value "\n" } + "t" { append value "\t" } + "r" { append value "\r" } + "b" { append value "\b" } + "f" { append value "\f" } + "/" { append value "/" } + "\\" { append value "\\" } + "\"" { append value "\"" } + default { error "unsupported json escape \\$escape" } + } + incr i + continue + } + append value $c + incr i + } + error "unterminated json string" +} + +################################################################ + # Used by regression.tcl to check pass/fail metrics test. # Returns "pass" or failing metric comparison string. proc check_test_metrics { test lang } { - # Don't require json until it is really needed. - package require json + return [compare_metrics_files [test_metrics_result_file $test $lang] \ + [test_metrics_limits_file $test]] +} - set metrics_file [test_metrics_result_file $test $lang] - set metrics_limits_file [test_metrics_limits_file $test] +# Compare a metrics json file against a metrics limits json file. +# Returns "pass" or failing metric comparison string. +# Used by check_test_metrics and by check_metrics.tcl, which regression_test.sh +# runs so bazel checks flow metrics too. +proc compare_metrics_files { metrics_file metrics_limits_file } { if { ![file exists $metrics_file] } { return "missing metrics file" } - set stream [open $metrics_file r] - set json_string [read $stream] - close $stream - if { [catch { json::json2dict $json_string } metrics_dict] } { - return "error parsing metrics json" + if { [catch { read_flat_json $metrics_file } metrics_dict] } { + return "error parsing metrics json: $metrics_dict" } if { ![file exists $metrics_limits_file] } { return "missing metrics limits file" } - set stream [open $metrics_limits_file r] - set json_string [read $stream] - close $stream - if { [catch { json::json2dict $json_string } metrics_limits_dict] } { - return "error parsing metrics limits json" + if { [catch { read_flat_json $metrics_limits_file } metrics_limits_dict] } { + return "error parsing metrics limits json: $metrics_limits_dict" } set failures "" diff --git a/test/regression.bzl b/test/regression.bzl index 795385f7bfb..1ad437f3d89 100644 --- a/test/regression.bzl +++ b/test/regression.bzl @@ -32,6 +32,7 @@ export REGRESSION_TEST={REGRESSION_TEST} export TEST_GOLDEN_FILE={TEST_GOLDEN_FILE} export TEST_CHECK_LOG={TEST_CHECK_LOG} export TEST_CHECK_PASSFAIL={TEST_CHECK_PASSFAIL} +export TEST_CHECK_METRICS={TEST_CHECK_METRICS} export TEST_EXPECTED_EXIT_CODE={TEST_EXPECTED_EXIT_CODE} exec "{bazel_test_sh}" "$@" """.format( @@ -44,6 +45,7 @@ exec "{bazel_test_sh}" "$@" TEST_GOLDEN_FILE = ctx.file.golden_file.short_path if ctx.file.golden_file else "", TEST_CHECK_LOG = "True" if ctx.attr.check_log else "False", TEST_CHECK_PASSFAIL = "True" if ctx.attr.check_passfail else "False", + TEST_CHECK_METRICS = "True" if ctx.attr.check_metrics else "False", TEST_EXPECTED_EXIT_CODE = str(ctx.attr.expected_exit_code), ), is_executable = True, @@ -83,6 +85,10 @@ regression_rule_test = rule( doc = "Diff the output log against .ok", default = True, ), + "check_metrics": attr.bool( + doc = "Compare the flow result metrics against .metrics_limits", + default = False, + ), "check_passfail": attr.bool( doc = "Check the output log contains pass or OK in the last line", default = False, diff --git a/test/regression_test.sh b/test/regression_test.sh index 9df3cdcf3d5..3d1b955da6b 100755 --- a/test/regression_test.sh +++ b/test/regression_test.sh @@ -3,8 +3,10 @@ set -e set -o pipefail +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" RESULTS_DIR="${RESULTS_DIR:-results}" LOG_FILE="${RESULTS_DIR}/$TEST_NAME-$TEST_EXT.log" +METRICS_FILE="${RESULTS_DIR}/$TEST_NAME-$TEST_EXT.metrics" mkdir -p ${RESULTS_DIR} @@ -23,7 +25,12 @@ python) fi ;; *) - CMD="$OPENROAD_EXE -no_splash -no_init -exit $TEST_NAME.$TEST_EXT" + # -metrics makes openroad write the json the limits are compared against. + METRICS_OPT="" + if [ "$TEST_CHECK_METRICS" == "True" ]; then + METRICS_OPT="-metrics $METRICS_FILE" + fi + CMD="$OPENROAD_EXE -no_splash -no_init -exit $METRICS_OPT $TEST_NAME.$TEST_EXT" ;; esac @@ -71,3 +78,10 @@ if [ "$TEST_CHECK_PASSFAIL" == "True" ]; then exit 1 fi fi + +if [ "$TEST_CHECK_METRICS" == "True" ]; then + echo "Metrics: $METRICS_FILE vs $TEST_NAME.metrics_limits" + METRICS_FILE="$METRICS_FILE" \ + METRICS_LIMITS_FILE="$TEST_NAME.metrics_limits" \ + "$OPENROAD_EXE" -no_splash -no_init -exit "$SCRIPT_DIR/check_metrics.tcl" +fi From 53a18fa71b4046c0140458f6557e8d19a3fa5b04 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Fri, 21 Aug 2026 05:14:10 +0000 Subject: [PATCH 2/3] test: regenerate flow metrics limits from bazel runs Turning on the bazel metrics check surfaced four designs whose QoR was outside their limits: aes_asap7, aes_nangate45, aes_sky130hs and jpeg_sky130hs. Their limits were last derived from cmake ./regression runs, but CI runs the flow tests under bazel, whose -O3 -flto binary produces different QoR. Regenerate the metrics and limits for those four from bazel runs, using the metrics json the check now writes as an undeclared test output. All 22 gated metrics are still present in each limits file, so the gate is not weakened; the limits move both ways, tightening where bazel is better (aes_nangate45 max_capacitance_slack -33% -> -20%) and loosening where it is worse (aes_asap7 max_slew_slack -11% -> -38%). Deriving limits from bazel means ./regression can now fail these designs where cmake QoR is worse than bazel's: aes_nangate45 on max_capacitance_slack, aes_sky130hs on clock_skew and ANT errors, and jpeg_sky130hs on ANT errors. One set of limits cannot satisfy both binaries for these designs, and bazel is what CI gates on. Signed-off-by: Matt Liberty --- test/aes_asap7.metrics | 130 +++++----- test/aes_asap7.metrics_limits | 20 +- test/aes_nangate45.metrics | 130 +++++----- test/aes_nangate45.metrics_limits | 26 +- test/aes_sky130hs.metrics | 409 +++++++++++++----------------- test/aes_sky130hs.metrics_limits | 28 +- test/jpeg_sky130hs.metrics | 399 ++++++++++------------------- test/jpeg_sky130hs.metrics_limits | 26 +- 8 files changed, 494 insertions(+), 674 deletions(-) diff --git a/test/aes_asap7.metrics b/test/aes_asap7.metrics index b1ab2b713e5..d0577ad9a97 100644 --- a/test/aes_asap7.metrics +++ b/test/aes_asap7.metrics @@ -2,85 +2,81 @@ "IFP::ord_version": "", "IFP::instance_count": "15622", "floorplan__design__io": 388, - "design__io__hpwl": 8489470, - "utilization__before__dpl": 39.824, + "design__io__hpwl": 8473808, + "utilization__before__dpl": 39.8541, "negotiation__converge__phase_1__iteration": 1, - "design__instance__displacement__total": 5152.2, - "design__instance__displacement__mean": 0.333, - "design__instance__displacement__max": 1.891, - "route__wirelength__estimated": 58951.9, - "dpl__hpwl__delta": 4.06078e+06, - "dpl__hpwl__delta__percent": 7, + "design__instance__displacement__total": 5246.31, + "design__instance__displacement__mean": 0.34, + "design__instance__displacement__max": 2, + "route__wirelength__estimated": 58897.4, + "dpl__hpwl__delta": 4.23552e+06, + "dpl__hpwl__delta__percent": 8, "RSZ::repair_design_buffer_count": "203", - "RSZ::max_slew_slack": "0.1751290075480938", + "RSZ::max_slew_slack": "0.08501879870891571", "RSZ::max_fanout_slack": "100.0", - "RSZ::max_capacitance_slack": "2.0040563132243827", - "utilization__before__dpl": 40.3106, - "negotiation__converge__phase_1__iteration": 1, - "design__instance__displacement__total": 115.494, + "RSZ::max_capacitance_slack": "2.59242061986179", + "utilization__before__dpl": 40.3388, + "negotiation__converge__phase_1__iteration": 0, + "design__instance__displacement__total": 110.139, "design__instance__displacement__mean": 0.007, - "design__instance__displacement__max": 1.712, - "route__wirelength__estimated": 60082.3, - "dpl__hpwl__delta": 19341, + "design__instance__displacement__max": 1.674, + "route__wirelength__estimated": 60128.8, + "dpl__hpwl__delta": 27138, "dpl__hpwl__delta__percent": 0, - "design__instance__count__setup_buffer": 1390, - "design__instance__count__hold_buffer": 860, - "RSZ::worst_slack_min": "0.012156942168222207", - "RSZ::worst_slack_max": "-41.44107296116865", - "RSZ::tns_max": "-1762.9638930317458", - "RSZ::hold_buffer_count": "860", - "utilization__before__dpl": 46.0792, - "negotiation__converge__phase_1__iteration": 9, - "design__instance__displacement__total": 1963.21, - "design__instance__displacement__mean": 0.109, - "design__instance__displacement__max": 4.336, - "route__wirelength__estimated": 70304.5, - "dpl__hpwl__delta": 1.41954e+06, + "design__instance__count__setup_buffer": 1456, + "design__instance__count__hold_buffer": 765, + "RSZ::worst_slack_min": "0.008770761929584972", + "RSZ::worst_slack_max": "-50.05512691020161", + "RSZ::tns_max": "-2019.607156254784", + "RSZ::hold_buffer_count": "765", + "utilization__before__dpl": 46.1313, + "negotiation__converge__phase_1__iteration": 7, + "design__instance__displacement__total": 1876.09, + "design__instance__displacement__mean": 0.104, + "design__instance__displacement__max": 3.622, + "route__wirelength__estimated": 69949.4, + "dpl__hpwl__delta": 1.3045e+06, "dpl__hpwl__delta__percent": 2, "DPL::utilization": "46.1", - "DPL::design_area": "1924", - "route__net": 17616, + "DPL::design_area": "1926", + "route__net": 17599, "route__net__special": 2, "global_route__fastroute__run_s": 0, - "global_route__fastroute__initial_rsmt_s": 0.0381417, - "global_route__fastroute__route_l_s": 0.0247885, - "global_route__fastroute__congestion_rsmt_s": 0.0653139, - "global_route__fastroute__new_route_l_s": 0.0153466, - "global_route__fastroute__spiral_s": 0.0184903, - "global_route__fastroute__route_z_s": 0.00339096, - "global_route__fastroute__monotonic_s": 0.0459514, - "global_route__fastroute__overflow_iterations_s": 0.0112995, - "global_route__fastroute__finalization_s": 1.27632, + "global_route__fastroute__initial_rsmt_s": 0.0306277, + "global_route__fastroute__route_l_s": 0.0235926, + "global_route__fastroute__congestion_rsmt_s": 0.0602123, + "global_route__fastroute__new_route_l_s": 0.0176385, + "global_route__fastroute__spiral_s": 0.0211383, + "global_route__fastroute__route_z_s": 0.00243283, + "global_route__fastroute__monotonic_s": 0.0366754, + "global_route__fastroute__overflow_iterations_s": 7.41e-07, + "global_route__fastroute__finalization_s": 1.50409, "global_route__fastroute__snapshot_batch_route_s": 0, "global_route__fastroute__snapshot_batch_apply_s": 0, "global_route__fastroute__snapshot_batch_sync_s": 0, "global_route__fastroute__snapshot_batch_count": 0, "global_route__fastroute__snapshot_batch_nets": 0, "global_route__fastroute__snapshot_batch_wave_count": 0, - "global_route__vias": 148329, - "global_route__wirelength": 112410, + "global_route__vias": 147793, + "global_route__wirelength": 111552, "grt__antenna_diodes_count": 0, "grt__antenna__violating__nets": 0, "grt__antenna__violating__pins": 0, "GRT::ANT::errors": "0", - "route__drc_errors__iter:0": 2543, - "route__wirelength__iter:0": 84135, - "route__drc_errors__iter:1": 206, - "route__wirelength__iter:1": 83412, - "route__drc_errors__iter:2": 74, - "route__wirelength__iter:2": 83305, - "route__drc_errors__iter:3": 4, - "route__wirelength__iter:3": 83311, - "route__drc_errors__iter:4": 2, - "route__wirelength__iter:4": 83313, - "route__drc_errors__iter:5": 2, - "route__wirelength__iter:5": 83313, - "route__drc_errors__iter:6": 0, - "route__wirelength__iter:6": 83312, + "route__drc_errors__iter:0": 2648, + "route__wirelength__iter:0": 83650, + "route__drc_errors__iter:1": 229, + "route__wirelength__iter:1": 82926, + "route__drc_errors__iter:2": 130, + "route__wirelength__iter:2": 82849, + "route__drc_errors__iter:3": 3, + "route__wirelength__iter:3": 82851, + "route__drc_errors__iter:4": 0, + "route__wirelength__iter:4": 82851, "route__drc_errors": 0, - "route__wirelength": 83312, - "route__vias": 166198, - "route__vias__singlecut": 166198, + "route__wirelength": 82851, + "route__vias": 165467, + "route__vias__singlecut": 165467, "route__vias__multicut": 0, "DRT::drv": "0", "drt__repair_antennas__pre_repair__antenna__violating__nets": 0, @@ -91,17 +87,17 @@ "design__violations": 0, "timing__drv__floating__nets": 0, "timing__drv__floating__pins": 0, - "DRT::worst_slack_min": "9.713063725500826", - "DRT::worst_slack_max": "-108.32562667970022", - "DRT::tns_max": "-6556.180069501696", - "DRT::clock_skew": "13.75834868202215", - "DRT::max_slew_slack": "-9.474764466285706", + "DRT::worst_slack_min": "7.139650010863706", + "DRT::worst_slack_max": "-111.75510561647086", + "DRT::tns_max": "-5988.092712296544", + "DRT::clock_skew": "12.530788956576835", + "DRT::max_slew_slack": "-31.698360443115238", "DRT::max_fanout_slack": "100.0", - "DRT::max_capacitance_slack": "41.65051960347018", + "DRT::max_capacitance_slack": "43.045938788019065", "DRT::clock_period": "400.000000", - "flow__warnings__count": 18, + "flow__warnings__count": 22, "flow__errors__count": 0, - "flow__warnings__count:DRT-0120": 2, + "flow__warnings__count:DRT-0120": 6, "flow__warnings__count:GPL-0302": 2, "flow__warnings__count:GRT-0246": 1, "flow__warnings__count:RCX-0514": 1, diff --git a/test/aes_asap7.metrics_limits b/test/aes_asap7.metrics_limits index 9dd394a4d9b..cea5f90c80b 100644 --- a/test/aes_asap7.metrics_limits +++ b/test/aes_asap7.metrics_limits @@ -1,22 +1,22 @@ { "IFP::instance_count" : "18746.399999999998" - ,"DPL::design_area" : "2308.7999999999997" + ,"DPL::design_area" : "2311.2" ,"DPL::utilization" : "55.32" ,"RSZ::repair_design_buffer_count" : "243" ,"RSZ::max_slew_slack" : "0" ,"RSZ::max_capacitance_slack" : "0" ,"RSZ::max_fanout_slack" : "0" - ,"RSZ::worst_slack_min" : "-39.987843057831775" - ,"RSZ::worst_slack_max" : "-81.44107296116866" - ,"RSZ::tns_max" : "-64250.963893031745" - ,"RSZ::hold_buffer_count" : "1032" + ,"RSZ::worst_slack_min" : "-39.99122923807042" + ,"RSZ::worst_slack_max" : "-90.05512691020161" + ,"RSZ::tns_max" : "-64507.60715625479" + ,"RSZ::hold_buffer_count" : "918" ,"GRT::ANT::errors" : "0" ,"DRT::drv" : "0" - ,"DRT::worst_slack_min" : "-30.286936274499176" - ,"DRT::worst_slack_max" : "-148.32562667970024" - ,"DRT::tns_max" : "-69044.1800695017" - ,"DRT::clock_skew" : "16.51001841842658" - ,"DRT::max_slew_slack" : "-11.369717359542847" + ,"DRT::worst_slack_min" : "-32.860349989136296" + ,"DRT::worst_slack_max" : "-151.75510561647087" + ,"DRT::tns_max" : "-68476.09271229655" + ,"DRT::clock_skew" : "15.036946747892202" + ,"DRT::max_slew_slack" : "-38.03803253173828" ,"DRT::max_capacitance_slack" : "0" ,"DRT::max_fanout_slack" : "0" ,"DRT::clock_period" : "400.0" diff --git a/test/aes_nangate45.metrics b/test/aes_nangate45.metrics index b7cf2b02d50..9ab54299d12 100644 --- a/test/aes_nangate45.metrics +++ b/test/aes_nangate45.metrics @@ -2,78 +2,81 @@ "IFP::ord_version": "", "IFP::instance_count": "16759", "floorplan__design__io": 388, - "design__io__hpwl": 327557349, - "utilizatin__before__dpl": 2.46266, - "design__instance__displacement__total": 10118.2, - "design__instance__displacement__mean": 0.52, - "design__instance__displacement__max": 2.9045, - "route__wirelength__estimated": 492211, - "dpl__hpwl__delta": 9.7451e+06, - "dpl__hpwl__delta__percent": 1, - "RSZ::repair_design_buffer_count": "751", - "RSZ::max_slew_slack": "27.4115248458771", + "design__io__hpwl": 327974539, + "utilization__before__dpl": 2.44659, + "negotiation__converge__phase_1__iteration": 0, + "design__instance__displacement__total": 19329.3, + "design__instance__displacement__mean": 0.997, + "design__instance__displacement__max": 6.9875, + "route__wirelength__estimated": 495645, + "dpl__hpwl__delta": 1.58673e+07, + "dpl__hpwl__delta__percent": 2, + "RSZ::repair_design_buffer_count": "677", + "RSZ::max_slew_slack": "28.090654092953947", "RSZ::max_fanout_slack": "100.0", - "RSZ::max_capacitance_slack": "19.69739581786955", - "utilizatin__before__dpl": 2.48249, - "design__instance__displacement__total": 126.004, - "design__instance__displacement__mean": 0.006, - "design__instance__displacement__max": 2.3545, - "route__wirelength__estimated": 497843, - "dpl__hpwl__delta": 38609, + "RSZ::max_capacitance_slack": "-9.295598376778681", + "utilization__before__dpl": 2.46814, + "negotiation__converge__phase_1__iteration": 0, + "design__instance__displacement__total": 185.613, + "design__instance__displacement__mean": 0.0095, + "design__instance__displacement__max": 7.1, + "route__wirelength__estimated": 500782, + "dpl__hpwl__delta": 26055, "dpl__hpwl__delta__percent": 0, - "design__instance__count__setup_buffer": 1132, - "design__instance__count__hold_buffer": 282, - "RSZ::worst_slack_min": "6.800116218149504e-6", - "RSZ::worst_slack_max": "-0.29496295130150896", - "RSZ::tns_max": "-26.347245131366588", - "RSZ::hold_buffer_count": "282", - "utilizatin__before__dpl": 2.98962, - "design__instance__displacement__total": 2686.66, - "design__instance__displacement__mean": 0.128, - "design__instance__displacement__max": 4.9035, - "route__wirelength__estimated": 536947, - "dpl__hpwl__delta": 2.79372e+06, + "design__instance__count__setup_buffer": 1208, + "design__instance__count__hold_buffer": 78, + "RSZ::worst_slack_min": "2.017830404324363e-5", + "RSZ::worst_slack_max": "-0.20410851364558505", + "RSZ::tns_max": "-21.789003218425616", + "RSZ::hold_buffer_count": "78", + "utilization__before__dpl": 2.95279, + "negotiation__converge__phase_1__iteration": 0, + "design__instance__displacement__total": 3235, + "design__instance__displacement__mean": 0.1555, + "design__instance__displacement__max": 9.135, + "route__wirelength__estimated": 544463, + "dpl__hpwl__delta": 3.77897e+06, "dpl__hpwl__delta__percent": 0, "DPL::utilization": "3.0", - "DPL::design_area": "26823", - "route__net": 17847, + "DPL::design_area": "26493", + "route__net": 17657, "route__net__special": 2, "global_route__fastroute__run_s": 0, - "global_route__fastroute__initial_rsmt_s": 0.0315493, - "global_route__fastroute__route_l_s": 0.0313789, - "global_route__fastroute__congestion_rsmt_s": 0.0629661, - "global_route__fastroute__new_route_l_s": 0.0200517, - "global_route__fastroute__spiral_s": 0.0220446, - "global_route__fastroute__route_z_s": 0.00444428, - "global_route__fastroute__monotonic_s": 0.0723626, - "global_route__fastroute__overflow_iterations_s": 1.84525, - "global_route__fastroute__finalization_s": 3.18645, + "global_route__fastroute__initial_rsmt_s": 0.0354216, + "global_route__fastroute__route_l_s": 0.0348912, + "global_route__fastroute__congestion_rsmt_s": 0.069808, + "global_route__fastroute__new_route_l_s": 0.0226968, + "global_route__fastroute__spiral_s": 0.0261616, + "global_route__fastroute__route_z_s": 0.00620804, + "global_route__fastroute__monotonic_s": 0.0492483, + "global_route__fastroute__overflow_iterations_s": 11.5172, + "global_route__fastroute__finalization_s": 3.2809, "global_route__fastroute__snapshot_batch_route_s": 0, "global_route__fastroute__snapshot_batch_apply_s": 0, "global_route__fastroute__snapshot_batch_sync_s": 0, "global_route__fastroute__snapshot_batch_count": 0, "global_route__fastroute__snapshot_batch_nets": 0, "global_route__fastroute__snapshot_batch_wave_count": 0, - "global_route__vias": 160852, - "global_route__wirelength": 819528, + "global_route__vias": 160915, + "global_route__wirelength": 831410, "grt__antenna_diodes_count": 0, "grt__antenna__violating__nets": 0, "grt__antenna__violating__pins": 0, "GRT::ANT::errors": "0", - "route__drc_errors__iter:0": 3948, - "route__wirelength__iter:0": 646481, - "route__drc_errors__iter:1": 783, - "route__wirelength__iter:1": 644484, - "route__drc_errors__iter:2": 501, - "route__wirelength__iter:2": 644119, - "route__drc_errors__iter:3": 4, - "route__wirelength__iter:3": 644120, + "route__drc_errors__iter:0": 3964, + "route__wirelength__iter:0": 654819, + "route__drc_errors__iter:1": 828, + "route__wirelength__iter:1": 652738, + "route__drc_errors__iter:2": 677, + "route__wirelength__iter:2": 652337, + "route__drc_errors__iter:3": 14, + "route__wirelength__iter:3": 652360, "route__drc_errors__iter:4": 0, - "route__wirelength__iter:4": 644120, + "route__wirelength__iter:4": 652361, "route__drc_errors": 0, - "route__wirelength": 644120, - "route__vias": 146359, - "route__vias__singlecut": 146359, + "route__wirelength": 652361, + "route__vias": 145856, + "route__vias__singlecut": 145856, "route__vias__multicut": 0, "DRT::drv": "0", "drt__repair_antennas__pre_repair__antenna__violating__nets": 0, @@ -84,20 +87,23 @@ "design__violations": 0, "timing__drv__floating__nets": 0, "timing__drv__floating__pins": 0, - "DRT::worst_slack_min": "0.001021210922507652", - "DRT::worst_slack_max": "-0.39736137727166904", - "DRT::tns_max": "-36.690772347763165", - "DRT::clock_skew": "0.04056152750705297", - "DRT::max_slew_slack": "21.563517894528584", + "DRT::worst_slack_min": "-0.015447005223266412", + "DRT::worst_slack_max": "-0.30606162914797375", + "DRT::tns_max": "-31.790372123453697", + "DRT::clock_skew": "0.026785435738679694", + "DRT::max_slew_slack": "33.33845462641906", "DRT::max_fanout_slack": "100.0", - "DRT::max_capacitance_slack": "-25.39746532742923", + "DRT::max_capacitance_slack": "-16.97116969818945", "DRT::clock_period": "0.810900", - "flow__warnings__count": 9, + "flow__warnings__count": 14, "flow__errors__count": 0, "flow__warnings__count:GRT-0246": 1, + "flow__warnings__count:GRT-0273": 2, "flow__warnings__count:IFP-0028": 1, "flow__warnings__count:ORD-0046": 5, + "flow__warnings__count:PDN-1051": 2, + "flow__warnings__count:RCX-0514": 1, "flow__warnings__count:RSZ-0062": 1, "flow__warnings__count:STA-0441": 1, - "flow__warnings__type_count": 5 + "flow__warnings__type_count": 8 } \ No newline at end of file diff --git a/test/aes_nangate45.metrics_limits b/test/aes_nangate45.metrics_limits index cfa10ba1b7d..74fdbcb9215 100644 --- a/test/aes_nangate45.metrics_limits +++ b/test/aes_nangate45.metrics_limits @@ -1,23 +1,23 @@ { "IFP::instance_count" : "20110.8" - ,"DPL::design_area" : "31743.6" - ,"DPL::utilization" : "3.48" - ,"RSZ::repair_design_buffer_count" : "832" + ,"DPL::design_area" : "31791.6" + ,"DPL::utilization" : "3.5999999999999996" + ,"RSZ::repair_design_buffer_count" : "812" ,"RSZ::max_slew_slack" : "0" - ,"RSZ::max_capacitance_slack" : "-26.708663863816863" + ,"RSZ::max_capacitance_slack" : "-11.154718052134417" ,"RSZ::max_fanout_slack" : "0" - ,"RSZ::worst_slack_min" : "-0.08059109351419903" - ,"RSZ::worst_slack_max" : "-0.25650413262880056" - ,"RSZ::tns_max" : "-155.07934597253475" - ,"RSZ::hold_buffer_count" : "37" + ,"RSZ::worst_slack_min" : "-0.08106982169595675" + ,"RSZ::worst_slack_max" : "-0.285198513645585" + ,"RSZ::tns_max" : "-157.68773421842562" + ,"RSZ::hold_buffer_count" : "93" ,"GRT::ANT::errors" : "0" ,"DRT::drv" : "0" - ,"DRT::worst_slack_min" : "-0.08991087483578412" - ,"DRT::worst_slack_max" : "-0.31033596203547853" - ,"DRT::tns_max" : "-168.150245372004" - ,"DRT::clock_skew" : "0.03878804054401374" + ,"DRT::worst_slack_min" : "-0.09653700522326641" + ,"DRT::worst_slack_max" : "-0.38715162914797374" + ,"DRT::tns_max" : "-167.6891031234537" + ,"DRT::clock_skew" : "0.03214252288641563" ,"DRT::max_slew_slack" : "0" - ,"DRT::max_capacitance_slack" : "-33.43458210527084" + ,"DRT::max_capacitance_slack" : "-20.365403637827338" ,"DRT::max_fanout_slack" : "0" ,"DRT::clock_period" : "0.8109" ,"DRT::ANT::errors" : "0" diff --git a/test/aes_sky130hs.metrics b/test/aes_sky130hs.metrics index 8ec3b1d67f4..d8281801860 100644 --- a/test/aes_sky130hs.metrics +++ b/test/aes_sky130hs.metrics @@ -2,321 +2,262 @@ "IFP::ord_version": "", "IFP::instance_count": "16324", "floorplan__design__io": 388, - "design__io__hpwl": 326239300, - "utilization__before__dpl": 7.05565, - "negotiation__converge__phase_1__iteration": 0, - "design__instance__displacement__total": 55723.9, - "design__instance__displacement__mean": 1.175, - "design__instance__displacement__max": 21.935, - "route__wirelength__estimated": 1.24312e+06, - "dpl__hpwl__delta": 2.79436e+07, + "design__io__hpwl": 326386592, + "utilization__before__dpl": 7.07562, + "negotiation__converge__phase_1__iteration": 1, + "design__instance__displacement__total": 55503, + "design__instance__displacement__mean": 1.17, + "design__instance__displacement__max": 24.981, + "route__wirelength__estimated": 1.23979e+06, + "dpl__hpwl__delta": 2.8409e+07, "dpl__hpwl__delta__percent": 2, - "RSZ::repair_design_buffer_count": "722", - "RSZ::max_slew_slack": "19.59700733423233", + "RSZ::repair_design_buffer_count": "730", + "RSZ::max_slew_slack": "19.47050392627716", "RSZ::max_fanout_slack": "100.0", - "RSZ::max_capacitance_slack": "21.8597554970204", - "utilization__before__dpl": 7.16581, + "RSZ::max_capacitance_slack": "21.397172511861033", + "utilization__before__dpl": 7.18965, "negotiation__converge__phase_1__iteration": 0, - "design__instance__displacement__total": 1913.83, - "design__instance__displacement__mean": 0.04, - "design__instance__displacement__max": 18.749, - "route__wirelength__estimated": 1.26123e+06, - "dpl__hpwl__delta": 355408, + "design__instance__displacement__total": 1891.5, + "design__instance__displacement__mean": 0.039, + "design__instance__displacement__max": 21.107, + "route__wirelength__estimated": 1.259e+06, + "dpl__hpwl__delta": 412949, "dpl__hpwl__delta__percent": 0, - "design__instance__count__setup_buffer": 1716, - "design__instance__count__hold_buffer": 453, - "RSZ::worst_slack_min": "0.001683653264461016", - "RSZ::worst_slack_max": "-0.5069549368233122", - "RSZ::tns_max": "-54.29018455126838", - "RSZ::hold_buffer_count": "453", - "utilization__before__dpl": 8.51134, + "design__instance__count__setup_buffer": 1434, + "design__instance__count__hold_buffer": 536, + "RSZ::worst_slack_min": "0.00025279778985675793", + "RSZ::worst_slack_max": "-0.7907488221366042", + "RSZ::tns_max": "-67.14750545646876", + "RSZ::hold_buffer_count": "536", + "utilization__before__dpl": 8.44323, "negotiation__converge__phase_1__iteration": 3, - "design__instance__displacement__total": 17517.3, - "design__instance__displacement__mean": 0.351, - "design__instance__displacement__max": 37.844, - "route__wirelength__estimated": 1.42222e+06, - "dpl__hpwl__delta": 1.1122e+07, + "design__instance__displacement__total": 16292.1, + "design__instance__displacement__mean": 0.327, + "design__instance__displacement__max": 41.015, + "route__wirelength__estimated": 1.39578e+06, + "dpl__hpwl__delta": 1.02072e+07, "dpl__hpwl__delta__percent": 1, - "DPL::utilization": "8.5", - "DPL::design_area": "256868", - "route__net": 17579, + "DPL::utilization": "8.4", + "DPL::design_area": "254812", + "route__net": 17411, "route__net__special": 2, "global_route__fastroute__run_s": 0, - "global_route__fastroute__initial_rsmt_s": 0.0343715, - "global_route__fastroute__route_l_s": 0.0370557, - "global_route__fastroute__congestion_rsmt_s": 0.0705653, - "global_route__fastroute__new_route_l_s": 0.0228468, - "global_route__fastroute__spiral_s": 0.0255377, - "global_route__fastroute__route_z_s": 0.00681601, - "global_route__fastroute__monotonic_s": 0.258587, - "global_route__fastroute__overflow_iterations_s": 2.30154, - "global_route__fastroute__finalization_s": 2.62415, + "global_route__fastroute__initial_rsmt_s": 0.0372171, + "global_route__fastroute__route_l_s": 0.0386872, + "global_route__fastroute__congestion_rsmt_s": 0.0716178, + "global_route__fastroute__new_route_l_s": 0.0252604, + "global_route__fastroute__spiral_s": 0.033092, + "global_route__fastroute__route_z_s": 0.00700301, + "global_route__fastroute__monotonic_s": 0.168183, + "global_route__fastroute__overflow_iterations_s": 3.15678, + "global_route__fastroute__finalization_s": 2.56572, "global_route__fastroute__snapshot_batch_route_s": 0, "global_route__fastroute__snapshot_batch_apply_s": 0, "global_route__fastroute__snapshot_batch_sync_s": 0, "global_route__fastroute__snapshot_batch_count": 0, "global_route__fastroute__snapshot_batch_nets": 0, "global_route__fastroute__snapshot_batch_wave_count": 0, - "global_route__vias": 184065, - "global_route__wirelength": 2245485, - "grt__utilization__before__dpl": 8.52469, - "grt__negotiation__converge__phase_1__iteration": 1, + "global_route__vias": 182541, + "global_route__wirelength": 2223914, + "grt__utilization__before__dpl": 8.45435, + "grt__negotiation__converge__phase_1__iteration": 0, "grt__global_route__fastroute__run_s": 0, - "grt__global_route__fastroute__initial_rsmt_s": 0.000955953, - "grt__global_route__fastroute__route_l_s": 0.00103194, - "grt__global_route__fastroute__congestion_rsmt_s": 0.00142948, - "grt__global_route__fastroute__new_route_l_s": 0.000492759, - "grt__global_route__fastroute__spiral_s": 0.000563895, - "grt__global_route__fastroute__route_z_s": 0.000207351, - "grt__global_route__fastroute__monotonic_s": 0.0109433, - "grt__global_route__fastroute__overflow_iterations_s": 0.043741, - "grt__global_route__fastroute__finalization_s": 0.17671, + "grt__global_route__fastroute__initial_rsmt_s": 0.00067377, + "grt__global_route__fastroute__route_l_s": 0.00154303, + "grt__global_route__fastroute__congestion_rsmt_s": 0.00148234, + "grt__global_route__fastroute__new_route_l_s": 0.000577245, + "grt__global_route__fastroute__spiral_s": 0.000602514, + "grt__global_route__fastroute__route_z_s": 0.000131577, + "grt__global_route__fastroute__monotonic_s": 0.00719293, + "grt__global_route__fastroute__overflow_iterations_s": 0.0350762, + "grt__global_route__fastroute__finalization_s": 0.121082, "grt__global_route__fastroute__snapshot_batch_route_s": 0, "grt__global_route__fastroute__snapshot_batch_apply_s": 0, "grt__global_route__fastroute__snapshot_batch_sync_s": 0, "grt__global_route__fastroute__snapshot_batch_count": 0, "grt__global_route__fastroute__snapshot_batch_nets": 0, "grt__global_route__fastroute__snapshot_batch_wave_count": 0, - "grt__global_route__vias": 3069, - "grt__utilization__before__dpl": 8.52575, + "grt__global_route__vias": 2602, + "grt__utilization__before__dpl": 8.45467, "grt__negotiation__converge__phase_1__iteration": 0, "grt__global_route__fastroute__run_s": 0, - "grt__global_route__fastroute__initial_rsmt_s": 0.000117656, - "grt__global_route__fastroute__route_l_s": 0.000101912, - "grt__global_route__fastroute__congestion_rsmt_s": 0.00014021, - "grt__global_route__fastroute__new_route_l_s": 4.3516e-05, - "grt__global_route__fastroute__spiral_s": 5.1427e-05, - "grt__global_route__fastroute__route_z_s": 1.31e-05, - "grt__global_route__fastroute__monotonic_s": 0.00416259, - "grt__global_route__fastroute__overflow_iterations_s": 0.00227102, - "grt__global_route__fastroute__finalization_s": 0.0136099, + "grt__global_route__fastroute__initial_rsmt_s": 2.1853e-05, + "grt__global_route__fastroute__route_l_s": 5.8579e-05, + "grt__global_route__fastroute__congestion_rsmt_s": 2.2624e-05, + "grt__global_route__fastroute__new_route_l_s": 1.1838e-05, + "grt__global_route__fastroute__spiral_s": 1.3039e-05, + "grt__global_route__fastroute__route_z_s": 8.582e-06, + "grt__global_route__fastroute__monotonic_s": 0.00365159, + "grt__global_route__fastroute__overflow_iterations_s": 0.00271043, + "grt__global_route__fastroute__finalization_s": 0.00583206, "grt__global_route__fastroute__snapshot_batch_route_s": 0, "grt__global_route__fastroute__snapshot_batch_apply_s": 0, "grt__global_route__fastroute__snapshot_batch_sync_s": 0, "grt__global_route__fastroute__snapshot_batch_count": 0, "grt__global_route__fastroute__snapshot_batch_nets": 0, "grt__global_route__fastroute__snapshot_batch_wave_count": 0, - "grt__global_route__vias": 321, - "grt__utilization__before__dpl": 8.52649, + "grt__global_route__vias": 58, + "grt__utilization__before__dpl": 8.45478, "grt__negotiation__converge__phase_1__iteration": 0, "grt__global_route__fastroute__run_s": 0, - "grt__global_route__fastroute__initial_rsmt_s": 3.1968e-05, - "grt__global_route__fastroute__route_l_s": 4.0901e-05, - "grt__global_route__fastroute__congestion_rsmt_s": 2.9694e-05, - "grt__global_route__fastroute__new_route_l_s": 1.0766e-05, - "grt__global_route__fastroute__spiral_s": 1.4201e-05, - "grt__global_route__fastroute__route_z_s": 6.69e-06, - "grt__global_route__fastroute__monotonic_s": 0.00396125, - "grt__global_route__fastroute__overflow_iterations_s": 0.00224848, - "grt__global_route__fastroute__finalization_s": 0.00779454, + "grt__global_route__fastroute__initial_rsmt_s": 1.7456e-05, + "grt__global_route__fastroute__route_l_s": 3.968e-05, + "grt__global_route__fastroute__congestion_rsmt_s": 1.289e-05, + "grt__global_route__fastroute__new_route_l_s": 9.354e-06, + "grt__global_route__fastroute__spiral_s": 8.993e-06, + "grt__global_route__fastroute__route_z_s": 5.288e-06, + "grt__global_route__fastroute__monotonic_s": 0.00338314, + "grt__global_route__fastroute__overflow_iterations_s": 0.00212016, + "grt__global_route__fastroute__finalization_s": 0.0056443, "grt__global_route__fastroute__snapshot_batch_route_s": 0, "grt__global_route__fastroute__snapshot_batch_apply_s": 0, "grt__global_route__fastroute__snapshot_batch_sync_s": 0, "grt__global_route__fastroute__snapshot_batch_count": 0, "grt__global_route__fastroute__snapshot_batch_nets": 0, "grt__global_route__fastroute__snapshot_batch_wave_count": 0, - "grt__global_route__vias": 69, - "grt__antenna_diodes_count": 143, + "grt__global_route__vias": 31, + "grt__antenna_diodes_count": 109, "grt__antenna__violating__nets": 0, "grt__antenna__violating__pins": 0, "GRT::ANT::errors": "0", - "route__drc_errors__iter:0": 7026, - "route__wirelength__iter:0": 1735641, - "route__drc_errors__iter:1": 2042, - "route__wirelength__iter:1": 1730860, - "route__drc_errors__iter:2": 1506, - "route__wirelength__iter:2": 1729233, - "route__drc_errors__iter:3": 25, - "route__wirelength__iter:3": 1729444, + "route__drc_errors__iter:0": 7047, + "route__wirelength__iter:0": 1714496, + "route__drc_errors__iter:1": 2085, + "route__wirelength__iter:1": 1709391, + "route__drc_errors__iter:2": 1477, + "route__wirelength__iter:2": 1707904, + "route__drc_errors__iter:3": 21, + "route__wirelength__iter:3": 1707990, "route__drc_errors__iter:4": 0, - "route__wirelength__iter:4": 1729449, + "route__wirelength__iter:4": 1707981, "route__drc_errors": 0, - "route__wirelength": 1729449, - "route__vias": 157879, - "route__vias__singlecut": 157879, + "route__wirelength": 1707981, + "route__vias": 156629, + "route__vias__singlecut": 156629, "route__vias__multicut": 0, "DRT::drv": "0", - "drt__repair_antennas__pre_repair__antenna__violating__nets": 199, - "drt__repair_antennas__pre_repair__antenna__violating__pins": 210, - "drt__repair_antennas__iter_0__utilization__before__dpl": 8.56611, - "drt__repair_antennas__iter_0__negotiation__converge__phase_1__iteration": 1, + "drt__repair_antennas__pre_repair__antenna__violating__nets": 181, + "drt__repair_antennas__pre_repair__antenna__violating__pins": 187, + "drt__repair_antennas__iter_0__utilization__before__dpl": 8.48592, + "drt__repair_antennas__iter_0__negotiation__converge__phase_1__iteration": 0, "drt__repair_antennas__iter_0__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_0__global_route__fastroute__initial_rsmt_s": 0.000495834, - "drt__repair_antennas__iter_0__global_route__fastroute__route_l_s": 0.00199193, - "drt__repair_antennas__iter_0__global_route__fastroute__congestion_rsmt_s": 0.00223195, - "drt__repair_antennas__iter_0__global_route__fastroute__new_route_l_s": 0.000818527, - "drt__repair_antennas__iter_0__global_route__fastroute__spiral_s": 0.000876394, - "drt__repair_antennas__iter_0__global_route__fastroute__route_z_s": 0.000316514, - "drt__repair_antennas__iter_0__global_route__fastroute__monotonic_s": 0.00615285, - "drt__repair_antennas__iter_0__global_route__fastroute__overflow_iterations_s": 5.61e-07, - "drt__repair_antennas__iter_0__global_route__fastroute__finalization_s": 0.0630916, + "drt__repair_antennas__iter_0__global_route__fastroute__initial_rsmt_s": 0.000550475, + "drt__repair_antennas__iter_0__global_route__fastroute__route_l_s": 0.00182718, + "drt__repair_antennas__iter_0__global_route__fastroute__congestion_rsmt_s": 0.00139763, + "drt__repair_antennas__iter_0__global_route__fastroute__new_route_l_s": 0.000685849, + "drt__repair_antennas__iter_0__global_route__fastroute__spiral_s": 0.000704666, + "drt__repair_antennas__iter_0__global_route__fastroute__route_z_s": 0.000302454, + "drt__repair_antennas__iter_0__global_route__fastroute__monotonic_s": 0.00645439, + "drt__repair_antennas__iter_0__global_route__fastroute__overflow_iterations_s": 3.51e-07, + "drt__repair_antennas__iter_0__global_route__fastroute__finalization_s": 0.0636715, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_route_s": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_apply_s": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_sync_s": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_count": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_nets": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_0__global_route__vias": 2610, - "drt__repair_antennas__iter_0__antenna_diodes_count": 517, - "drt__repair_antennas__iter_0__route__drc_errors__iter:0": 1226, - "drt__repair_antennas__iter_0__route__wirelength__iter:0": 1727813, - "drt__repair_antennas__iter_0__route__drc_errors__iter:1": 179, - "drt__repair_antennas__iter_0__route__wirelength__iter:1": 1727639, - "drt__repair_antennas__iter_0__route__drc_errors__iter:2": 137, - "drt__repair_antennas__iter_0__route__wirelength__iter:2": 1727602, + "drt__repair_antennas__iter_0__global_route__vias": 2297, + "drt__repair_antennas__iter_0__antenna_diodes_count": 403, + "drt__repair_antennas__iter_0__route__drc_errors__iter:0": 1024, + "drt__repair_antennas__iter_0__route__wirelength__iter:0": 1707572, + "drt__repair_antennas__iter_0__route__drc_errors__iter:1": 170, + "drt__repair_antennas__iter_0__route__wirelength__iter:1": 1707483, + "drt__repair_antennas__iter_0__route__drc_errors__iter:2": 100, + "drt__repair_antennas__iter_0__route__wirelength__iter:2": 1707477, "drt__repair_antennas__iter_0__route__drc_errors__iter:3": 0, - "drt__repair_antennas__iter_0__route__wirelength__iter:3": 1727648, + "drt__repair_antennas__iter_0__route__wirelength__iter:3": 1707061, "drt__repair_antennas__iter_0__route__drc_errors": 0, - "drt__repair_antennas__iter_0__route__wirelength": 1727648, - "drt__repair_antennas__iter_0__route__vias": 158826, - "drt__repair_antennas__iter_0__route__vias__singlecut": 158826, + "drt__repair_antennas__iter_0__route__wirelength": 1707061, + "drt__repair_antennas__iter_0__route__vias": 157133, + "drt__repair_antennas__iter_0__route__vias__singlecut": 157133, "drt__repair_antennas__iter_0__route__vias__multicut": 0, - "drt__repair_antennas__iter_0__antenna__violating__nets": 13, - "drt__repair_antennas__iter_0__antenna__violating__pins": 13, - "drt__repair_antennas__iter_1__utilization__before__dpl": 8.56971, + "drt__repair_antennas__iter_0__antenna__violating__nets": 20, + "drt__repair_antennas__iter_0__antenna__violating__pins": 20, + "drt__repair_antennas__iter_1__utilization__before__dpl": 8.49492, "drt__repair_antennas__iter_1__negotiation__converge__phase_1__iteration": 0, "drt__repair_antennas__iter_1__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_1__global_route__fastroute__initial_rsmt_s": 0.000100902, - "drt__repair_antennas__iter_1__global_route__fastroute__route_l_s": 0.000184727, - "drt__repair_antennas__iter_1__global_route__fastroute__congestion_rsmt_s": 0.000485458, - "drt__repair_antennas__iter_1__global_route__fastroute__new_route_l_s": 5.9018e-05, - "drt__repair_antennas__iter_1__global_route__fastroute__spiral_s": 5.0465e-05, - "drt__repair_antennas__iter_1__global_route__fastroute__route_z_s": 3.6324e-05, - "drt__repair_antennas__iter_1__global_route__fastroute__monotonic_s": 0.0012073, - "drt__repair_antennas__iter_1__global_route__fastroute__overflow_iterations_s": 4.21e-07, - "drt__repair_antennas__iter_1__global_route__fastroute__finalization_s": 0.00695114, + "drt__repair_antennas__iter_1__global_route__fastroute__initial_rsmt_s": 0.000260641, + "drt__repair_antennas__iter_1__global_route__fastroute__route_l_s": 0.000323666, + "drt__repair_antennas__iter_1__global_route__fastroute__congestion_rsmt_s": 0.000235273, + "drt__repair_antennas__iter_1__global_route__fastroute__new_route_l_s": 8.7101e-05, + "drt__repair_antennas__iter_1__global_route__fastroute__spiral_s": 8.4917e-05, + "drt__repair_antennas__iter_1__global_route__fastroute__route_z_s": 5.0646e-05, + "drt__repair_antennas__iter_1__global_route__fastroute__monotonic_s": 0.0025731, + "drt__repair_antennas__iter_1__global_route__fastroute__overflow_iterations_s": 5.51e-07, + "drt__repair_antennas__iter_1__global_route__fastroute__finalization_s": 0.0046487, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_route_s": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_apply_s": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_sync_s": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_count": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_nets": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_1__global_route__vias": 243, - "drt__repair_antennas__iter_1__antenna_diodes_count": 551, - "drt__repair_antennas__iter_1__route__drc_errors__iter:0": 20, - "drt__repair_antennas__iter_1__route__wirelength__iter:0": 1727756, - "drt__repair_antennas__iter_1__route__drc_errors__iter:1": 0, - "drt__repair_antennas__iter_1__route__wirelength__iter:1": 1727750, + "drt__repair_antennas__iter_1__global_route__vias": 342, + "drt__repair_antennas__iter_1__antenna_diodes_count": 488, + "drt__repair_antennas__iter_1__route__drc_errors__iter:0": 223, + "drt__repair_antennas__iter_1__route__wirelength__iter:0": 1707385, + "drt__repair_antennas__iter_1__route__drc_errors__iter:1": 26, + "drt__repair_antennas__iter_1__route__wirelength__iter:1": 1707370, + "drt__repair_antennas__iter_1__route__drc_errors__iter:2": 16, + "drt__repair_antennas__iter_1__route__wirelength__iter:2": 1707371, + "drt__repair_antennas__iter_1__route__drc_errors__iter:3": 0, + "drt__repair_antennas__iter_1__route__wirelength__iter:3": 1707300, "drt__repair_antennas__iter_1__route__drc_errors": 0, - "drt__repair_antennas__iter_1__route__wirelength": 1727750, - "drt__repair_antennas__iter_1__route__vias": 158882, - "drt__repair_antennas__iter_1__route__vias__singlecut": 158882, + "drt__repair_antennas__iter_1__route__wirelength": 1707300, + "drt__repair_antennas__iter_1__route__vias": 157349, + "drt__repair_antennas__iter_1__route__vias__singlecut": 157349, "drt__repair_antennas__iter_1__route__vias__multicut": 0, - "drt__repair_antennas__iter_1__antenna__violating__nets": 4, - "drt__repair_antennas__iter_1__antenna__violating__pins": 4, - "drt__repair_antennas__iter_2__utilization__before__dpl": 8.57034, + "drt__repair_antennas__iter_1__antenna__violating__nets": 2, + "drt__repair_antennas__iter_1__antenna__violating__pins": 2, + "drt__repair_antennas__iter_2__utilization__before__dpl": 8.49588, "drt__repair_antennas__iter_2__negotiation__converge__phase_1__iteration": 0, "drt__repair_antennas__iter_2__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_2__global_route__fastroute__initial_rsmt_s": 4.3636e-05, - "drt__repair_antennas__iter_2__global_route__fastroute__route_l_s": 3.7867e-05, - "drt__repair_antennas__iter_2__global_route__fastroute__congestion_rsmt_s": 8.682e-05, - "drt__repair_antennas__iter_2__global_route__fastroute__new_route_l_s": 2.2123e-05, - "drt__repair_antennas__iter_2__global_route__fastroute__spiral_s": 1.4952e-05, - "drt__repair_antennas__iter_2__global_route__fastroute__route_z_s": 6.6e-06, - "drt__repair_antennas__iter_2__global_route__fastroute__monotonic_s": 0.00090713, - "drt__repair_antennas__iter_2__global_route__fastroute__overflow_iterations_s": 6e-07, - "drt__repair_antennas__iter_2__global_route__fastroute__finalization_s": 0.00038672, + "drt__repair_antennas__iter_2__global_route__fastroute__initial_rsmt_s": 8.66e-05, + "drt__repair_antennas__iter_2__global_route__fastroute__route_l_s": 2.053e-05, + "drt__repair_antennas__iter_2__global_route__fastroute__congestion_rsmt_s": 7.1257e-05, + "drt__repair_antennas__iter_2__global_route__fastroute__new_route_l_s": 6.66e-06, + "drt__repair_antennas__iter_2__global_route__fastroute__spiral_s": 8.994e-06, + "drt__repair_antennas__iter_2__global_route__fastroute__route_z_s": 3.225e-06, + "drt__repair_antennas__iter_2__global_route__fastroute__monotonic_s": 0.00117816, + "drt__repair_antennas__iter_2__global_route__fastroute__overflow_iterations_s": 5e-07, + "drt__repair_antennas__iter_2__global_route__fastroute__finalization_s": 0.000181612, "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_route_s": 0, "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_apply_s": 0, "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_sync_s": 0, "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_count": 0, "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_nets": 0, "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_2__global_route__vias": 61, - "drt__repair_antennas__iter_2__antenna_diodes_count": 557, - "drt__repair_antennas__iter_2__route__drc_errors__iter:0": 2, - "drt__repair_antennas__iter_2__route__wirelength__iter:0": 1727762, + "drt__repair_antennas__iter_2__global_route__vias": 56, + "drt__repair_antennas__iter_2__antenna_diodes_count": 497, + "drt__repair_antennas__iter_2__route__drc_errors__iter:0": 11, + "drt__repair_antennas__iter_2__route__wirelength__iter:0": 1707338, "drt__repair_antennas__iter_2__route__drc_errors__iter:1": 0, - "drt__repair_antennas__iter_2__route__wirelength__iter:1": 1727765, + "drt__repair_antennas__iter_2__route__wirelength__iter:1": 1707338, "drt__repair_antennas__iter_2__route__drc_errors": 0, - "drt__repair_antennas__iter_2__route__wirelength": 1727765, - "drt__repair_antennas__iter_2__route__vias": 158893, - "drt__repair_antennas__iter_2__route__vias__singlecut": 158893, + "drt__repair_antennas__iter_2__route__wirelength": 1707338, + "drt__repair_antennas__iter_2__route__vias": 157370, + "drt__repair_antennas__iter_2__route__vias__singlecut": 157370, "drt__repair_antennas__iter_2__route__vias__multicut": 0, - "drt__repair_antennas__iter_2__antenna__violating__nets": 1, - "drt__repair_antennas__iter_2__antenna__violating__pins": 1, - "drt__repair_antennas__iter_3__utilization__before__dpl": 8.57045, - "drt__repair_antennas__iter_3__negotiation__converge__phase_1__iteration": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__initial_rsmt_s": 2.3125e-05, - "drt__repair_antennas__iter_3__global_route__fastroute__route_l_s": 1.292e-05, - "drt__repair_antennas__iter_3__global_route__fastroute__congestion_rsmt_s": 1.3671e-05, - "drt__repair_antennas__iter_3__global_route__fastroute__new_route_l_s": 1.983e-06, - "drt__repair_antennas__iter_3__global_route__fastroute__spiral_s": 4.547e-06, - "drt__repair_antennas__iter_3__global_route__fastroute__route_z_s": 2.213e-06, - "drt__repair_antennas__iter_3__global_route__fastroute__monotonic_s": 0.000888752, - "drt__repair_antennas__iter_3__global_route__fastroute__overflow_iterations_s": 6.71e-07, - "drt__repair_antennas__iter_3__global_route__fastroute__finalization_s": 0.000137496, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_route_s": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_apply_s": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_sync_s": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_count": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_nets": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_3__global_route__vias": 14, - "drt__repair_antennas__iter_3__antenna_diodes_count": 558, - "drt__repair_antennas__iter_3__route__drc_errors__iter:0": 4, - "drt__repair_antennas__iter_3__route__wirelength__iter:0": 1727781, - "drt__repair_antennas__iter_3__route__drc_errors__iter:1": 0, - "drt__repair_antennas__iter_3__route__wirelength__iter:1": 1727782, - "drt__repair_antennas__iter_3__route__drc_errors": 0, - "drt__repair_antennas__iter_3__route__wirelength": 1727782, - "drt__repair_antennas__iter_3__route__vias": 158893, - "drt__repair_antennas__iter_3__route__vias__singlecut": 158893, - "drt__repair_antennas__iter_3__route__vias__multicut": 0, - "drt__repair_antennas__iter_3__antenna__violating__nets": 1, - "drt__repair_antennas__iter_3__antenna__violating__pins": 1, - "drt__repair_antennas__iter_4__utilization__before__dpl": 8.57056, - "drt__repair_antennas__iter_4__negotiation__converge__phase_1__iteration": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__initial_rsmt_s": 2.4527e-05, - "drt__repair_antennas__iter_4__global_route__fastroute__route_l_s": 1.334e-05, - "drt__repair_antennas__iter_4__global_route__fastroute__congestion_rsmt_s": 1.5142e-05, - "drt__repair_antennas__iter_4__global_route__fastroute__new_route_l_s": 1.953e-06, - "drt__repair_antennas__iter_4__global_route__fastroute__spiral_s": 4.977e-06, - "drt__repair_antennas__iter_4__global_route__fastroute__route_z_s": 2.173e-06, - "drt__repair_antennas__iter_4__global_route__fastroute__monotonic_s": 0.000834642, - "drt__repair_antennas__iter_4__global_route__fastroute__overflow_iterations_s": 5.91e-07, - "drt__repair_antennas__iter_4__global_route__fastroute__finalization_s": 0.000138668, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_route_s": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_apply_s": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_sync_s": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_count": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_nets": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_4__global_route__vias": 18, - "drt__repair_antennas__iter_4__antenna_diodes_count": 559, - "drt__repair_antennas__iter_4__route__drc_errors__iter:0": 4, - "drt__repair_antennas__iter_4__route__wirelength__iter:0": 1727782, - "drt__repair_antennas__iter_4__route__drc_errors__iter:1": 0, - "drt__repair_antennas__iter_4__route__wirelength__iter:1": 1727786, - "drt__repair_antennas__iter_4__route__drc_errors": 0, - "drt__repair_antennas__iter_4__route__wirelength": 1727786, - "drt__repair_antennas__iter_4__route__vias": 158897, - "drt__repair_antennas__iter_4__route__vias__singlecut": 158897, - "drt__repair_antennas__iter_4__route__vias__multicut": 0, - "drt__repair_antennas__iter_4__antenna__violating__nets": 1, - "drt__repair_antennas__iter_4__antenna__violating__pins": 1, - "drt__antenna__violating__nets": 1, - "drt__antenna__violating__pins": 1, - "DRT::ANT::errors": "1", + "drt__repair_antennas__iter_2__antenna__violating__nets": 0, + "drt__repair_antennas__iter_2__antenna__violating__pins": 0, + "drt__antenna__violating__nets": 0, + "drt__antenna__violating__pins": 0, + "DRT::ANT::errors": "0", "design__violations": 0, "timing__drv__floating__nets": 0, "timing__drv__floating__pins": 0, - "DRT::worst_slack_min": "-0.08219380964048868", - "DRT::worst_slack_max": "-0.8618022095437217", - "DRT::tns_max": "-91.25445901661548", - "DRT::clock_skew": "0.2857236750292738", - "DRT::max_slew_slack": "5.8166805654764175", + "DRT::worst_slack_min": "-0.041077142849847106", + "DRT::worst_slack_max": "-1.1100147781790988", + "DRT::tns_max": "-100.13056622819147", + "DRT::clock_skew": "0.10989320875446407", + "DRT::max_slew_slack": "-3.7598036229610443", "DRT::max_fanout_slack": "100.0", - "DRT::max_capacitance_slack": "6.451509891963377", + "DRT::max_capacitance_slack": "-4.764966372678545", "DRT::clock_period": "2.811000", - "flow__warnings__count": 35, + "flow__warnings__count": 33, "flow__errors__count": 0, - "flow__warnings__count:DRT-0120": 7, + "flow__warnings__count:DRT-0120": 5, "flow__warnings__count:DRT-0349": 10, - "flow__warnings__count:GRT-0243": 1, - "flow__warnings__count:GRT-0273": 1, + "flow__warnings__count:GRT-0273": 2, "flow__warnings__count:GRT-0297": 1, "flow__warnings__count:IFP-0028": 1, "flow__warnings__count:ORD-0046": 9, @@ -324,5 +265,5 @@ "flow__warnings__count:RCX-0514": 1, "flow__warnings__count:RSZ-0062": 1, "flow__warnings__count:STA-0441": 1, - "flow__warnings__type_count": 11 + "flow__warnings__type_count": 10 } \ No newline at end of file diff --git a/test/aes_sky130hs.metrics_limits b/test/aes_sky130hs.metrics_limits index ec81f93b4c9..c9740f42da5 100644 --- a/test/aes_sky130hs.metrics_limits +++ b/test/aes_sky130hs.metrics_limits @@ -1,24 +1,24 @@ { "IFP::instance_count" : "19588.8" - ,"DPL::design_area" : "308241.6" - ,"DPL::utilization" : "10.2" - ,"RSZ::repair_design_buffer_count" : "866" + ,"DPL::design_area" : "305774.39999999997" + ,"DPL::utilization" : "10.08" + ,"RSZ::repair_design_buffer_count" : "876" ,"RSZ::max_slew_slack" : "0" ,"RSZ::max_capacitance_slack" : "0" ,"RSZ::max_fanout_slack" : "0" - ,"RSZ::worst_slack_min" : "-0.279416346735539" - ,"RSZ::worst_slack_max" : "-0.7880549368233122" - ,"RSZ::tns_max" : "-513.1578245512684" - ,"RSZ::hold_buffer_count" : "543" + ,"RSZ::worst_slack_min" : "-0.28084720221014325" + ,"RSZ::worst_slack_max" : "-1.0718488221366043" + ,"RSZ::tns_max" : "-526.0151454564689" + ,"RSZ::hold_buffer_count" : "643" ,"GRT::ANT::errors" : "0" ,"DRT::drv" : "0" - ,"DRT::worst_slack_min" : "-0.3632938096404887" - ,"DRT::worst_slack_max" : "-1.1429022095437218" - ,"DRT::tns_max" : "-550.1220990166155" - ,"DRT::clock_skew" : "0.3428684100351286" - ,"DRT::max_slew_slack" : "0" - ,"DRT::max_capacitance_slack" : "0" + ,"DRT::worst_slack_min" : "-0.3221771428498471" + ,"DRT::worst_slack_max" : "-1.391114778179099" + ,"DRT::tns_max" : "-558.9982062281915" + ,"DRT::clock_skew" : "0.13187185050535688" + ,"DRT::max_slew_slack" : "-4.511764347553253" + ,"DRT::max_capacitance_slack" : "-5.717959647214254" ,"DRT::max_fanout_slack" : "0" ,"DRT::clock_period" : "2.811" - ,"DRT::ANT::errors" : "1" + ,"DRT::ANT::errors" : "0" } diff --git a/test/jpeg_sky130hs.metrics b/test/jpeg_sky130hs.metrics index 610f0454993..11653da00b0 100644 --- a/test/jpeg_sky130hs.metrics +++ b/test/jpeg_sky130hs.metrics @@ -2,335 +2,212 @@ "IFP::ord_version": "", "IFP::instance_count": "49868", "floorplan__design__io": 47, - "design__io__hpwl": 13549178, - "utilization__before__dpl": 30.7334, + "design__io__hpwl": 13723860, + "utilization__before__dpl": 30.7532, "negotiation__converge__phase_1__iteration": 1, - "design__instance__displacement__total": 230786, - "design__instance__displacement__mean": 3.187, - "design__instance__displacement__max": 26.367, - "route__wirelength__estimated": 1.88369e+06, - "dpl__hpwl__delta": 2.62484e+08, + "design__instance__displacement__total": 231061, + "design__instance__displacement__mean": 3.19, + "design__instance__displacement__max": 27.052, + "route__wirelength__estimated": 1.8858e+06, + "dpl__hpwl__delta": 2.60101e+08, "dpl__hpwl__delta__percent": 16, - "RSZ::repair_design_buffer_count": "538", - "RSZ::max_slew_slack": "20.250123739242554", + "RSZ::repair_design_buffer_count": "551", + "RSZ::max_slew_slack": "20.191854238510132", "RSZ::max_fanout_slack": "100.0", - "RSZ::max_capacitance_slack": "22.52151040051523", - "utilization__before__dpl": 31.6365, + "RSZ::max_capacitance_slack": "22.496807401066185", + "utilization__before__dpl": 31.6666, "negotiation__converge__phase_1__iteration": 1, - "design__instance__displacement__total": 15960.3, - "design__instance__displacement__mean": 0.213, - "design__instance__displacement__max": 24.424, - "route__wirelength__estimated": 1.98289e+06, - "dpl__hpwl__delta": 5.89166e+06, + "design__instance__displacement__total": 15828.3, + "design__instance__displacement__mean": 0.211, + "design__instance__displacement__max": 24.22, + "route__wirelength__estimated": 1.98395e+06, + "dpl__hpwl__delta": 5.48542e+06, "dpl__hpwl__delta__percent": 0, "design__instance__count__setup_buffer": 0, - "design__instance__count__hold_buffer": 12, - "RSZ::worst_slack_min": "0.008959722106728185", - "RSZ::worst_slack_max": "0.006624034841464033", + "design__instance__count__hold_buffer": 17, + "RSZ::worst_slack_min": "0.009496736998927191", + "RSZ::worst_slack_max": "0.07504663769502594", "RSZ::tns_max": "0.0", - "RSZ::hold_buffer_count": "12", - "utilization__before__dpl": 31.6466, - "negotiation__converge__phase_1__iteration": 1, - "design__instance__displacement__total": 164.958, + "RSZ::hold_buffer_count": "17", + "utilization__before__dpl": 31.681, + "negotiation__converge__phase_1__iteration": 2, + "design__instance__displacement__total": 173.701, "design__instance__displacement__mean": 0.002, - "design__instance__displacement__max": 29.065, - "route__wirelength__estimated": 1.98468e+06, - "dpl__hpwl__delta": 184314, + "design__instance__displacement__max": 20.315, + "route__wirelength__estimated": 1.98726e+06, + "dpl__hpwl__delta": 44439, "dpl__hpwl__delta__percent": 0, - "DPL::utilization": "31.6", - "DPL::design_area": "690860", - "route__net": 62657, + "DPL::utilization": "31.7", + "DPL::design_area": "691610", + "route__net": 62673, "route__net__special": 2, "global_route__fastroute__run_s": 0, - "global_route__fastroute__initial_rsmt_s": 0.053956, - "global_route__fastroute__route_l_s": 0.0434836, - "global_route__fastroute__congestion_rsmt_s": 0.10938, - "global_route__fastroute__new_route_l_s": 0.0246447, - "global_route__fastroute__spiral_s": 0.0351455, - "global_route__fastroute__route_z_s": 0.00750516, - "global_route__fastroute__monotonic_s": 0.179088, - "global_route__fastroute__overflow_iterations_s": 18.874, - "global_route__fastroute__finalization_s": 0.925755, + "global_route__fastroute__initial_rsmt_s": 0.0765055, + "global_route__fastroute__route_l_s": 0.0573026, + "global_route__fastroute__congestion_rsmt_s": 0.119887, + "global_route__fastroute__new_route_l_s": 0.0343435, + "global_route__fastroute__spiral_s": 0.042785, + "global_route__fastroute__route_z_s": 0.00755996, + "global_route__fastroute__monotonic_s": 0.175214, + "global_route__fastroute__overflow_iterations_s": 22.9534, + "global_route__fastroute__finalization_s": 1.03323, "global_route__fastroute__snapshot_batch_route_s": 0, "global_route__fastroute__snapshot_batch_apply_s": 0, "global_route__fastroute__snapshot_batch_sync_s": 0, "global_route__fastroute__snapshot_batch_count": 0, "global_route__fastroute__snapshot_batch_nets": 0, "global_route__fastroute__snapshot_batch_wave_count": 0, - "global_route__vias": 431255, - "global_route__wirelength": 3252801, - "grt__utilization__before__dpl": 31.6601, - "grt__negotiation__converge__phase_1__iteration": 0, - "grt__global_route__fastroute__run_s": 0, - "grt__global_route__fastroute__initial_rsmt_s": 0.00132943, - "grt__global_route__fastroute__route_l_s": 0.000963494, - "grt__global_route__fastroute__congestion_rsmt_s": 0.00220679, - "grt__global_route__fastroute__new_route_l_s": 0.000541828, - "grt__global_route__fastroute__spiral_s": 0.000652648, - "grt__global_route__fastroute__route_z_s": 0.00018738, - "grt__global_route__fastroute__monotonic_s": 0.0112943, - "grt__global_route__fastroute__overflow_iterations_s": 0.0251435, - "grt__global_route__fastroute__finalization_s": 0.0528621, - "grt__global_route__fastroute__snapshot_batch_route_s": 0, - "grt__global_route__fastroute__snapshot_batch_apply_s": 0, - "grt__global_route__fastroute__snapshot_batch_sync_s": 0, - "grt__global_route__fastroute__snapshot_batch_count": 0, - "grt__global_route__fastroute__snapshot_batch_nets": 0, - "grt__global_route__fastroute__snapshot_batch_wave_count": 0, - "grt__global_route__vias": 4913, - "grt__utilization__before__dpl": 31.6608, + "global_route__vias": 431164, + "global_route__wirelength": 3243247, + "grt__utilization__before__dpl": 31.6917, "grt__negotiation__converge__phase_1__iteration": 0, "grt__global_route__fastroute__run_s": 0, - "grt__global_route__fastroute__initial_rsmt_s": 0.000339022, - "grt__global_route__fastroute__route_l_s": 0.000120716, - "grt__global_route__fastroute__congestion_rsmt_s": 0.000425029, - "grt__global_route__fastroute__new_route_l_s": 7.3526e-05, - "grt__global_route__fastroute__spiral_s": 9.3246e-05, - "grt__global_route__fastroute__route_z_s": 1.9587e-05, - "grt__global_route__fastroute__monotonic_s": 0.00558234, - "grt__global_route__fastroute__overflow_iterations_s": 0.0107226, - "grt__global_route__fastroute__finalization_s": 0.017425, + "grt__global_route__fastroute__initial_rsmt_s": 0.000823545, + "grt__global_route__fastroute__route_l_s": 0.00148996, + "grt__global_route__fastroute__congestion_rsmt_s": 0.00155591, + "grt__global_route__fastroute__new_route_l_s": 0.000531517, + "grt__global_route__fastroute__spiral_s": 0.000576344, + "grt__global_route__fastroute__route_z_s": 0.000191026, + "grt__global_route__fastroute__monotonic_s": 0.0108772, + "grt__global_route__fastroute__overflow_iterations_s": 0.0129641, + "grt__global_route__fastroute__finalization_s": 0.0499281, "grt__global_route__fastroute__snapshot_batch_route_s": 0, "grt__global_route__fastroute__snapshot_batch_apply_s": 0, "grt__global_route__fastroute__snapshot_batch_sync_s": 0, "grt__global_route__fastroute__snapshot_batch_count": 0, "grt__global_route__fastroute__snapshot_batch_nets": 0, "grt__global_route__fastroute__snapshot_batch_wave_count": 0, - "grt__global_route__vias": 786, - "grt__utilization__before__dpl": 31.6613, + "grt__global_route__vias": 2823, + "grt__utilization__before__dpl": 31.6931, "grt__negotiation__converge__phase_1__iteration": 0, "grt__global_route__fastroute__run_s": 0, - "grt__global_route__fastroute__initial_rsmt_s": 2.504e-05, - "grt__global_route__fastroute__route_l_s": 2.3467e-05, - "grt__global_route__fastroute__congestion_rsmt_s": 2.4213e-05, - "grt__global_route__fastroute__new_route_l_s": 6.779e-06, - "grt__global_route__fastroute__spiral_s": 6.955e-06, - "grt__global_route__fastroute__route_z_s": 5.975e-06, - "grt__global_route__fastroute__monotonic_s": 0.00537257, - "grt__global_route__fastroute__overflow_iterations_s": 0.00245788, - "grt__global_route__fastroute__finalization_s": 0.0078631, + "grt__global_route__fastroute__initial_rsmt_s": 0.000157196, + "grt__global_route__fastroute__route_l_s": 0.000145037, + "grt__global_route__fastroute__congestion_rsmt_s": 0.000222964, + "grt__global_route__fastroute__new_route_l_s": 5.8988e-05, + "grt__global_route__fastroute__spiral_s": 6.9234e-05, + "grt__global_route__fastroute__route_z_s": 8.843e-06, + "grt__global_route__fastroute__monotonic_s": 0.00638031, + "grt__global_route__fastroute__overflow_iterations_s": 0.0025301, + "grt__global_route__fastroute__finalization_s": 0.0117867, "grt__global_route__fastroute__snapshot_batch_route_s": 0, "grt__global_route__fastroute__snapshot_batch_apply_s": 0, "grt__global_route__fastroute__snapshot_batch_sync_s": 0, "grt__global_route__fastroute__snapshot_batch_count": 0, "grt__global_route__fastroute__snapshot_batch_nets": 0, "grt__global_route__fastroute__snapshot_batch_wave_count": 0, - "grt__global_route__vias": 49, - "grt__antenna_diodes_count": 100, + "grt__global_route__vias": 455, + "grt__antenna_diodes_count": 83, "grt__antenna__violating__nets": 0, "grt__antenna__violating__pins": 0, "GRT::ANT::errors": "0", - "route__drc_errors__iter:0": 6196, - "route__wirelength__iter:0": 2201657, - "route__drc_errors__iter:1": 691, - "route__wirelength__iter:1": 2191344, - "route__drc_errors__iter:2": 313, - "route__wirelength__iter:2": 2190507, - "route__drc_errors__iter:3": 4, - "route__wirelength__iter:3": 2190526, + "route__drc_errors__iter:0": 6514, + "route__wirelength__iter:0": 2202772, + "route__drc_errors__iter:1": 772, + "route__wirelength__iter:1": 2192625, + "route__drc_errors__iter:2": 345, + "route__wirelength__iter:2": 2191899, + "route__drc_errors__iter:3": 5, + "route__wirelength__iter:3": 2191889, "route__drc_errors__iter:4": 0, - "route__wirelength__iter:4": 2190533, + "route__wirelength__iter:4": 2191891, "route__drc_errors": 0, - "route__wirelength": 2190533, - "route__vias": 356181, - "route__vias__singlecut": 356181, + "route__wirelength": 2191891, + "route__vias": 356046, + "route__vias__singlecut": 356046, "route__vias__multicut": 0, "DRT::drv": "0", - "drt__repair_antennas__pre_repair__antenna__violating__nets": 157, - "drt__repair_antennas__pre_repair__antenna__violating__pins": 192, - "drt__repair_antennas__iter_0__utilization__before__dpl": 31.6941, + "drt__repair_antennas__pre_repair__antenna__violating__nets": 154, + "drt__repair_antennas__pre_repair__antenna__violating__pins": 193, + "drt__repair_antennas__iter_0__utilization__before__dpl": 31.7236, "drt__repair_antennas__iter_0__negotiation__converge__phase_1__iteration": 0, "drt__repair_antennas__iter_0__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_0__global_route__fastroute__initial_rsmt_s": 0.00227696, - "drt__repair_antennas__iter_0__global_route__fastroute__route_l_s": 0.0037061, - "drt__repair_antennas__iter_0__global_route__fastroute__congestion_rsmt_s": 0.00263137, - "drt__repair_antennas__iter_0__global_route__fastroute__new_route_l_s": 0.00140817, - "drt__repair_antennas__iter_0__global_route__fastroute__spiral_s": 0.00150437, - "drt__repair_antennas__iter_0__global_route__fastroute__route_z_s": 0.000561677, - "drt__repair_antennas__iter_0__global_route__fastroute__monotonic_s": 0.0121323, - "drt__repair_antennas__iter_0__global_route__fastroute__overflow_iterations_s": 0.00390468, - "drt__repair_antennas__iter_0__global_route__fastroute__finalization_s": 0.150752, + "drt__repair_antennas__iter_0__global_route__fastroute__initial_rsmt_s": 0.000832869, + "drt__repair_antennas__iter_0__global_route__fastroute__route_l_s": 0.00376634, + "drt__repair_antennas__iter_0__global_route__fastroute__congestion_rsmt_s": 0.00250246, + "drt__repair_antennas__iter_0__global_route__fastroute__new_route_l_s": 0.00120276, + "drt__repair_antennas__iter_0__global_route__fastroute__spiral_s": 0.00124505, + "drt__repair_antennas__iter_0__global_route__fastroute__route_z_s": 0.000672068, + "drt__repair_antennas__iter_0__global_route__fastroute__monotonic_s": 0.0113177, + "drt__repair_antennas__iter_0__global_route__fastroute__overflow_iterations_s": 0.00143701, + "drt__repair_antennas__iter_0__global_route__fastroute__finalization_s": 0.14777, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_route_s": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_apply_s": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_sync_s": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_count": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_nets": 0, "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_0__global_route__vias": 3813, - "drt__repair_antennas__iter_0__antenna_diodes_count": 324, - "drt__repair_antennas__iter_0__route__drc_errors__iter:0": 1782, - "drt__repair_antennas__iter_0__route__wirelength__iter:0": 2191239, - "drt__repair_antennas__iter_0__route__drc_errors__iter:1": 200, - "drt__repair_antennas__iter_0__route__wirelength__iter:1": 2190893, - "drt__repair_antennas__iter_0__route__drc_errors__iter:2": 125, - "drt__repair_antennas__iter_0__route__wirelength__iter:2": 2190870, - "drt__repair_antennas__iter_0__route__drc_errors__iter:3": 3, - "drt__repair_antennas__iter_0__route__wirelength__iter:3": 2190889, - "drt__repair_antennas__iter_0__route__drc_errors__iter:4": 0, - "drt__repair_antennas__iter_0__route__wirelength__iter:4": 2190871, + "drt__repair_antennas__iter_0__global_route__vias": 3511, + "drt__repair_antennas__iter_0__antenna_diodes_count": 291, + "drt__repair_antennas__iter_0__route__drc_errors__iter:0": 1505, + "drt__repair_antennas__iter_0__route__wirelength__iter:0": 2192387, + "drt__repair_antennas__iter_0__route__drc_errors__iter:1": 138, + "drt__repair_antennas__iter_0__route__wirelength__iter:1": 2192119, + "drt__repair_antennas__iter_0__route__drc_errors__iter:2": 93, + "drt__repair_antennas__iter_0__route__wirelength__iter:2": 2192100, + "drt__repair_antennas__iter_0__route__drc_errors__iter:3": 0, + "drt__repair_antennas__iter_0__route__wirelength__iter:3": 2191798, "drt__repair_antennas__iter_0__route__drc_errors": 0, - "drt__repair_antennas__iter_0__route__wirelength": 2190871, - "drt__repair_antennas__iter_0__route__vias": 356538, - "drt__repair_antennas__iter_0__route__vias__singlecut": 356538, + "drt__repair_antennas__iter_0__route__wirelength": 2191798, + "drt__repair_antennas__iter_0__route__vias": 356158, + "drt__repair_antennas__iter_0__route__vias__singlecut": 356158, "drt__repair_antennas__iter_0__route__vias__multicut": 0, - "drt__repair_antennas__iter_0__antenna__violating__nets": 14, - "drt__repair_antennas__iter_0__antenna__violating__pins": 14, - "drt__repair_antennas__iter_1__utilization__before__dpl": 31.6961, - "drt__repair_antennas__iter_1__negotiation__converge__phase_1__iteration": 0, + "drt__repair_antennas__iter_0__antenna__violating__nets": 9, + "drt__repair_antennas__iter_0__antenna__violating__pins": 12, + "drt__repair_antennas__iter_1__utilization__before__dpl": 31.7255, "drt__repair_antennas__iter_1__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_1__global_route__fastroute__initial_rsmt_s": 0.00183279, - "drt__repair_antennas__iter_1__global_route__fastroute__route_l_s": 0.000337572, - "drt__repair_antennas__iter_1__global_route__fastroute__congestion_rsmt_s": 0.000563235, - "drt__repair_antennas__iter_1__global_route__fastroute__new_route_l_s": 0.000150259, - "drt__repair_antennas__iter_1__global_route__fastroute__spiral_s": 0.00017383, - "drt__repair_antennas__iter_1__global_route__fastroute__route_z_s": 1.8337e-05, - "drt__repair_antennas__iter_1__global_route__fastroute__monotonic_s": 0.00254287, - "drt__repair_antennas__iter_1__global_route__fastroute__overflow_iterations_s": 3.51e-07, - "drt__repair_antennas__iter_1__global_route__fastroute__finalization_s": 0.0264607, + "drt__repair_antennas__iter_1__global_route__fastroute__initial_rsmt_s": 0.000194882, + "drt__repair_antennas__iter_1__global_route__fastroute__route_l_s": 0.000210266, + "drt__repair_antennas__iter_1__global_route__fastroute__congestion_rsmt_s": 0.000224747, + "drt__repair_antennas__iter_1__global_route__fastroute__new_route_l_s": 7.3461e-05, + "drt__repair_antennas__iter_1__global_route__fastroute__spiral_s": 8.5188e-05, + "drt__repair_antennas__iter_1__global_route__fastroute__route_z_s": 2.686e-05, + "drt__repair_antennas__iter_1__global_route__fastroute__monotonic_s": 0.00135357, + "drt__repair_antennas__iter_1__global_route__fastroute__overflow_iterations_s": 0.000696665, + "drt__repair_antennas__iter_1__global_route__fastroute__finalization_s": 0.0326345, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_route_s": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_apply_s": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_sync_s": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_count": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_nets": 0, "drt__repair_antennas__iter_1__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_1__global_route__vias": 972, - "drt__repair_antennas__iter_1__antenna_diodes_count": 338, - "drt__repair_antennas__iter_1__route__drc_errors__iter:0": 239, - "drt__repair_antennas__iter_1__route__wirelength__iter:0": 2191176, - "drt__repair_antennas__iter_1__route__drc_errors__iter:1": 10, - "drt__repair_antennas__iter_1__route__wirelength__iter:1": 2191117, - "drt__repair_antennas__iter_1__route__drc_errors__iter:2": 3, - "drt__repair_antennas__iter_1__route__wirelength__iter:2": 2191113, + "drt__repair_antennas__iter_1__global_route__vias": 386, + "drt__repair_antennas__iter_1__antenna_diodes_count": 304, + "drt__repair_antennas__iter_1__route__drc_errors__iter:0": 127, + "drt__repair_antennas__iter_1__route__wirelength__iter:0": 2191844, + "drt__repair_antennas__iter_1__route__drc_errors__iter:1": 7, + "drt__repair_antennas__iter_1__route__wirelength__iter:1": 2191808, + "drt__repair_antennas__iter_1__route__drc_errors__iter:2": 2, + "drt__repair_antennas__iter_1__route__wirelength__iter:2": 2191813, "drt__repair_antennas__iter_1__route__drc_errors__iter:3": 0, - "drt__repair_antennas__iter_1__route__wirelength__iter:3": 2191100, + "drt__repair_antennas__iter_1__route__wirelength__iter:3": 2191800, "drt__repair_antennas__iter_1__route__drc_errors": 0, - "drt__repair_antennas__iter_1__route__wirelength": 2191100, - "drt__repair_antennas__iter_1__route__vias": 356581, - "drt__repair_antennas__iter_1__route__vias__singlecut": 356581, + "drt__repair_antennas__iter_1__route__wirelength": 2191800, + "drt__repair_antennas__iter_1__route__vias": 356186, + "drt__repair_antennas__iter_1__route__vias__singlecut": 356186, "drt__repair_antennas__iter_1__route__vias__multicut": 0, - "drt__repair_antennas__iter_1__antenna__violating__nets": 2, - "drt__repair_antennas__iter_1__antenna__violating__pins": 2, - "drt__repair_antennas__iter_2__utilization__before__dpl": 31.6964, - "drt__repair_antennas__iter_2__negotiation__converge__phase_1__iteration": 0, - "drt__repair_antennas__iter_2__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_2__global_route__fastroute__initial_rsmt_s": 0.000364436, - "drt__repair_antennas__iter_2__global_route__fastroute__route_l_s": 0.000101028, - "drt__repair_antennas__iter_2__global_route__fastroute__congestion_rsmt_s": 0.000101252, - "drt__repair_antennas__iter_2__global_route__fastroute__new_route_l_s": 2.7323e-05, - "drt__repair_antennas__iter_2__global_route__fastroute__spiral_s": 3.0273e-05, - "drt__repair_antennas__iter_2__global_route__fastroute__route_z_s": 6.762e-06, - "drt__repair_antennas__iter_2__global_route__fastroute__monotonic_s": 0.00216671, - "drt__repair_antennas__iter_2__global_route__fastroute__overflow_iterations_s": 3.8e-07, - "drt__repair_antennas__iter_2__global_route__fastroute__finalization_s": 0.00369507, - "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_route_s": 0, - "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_apply_s": 0, - "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_sync_s": 0, - "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_count": 0, - "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_nets": 0, - "drt__repair_antennas__iter_2__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_2__global_route__vias": 163, - "drt__repair_antennas__iter_2__antenna_diodes_count": 340, - "drt__repair_antennas__iter_2__route__drc_errors__iter:0": 43, - "drt__repair_antennas__iter_2__route__wirelength__iter:0": 2191128, - "drt__repair_antennas__iter_2__route__drc_errors__iter:1": 2, - "drt__repair_antennas__iter_2__route__wirelength__iter:1": 2191119, - "drt__repair_antennas__iter_2__route__drc_errors__iter:2": 0, - "drt__repair_antennas__iter_2__route__wirelength__iter:2": 2191121, - "drt__repair_antennas__iter_2__route__drc_errors": 0, - "drt__repair_antennas__iter_2__route__wirelength": 2191121, - "drt__repair_antennas__iter_2__route__vias": 356582, - "drt__repair_antennas__iter_2__route__vias__singlecut": 356582, - "drt__repair_antennas__iter_2__route__vias__multicut": 0, - "drt__repair_antennas__iter_2__antenna__violating__nets": 1, - "drt__repair_antennas__iter_2__antenna__violating__pins": 1, - "drt__repair_antennas__iter_3__utilization__before__dpl": 31.6966, - "drt__repair_antennas__iter_3__negotiation__converge__phase_1__iteration": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__initial_rsmt_s": 6.8915e-05, - "drt__repair_antennas__iter_3__global_route__fastroute__route_l_s": 4.8524e-05, - "drt__repair_antennas__iter_3__global_route__fastroute__congestion_rsmt_s": 4.4329e-05, - "drt__repair_antennas__iter_3__global_route__fastroute__new_route_l_s": 1.0358e-05, - "drt__repair_antennas__iter_3__global_route__fastroute__spiral_s": 1.2412e-05, - "drt__repair_antennas__iter_3__global_route__fastroute__route_z_s": 4.159e-06, - "drt__repair_antennas__iter_3__global_route__fastroute__monotonic_s": 0.00193718, - "drt__repair_antennas__iter_3__global_route__fastroute__overflow_iterations_s": 5.04e-07, - "drt__repair_antennas__iter_3__global_route__fastroute__finalization_s": 0.000159102, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_route_s": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_apply_s": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_sync_s": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_count": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_nets": 0, - "drt__repair_antennas__iter_3__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_3__global_route__vias": 90, - "drt__repair_antennas__iter_3__antenna_diodes_count": 341, - "drt__repair_antennas__iter_3__route__drc_errors__iter:0": 22, - "drt__repair_antennas__iter_3__route__wirelength__iter:0": 2191130, - "drt__repair_antennas__iter_3__route__drc_errors__iter:1": 4, - "drt__repair_antennas__iter_3__route__wirelength__iter:1": 2191134, - "drt__repair_antennas__iter_3__route__drc_errors__iter:2": 1, - "drt__repair_antennas__iter_3__route__wirelength__iter:2": 2191135, - "drt__repair_antennas__iter_3__route__drc_errors__iter:3": 0, - "drt__repair_antennas__iter_3__route__wirelength__iter:3": 2191134, - "drt__repair_antennas__iter_3__route__drc_errors": 0, - "drt__repair_antennas__iter_3__route__wirelength": 2191134, - "drt__repair_antennas__iter_3__route__vias": 356585, - "drt__repair_antennas__iter_3__route__vias__singlecut": 356585, - "drt__repair_antennas__iter_3__route__vias__multicut": 0, - "drt__repair_antennas__iter_3__antenna__violating__nets": 1, - "drt__repair_antennas__iter_3__antenna__violating__pins": 1, - "drt__repair_antennas__iter_4__utilization__before__dpl": 31.6967, - "drt__repair_antennas__iter_4__negotiation__converge__phase_1__iteration": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__run_s": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__initial_rsmt_s": 5.5728e-05, - "drt__repair_antennas__iter_4__global_route__fastroute__route_l_s": 6.8819e-05, - "drt__repair_antennas__iter_4__global_route__fastroute__congestion_rsmt_s": 5.4221e-05, - "drt__repair_antennas__iter_4__global_route__fastroute__new_route_l_s": 1.1434e-05, - "drt__repair_antennas__iter_4__global_route__fastroute__spiral_s": 1.2843e-05, - "drt__repair_antennas__iter_4__global_route__fastroute__route_z_s": 3.517e-06, - "drt__repair_antennas__iter_4__global_route__fastroute__monotonic_s": 0.0020677, - "drt__repair_antennas__iter_4__global_route__fastroute__overflow_iterations_s": 5.63e-07, - "drt__repair_antennas__iter_4__global_route__fastroute__finalization_s": 0.000165546, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_route_s": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_apply_s": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_sync_s": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_count": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_nets": 0, - "drt__repair_antennas__iter_4__global_route__fastroute__snapshot_batch_wave_count": 0, - "drt__repair_antennas__iter_4__global_route__vias": 97, - "drt__repair_antennas__iter_4__antenna_diodes_count": 342, - "drt__repair_antennas__iter_4__route__drc_errors__iter:0": 18, - "drt__repair_antennas__iter_4__route__wirelength__iter:0": 2191134, - "drt__repair_antennas__iter_4__route__drc_errors__iter:1": 3, - "drt__repair_antennas__iter_4__route__wirelength__iter:1": 2191136, - "drt__repair_antennas__iter_4__route__drc_errors__iter:2": 0, - "drt__repair_antennas__iter_4__route__wirelength__iter:2": 2191137, - "drt__repair_antennas__iter_4__route__drc_errors": 0, - "drt__repair_antennas__iter_4__route__wirelength": 2191137, - "drt__repair_antennas__iter_4__route__vias": 356588, - "drt__repair_antennas__iter_4__route__vias__singlecut": 356588, - "drt__repair_antennas__iter_4__route__vias__multicut": 0, - "drt__repair_antennas__iter_4__antenna__violating__nets": 1, - "drt__repair_antennas__iter_4__antenna__violating__pins": 1, - "drt__antenna__violating__nets": 1, - "drt__antenna__violating__pins": 1, - "DRT::ANT::errors": "1", + "drt__repair_antennas__iter_1__antenna__violating__nets": 0, + "drt__repair_antennas__iter_1__antenna__violating__pins": 0, + "drt__antenna__violating__nets": 0, + "drt__antenna__violating__pins": 0, + "DRT::ANT::errors": "0", "design__violations": 0, "timing__drv__floating__nets": 0, "timing__drv__floating__pins": 0, - "DRT::worst_slack_min": "-0.20025182079356746", - "DRT::worst_slack_max": "-0.3879181530240422", - "DRT::tns_max": "-2.4923361857554163", - "DRT::clock_skew": "0.1529409975287545", - "DRT::max_slew_slack": "-47.5749671459198", + "DRT::worst_slack_min": "-0.04777478547992556", + "DRT::worst_slack_max": "-0.2850946226457304", + "DRT::tns_max": "-1.5707355860573304", + "DRT::clock_skew": "0.18809465628548896", + "DRT::max_slew_slack": "-49.808913469314575", "DRT::max_fanout_slack": "100.0", - "DRT::max_capacitance_slack": "10.973870261833623", + "DRT::max_capacitance_slack": "-16.97781037351182", "DRT::clock_period": "6.387000", - "flow__warnings__count": 217, + "flow__warnings__count": 138, "flow__errors__count": 0, - "flow__warnings__count:DRT-0120": 182, + "flow__warnings__count:DRT-0120": 104, "flow__warnings__count:DRT-0349": 10, "flow__warnings__count:GPL-0302": 2, - "flow__warnings__count:GRT-0243": 2, + "flow__warnings__count:GRT-0243": 1, "flow__warnings__count:GRT-0273": 2, "flow__warnings__count:GRT-0281": 5, "flow__warnings__count:IFP-0028": 1, diff --git a/test/jpeg_sky130hs.metrics_limits b/test/jpeg_sky130hs.metrics_limits index 28a4c52fac3..d450475c666 100644 --- a/test/jpeg_sky130hs.metrics_limits +++ b/test/jpeg_sky130hs.metrics_limits @@ -1,24 +1,24 @@ { "IFP::instance_count" : "59841.6" - ,"DPL::design_area" : "829032.0" - ,"DPL::utilization" : "37.92" - ,"RSZ::repair_design_buffer_count" : "645" + ,"DPL::design_area" : "829932.0" + ,"DPL::utilization" : "38.04" + ,"RSZ::repair_design_buffer_count" : "661" ,"RSZ::max_slew_slack" : "0" ,"RSZ::max_capacitance_slack" : "0" ,"RSZ::max_fanout_slack" : "0" - ,"RSZ::worst_slack_min" : "-0.6297402778932719" - ,"RSZ::worst_slack_max" : "-0.632075965158536" + ,"RSZ::worst_slack_min" : "-0.6292032630010729" + ,"RSZ::worst_slack_max" : "-0.5636533623049741" ,"RSZ::tns_max" : "-3185.0691600000005" - ,"RSZ::hold_buffer_count" : "14" + ,"RSZ::hold_buffer_count" : "20" ,"GRT::ANT::errors" : "0" ,"DRT::drv" : "0" - ,"DRT::worst_slack_min" : "-0.8389518207935676" - ,"DRT::worst_slack_max" : "-1.0266181530240424" - ,"DRT::tns_max" : "-3187.561496185756" - ,"DRT::clock_skew" : "0.1835291970345054" - ,"DRT::max_slew_slack" : "-57.08996057510376" - ,"DRT::max_capacitance_slack" : "0" + ,"DRT::worst_slack_min" : "-0.6864747854799256" + ,"DRT::worst_slack_max" : "-0.9237946226457304" + ,"DRT::tns_max" : "-3186.6398955860577" + ,"DRT::clock_skew" : "0.22571358754258675" + ,"DRT::max_slew_slack" : "-59.77069616317749" + ,"DRT::max_capacitance_slack" : "-20.37337244821418" ,"DRT::max_fanout_slack" : "0" ,"DRT::clock_period" : "6.387" - ,"DRT::ANT::errors" : "1" + ,"DRT::ANT::errors" : "0" } From 3ee696917388f5f15fd4836c9a524eb9f0e4f5e6 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Fri, 21 Aug 2026 05:28:00 +0000 Subject: [PATCH 3/3] test: check gcd_sky130hd_fast_slow flow metrics gcd_sky130hd_fast_slow was registered only in test/BUILD, not in regression_tests.tcl or CMakeLists.txt. CI runs it as its own bazel flow stage, but with check_log and check_passfail both false and no metrics_limits file it asserted nothing beyond openroad exiting 0, leaving it the one flow design with no output checked at all. It had no limits file because the limits tooling could not produce one: save_metric_limits indexes test_langs($test), so save_flow_metrics_limits reported 'test not found'. Add it to record_flow_tests, which lets the tooling generate its limits and makes ./regression able to run it like the other flow designs, then save its metrics and limits from a bazel run. It agrees between the two binaries, passing under both bazel and ./regression. Every BIG_TEST now has a limits file, so drop FLOW_METRIC_TESTS and check metrics for all of them. Selecting on the presence of a limits file would silently leave a new design unchecked, which is how this one went unnoticed; without a limits file the check now fails with 'missing metrics limits file' instead. Signed-off-by: Matt Liberty --- test/BUILD | 18 +-- test/gcd_sky130hd_fast_slow.metrics | 136 +++++++++++++++++++++ test/gcd_sky130hd_fast_slow.metrics_limits | 24 ++++ test/regression_tests.tcl | 1 + 4 files changed, 167 insertions(+), 12 deletions(-) create mode 100644 test/gcd_sky130hd_fast_slow.metrics create mode 100644 test/gcd_sky130hd_fast_slow.metrics_limits diff --git a/test/BUILD b/test/BUILD index 99358993d22..f9917185a0c 100644 --- a/test/BUILD +++ b/test/BUILD @@ -181,17 +181,11 @@ BIG_TESTS = [ "tinyRocket_nangate45", ] -# BIG_TESTS produce no golden log, so their QoR is what there is to check. The -# limits file is the opt-in: every BIG_TEST has one except gcd_sky130hd_fast_slow. -FLOW_METRIC_TESTS = [ - test_name - for test_name in BIG_TESTS - if test_name + ".metrics_limits" in glob( - ["*.metrics_limits"], - allow_empty = True, - ) -] - +# BIG_TESTS produce no golden log, so their QoR is what there is to check, and +# every one of them is metric checked. A new design has to save a +# .metrics_limits file; without one the check fails with "missing metrics +# limits file" rather than quietly running the flow and asserting nothing. +# # upf_aes does its own diff internally (regions-only under BAZEL_TEST) since # the full DEF output is not bit-stable across Bazel/CMake; the Tcl script # fails the test on mismatch, so the log diff against .ok is suppressed. @@ -200,7 +194,7 @@ FLOW_METRIC_TESTS = [ name = test_name, size = "enormous" if test_name in BIG_TESTS else "medium", check_log = False if test_name in PASSFAIL_TESTS + BIG_TESTS + ["upf_aes"] else True, - check_metrics = True if test_name in FLOW_METRIC_TESTS else False, + check_metrics = True if test_name in BIG_TESTS else False, check_passfail = True if test_name in PASSFAIL_TESTS else False, data = ["//src/odb/test:design_odb_data"] if test_name == "two_designs" else [], tags = ["manual"] if test_name in BIG_TESTS else [], diff --git a/test/gcd_sky130hd_fast_slow.metrics b/test/gcd_sky130hd_fast_slow.metrics new file mode 100644 index 00000000000..6bf3a8d48f2 --- /dev/null +++ b/test/gcd_sky130hd_fast_slow.metrics @@ -0,0 +1,136 @@ +{ + "IFP::ord_version": "", + "IFP::instance_count": "250", + "floorplan__design__io": 54, + "design__io__hpwl": 6719711, + "utilization__before__dpl": 4.3005, + "negotiation__converge__phase_1__iteration": 0, + "design__instance__displacement__total": 782.099, + "design__instance__displacement__mean": 0.611, + "design__instance__displacement__max": 12.004, + "route__wirelength__estimated": 11555.8, + "dpl__hpwl__delta": 573875, + "dpl__hpwl__delta__percent": 5, + "RSZ::repair_design_buffer_count": "2", + "RSZ::max_slew_slack": "24.23421541849772", + "RSZ::max_fanout_slack": "100.0", + "RSZ::max_capacitance_slack": "40.16681011776728", + "utilization__before__dpl": 4.35372, + "negotiation__converge__phase_1__iteration": 0, + "design__instance__displacement__total": 23.389, + "design__instance__displacement__mean": 0.018, + "design__instance__displacement__max": 7.148, + "route__wirelength__estimated": 12077.7, + "dpl__hpwl__delta": 3891, + "dpl__hpwl__delta__percent": 0, + "design__instance__count__setup_buffer": 31, + "design__instance__count__hold_buffer": 13, + "RSZ::worst_slack_min": "0.013829937586590459", + "RSZ::worst_slack_max": "-13.950893279919763", + "RSZ::tns_max": "-575.4048564931229", + "RSZ::hold_buffer_count": "13", + "utilization__before__dpl": 5.64048, + "negotiation__converge__phase_1__iteration": 0, + "design__instance__displacement__total": 254.96, + "design__instance__displacement__mean": 0.191, + "design__instance__displacement__max": 18.16, + "route__wirelength__estimated": 14202.2, + "dpl__hpwl__delta": 194897, + "dpl__hpwl__delta__percent": 1, + "DPL::utilization": "5.6", + "DPL::design_area": "4377", + "route__net": 324, + "route__net__special": 2, + "global_route__fastroute__run_s": 0, + "global_route__fastroute__initial_rsmt_s": 0.000542244, + "global_route__fastroute__route_l_s": 0.000298407, + "global_route__fastroute__congestion_rsmt_s": 0.000824456, + "global_route__fastroute__new_route_l_s": 0.000135082, + "global_route__fastroute__spiral_s": 0.000169074, + "global_route__fastroute__route_z_s": 3.1508e-05, + "global_route__fastroute__monotonic_s": 0.00162432, + "global_route__fastroute__overflow_iterations_s": 4.61e-07, + "global_route__fastroute__finalization_s": 0.0168204, + "global_route__fastroute__snapshot_batch_route_s": 0, + "global_route__fastroute__snapshot_batch_apply_s": 0, + "global_route__fastroute__snapshot_batch_sync_s": 0, + "global_route__fastroute__snapshot_batch_count": 0, + "global_route__fastroute__snapshot_batch_nets": 0, + "global_route__fastroute__snapshot_batch_wave_count": 0, + "global_route__vias": 2422, + "global_route__wirelength": 21928, + "grt__antenna_diodes_count": 0, + "grt__antenna__violating__nets": 0, + "grt__antenna__violating__pins": 0, + "GRT::ANT::errors": "0", + "route__drc_errors__iter:0": 62, + "route__wirelength__iter:0": 16040, + "route__drc_errors__iter:1": 3, + "route__wirelength__iter:1": 15991, + "route__drc_errors__iter:2": 3, + "route__wirelength__iter:2": 15982, + "route__drc_errors__iter:3": 0, + "route__wirelength__iter:3": 15982, + "route__drc_errors": 0, + "route__wirelength": 15982, + "route__vias": 2090, + "route__vias__singlecut": 2090, + "route__vias__multicut": 0, + "DRT::drv": "0", + "drt__repair_antennas__pre_repair__antenna__violating__nets": 11, + "drt__repair_antennas__pre_repair__antenna__violating__pins": 11, + "drt__repair_antennas__iter_0__utilization__before__dpl": 5.67595, + "drt__repair_antennas__iter_0__global_route__fastroute__run_s": 0, + "drt__repair_antennas__iter_0__global_route__fastroute__initial_rsmt_s": 3.9559e-05, + "drt__repair_antennas__iter_0__global_route__fastroute__route_l_s": 3.6765e-05, + "drt__repair_antennas__iter_0__global_route__fastroute__congestion_rsmt_s": 4.7722e-05, + "drt__repair_antennas__iter_0__global_route__fastroute__new_route_l_s": 9.555e-06, + "drt__repair_antennas__iter_0__global_route__fastroute__spiral_s": 1.2709e-05, + "drt__repair_antennas__iter_0__global_route__fastroute__route_z_s": 1.0096e-05, + "drt__repair_antennas__iter_0__global_route__fastroute__monotonic_s": 0.00111929, + "drt__repair_antennas__iter_0__global_route__fastroute__overflow_iterations_s": 4.51e-07, + "drt__repair_antennas__iter_0__global_route__fastroute__finalization_s": 0.00311188, + "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_route_s": 0, + "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_apply_s": 0, + "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_sync_s": 0, + "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_count": 0, + "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_nets": 0, + "drt__repair_antennas__iter_0__global_route__fastroute__snapshot_batch_wave_count": 0, + "drt__repair_antennas__iter_0__global_route__vias": 93, + "drt__repair_antennas__iter_0__antenna_diodes_count": 11, + "drt__repair_antennas__iter_0__route__drc_errors__iter:0": 6, + "drt__repair_antennas__iter_0__route__wirelength__iter:0": 15986, + "drt__repair_antennas__iter_0__route__drc_errors__iter:1": 0, + "drt__repair_antennas__iter_0__route__wirelength__iter:1": 15971, + "drt__repair_antennas__iter_0__route__drc_errors": 0, + "drt__repair_antennas__iter_0__route__wirelength": 15971, + "drt__repair_antennas__iter_0__route__vias": 2103, + "drt__repair_antennas__iter_0__route__vias__singlecut": 2103, + "drt__repair_antennas__iter_0__route__vias__multicut": 0, + "drt__repair_antennas__iter_0__antenna__violating__nets": 0, + "drt__repair_antennas__iter_0__antenna__violating__pins": 0, + "drt__antenna__violating__nets": 0, + "drt__antenna__violating__pins": 0, + "DRT::ANT::errors": "0", + "design__violations": 0, + "timing__drv__floating__nets": 0, + "timing__drv__floating__pins": 0, + "DRT::worst_slack_min": "0.05877165587215293", + "DRT::worst_slack_max": "-14.384088993703815", + "DRT::tns_max": "-596.1790803112044", + "DRT::clock_skew": "0.023819613622392488", + "DRT::max_slew_slack": "50.51908131653362", + "DRT::max_fanout_slack": "100.0", + "DRT::max_capacitance_slack": "89.83506053986537", + "DRT::clock_period": "4.360000", + "flow__warnings__count": 25, + "flow__errors__count": 0, + "flow__warnings__count:DRT-0349": 10, + "flow__warnings__count:IFP-0028": 1, + "flow__warnings__count:ORD-0046": 9, + "flow__warnings__count:PDN-1051": 2, + "flow__warnings__count:RCX-0514": 1, + "flow__warnings__count:RSZ-0062": 1, + "flow__warnings__count:STA-0441": 1, + "flow__warnings__type_count": 7 +} \ No newline at end of file diff --git a/test/gcd_sky130hd_fast_slow.metrics_limits b/test/gcd_sky130hd_fast_slow.metrics_limits new file mode 100644 index 00000000000..c2f6461594b --- /dev/null +++ b/test/gcd_sky130hd_fast_slow.metrics_limits @@ -0,0 +1,24 @@ +{ + "IFP::instance_count" : "300.0" + ,"DPL::design_area" : "5252.4" + ,"DPL::utilization" : "6.72" + ,"RSZ::repair_design_buffer_count" : "2" + ,"RSZ::max_slew_slack" : "0" + ,"RSZ::max_capacitance_slack" : "0" + ,"RSZ::max_fanout_slack" : "0" + ,"RSZ::worst_slack_min" : "-0.4221700624134096" + ,"RSZ::worst_slack_max" : "-14.386893279919763" + ,"RSZ::tns_max" : "-586.3048564931229" + ,"RSZ::hold_buffer_count" : "15" + ,"GRT::ANT::errors" : "0" + ,"DRT::drv" : "0" + ,"DRT::worst_slack_min" : "-0.3772283441278471" + ,"DRT::worst_slack_max" : "-14.820088993703814" + ,"DRT::tns_max" : "-607.0790803112044" + ,"DRT::clock_skew" : "0.028583536346870983" + ,"DRT::max_slew_slack" : "0" + ,"DRT::max_capacitance_slack" : "0" + ,"DRT::max_fanout_slack" : "0" + ,"DRT::clock_period" : "4.36" + ,"DRT::ANT::errors" : "0" +} diff --git a/test/regression_tests.tcl b/test/regression_tests.tcl index c30f85e7cd1..a2bfafc9d56 100644 --- a/test/regression_tests.tcl +++ b/test/regression_tests.tcl @@ -3,6 +3,7 @@ record_flow_tests { gcd_nangate45 gcd_sky130hd + gcd_sky130hd_fast_slow gcd_sky130hs gcd_asap7