Repository navigation
merge queue: checking #2322 on master (e7ec496) - #2427
Closed
mergify[bot] wants to merge 2 commits into
Closed
mergify[bot] wants to merge 2 commits into
mergify[bot] wants to merge 2 commits into
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
changesqueue, to test #2322 before it merges intomaster. 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:masterate7ec496🎉 Where it stands: checks passed
CI passed on this draft.
Follow the
changesqueue in the dashboardWhat happens next
masterand closes this draft.Metadata for CI tooling, read by
mergify ci1 scope
coreRequired conditions of queue rule
changesfor mergecheck-success = Conventional Commit titlecheck-success = Queue validationmaster]:check-success = @github-actions/Lint & Formatcheck-neutral = @github-actions/Lint & Formatcheck-skipped = @github-actions/Lint & Formatmaster]:check-success = @github-actions/Rust Test & NAPI Buildcheck-neutral = @github-actions/Rust Test & NAPI Buildcheck-skipped = @github-actions/Rust Test & NAPI Buildmaster]:check-success = @github-actions/JS Test (Ubuntu)check-neutral = @github-actions/JS Test (Ubuntu)check-skipped = @github-actions/JS Test (Ubuntu)master]:check-success = @github-actions/Conventional Commit titlecheck-neutral = @github-actions/Conventional Commit titlecheck-skipped = @github-actions/Conventional Commit titlemaster]:check-success = @github-actions/Queue validationcheck-neutral = @github-actions/Queue validationcheck-skipped = @github-actions/Queue validationRequired conditions to stay in the queue
-conflict-draft-head ~= ^(integration/|renovate/veryl-crates$|upgrade/veryl-|release-please--branches--master--components--celox$|master$)-head ~= ^renovate/-label = release:holdbase ~= ^(master|develop)$base ~= ^stack/body ~= (?m)^Depends-On:head != release-please--branches--master--components--celoxlabel = merge-readymaster]:check-success = @github-actions/Lint & Formatcheck-neutral = @github-actions/Lint & Formatcheck-skipped = @github-actions/Lint & Formatmaster]:check-success = @github-actions/Rust Test & NAPI Buildcheck-neutral = @github-actions/Rust Test & NAPI Buildcheck-skipped = @github-actions/Rust Test & NAPI Buildmaster]:check-success = @github-actions/JS Test (Ubuntu)check-neutral = @github-actions/JS Test (Ubuntu)check-skipped = @github-actions/JS Test (Ubuntu)master]:check-success = @github-actions/Conventional Commit titlecheck-neutral = @github-actions/Conventional Commit titlecheck-skipped = @github-actions/Conventional Commit titlemaster]:check-skipped = @github-actions/Queue validationcheck-neutral = @github-actions/Queue validationcheck-success = @github-actions/Queue validationQueue 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