Skip to content

orfs: SKIP_REPORT_METRICS keeps the free metrics, and is the default - #1433

Merged
oharboe merged 1 commit into
mainfrom
metrics-split
Oct 29, 2026
Merged

oharboe merged 1 commit into
mainfrom
metrics-split

Conversation

@oharboe

@oharboe oharboe commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator

Before, a flow either paid for a timing update, a power analysis and the text reports at every stage, or lost every report_metrics metric, design area and instance counts included.
Now SKIP_REPORT_METRICS=1 still writes the metrics that cost nothing, and it is bazel-orfs's default; a flow sets "0" for timing and power in its stage .json. No new variable.

  • 0157 (upstream candidate): report_design_area_metrics runs before the skip. The calls that cost time even on gcd run under log_cmd, so a slow one names itself in the log (Took N seconds, from 5 s). The four register path searches go through log_cmd eval { ... }, so the log shows the command, not the register list.
  • 0158 (bazel-orfs policy): variables.yaml default 0 → 1.
  • test/regfile/macro RegFile sets SKIP_REPORT_METRICS=0: floor_cycles_test reads grt's fmax metric.

Side effects on QoR

gcd on asap7, metrics on (DETAILED_METRICS=1, so the mid-stage reports in cts and grt run too) vs off: every stage's .odb and 6_final.v are byte-identical, before and after the patch.

Always written

stage tools' own counters (never gated) added by 0157
synth area, instance and IO counts, warnings (already there)
floorplan units, setup-buffer count, PDN violations, warnings area, instance counts, utilization, rows, sites
place gpl iterations and area changes, estimated HPWL; dpl/dpo moves, displacement, HPWL change; floating nets same
cts buffer counts, dpl moves same
grt wirelength, vias, detour, fastroute phase times, antenna, dpl moves same
route drt DRC errors and wirelength per iteration, vias, antenna n/a (no report_metrics)
final area and count per cell class, IR drop if enabled same

Skipped by default: cost on gcd (ms, summed per stage)

call floorplan place (dp) cts grt final log_cmd
report_power 49 48 65 203 60 yes
first report_tns (the timing update) 0.1 23 49 95 8 yes
input→register find_timing_paths ×2 – 17 42 143 94 yes (eval)
register→register report_checks ×2 – 14 33 115 67 yes (eval)
report_erc_metrics – 17 27 62 20 yes
report_check_types – 5 7 20 6 yes
report_clock_min_period 1.6 1.6 6 18 – yes
report_clock_skew, report_wns, report_worst_slack, unfiltered report_checks, other *_metric ≤ 4 each no

Measured once with a timing patch that is not carried. tclint not run; the edit follows its rules (100 columns, spaces in braces).

🤖 Generated with Claude Code

Before, a flow either paid for a timing update, a power analysis and the
text reports at every stage, or lost every report_metrics metric,
design area and instance counts included. Now SKIP_REPORT_METRICS=1
still writes the metrics that cost nothing, and it is bazel-orfs's
default; a flow sets "0" for timing and power in its stage .json.

0157 writes report_design_area_metrics before the skip and runs the
calls that cost time even on gcd under log_cmd, so a slow one names
itself in the log. 0158 flips the variables.yaml default. No new
variable. gcd on asap7 gives byte-identical .odb files at every stage
with the metrics on (DETAILED_METRICS=1) and off.

test/regfile/macro's RegFile flow sets SKIP_REPORT_METRICS=0:
floor_cycles_test reads grt's fmax metric.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
@oharboe
oharboe merged commit e233b55 into main Oct 29, 2026
1 check failed
@oharboe
oharboe deleted the metrics-split branch October 29, 2026 14:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant