Skip to content

merge queue: checking #2322 on master (e7ec496) - #2427

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

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

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 constant-miche-e7xq14 of the changes queue, to test #2322 before it merges into master. Pushing to this branch or closing this pull request removes #2322 from the queue.

What this draft tests

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

  1. master at e7ec496
  2. #2322, 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 #2322 into master and closes this draft.
Metadata for CI tooling, read by mergify ci
---
all_scopes: false
checking_base_sha: e7ec496251252061bd3574befc881f882d77bc95
previous_check_retries: []
previous_failed_batches: []
pull_requests:
  - number: 2322
    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
    d6cd2947095e453c9ca71d2cebddff2f["constant-miche-e7xq14<br/>#2322<br/>scopes: core"]
    d3df45e170c34ee5bd3bf75806aa8949["innovative-chouquette-v7c383<br/>#2425<br/>scopes: core"]
    d6cd2947095e453c9ca71d2cebddff2f --> d3df45e170c34ee5bd3bf75806aa8949
    style d6cd2947095e453c9ca71d2cebddff2f fill:#6366f1,color:#fff
Loading

tignear and others added 2 commits October 28, 2026 19:11
UVM stops at unknown package `process`. Bind the built-in process type,
state enum and methods, and execute them against dynamic scheduler
activations through a shared host-request family on every backend.

Implement self/status/kill/await/suspend/resume and per-process RNG state
(IEEE 1800-2023 9.7, 18.13.3-18.13.5). Support std::process and its state type
(26.7). Keep process references independent of heap object IDs. Retain exposed
identities after completion, preserve FINISHED on no-op controls, cancel
all descendants through completed parents, and wake status/await observers.
Suspended delays keep their original deadline; event waits rearm without
consuming suspended edges; level waits recheck immediately. Conditional-event
waits discard host pulses during suspension and rearm module counters and
automatic gates after checkpoint restoration. Checkpoints preserve control
state. Reject invalid construction, inheritance and calls. Pre-scan nested
statements and omitted-argument defaults before classifying waits, so a process
call later in a loop cannot leave earlier level waits insensitive on resume.
Recompute activation-local event probes from current shared cells before taking
resumed event baselines. Program exit clears suspended/awaiting/observer state;
resume ignores dead activations, so saved delays cannot revive their continuations.

User packages and classes named process retain their declarations, including
package state constants, typedefs and self functions from another source file. The
explicit std::process name remains unambiguous. Cancellation checks implicit
program completion, including self-kill and descendant cancellation, and
runs final procedures. Program $exit notifies observers of every sibling and
descendant after the whole program has ended, including suspended targets
and checkpoint-restored observers. Pending predicate reevaluations do not
notify other status waiters. External kill releases the target frame and local
bindings while preserving handle identity and RNG state; self-kill retires
after saving the current frame. During finalization, kill does not trigger a
second implicit finish that would skip cleanup. All final bodies share one
process identity and RNG, including draw-only bodies and stop/resume; the
identity remains RUNNING until the final phase ends (9.2.3). Save the running
caller's frame before ancestor kill can retire it, retaining its latest RNG
draw. set_randstate converts packed actuals to its string
formal before storing handles. Typed heap-helper operands retain formal
sizing, mutable receiver locations and GC roots across host boundaries.

Support final procedures in timed shared cases. Check final output after
all final procedures have run, preserving partial writes around simulator
finish notices. Scripts must avoid reads of another final procedure's writes
because final order is unspecified (9.2.3). External staging rejects post-finish
signal reads unless every design final is empty or only prints literals or
simulation time. Inspect emitted, cross-file preprocessed SV and conservatively
reject function/argument effects, including implicit calls and escaped names.
Output expectations and values captured before finish remain supported.
A script starting with
run_to_finish introduces no auxiliary settler program that could suppress
implicit completion. Add eighteen process cases and two final-harness cases
across native/image/parallel native, Cranelift/parallel Cranelift and WASM.

Validation:
- Full SV: 6,307 passed; 20 existing skipped. API regressions: 16 passed,
  including 2state/4state checkpoint/RNG, host/HDL final-kill tests, and
  shared final identity/RNG across a draw-only body and stop/resume, plus
  suspended iff waits with host pulses and checkpoint replay on all four
  backends in both state modes. The three resume review regressions replay
  checkpoints twice in each configuration, including nested calls and defaults,
  automatic event expressions and handles ended by program exit.
  Three private scheduler regressions verify bounded mutual-wait progress,
  frame/local-binding reclamation with RNG retention after 16 external kills,
  and program-exit suspension/wakeup cleanup,
  on native/interpreter/Cranelift/WASM in both state modes.
- Units: design 17, frontend-core 23, runtime 80, SV analyzer 874 (3 ignored),
  SV frontend 11; shared-suite units 58 (3 ignored). Existing process/fork/
  state-file integration: 37 passed. Affected and consumer Clippy passed.
- NAPI/JS: 435 passed. Retained-report tests: 4; report-gate tests: 7.
- Original six process cases retain exactly 13 external failures. Fourteen review
  and final-harness cases pass 5/14 in Verilator, 3/14 in Icarus and 5/14 in
  pinned xezim. The qualified-package typedef case passes all three tools;
  shared final identity/RNG passes Verilator. Their twenty-nine exact failures
  are retained with original assertions intact.
  The nine fresh selected reports for the resume cases pass the comparison
  gate; prior rows, assertions and exclusions are preserved. xezim's automatic
  compound wait already wakes at time0, isolated with observations before and
  during suspension; classify that startup failure separately from resume.
  Final-order staging regressions cover direct/indirect writes, macro expansion,
  hierarchy, argument effects and safe output/captured-value checks; the entire
  existing SV catalogue satisfies the restriction. Both final-output cases were
  rerun with Verilator, Icarus and pinned xezim; their fresh reports match the
  retained failure contracts without changing evidence. Default/external suite
  Clippy and both suite doctests pass.
- Fourteen adapter-free Top/Wrapped repro sources accompany process discrepancies;
  the eight review repros also pass Celox in both state modes (32 runs).
  The two resume probes also pass both tops in both state modes (8 runs).
  Static function state across three finals also passes both state modes.
- sv-tests CI reported exactly eight improvements: four chapter-9 process
  cases in both state modes. Each also passes local simulation. Update only
  those eight expectations; the resulting file matches all 3,300 CI rows.
- UVM in both state modes passes unknown process and stops at the existing
  class type parameter value blocker. Full UVM execution is not claimed.

Exposed identities remain allocated until simulation teardown. Portable state
files reject exposed process handles; in-memory checkpoints support them.
This is an independent master-based change without a Depends-On stack.

Preserve four-state class properties
alongside process fields. Process handles remain two-state and null-initialized;
only logic/reg/implicit integral fields store unknown planes. Added a native
and interpreter checkpoint regression with a process field between two
four-state logic fields. Full SV 6,336 passed (20 existing ignored), process API
17 passed, analyzer 879 passed (3 existing ignored), affected/API Clippy,
NAPI/JS 435 and plugin integrations passed. Both sets of retained external
validation records are preserved; shared case sources are unchanged.

Integration with concurrent assertions on master e7ec496: full SV 6,362
passed (20 existing ignored), process API 17 and concurrent assertion API 5
passed, retained-report checks 4 passed, formatting passed. The only manual
conflict was combining the two sets of xezim review records; code merged
without manual changes.

Change-Id: If6cc12a12722e66f75d4833a527ec1247b2a83ab
@mergify mergify Bot closed this Oct 28, 2026
@mergify
mergify Bot deleted the mergify/merge-queue/68e1ac3379 branch October 28, 2026 11:36
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