Skip to content

merge queue: checking #2421 on master (fefb2b2) - #2437

Closed
mergify[bot] wants to merge 2 commits into
masterfrom
mergify/merge-queue/a8f5e571c8
Closed

mergify[bot] wants to merge 2 commits into
masterfrom
mergify/merge-queue/a8f5e571c8

Conversation

@mergify

@mergify mergify Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Note

This is a merge queue draft opened by Mergify. Nobody needs to act on it.
Mergify opened it for batch humane-praline-wwm9wv of the changes queue, to test #2421 before it merges into master. Pushing to this branch or closing this pull request removes #2421 from the queue.

What this draft tests

Mergify checks that #2421 still passes CI on top of master. CI runs on this draft's code, built in this order:

  1. master at fefb2b2
  2. #2421, the pull request of this batch

🎉 Where it stands: checks passed

CI passed on this draft.

Follow the changes queue in the dashboard

What happens next

  • Mergify merges #2421 into master and closes this draft.
Metadata for CI tooling, read by mergify ci
---
all_scopes: false
checking_base_sha: fefb2b27368e1fceb041a37ae01f318c0ff0edf8
previous_check_retries: []
previous_failed_batches: []
pull_requests:
  - number: 2421
    scopes:
      - core
scopes:
  - core
...
1 scope
  • core
Required conditions of queue rule changes for merge
  • check-success = Conventional Commit title
  • check-success = Queue validation
  • any of [🛡 GitHub repository ruleset rule master]:
    • check-success = @github-actions/Lint & Format
    • check-neutral = @github-actions/Lint & Format
    • check-skipped = @github-actions/Lint & Format
  • any of [🛡 GitHub repository ruleset rule master]:
    • check-success = @github-actions/Rust Test & NAPI Build
    • check-neutral = @github-actions/Rust Test & NAPI Build
    • check-skipped = @github-actions/Rust Test & NAPI Build
  • any of [🛡 GitHub repository ruleset rule master]:
    • check-success = @github-actions/JS Test (Ubuntu)
    • check-neutral = @github-actions/JS Test (Ubuntu)
    • check-skipped = @github-actions/JS Test (Ubuntu)
  • any of [🛡 GitHub repository ruleset rule master]:
    • check-success = @github-actions/Conventional Commit title
    • check-neutral = @github-actions/Conventional Commit title
    • check-skipped = @github-actions/Conventional Commit title
  • any of [🛡 GitHub repository ruleset rule master]:
    • check-success = @github-actions/Queue validation
    • check-neutral = @github-actions/Queue validation
    • check-skipped = @github-actions/Queue validation
Required conditions to stay in the queue
Queue graph

The diagram is not laid out in queue order, so a node's position says nothing about when it merges.

graph LR
    2a7c22b846d64823a174cc45698a02db["humane-praline-wwm9wv<br/>#2421<br/>scopes: core"]
    e6e7c891ad684b8e8944ee5b11aa8404["volumetric-palmier-99istr<br/>#2428<br/>scopes: core"]
    2a7c22b846d64823a174cc45698a02db --> e6e7c891ad684b8e8944ee5b11aa8404
    style 2a7c22b846d64823a174cc45698a02db fill:#6366f1,color:#fff
Loading

tignear and others added 2 commits October 28, 2026 19:45
Each `$bits`, `$size` or other array query that validation binds discovers
the types of its owners' declarations, iterating over the scope's
declarations until they settle. Every pass bound the signature of every
method of every class specialization of the scope again, copying the whole
discovery context for each class. In uvm_pkg one query took 60 to 110 seconds
in three passes, and UVM elaboration did not finish in 25 minutes.

A class's signatures are bound in the scope that declares it, not in the
declarations around a query. Bind them once by discovering the scope's own
declarations from its base context until they settle, binding the class
signatures in every pass as before, so a method range that uses a scope
declaration (`logic [$bits(data)-1:0]`) still sees it. Later queries and
their passes publish the class methods' entries again while that context
(its constants, types and function results) and the set of specializations
are unchanged; the scope's other subroutines are still discovered with each
query, where a generate block may hide them. The type, function
result and parameter tables of a discovery context are shared until
written, so copying a context no longer copies them.

With the `ref` and unpacked-struct gates bypassed locally, UVM elaboration
of uvm_test_run_test now reaches its next unsupported construct after 177
seconds instead of running for more than 25 minutes.

A regression counts the bindings for 2 and 16 query-bearing methods: they
are equal, while rebinding on every discovery pass gives 30 and 198. The
shared case `class::method_ranges_of_scope_declarations` sizes a module
variable by a class method whose range uses `$bits` of a module variable;
Verilator 5.052 passes, Icarus 13.0 rejects the call in a declaration range
and the pinned xezim reads 1 (new sv_class-X16); both exact failures are
retained with adapter-free Top/Wrapped observations.
Analyzer/frontend units: 881 / 11; full SV suite: 6,247 passed, 20 skipped;
sv-tests verdicts unchanged.

Change-Id: Ia9baaf704906c2ed6f06f6ffec193051824d5ed2
@mergify mergify Bot closed this Oct 28, 2026
@mergify
mergify Bot deleted the mergify/merge-queue/a8f5e571c8 branch October 28, 2026 12:13
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