Skip to content

Show the per-metric comparison table by default in checkQorMetrics.py - #4829

Open
migueldalberto wants to merge 1 commit into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:qor-check-table
Open

migueldalberto wants to merge 1 commit into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:qor-check-table

Conversation

@migueldalberto

Copy link
Copy Markdown
Contributor

Summary

The QoR check report now always shows how every rule-checked metric compares with the baseline, not only the failing ones, and states each metric's verdict in a new Status column. --quiet hides the table for a short report.

 render_run(result)
-  table: failing metrics only (all with --verbose)
+  table: every evaluated metric, with a PASS/FAIL Status column
+         (left out with --quiet / -q)
   "QoR regression detected" list of failed rules
-  absent-from-baseline metrics: counted (named with --verbose)
+  absent-from-baseline metrics: always named, one per line
   rule fallback warnings

--verbose is removed: the table it used to gate is now the default, and the absent metrics it used to name are always named. make metadata-check is unchanged, so metadata-check.log now holds the full table.

Evidence

The same failing run, with one passing rule, one failing rule and one metric absent from the baseline build:

  • Before:

    | Metric                                         |     Baseline |      Current |        Limit |  Delta% |
    | ---------------------------------------------- | ------------ | ------------ | ------------ | ------- |
    | finish__timing__setup__ws                      |            2 |       1.5000 |       1.9000 |  -25.00 |
    QoR regression detected for asap7/gcd:
      finish__timing__setup__ws 1.5 (base 2, limit 1.9)
    [WARN] Rules not evaluated for 1 metric(s) absent from the baseline build. Use --verbose to list them.
    

    After:

    | Metric                                         |     Baseline |      Current |        Limit |  Delta% | Status |
    | ---------------------------------------------- | ------------ | ------------ | ------------ | ------- | ------ |
    | finish__timing__setup__ws                      |            2 |       1.5000 |       1.9000 |  -25.00 | FAIL   |
    | synth__design__instance__area                  |          100 |          101 |          110 |   +1.00 | PASS   |
    QoR regression detected for asap7/gcd:
      finish__timing__setup__ws 1.5 (base 2, limit 1.9)
    [WARN] 1 ruled metric(s) absent from the baseline build, not evaluated:
      route__wirelength
    
  • New tests in flow/test/test_checkQorMetrics.py: the default table lists every evaluated metric with its status; a passing run prints no [ERROR] line; absent metrics are named but not tabled; --quiet and -q drop only the table; --verbose is rejected. python3 -m unittest test_checkQorMetrics test_genReport passes (62 tests).

  • The failing-rule test fixture now uses the field names the dashboard actually sends (baseValue, targetValue, thresholdValue); it passed before only because it never checked the values.

Merge Danger

Door: two-way

Output format and one CLI flag; a revert restores both.

Blast Radius: logs

metadata-check.log grows by one row per evaluated metric, plus one line per absent metric. CI reads only the QoR check: line and genReport.py counts only lines starting with [ERROR]; table rows start with |, so neither changes its verdict. Anyone calling the script with --verbose gets a usage error; no caller in this repository does.

The QoR check report now always lists every metric a rule evaluated, with
a new Status column (PASS/FAIL), instead of only the failing ones. The new
--quiet (-q) flag leaves the table out; failed rules, warnings and the
verdict are still reported.

Ruled metrics that are absent from the baseline build are now always
named, one per line, rather than only counted. --verbose, which used to
gate both, is removed.

The failing-rule test fixture now uses the field names the dashboard
sends (baseValue, targetValue, thresholdValue).

Signed-off-by: Miguel Dalberto Pedro <miguel.pedro@precisioninno.com>
@migueldalberto migueldalberto self-assigned this Nov 12, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request replaces the --verbose option with a --quiet (or -q) option in the checkQorMetrics.py script. By default, the script now prints a comprehensive table showing all evaluated metrics along with their PASS/FAIL status, whereas --quiet suppresses this table. Additionally, metrics absent from the baseline build are now always listed in the warnings rather than requiring a verbose flag. Unit tests and documentation have been updated to reflect these changes. I have no feedback to provide.

@migueldalberto

Copy link
Copy Markdown
Contributor Author

@AcKoucher FYI

@openroad-ci

Copy link
Copy Markdown
Member

🔍 QoR check

Metrics reflect the PR merge build — i.e. what will land on the target branch.

Commit d5a7005 · Jenkins build #1 · Baseline: build · View build on dashboard

62 design(s) checked — 0 with regression(s), 0 without a comparable baseline.

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.

2 participants