From 2c86e4c5209558b87d90e150338bf443f93c0d76 Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 08:49:04 +0000 Subject: [PATCH 01/26] docs: record current tutorial census --- artifacts/tutorial/SUMMARY.md | 149 +++++++++++ artifacts/tutorial/broken-census.md | 80 ++++++ artifacts/tutorial/content-census.md | 376 +++++++++++++++++++++++++++ 3 files changed, 605 insertions(+) create mode 100644 artifacts/tutorial/SUMMARY.md create mode 100644 artifacts/tutorial/broken-census.md create mode 100644 artifacts/tutorial/content-census.md diff --git a/artifacts/tutorial/SUMMARY.md b/artifacts/tutorial/SUMMARY.md new file mode 100644 index 0000000..8036296 --- /dev/null +++ b/artifacts/tutorial/SUMMARY.md @@ -0,0 +1,149 @@ +# sv-tutorial: make lessons pass, fix wrong content, make the QA honest + +## 2026-09-30 continuation + +The repository baseline is `24175be` (`origin/main`). The required install, +unit-test, and production-build commands pass. Browser installation cannot +install OS dependencies without sudo, but an existing Chromium ran the focused +tests. The new findings and receipts are recorded at the top of +`artifacts/tutorial/broken-census.md` and `artifacts/tutorial/content-census.md`. + +Branch `fleet/tutorial-fixes` (from main 1d90d97; 16 commits already pushed to main at `24175be`). Each commit fixes one issue and adds a vitest or e2e test that +fails before the commit and passes after it. The complete findings are in `broken-census.md` (things that break) +and `content-census.md` (things that are wrong against IEEE 1800-2023 / 1800.2-2020). + +## What was broken +- **The whole-tutorial QA could not fail.** It asserted "no `exit code: 1`" right after clicking Run, before any + output appeared. Its lesson list was hand-copied and had drifted: 62 of 73 lessons, with stale titles. Once + fixed, 23 of 73 solutions failed in the browser. +- **CI is red on main.** + - `ci`: the UVM smoke hits a `mox-verilog` `Aborted()` while compiling uvm-core. The `uvm_re_*` lines are remarks, not the cause. + - `uvm-nightly`: red since 2026-03. + - `e2e-waveform`: cancelled at its 20-minute limit, because the specs expect `mox-verilog`/`mox-sim` for lessons + that now run through `mox-run`. +- **The pinned WASM (release `mox-wasm`, Mox 805b42d2) breaks 16 lessons that current native Mox runs correctly:** + - all 12 UVM lessons; + - Interfaces, Modports and Tasks ("memory access out of bounds"); + - FSM (false "mem driven by always_ff"). +- **Mox BMC crashes on sequence-basics Verify** (assert with a pass action; GAPS.md TUT-SVA-4). +- **Every cocotb lesson hung the page.** mox-sim-vpi in the pinned WASM aborts when the simulation starts (native Mox + and real cocotb 2.0.1 pass all four). The abort happened during an Asyncify rewind, so the worker never answered + and Run stayed on "Cancel" forever. The shim also lacked `ReadOnly` and cocotb 2.0's `unit=` keyword, which two + lessons use. +- **The waveform toolbar's transition buttons did nothing on lessons whose signals change at time 0.** The viewer + skipped all changes at the dump time when picking the signal to focus, so on modules-and-ports it picked none. +- **The lessons/waveform e2e specs were stale or vacuous:** they expected the old tool names, used a removed lesson + and an old toolbar protocol, and checked BMC logs before BMC had printed anything. +- **The MLIR lessons never ran their testbenches.** Run simulated only the focus file's design module, so + `*_tb.mlir` checks never executed. seq and lowering failed outright, and intro and comb "passed" without printing + anything. + +## What was wrong (content) +Fixed here: +- **Constrained Randomization:** the solution could not pass on any simulator. Inline `with {}` constraints are + added to the class constraints, not substituted for them (§18.7), so the "override" was infeasible. `low_bank_c` + is now `soft` (§18.5.13), and the description explains why. +- **Dynamic Arrays and Queues:** the solution hung on every simulator. + - `logic [3:0] v = q.pop_front();` in a loop body is a static variable, so its initializer runs once (§6.21). + It is now `automatic`. + - `logic'(i)` truncated the addresses to 1 bit (§6.24.1). It is now `4'(i)`. + - The testbench now checks the queue size after the pushes. +- **assume property:** the assume `rst |-> state == 0` constrained a design output. It failed in simulation at the + first edge (state X), and it did not rule out a non-reset initial state in BMC. It is now + `initial assume property (@(posedge clk) rst);` (§16.14.6), with the description reworded. Xcelium passes it. + Mox still fails Run, because it evaluates the initial assume at every edge (TUT-SVA-7). +- **UVM:** + - `uvm_top` and `finish_on_completion` are not in IEEE 1800.2-2020 (F.7). Replaced with + `uvm_root::get().set_finish_on_completion(0)`. + - `mem_item` fields were used in `uvm_field_*` macros before their declaration (§6.5). +- **Coverage lessons printed 0%:** the browser now enables coverage collection when a design declares a + `covergroup`. + +Still open (author decisions; see content-census.md): about 100 rows. The main ones: +- Most BMC lessons check a monitor whose inputs are all free, so Verify finds a counterexample for the *solution*. +- Several SVA explanations are wrong: checker `|=>` window, throughout `mosi[*8]`, `intersect` burst, recursive + tautology, reject_on vs sync_reject_on, `.triggered` restriction. +- `$bits(16)` is described as 4 (it is 32). +- coverpoint-bins has no ignore_bins. +- The modports snippet omits `clk`. +- Weak testbenches in 8 SV lessons accept wrong designs (mutations print PASS). + +## What changed +One commit per issue, each with the test that fails before it and passes after: + +| Commit | Change | Test | +|---|---|---| +| `24e2a82` | uvm: declare mem_item fields before the uvm_field_* macros | `src/lessons/lesson-sources.test.js` | +| `45c87e7` | uvm: use `uvm_root::get().set_finish_on_completion(0)`, not `uvm_top` | `src/lessons/lesson-sources.test.js` | +| `67d45ef` | runtime: enable coverage collection for designs with covergroups | `src/runtime/mox-adapter.test.js` | +| `cc306c9` | e2e: the all-lessons QA waits for each run and names known failures (`test.fail` + reason) | `e2e/qa-all-lessons.spec.js`, `e2e/lesson-run.js` | +| `44fd83e` | sv/randomization: `soft` low_bank_c | QA run entry (known failure before, removed) | +| `440d8d6` | sv/queues-arrays: `automatic` pop variable, `4'(i)`, size check, description | QA run entry (known failure before, removed) | +| `3c5b151` | mlir: run the `@tb` testbench together with the design | `src/runtime/mox-adapter.test.js`, `e2e/mlir-run.spec.js`, QA entries removed | +| `c9cb02a` | sva/formal-assume: assume reset at the first edge | `src/lessons/lesson-sources.test.js` (assumptions name only inputs) | +| `e119e6d` | e2e: lessons/waveform specs expect `$ mox-run` | `e2e/lessons.spec.js`, `e2e/waveform.spec.js` | +| `6564184` | cocotb: end the run when the simulator aborts instead of hanging | `e2e/cocotb-run.spec.js` | +| `8783379` | cocotb: shim `ReadOnly` (cbReadOnlySynch, §38.36.2) and `unit=` | `src/runtime/cocotb-shim.test.js`, `src/runtime/cocotb-worker-source.test.js` | +| `a8dcd88` | waveform: count changes at the dump time when picking the focused signal | `src/lib/vcd.test.js`; toolbar and transition_next e2e | +| `46c7eed` | e2e: update the stale waveform and formal checks | `e2e/waveform.spec.js`, `e2e/lessons.spec.js` | +| `a10a082` | e2e: the QA waits for hydration before clicking (a lost Run click flaked 1 of 90) | reproduced by delaying the app's JS 1.5 s | + +## WASM rebuild (done locally, NOT published; release `mox-wasm` is unchanged) +Built with emsdk 4.0.21 from Mox main `9c5418532b9` (and landing `ea0fcd2`): mox-verilog, mox-sim, mox-bmc and +mox-lec. Mox has no wasm target for mox-run (GAPS TUT-WASM-MOXRUN), so two more commits went in: +- `d760369`: the adapter falls back to mox-verilog + mox-sim when `mox-run.wasm` is absent (vitest). +- `24175be`: the build script passes C++20 to the NATIVE host sub-build (GAPS TUT-WASM-NATIVE-CXX20). + +The all-lessons QA on the rebuilt WASM gave 63 passed and 11 failed (log: `ci/qa-wasm-main-9c54.log`). Every +failure is a Mox gap, so **do not publish this WASM yet**: +- TUT-WASM-UNLINKED-RUNTIME: the wasm mox-sim cannot resolve the `__mox_sim_*` runtime hooks. This breaks the + covergroup, coverpoint-bins, classes and queues lessons. +- TUT-WASM-CROSS-ABI: mox-verilog asserts on any `cross` (a wasm32 ABI size check). +- TUT-WASM-ALLOCA-RETIRE: mox-sim aborts at teardown after an event wait or a queue push. This breaks Events and + Randomization. +- TUT-BMC-LTL-NOT: mox-bmc fails to legalize `ltl.not`, which breaks Immediate Assertions, Recursive Properties and + assume property Verify. Native Mox fails the same way. +- Concurrent Assertions in Simulation: this is not a bug. The new mox-sim reports the deliberate `req_gnt_check` + failure. The matching QA change is in `qa-concurrent-sim-with-new-wasm.patch`, which is uncommitted on purpose: + it would fail against the old WASM. Apply it together with the publish. + +Once these are fixed, publish, update `scripts/toolchain.lock.sh` and the README pins, and delete the `test.fail` +entries that then report "unexpectedly passed". + +**Update 18:55 UTC: WASM with native 0033 (TUT-WASM-ALLOCA-RETIRE fix).** Mox 9c54 + `0033` rebuilt locally. The QA +gives 67 passed and 7 failed (log `ci/qa-wasm-9c54-0033.log`). Events, Classes and Objects, Randomization and Concurrent Assertions +in Simulation (with the held QA patch) now pass. The 7 left are UNLINKED-RUNTIME (15, 16, 19), CROSS-ABI (17) and +BMC-LTL-NOT (25, 47, 48). Still do not publish; 0033 is in review. + +**CI's UVM smoke (`ci` run 36034279627, old release WASM).** The `uvm_re_*` lines are compile-time remarks, not +a runtime `UVM/DPI/REGEX` error. `mox-verilog.wasm` itself aborts while compiling uvm-core (log: +`ci/ci-36034279627-failed.log`). Recheck it against the rebuilt WASM before planning any DPI bridge change. + +## Left open (documentation and a legacy harness; no behaviour change, so no test) +- B14: `scripts/test-all-lessons.mjs` predates mox-run and accepts any `PASS` line. Retire it in favour of + `e2e/qa-all-lessons.spec.js`, or port it to mox-run and require a final PASS with exit 0. +- B15: CLAUDE.md still describes `src/tutorial-data.js` / `App.svelte`. Lessons are in `src/lessons/` and the app + is SvelteKit. + +## Needs a Mox fix (GAPS.md) +- TUT-SVA-3: `disable iff` over a Boolean property / compound immediate assert crash BMC (`ltl.not`). +- TUT-SVA-4: an assert with a pass action crashes BMC. +- TUT-SVA-2: weak sequences refuted by BMC. +- TUT-SVA-1: ranged-delay covers never fire. +- TUT-SVA-5: late failure reporting. +- TUT-SVA-6: reject_on treated as synchronous. +- TUT-UVM-DIAG: diagnostics lost under `--uvm-path`. +- TUT-SVA-7: an `initial` assert/assume property is evaluated at every clock edge instead of once (§16.14.6); blocks + formal-assume Run. +- TUT-VCD-DUMPVARS-TIME: the VCD writer puts `#0` inside `$dumpvars` (§21.7.2.1). The viewer now tolerates it. + +## How to test +Install the runtime assets first: `scripts/setup-surfer.sh` and `scripts/setup-pyodide.sh` (the waveform and cocotb +tests are meaningless without them), plus the pinned WASM in `static/mox`. Then run `npx vitest run` and +`npx playwright test e2e/qa-all-lessons.spec.js e2e/mlir-run.spec.js e2e/cocotb-run.spec.js e2e/lessons.spec.js e2e/waveform.spec.js`. +Stop any running `vite preview` on port 4173 first, because Playwright reuses an existing server. + +Last verified at `a10a082`: vitest 52/52; the five e2e specs give 90 passed and exit 0. Each known failure is a `test.fail` +with its reason, so it will show up as "unexpectedly passed" once fixed. + +🤖 Generated with [Claude Code](https://claude.com/claude-code) diff --git a/artifacts/tutorial/broken-census.md b/artifacts/tutorial/broken-census.md new file mode 100644 index 0000000..89b401f --- /dev/null +++ b/artifacts/tutorial/broken-census.md @@ -0,0 +1,80 @@ +# sv-tutorial BROKEN census + +## Current-main refresh — 2026-09-30 + +This refresh is against the fetched repository tip `24175be` (`origin/main`; +the coordinator-referenced `bcdf57717c1` is a Mox landing tip and is not a +commit in this repository). Required baseline receipts: + +- `npm ci`: exit 0; 143 packages installed; npm reports 10 audit findings. +- `npm test`: exit 0; 12 files / 53 tests passed. +- `npm run build`: exit 0; Svelte emits existing a11y and duplicate-output warnings. +- `npx playwright install --with-deps chromium`: exit 1 because sudo cannot + prompt on this host. Chromium was nevertheless already available, so the + suite ran. +- `npx playwright test e2e/qa-all-lessons.spec.js`: exit 1; the run reached + the runtime matrix, then was stopped after the UVM portion began. Observed + failures include unlinked `__mox_sim_register_host_allocation`, unlinked + `__mox_sv_open_array_copy_or_register_bounds`, and BMC `ltl.not` legalization. +- `npx playwright test e2e/mobile-nav.spec.js e2e/split-view.spec.js e2e/offline.spec.js`: + exit 1; 6 passed, 3 failed because `sv/priority-enc` is not a current route. + +The local browser assets are the 2026-09-24 rebuilt artifacts and contain no +`mox-run.js`/`mox-run.wasm`; plain SV therefore logs the fallback +`mox-verilog` + `mox-sim` path. The deployed release remains a separate WASM +qualification concern and is not changed by this branch. + +The eight sampled `uvm-nightly` runs (September 22–29, 2026) all reproduce the +same compile-stage `Aborted()` in `mox-verilog` while importing uvm-core; the +`uvm_re_*` lines are compiler remarks, not an executed regex failure. The +full raw logs are in `/tmp/tutorial-uvm-nightly-*.log` when collected by the +coordinator. + +Branch `fleet/tutorial-fixes` (from main 1d90d97). "Broken" means something a learner or CI can observe +failing: a crash, a red workflow, or a solution that does not pass. Content that runs but is *wrong* is in +content-census.md. + +Evidence sources: +- **Browser QA** (before any fixes: 50 passed / 23 failed): `e2e/qa-all-lessons.spec.js`, rewritten on this branch. It covers every lesson in + `src/lessons/meta.js` and waits for each run to finish. The full log is at `/tmp/tut/qa-new.log`. +- **Pinned WASM**: `gh release mox-wasm`, "built from normal-computing/mox @ 805b42d2", published 2026-06-25. +- **Native Mox**: landing `build-dev-fast`. +- **Xcelium**: via `fleet/bin/refdiff` / `refsim`. + +Severity: **S1** = a learner cannot complete a lesson, or CI is red. **S2** = a wrong result is visible. +**S3** = tooling or documentation rot. + +| # | failure | reproducer | root cause | proposed fix | sev | status | +|---|---|---|---|---|---|---| +| B1 | The old whole-tutorial QA was vacuous and passed while lessons were broken. It asserted `not.toContainText('exit code: 1')` straight after clicking Run, which resolves before the run has produced any output. Its hardcoded lesson list (62 entries) also had drifted from meta.js (73 lessons, stale titles such as "Tasks and Functions"). | `git show main:e2e/qa-all-lessons.spec.js` | The spec never waited for the run to end, and the lesson list was copied instead of derived. | Derive LESSONS from meta.js. `runAndWait()` waits for `$ mox` and then for the button to leave its "Cancel" state, and the test asserts on the finished log (`e2e/lesson-run.js`). | S1 (hides every other item) | fixed on branch | +| B2 | The `uvm-nightly` workflow has failed every night since 2026-03. The `ci` workflow's UVM smoke fails on main (run 28242548385): `mox-verilog` hits `Aborted()` right after `uvm_report_error("UVM/DPI/REGEX", uvm_re_buffer())`. | `gh run view 28242548385 --log-failed`. In the browser, open any `uvm/*` lesson and click Run. | This is a defect in the pinned WASM (805b42d2). Current native Mox compiles and runs all 12 UVM solutions. | **WASM rebuild required** (emscripten is not available in this lane). | S1 | needs WASM rebuild | +| B3 | Two-Always Moore FSM (`sv/fsm`, and every lesson that instantiates `sram.sv`) fails: `sram.sv:10:13: error: variable 'mem' driven by always_ff procedure`, `# mox-run exit code: 1`. | QA [14], or Solve then Run in the browser | This is a false multiple-driver diagnostic in the pinned mox-run WASM. Native Mox and Xcelium both accept the design. | **WASM rebuild required** | S1 | needs WASM rebuild | +| B4 | Interfaces, Modports and Tasks crash: `# runtime unavailable: RuntimeError: memory access out of bounds`. | QA [9], [10], [12] | This is a trap inside the pinned mox-run WASM. Native Mox runs all three solutions and prints PASS. The adapter's mox-run path retries only on `Aborted(`/OOM (`isRetryableSimAbortText`), so this is not retried. | **WASM rebuild required**. See the adapter-retry note below. | S1 | needs WASM rebuild | +| B5 | Dynamic Arrays and Queues never finishes: the log fills with `pop: x`, the renderer grows to about 6.5 GB, and the run is still in "Cancel" after 180 s. | QA [19]. `refdiff addr_buf.sol.sv`: Xcelium TIMEOUT and Mox TIMEOUT. | The lesson content is wrong (not the WASM; this corrects an earlier draft). `logic [3:0] v = q.pop_front();` in the loop body declares a static variable, and its initializer runs once, at time 0, while q is empty. So the loop never pops (§6.21 requires an explicit `static` there). `logic'(i)` also truncates the addresses to 1 bit (§6.24.1). | Use `automatic logic [3:0] v = q.pop_front();` and `4'(i)`, and check the queue size after the pushes. After the fix both simulators PASS. | S1 | fixed on branch | +| B6 | The Constrained Randomization solution fails on every simulator: `*W,SVRNDF randomize method call failed`, `FAIL: addr not in high bank`. | QA [21]. `refdiff rand_txn.sol.sv`: Xcelium FAIL (exit 2), Mox FAIL (exit 1). | The lesson content is wrong: inline `with {addr inside {[8:15]}}` is solved *together with* the class constraint `low_bank_c {addr inside {[0:7]}}` (IEEE 1800-2023 §18.7), which leaves no solution. | Make `low_bank_c` `soft` (§18.5.13) and explain it in the description. After the fix both simulators PASS. | S1 | fixed on branch | +| B7 | UVM covergroup, cross-coverage and coverage-driven report 0% coverage. coverage-driven hits its `$fatal` after 50 iterations, and covergroup raises `UVM_ERROR`. | Native `mox-run` without `--coverage-report`, or Xcelium without `-coverage functional` | Mox (like Xcelium) samples covergroups only when coverage collection is on, and the browser never enabled it. | The adapter adds `--coverage-report` to mox-run/mox-sim when a file declares a `covergroup` (vitest in `mox-adapter.test.js`). | S1 | fixed on branch (the pinned WASM has the flag) | +| B8 | All 12 UVM lessons are rejected by a standard UVM: Xcelium's IEEE UVM gives `*E,CUVUNF uvm_top` and `*E,UNDIDN` (a field used in `uvm_field_*` before it is declared). | refsim on any `uvm/*/tb_top.sv` or `mem_item.sol.sv` | `uvm_top` and the `finish_on_completion` field are not in IEEE 1800.2-2020 (F.7.2.2, F.7.3.4). Using a variable before its declaration violates IEEE 1800-2023 §6.5. | Use `uvm_root::get().set_finish_on_completion(0)` and declare fields before the macros (vitest `src/lessons/lesson-sources.test.js`). | S2 | fixed on branch | +| B9 | Sequences and Properties Verify crashes: `'llhd.process' op cannot be handed off from llhd-structuralize-processes to llhd-eliminate-processes`, `# mox-bmc exit code: 1`. | QA [26]; `/tmp/tut/audit/repro/bmc_pass_action.sv` | This is a Mox BMC bug: a concurrent assert with a *pass* action block crashes the pipeline. The bug is also present in native Mox. | Fix in Mox (GAPS.md). | S1 | Mox bug | +| B10 | `disable iff` on a Boolean property, and immediate asserts on compound expressions, crash BMC (`failed to legalize operation 'ltl.not'`). This hits recursive, formal-assume and immediate-assert. | `/tmp/tut/audit/repro/bmc_disable_bool.sv`, `bmc_imm_compound.sv` | Mox BMC bug (also present in native Mox) | Fix in Mox (GAPS.md) | S1 | Mox bug | +| B11 | The assume property lesson fails in simulation: `SVA assumption failed at time 5000000 fs`. | QA [48]. Xcelium: `__assert_1 has failed` at 5 NS. | The lesson content is wrong: `assume property (rst \|-> state==0)` is checked at the first edge while `state` is still X. The lesson also never constrains the initial reset (§16.14.2). | Replace it with `initial assume property (@(posedge clk) rst);` (§16.14.6): the environment starts in reset. Verify (BMC) now passes in the browser. Xcelium passes the simulation, but Mox evaluates the initial assume at every clock edge (GAPS TUT-SVA-7), so Run still fails. | S1 | content fixed on branch; Run blocked by Mox gap TUT-SVA-7 | +| B12 | For nearly every BMC lesson, Verify on the *solution* reports "Assertion can be violated" (SAT). Only formal-intro and seq-args prove. | `/tmp/tut/audit/sva-bmc/all.txt` | Monitors whose inputs are all free are not constrained, so any property on them can be violated (§16.12.2). | Add a DUT or assumptions per lesson (content-census, systemic row) | S2 | open | +| B13 | `e2e/lessons.spec.js` and `e2e/waveform.spec.js` expect `$ mox-verilog`, `$ mox-sim` and `--mode interpret` for plain SV lessons. Since a369bce and c257a60 these run through `mox-run` without `--mode`, so both specs fail. The `e2e-waveform` workflow is cancelled at its 20-minute limit on main. | `npx playwright test e2e/waveform.spec.js` | The specs were not updated when the lessons moved to mox-run. | Expect `$ mox-run`, and drop the `--mode interpret` assertion. | S3 | fixed on branch | +| B14 | `scripts/test-all-lessons.mjs` (node harness) does not run against the current artifacts. It drives `mox-verilog` + `mox-sim` rather than `mox-run` (which the browser uses), and treats any line starting with `PASS` as a pass, so a half-correct design passes (counter mutation). | `node scripts/test-all-lessons.mjs` | The harness predates mox-run, and its pass detector is too weak. | Retire it in favour of the e2e QA, or port it to mox-run and require a final PASS with exit 0. | S3 | open | +| B15 | Documentation rot. README pins MOX `8e8ca87` / LLVM `972cd84`, `scripts/toolchain.lock.sh` pins `18483f66` / `aa3d6b37`, and the shipped release was built from `805b42d2`. CLAUDE.md describes `src/tutorial-data.js` / `App.svelte`, which no longer exist (lessons are in `src/lessons/`, and the app is SvelteKit). | `grep -n "MOX ref" README.md; cat scripts/toolchain.lock.sh` | Pins and documents are hand-copied and have drifted. | At the next WASM rebuild, set the lock to the built commit and make README refer to the lock file. Update CLAUDE.md. | S3 | open | +| B16 | MLIR lessons never run their testbench. Run simulates only the focus file's design module, so the `*_tb.mlir` checks never execute: intro and comb print nothing and "pass", while seq and lowering fail (mox-sim cannot interpret a bare `seq.hlmem` / `sv.reg` top). | QA [66]-[69] | `pickTopModules` uses the focus-derived top, and the adapter simulated a single `.mlir` file (`pickMlirSourcePath`). | Pick `tb` when a file defines `hw.module @tb`, and simulate all `.mlir` files as one module (vitest, `e2e/mlir-run.spec.js`). Native mox-sim prints PASS for all four. | S1 | fixed on branch | +| B17 | $isunknown fails its QA run on purpose: `tb.sv` injects X, and 3 SVA failures plus exit 1 are the intended outcome. | QA [24] | The lesson is working as designed; the QA only lacked a way to express that. | The QA expects the three named assertion failures and no runtime crash. | — | fixed in QA | +| B18 | Every cocotb lesson aborts in the browser: `Aborted(Assertion failed: detail::isPresent(Val) && "dyn_cast on a non-existent value" ... Casting.h)` right after `[mox-sim] Starting simulation`. Earlier QA runs missed this because `static/pyodide` was absent locally (`importScripts` failed) and the old checks did not require the shim's `PASS name` line. | QA [70]-[73] after `scripts/setup-pyodide.sh`; `/tmp/tut/coco-probe.mjs` | Pinned mox-sim-vpi WASM (805b42d2). Native landing mox-sim `--vpi libcocotbvpi_ius.so` with real cocotb 2.0.1 passes all four lesson solutions. | WASM rebuild | S1 | needs WASM rebuild | +| B19 | After that abort, the Run button stays on "Cancel" forever and no result is reported. | QA [70]-[73] timed out at 180 s | An Emscripten abort inside an Asyncify rewind throws outside `callMain`'s try/catch, so `Asyncify.whenDone()` never settles and the worker never posts a result. | `Module.onAbort` resolves a promise raced against `whenDone()`; the result is `ok: false` (`e2e/cocotb-run.spec.js`). | S2 | fixed on branch | +| B20 | cocotb/edge-triggers and clockcycles-patterns use `ReadOnly` and `Clock(..., unit="ns")`, which the shim did not provide (ImportError / TypeError). | `src/runtime/cocotb-shim.test.js` | The shim implemented the cocotb 1.x subset only. | `ReadOnly` registers a zero-delay cbReadOnlySynch callback (§38.36.2), and Timer/Clock accept `unit=` as well as `units=`. The browser check is blocked by B18. | S1 | fixed on branch | +| B21 | Beyond B13, the lessons and waveform specs had five more stale or vacuous checks, and they hid a viewer bug. (1) The toolbar test expected command blobs from the transition buttons, which inject `MoveCursorToTransition` since 5e9b59a. (2) The transition_next test opened the removed `sv/priority-enc`. (3) concurrent-sim expected 'SVA assertion failed', but the lesson's else block prints its own `$error`. (4, 5) immediate-assert and sequence-basics checked the log before mox-bmc had printed anything, so they passed however BMC ended. The viewer bug: `firstTransitioningVar` dropped every change at the dump time that followed `$dumpvars`, so modules-and-ports auto-selected nothing and its transition buttons did nothing. Mox also writes `#0` inside `$dumpvars`, which Syntax 21-20 does not allow (GAPS TUT-VCD-DUMPVARS-TIME). | `npx playwright test e2e/lessons.spec.js e2e/waveform.spec.js` (after `scripts/setup-surfer.sh`) | The tests were not updated with the viewer/lesson changes; the viewer's VCD scan reset the time when it skipped the dump block. | Move the scan to src/lib/vcd.js and carry the dump time over (with a vitest). Update the specs, wait for runs to finish, and mark sequence-basics test.fail (TUT-SVA-4). | S3 | fixed on branch (a8dcd88, 46c7eed) | + +## Adapter-retry note (B4) + +`runOnce(withTraceAll=true)` is retried without `--trace-all` only when the error text matches +`isRetryableSimAbortText` (`Aborted(` or OOM). A `memory access out of bounds` trap is not retried there, +although it *is* treated as retryable for mox-verilog. This is recorded as an observation, not a fix: retrying +would only hide a runtime bug in the WASM, and the root-cause fix is the rebuild. + +## Needs a WASM rebuild (cannot be done in this lane: emscripten is not installed) +B2, B3, B4, B18. After a rebuild at current Mox, re-run `npx playwright test e2e/qa-all-lessons.spec.js`. +The `test.fail` annotations for these lessons will then fail, which marks them for removal. diff --git a/artifacts/tutorial/content-census.md b/artifacts/tutorial/content-census.md new file mode 100644 index 0000000..c6d343b --- /dev/null +++ b/artifacts/tutorial/content-census.md @@ -0,0 +1,376 @@ +# sv-tutorial CONTENT census + +## Current-main refresh — 2026-09-30 + +The prior full lesson audit remains the authoritative per-lesson matrix below. +This refresh adds the current-main execution status: native Mox is the landing +build at `/var/tmp/thomas-ahle/wt/landing/build-dev-fast`; Xcelium is invoked +through `/var/tmp/thomas-ahle/fleet/bin/refdiff`; examples are bounded to 30 s +and CPU affinity `0-79`. The browser cannot prove current native behaviour +because the checked-in WASM predates the landing tip. + +This census covers every lesson in `src/lessons/` (meta.js, 73 lessons) and CURRICULUM.md, checked against +IEEE 1800-2023 (`spec/ieee-1800-2023.txt`) and IEEE 1800.2-2020 (UVM). + +Each row gives: lesson | claim/example | what is wrong | IEEE clause | evidence | proposed fix | severity. + +Method: each lesson was flattened, then its solution and starter were run on native Mox (landing +build-dev-fast) and on Xcelium via `refdiff`/`refsim`. Mutation runs checked whether the testbench accepts +wrong designs, and BMC runs used the browser flags. Evidence paths are under `/tmp/tut/`. + +Crashes and red CI are in **broken-census.md**. Mox defects found on the way are in **GAPS.md**. + +## Fixed on fleet/tutorial-fixes (see SUMMARY.md) +- queues-arrays: static initializer loop (§6.21), `logic'(i)` 1-bit cast (§6.24.1), no size check. +- randomization: infeasible hard constraint vs inline constraint (§18.7). `low_bank_c` is now `soft` (§18.5.13). +- UVM: `uvm_top`/`finish_on_completion` not in IEEE 1800.2 (F.7). Fields used before their declaration (§6.5). +- MLIR: the `*_tb.mlir` checks were never run in the browser (adapter fix). +- All other rows are **open**: they need author decisions, and several change what a lesson teaches. + +--- + +## SV Basics audit (src/lessons/sv/*, meta.js, CURRICULUM.md Part 1) + +Method: every lesson flattened (`/tmp/tut/bin/flatten-lesson.py`) and run as solution and starter through +native `mox-run` (landing build-dev-fast) and `refdiff` (Mox vs Xcelium, cached). Run dirs: +`/tmp/tut/runs/sv__/` (mox.log, refdiff.txt, refdiff.json/). Mutation tests (wrong designs that +still print PASS) were built as copies under `/tmp/tut/audit/mut//` (lesson copy + flattened .sv + mox.log) +with `/tmp/tut/audit/mut.sh`; the repo was not modified. Standard: IEEE 1800-2023 (`/var/tmp/thomas-ahle/spec/ieee-1800-2023.txt`). + +Pass detector note: the repo's `scripts/test-all-lessons.mjs` counts a run as passing if *any* output line +`startsWith('PASS')`. Several testbenches print per-check lines `PASS ...`, so a partially correct design +satisfies the detector (counter mutation below demonstrates it). + +### Run matrix + +| run | Xcelium | Mox (refdiff) | category | output equal | Mox-run prints a PASS line | +|---|---|---|---|---|---| +| sv_always-comb_solution | PASS | PASS | both_pass | True | True | +| sv_always-comb_starter | PASS | PASS | both_pass | True | False | +| sv_always-ff_solution | PASS | PASS | both_pass | True | True | +| sv_always-ff_starter | FAIL | FAIL | both_fail | True | False | +| sv_classes_solution | PASS | PASS | both_pass | True | True | +| sv_classes_starter | FAIL | FAIL | both_fail | True | False | +| sv_counter_solution | PASS | PASS | both_pass | True | True | +| sv_counter_starter | FAIL | FAIL | both_fail | True | False | +| sv_covergroup-basics_solution | PASS | PASS | both_pass | True | True | +| sv_covergroup-basics_starter | PASS | PASS | both_pass | True | False | +| sv_coverpoint-bins_solution | PASS | PASS | both_pass | True | True | +| sv_coverpoint-bins_starter | PASS | PASS | both_pass | True | False | +| sv_cross-coverage_solution | PASS | PASS | both_pass | True | True | +| sv_cross-coverage_starter | PASS | PASS | both_pass | True | False | +| sv_data-types_solution | PASS | PASS | both_pass | True | True | +| sv_data-types_starter | FAIL | FAIL | both_fail | True | False | +| sv_enums_solution | PASS | PASS | both_pass | True | True | +| sv_enums_starter | FAIL | FAIL | both_fail | True | False | +| sv_events_solution | PASS | PASS | both_pass | True | True | +| sv_events_starter | PASS | PASS | both_pass | True | False | +| sv_fork-join_solution | PASS | PASS | both_pass | True | True | +| sv_fork-join_starter | FAIL | FAIL | both_fail | False | False | +| sv_fsm_solution | PASS | PASS | both_pass | True | True | +| sv_fsm_starter | PASS | PASS | both_pass | True | False | +| sv_interfaces_solution | PASS | PASS | both_pass | True | True | +| sv_interfaces_starter | FAIL | FAIL | both_fail | True | False | +| sv_modports_solution | PASS | PASS | both_pass | True | True | +| sv_modports_starter | FAIL | FAIL | both_fail | True | False | +| sv_modules-and-ports_solution | PASS | PASS | both_pass | True | True | +| sv_modules-and-ports_starter | PASS | PASS | both_pass | True | False | +| sv_packed-structs_solution | PASS | PASS | both_pass | True | True | +| sv_packed-structs_starter | FAIL | FAIL | both_fail | True | False | +| sv_parameters_solution | PASS | PASS | both_pass | True | True | +| sv_parameters_starter | FAIL | FAIL | both_fail | True | False | +| sv_queues-arrays_solution | TIMEOUT | TIMEOUT | both_fail | False | False | +| sv_queues-arrays_starter | FAIL | FAIL | both_fail | True | False | +| sv_randomization_solution | PASS | PASS | both_pass | False | True | +| sv_randomization_starter | FAIL | FAIL | both_fail | True | False | +| sv_tasks-functions_solution | PASS | PASS | both_pass | True | True | +| sv_tasks-functions_starter | PASS | PASS | both_pass | True | False | +| sv_welcome_solution | PASS | PASS | both_pass | True | False | +| sv_welcome_starter | PASS | PASS | both_pass | True | False | + +sv_queues-arrays_solution: both simulators TIMEOUT (infinite `pop: x` loop), see findings. Every other solution is both_pass with equal output. randomization output differs only in random values (different RNG). Starters that are both_fail are compile errors or $fatal, which is expected. No starter prints a PASS line. welcome prints no PASS by design (SKIP_SOL_PASS). + +**Concurrency note:** the tutorial lane edited the working tree while this audit ran. randomization/* now has an uncommitted `soft` fix (verified both_pass), and commit 67d45ef (--coverage-report) landed at 10:47. Findings are against HEAD 67d45ef plus the working tree as of 10:55 UTC; the randomization row describes the committed version. + +### Findings + +| lesson | claim/example | what is wrong | IEEE clause | evidence | proposed fix | severity | +|---|---|---|---|---|---|---| +| queues-arrays | solution `while (q.size() > 0) begin logic [3:0] v = q.pop_front(); ...` | Static variable declared with an initializer inside a procedural block without `static`. That is illegal, and both simulators accept it with a warning and run the initializer once at time 0, when q is empty. The loop body never pops, so the solution never terminates: it prints `pop: x` forever and never prints PASS. The "solve" button therefore loads a hanging program, and a student who declares the popped value the same way hits the same hang. | 6.21: "an explicit static keyword shall be required when an initialization value is specified as part of a static variable's declaration"; the spec's top_illegal example is marked "// should not compile" | refdiff: reference=TIMEOUT, mox=TIMEOUT (`/tmp/tut/runs/sv_queues-arrays_solution/refdiff.txt`); Xcelium printed 191M lines of `pop: x` (`xcelium.head.txt`, `xcelium.lines.txt` in the same dir). Minimal repro: `/tmp/tut/audit/repro/static-init-in-procedural-block.sv` (Xcelium *W,VARIST; Mox -Wexplicit-static; both v=0 size=3 x3) | `logic [3:0] v; v = q.pop_front();` (or `automatic logic [3:0] v = q.pop_front();`) | high | +| queues-arrays | `addrs[i] = logic'(i);` "fill with 0..7" | `logic'(i)` casts to a 1-bit logic, so the array holds 0,1,0,1,... Both simulators print `first=0 last=1`, which contradicts the diagram and comments. | 6.24.1: the cast shall "return the value that a variable of the casting type would hold after being assigned the expression" | Output head on both simulators: `Array size: 8 first=0 last=1` | `addrs[i] = 4'(i);` or `addrs[i] = i;` | high | +| queues-arrays | testbench | The only check is `q.size()==0` at the end. A student who declares `addrs`/`q` and does no push or pop still gets PASS; the array contents and the pop order are never checked. | RUBRIC: PASS iff correct | Code reading (the assert is independent of the push/pop TODOs) | Check `addrs[7]==7`, `q.size()==4` after the pushes, and the popped sequence 0,1,2,3 | high | +| queues-arrays | "new[n] allocates n elements — all zeroed" | The elements are `logic`, so they start as 'x, not 0. | 7.5.1: elements are "initialized to the default value for their type"; 6.8 Table 6-7 (logic = 'x) | spec | "initialized to the element type's default ('x for logic, 0 for bit/int)" | med | +| queues-arrays | an empty dynamic array is called a "null handle" | A dynamic array is not a class handle. Its default is an empty array of size 0. | 7.5 | spec | "empty (size 0)" | low | +| randomization (HEAD 67d45ef) | `constraint low_bank_c { addr inside {[0:7]}; }` plus `randomize() with { addr inside {[8:15]}; }`, taught as an "Inline override … high bank for this call only" | Inline constraints are added to the class constraints, so this set is infeasible. randomize fails, addr keeps its old value, and the `addr >= 8` assert calls $fatal. The committed solution fails on both simulators. | 18.7: "These additional constraints are applied along with the object constraints."; 18.6.3: "If randomize() fails, the constraints are infeasible, and the random variables retain their previous values." | Committed solution rerun (`/tmp/tut/audit/mut/rand_head/`): Mox `*W,SVRNDF … Fatal: FAIL: addr not in high bank`; Xcelium `*W,RNDOCS` conflict (lines 6/24), exit 2 | Already fixed in the **uncommitted** working tree by the tutorial lane (`soft addr inside {[0:7]}` plus an explanatory paragraph). That version gives both_pass. Commit it. | high | +| randomization | "The return value indicates success — always check it", while the solution uses `void'(t.randomize())` | The solution contradicts the advice in its own text. With a check, the conflict above would have been visible. | 18.6.1 | code | `if (!t.randomize() with {...}) $fatal(...)` | low | +| fork-join | solution drops the starter's `if ($time != 40) $fatal(...)` | The solution contains no check at all: `$display("PASS")` is unconditional. Using `join` instead of `join_any`, or omitting join_none, still prints PASS. | RUBRIC | diff concurrent.sv vs concurrent.sol.sv | Keep the $time==40 check in the solution, and add a check that "parent continues" happens at 40 (e.g. `$time==40` right after join_none) | med | +| fork-join | `$display("[%0t ns] ...", $time)` | %t prints in the global time precision, not in ns. Under refdiff's Xcelium setup it prints `[10000 ns] thread B (10 ns)`, while `mox-run --timescale=1ns/1ns` prints `[10 ns]`. The hard-coded "ns" suffix is wrong under any precision finer than 1ns. | 20.4.3 Table 20-3: units_number default is "The smallest time precision argument of all the `timescale compiler directives" | Xcelium reference.log for sv_fork-join_{solution,starter} | Use `%0d` with `$time`, or `$timeformat(-9,0," ns")` and drop the literal "ns" | low | +| fork-join | thread A and the background thread both finish at t=60 | Their print order is not defined by the standard. Both simulators happen to agree. | 4.7 (nondeterminism) | output_equal=True | Stagger the delays | low | +| covergroup-basics / coverpoint-bins / cross-coverage | starter vs solution PASS | The starters never print PASS and their TODOs don't ask for it. The only difference between starter and solution besides the TODO is an unconditional `$display("PASS")`. A student who completes the TODO never sees PASS, and PASS doesn't depend on the covergroup at all. The comment in test-all-lessons.mjs that says the starters print PASS is untrue. | RUBRIC (coverage lessons may print PASS unconditionally, but then the starter should print it too) | summ: `*_starter both_pass, PASS line = False` | Put the `$display("PASS")` in the starter's non-TODO code | med | +| covergroup-basics / coverpoint-bins | "Run and observe the coverage percentage" / "Run to see whether 64 cycles hit all four" | At the time of my runs, nothing printed a percentage and there was no `get_coverage()` call. **Fixed in app commit 67d45ef (10:47 today)**, which passes `--coverage-report` when a design contains a covergroup. Native Mox with that flag now prints e.g. "cp_addr … 81.25%". Xcelium only prints it with `-coverage`, and that was not verified. | 19.8 | `mox-run --coverage-report` output (this audit) | Also print `cg.get_coverage()` from the tb so the number is simulator-independent and portable | low (after 67d45ef) | +| coverpoint-bins | the lesson is titled "Bins and ignore_bins"; the TODO asks for "hi_half (8–13)" plus "ignore_bins to exclude 14 and 15"; the description has `hi_half = {[8:15]}` and also says to exclude 14/15 | The solution has `bins hi_half = {[8:15]};` and **no ignore_bins**. The solution skips the lesson's own concept, and the starter, description and solution disagree on the range. | 19.5.5: "All values or transitions associated with ignored bins are excluded from coverage. For state bins, each ignored value is removed from the set of values associated with any coverage bin." | cov_bins.sv:13-14 vs cov_bins.sol.sv:13-14 | Solution: `bins hi_half = {[8:15]}; ignore_bins reserved = {14,15};` (by 19.5.5, hi_half is then 8..13). Make the text and the TODO say that. | high | +| coverpoint-bins / covergroup-basics | "an 8-bit signal gets 256 bins" (auto bins) | The number of automatic bins is min(2^M, auto_bin_max), and auto_bin_max defaults to 64, so an 8-bit signal gets 64 bins. | 19.5.3: "N is the minimum of 2M and the value of the auto_bin_max option"; 19.7 Table 19-2 default 64 | spec | "min(2^M, auto_bin_max=64) bins; 256 values are grouped 4 per bin" | med | +| welcome | "Without [$finish] the simulator would run forever waiting for events that never come" | Simulation ends when no events remain. The welcome starter has no $finish and still completes at time 0. | 4.5 reference algorithm: `while (some time slot is nonempty) {…}` | sv_welcome_starter: both simulators complete | "…$finish ends simulation explicitly; without it the run ends when nothing is left to do (a free-running clock would keep it alive forever)" | med | +| welcome | "syntax is identical to C's printf" | Not identical: %b, %t, %m and %0d-style width suppression differ from C, and $display appends a newline. | 21.2.1.1 | spec | "similar to C's printf" | low | +| welcome | "One tight paragraph on printf/display notation:" | Leftover authoring note is visible to students. The HTML is also malformed (`` mis-nested, `
` inside `

`). | — | description.html | Remove the note and fix the nesting | low | +| welcome | "synthesis tools ignore initial blocks" | Overstated: FPGA flows use initial blocks to set register and memory initial values. | — | — | "ASIC synthesis ignores…; FPGA tools may use them for power-up values" | low | +| modules-and-ports | the testbench's only vector is 10+32=42 | `a|b` and `a^b` also give 42, so a wrong adder prints PASS. | RUBRIC | Mutation `/tmp/tut/audit/mut/mp_or/` (`assign sum = a \| b;`) prints `sum = 42` and `PASS` | Add vectors with carries, e.g. 200+100 (wraps to 44) and 15+1 | med | +| modules-and-ports | `sum` is called an "output wire" | `output logic sum` is a variable, not a net. | 6.5, 23.2.2.3 | code | "output (a logic variable driven by assign)" | low | +| data-types | `logic [7:0] mem` is called "a scalar" | It is an 8-bit packed vector. | 7.4.1 | starter comment and description | "a single 8-bit vector" | low | +| data-types | the SVG labels `int` "Testbench only"; a dfn says "unpacked arrays of int or other 2-state types are testbench-only" | 2-state types (`bit`, `int`) are synthesizable. What differs is X/Z modelling, not synthesizability. | 6.11 | — | "int/bit: 2-state; common in testbenches, synthesizable but hide X" | med | +| always-comb | `data-card="TODO"` on "multiplexer"; "TODO: What other procedural statements are there?" | Unfinished placeholder text is visible to students. | — | description.html | Write the cards | med | +| always-comb | always_comb semantics | The text omits that always_comb runs once at time zero, which is the key difference from `always @*`. | 9.2.2.2: "The procedure is automatically triggered once at time zero, after all initial and always procedures…" | spec | Add one sentence | low | +| always-comb | "casez block" | casez is a statement, not a block. | 12.5.1 | — | "casez statement" | low | +| events | "posedge… whenever clk transitions from 0 to 1" | Also 0→x/z and x/z→1. | 9.4.2 / Table 9-2: "A posedge shall be detected on the transition from 0 to x, z, or 1, and from x or z to 1" | spec | Quote the rule, or say "(for a clean 0/1 clock)" | med | +| events | "If you add @(write_done) but forget -> write_done… the simulation never finishes" | With nothing left scheduled, simulation ends. The waiting process just never resumes, so PASS is never printed. | 4.5 | events starter completes on both simulators | "…the waiting process never resumes, so PASS is never printed" | med | +| events | "This even is generated", "brackets… universal convention" | Typo. They are parentheses, and "universal" is overstated. | — | — | Fix wording | low | +| always-ff | per-check lines `PASS mem[2] = 42` | These lines satisfy the repo detector's `startsWith('PASS')` even when a later check fails. | RUBRIC | tb.sv | Use `ok mem[2]…`/`FAIL…`, or `[PASS]`-style prefixes | med | +| always-ff | testbench vs "1-cycle read latency" and write-enable | A design that ignores `we`, or one with a combinational read (`assign rdata = mem[addr]`, no latency), still prints PASS. The first works because the old value is read on the same edge as the write; the second because addr is held and sampled at posedge+1. | RUBRIC | Mutations `/tmp/tut/audit/mut/aff_nowe/` and `/tmp/tut/audit/mut/aff_comb/`: both print all 3 PASS lines plus PASS | Check rdata **before** the second edge (latency), and re-read an address after a `we=0` cycle with a different wdata | med | +| always-ff | "all writes happen together at the end of the time step" | NBA updates happen in the NBA region, which is not the end of the time slot: active, inactive and later regions can follow. | 4.4.2.x, 4.5 | spec | "after all blocking/active code of that time step has run" | low | +| always-ff | "An SRAM is an array of flip-flops" | Real SRAM uses 6T bit cells, not flip-flops. The model is a register file. | — | — | "modelled here as an array of registers" | low | +| counter | per-check lines `%s …` printed with "PASS"/"FAIL" | A design that only implements reset prints `PASS rst_n=0 holds…` and `PASS sync reset clears…`. That satisfies the repo detector `some(line.startsWith('PASS'))` even though the final bare PASS is missing. | RUBRIC | Mutation `/tmp/tut/audit/mut/cnt_resetonly/`: 2 PASS lines, 2 FAIL lines | Use `ok`/`FAIL` for per-check lines | med | +| counter | the `_n` dfn says "CMOS NOR gates are faster than NAND gates" | Backwards: NAND is faster (series NMOS vs series PMOS). | — | — | Remove, or reverse the claim | med | +| parameters | $bits dfn: "$bits(n) computes the number of bits needed to represent n distinct values… $bits(16)=4" | $bits returns the storage width of an expression. `$bits(16)` is 32 (an int literal). The function the text describes is `$clog2`. | 20.6.2: "The $bits system function returns the number of bits required to hold an expression as a bit stream" | spec | Delete it, or correct it to "$bits(x) is the width of x's type" | high | +| parameters | "we will discuss include dynamic arrays"; "The solution testbench instantiates…" (the tb is shared) | Typo, and the tb is in the starter too. | — | — | Fix wording | low | +| parameters | `localparam AW = $clog2(DEPTH)` | DEPTH=1 gives `[-1:0]`. | 20.8.1 | — | Mention it, or use `$clog2(DEPTH>1?DEPTH:2)` | low | +| packed-structs | "you should see two PASS lines" | The testbench prints only one. | — | solution output | "a PASS line" | low | +| packed-structs | `'{we:…}` is called a "struct literal" | The standard term is assignment pattern. | 10.9.2 | spec | "assignment pattern" | low | +| interfaces | "These functions are not synthesisable" | Interface functions and tasks can be synthesized (see the 25.7 examples). This particular function only fails because it returns `string`. | 25.7 | spec | "This one isn't (it returns a string), but interface functions in general can be" | med | +| interfaces | "structs are passed by value (copy)" when contrasting ports with interfaces | Misleading: a port connection is continuous, not a one-time copy. | 23.3.3 | — | Rephrase | low | +| interfaces | testbench never checks the output of `sprint()` | `function string sprint(); return ""; endfunction` passes. The TODO is exactly that function. | RUBRIC | Mutation `/tmp/tut/audit/mut/if_empty_sprint/`: 4 blank lines, then PASS | Compare `bus.sprint()` to the expected string | med | +| interfaces | "struts", "write out sram" | Typos. | — | — | — | low | +| modports | the description snippet `modport target (input we, addr, wdata, output rdata);` | It omits `clk`, but the given `sram.sv` uses `bus.clk`. A student who copies the snippet gets a compile error on both simulators. | 25.5 (the modport restricts access; the 25.5.1 example lists `clk` in `target`) | Mutation `/tmp/tut/audit/mut/mp_noclk/`: Mox `cannot access 'clk' via modport 'mem_if.target'`; Xcelium `*E,CUVUNF … lookup failed for 'clk' at 'tb.dut'` (refdiff both_fail) | Add `clk` to the snippet's input list (the solution already has it) | high | +| modports | "the unqualified form is still legal on the initiator side" | The tb uses the bare instance, so it gets full inout/ref access (25.5: "If no modport is specified… all the nets and variables… are accessible with direction inout or ref"). The initiator modport is never exercised, so no direction enforcement is shown on that side. | 25.5 | spec | Say the tb has unrestricted access; or connect a small driver module through `mem_if.initiator` | low | +| modports | "type error" | It is a port-direction error (Mox: `cannot assign to input port 'addr'`). | 25.5 | Mutation `/tmp/tut/audit/mut/mp_wr_input/` | "direction error" | low | +| tasks-functions | `mem_if vif(...)` called "the shared mem_if virtual interface"; CURRICULUM says "driving DUT via virtual interface" | This is an interface instance. A virtual interface is a variable (`virtual mem_if vif`). | 25.9: "A virtual interface is a variable that represents an interface instance." | spec | "interface instance (named vif)" | med | +| tasks-functions | signatures `write_word(vif, addr, data)` / `read_word(vif, …)` in the text | The real tasks take no vif argument. | — | tb.sv | Match the code | med | +| tasks-functions | "advance a small delta — #1" | `#1` is one time unit, not a delta cycle. | 4.4 | — | "one time unit" | low | +| tasks-functions | "Simulation hang disclaimer" paragraph | Speculative, environment-specific advice. The tb uses `vif.clk`, which is the same net as `clk`. | — | — | Remove | low | +| tasks-functions | the starter `tb.sv` (the file the student edits) has a single check on 42 | `return 1;` passes as the parity function (^42 = 1). The solution's extra vectors (FF, 100) are only in `tb.sol.sv`, so they never judge the student's code. | RUBRIC | Mutation `/tmp/tut/audit/mut/tf_starter_ret1/` prints PASS | Move the 3-vector checks into the starter's non-TODO code | med | +| enums | per-check lines start with "PASS" | Same detector problem as counter. | RUBRIC | tb.sv | `ok`/`FAIL` | med | +| enums | "the encoding is chosen by synthesis unless you specify the base type" | The base type sets the width and value set in simulation. Synthesis FSM re-encoding is a tool option, not governed by the base type. | 6.19 | — | Rephrase | low | +| enums | the typedef is in $unit and tb.sv uses it with no import | This only works if all files form one compilation unit, which is tool-dependent. | 3.12.1 | — | Put it in a package | low | +| enums | "The enum you define here becomes the state register type" (for fsm) | The fsm lesson defines a different enum (IDLE, READING, WRITING). | — | fsm/mem_ctrl.sol.sv | Align them | low | +| fsm | Moore dfn "outputs glitch-free and registered" | In this lesson the outputs are combinational (`always_comb` decode of state), so they are neither registered nor guaranteed glitch-free. | — | mem_ctrl.sol.sv | "outputs depend only on state" | med | +| fsm | "A Moore FSM separates state memory from output computation into two always blocks" | This confuses the Moore/Mealy distinction (whether outputs depend on inputs) with the two-process coding style. | — | — | Separate the two ideas | med | +| fsm | testbench | Reset is never asserted: `rst_n=1` before the first edge, and state leaves 'x through the `default:` arm. READING→IDLE and `ready==0` while busy are never checked. A design with no reset **and** READING stuck forever (ready=1) prints PASS. | RUBRIC | Mutation `/tmp/tut/audit/mut/fsm_stuck_noreset/` prints PASS | Hold rst_n=0 for 2 edges; check ready==0 in WRITING/READING and ready==1 one cycle after the read | med | +| fsm | fsm/sram.sv comment "The SRAM from the parameters lesson" | It is a different SRAM (combinational read, initialised mem), and rdata is never checked. | — | — | Fix the comment | low | +| classes | "leave rdata at its default (0)" (description and starter comment) | `logic [7:0]` defaults to 'x. The solution explicitly sets 8'h00, which contradicts "leave at default". | 6.8 Table 6-7 | spec | "default 'x; set it to 0 explicitly" or make it `bit [7:0]` | med | +| classes | `$display(t1.wdata); // prints FF` | With no format, $display prints decimal: 255. | 21.2.1.1 "displayed using the default decimal format in $display" | spec | `$display("%h", t1.wdata)` or "prints 255" | med | +| classes | "To get an independent copy, call new(...) again" | That creates a fresh object. A copy is `t2 = new t1;` (a shallow copy). | 8.12 | spec | Mention `new t1` | med | +| classes | testbench only checks handle sharing | An empty constructor and an empty `convert2string` still print PASS. The asserts only use `wdata` written by the tb itself. | RUBRIC | Mutation `/tmp/tut/audit/mut/cls_empty/`: `t1: ` / `t2: ` / PASS | Assert `t1.addr==5`, `t1.convert2string()=="WR[5]=a5"`, `t2.convert2string()=="RD[3]"` | med | +| CURRICULUM.md Part 1 | `sv/priority-enc` marked ✅ with score 22/27 | No such lesson exists (it is not in src/lessons/sv or meta.js). | — | ls src/lessons/sv | Mark 📝, or remove it | low | +| CURRICULUM.md Part 1 | "Teaches" column: data-types `$isunknown()`, enums "apostrophe cast `state_t'(bits)`", covergroup-basics `$get_coverage()`, tasks-functions "via virtual interface", counter "address stepping" | None of these appear in the lessons (grep finds no `$isunknown`, no `_t'(`, and no `get_coverage` in src/lessons/sv). `$get_coverage` is also a system function, while the lesson API would be `cg.get_coverage()`. | 19.9 | grep | Correct the Teaches column | low | +| CURRICULUM.md Part 1 | data-types "2-state `int`/`bit` (testbench)" | Same misconception as the lesson: 2-state types are synthesizable. | 6.11 | — | Drop "(testbench)" | low | + +### Mox bugs + +No SV-basics solution diverges between Mox and Xcelium. The cases below are places where **both** simulators deviate from the standard. They are recorded for completeness; neither is a Mox-only divergence. + +1. **Static variable with an initializer in a procedural block is accepted.** Repro: `/tmp/tut/audit/repro/static-init-in-procedural-block.sv`. + - Expected (6.21: "an explicit static keyword shall be required when an initialization value is specified as part of a static variable's declaration"; the spec example `top_illegal` is marked "should not compile"): compile error. + - Mox actual: `warning: initializing a static variable in a procedural context requires an explicit 'static' keyword [-Wexplicit-static]`, then v is treated as static and initialized once at time 0. The output is `v=0 size=3` three times (pop never runs). + - Xcelium actual: `*W,VARIST: Local static variable with initializer requires 'static' keyword.` with identical output. refdiff: both_pass, output equal. + - Consequence: sv/queues-arrays hangs on both simulators. Making it an error (at least under a strict mode) would have caught the lesson bug. Low priority, since Mox matches the reference. + +Checked and **not** a Mox bug: +- The infeasible `randomize() with` (committed randomization lesson): Mox reports `*W,SVRNDF`, keeps the previous values, and the assert fires, as 18.6.3 requires. Xcelium gives `*W,RNDOCS` and fails the same way. The old note about Mox issue #69 (inline constraints) does not reproduce. +- Modport access checks: Mox rejects `bus.clk` when it is not in the modport, and rejects writes to a modport `input`, as Xcelium does. + +### Lessons with no issues + +Every lesson has at least one finding, so no lesson gets a plain OK line. Parts that were checked and found correct: +- data-types: 2-state default '0 / 4-state 'x (6.8 Table 6-7), and X→0 on 4-state to 2-state assignment. +- always-comb: testbench is sound. +- events: testbench is sound. +- parameters: `$clog2` (20.8.1, "ceiling of the log base 2"). +- packed-structs: MSB-first field layout (7.2.1), and the raw pattern 13'b1_0101_01001101. +- tasks-functions: automatic vs static explanation (13.3.1). +- coverpoint-bins: illegal_bins claim (19.5.6); cross-coverage m×n bins claim (19.6). +- fork-join: automatic-task claim (13.3.1). +- randomization (working-tree version): soft-constraint explanation (18.5.13, 18.7). + +--- + +## SVA lessons audit (src/lessons/sva/*, 30 lessons + CURRICULUM.md SVA section) + +Spec: IEEE 1800-2023. Sim evidence: refdiff (Xcelium vs Mox), tbs in /tmp/tut/audit/sva-tb/{sem,sem2,cov}/. +BMC evidence: native mox-bmc with the browser flags (`--assume-known-inputs -b 20`), driver +/tmp/tut/audit/sva-bmc/bmc.sh, results in /tmp/tut/audit/sva-bmc/all.txt plus one directory per lesson. + +### Findings + +| lesson | claim/example | what is wrong | IEEE clause | evidence | proposed fix | severity | +|---|---|---|---|---|---|---| +| (all BMC lessons) | Clicking "Verify" should prove the solution and give a counterexample for the starter | Almost every BMC lesson asserts a monitor whose ports are all free inputs. So the solution property can be violated, and BMC reports a counterexample (SAT) for the **solution**. Starters that compile have no property, so they "pass". The outcome is inverted. | 16.12.2 (an assert must hold on all traces), 16.14.2 (assume constrains the traces) | sva-bmc/all.txt: solution SAT for implication, clock-delay, rose-fell, req-ack, consecutive-rep, nonconsec-rep, nonconsec-eq, throughout, sequence-ops, stable-past, changed, disable-iff, abort, cover-property, local-vars, onehot, triggered, checker, always-eventually, until. Only formal-intro and seq-args give UNSAT. | Give each BMC lesson a small DUT that drives the checked signals, or add `assume property` constraints on the inputs. Alternatively, reword the lessons so that Verify is expected to find a counterexample. | high | +| checker | "Click Verify to confirm BMC proves both properties" | False: SAT, because of free inputs. | 16.12.2 | sva-bmc/checker_solution | as above | high | +| checker | `req \|=> ##[1:3] ack` = "ack within 1–3 cycles" | `\|=>` adds a cycle, so the window is 2–4 cycles after req. | 16.12.7 ("`\|=>` ... `\|-> ##1`") | sem.sv p5: ack 1 cycle after req. Xcelium fails at 305, Mox fails at 305. | `req \|-> ##[1:3] ack` | high | +| checker | `valid \|-> $stable(data)` = "data must not change on the next cycle while valid" | $stable compares with the previous tick, not the next one. With data loaded in the same cycle that valid rises, it fails. | 16.9.3 | sem.sv p6: Xcelium fails at 335, Mox fails at 335. | `valid \|=> $stable(data)`, or reword the spec to "since the previous cycle" | med | +| checker | "checker is automatically excluded from synthesis" | The LRM does not state this. Synthesis support is tool-defined. | 17 | – | Reword to "typically ignored by synthesis tools" | low | +| throughout | `$fell(cs_n) \|=> (!cs_n) throughout (mosi[*8])` for "an 8-bit transfer" | `mosi[*8]` requires **mosi==1** on all 8 cycles. Any 0 data bit fails. | 16.9.9: "exp throughout seq is an abbreviation for (exp)[*0:$] intersect seq"; 16.9.2 | sem.sv p1, data 1011_0010: Xcelium fails at 35 ("3 cycles, starting 15"). Mox fails at 95 (see Mox bug 5). | `(!cs_n)[*8]` or `(!cs_n) throughout (1'b1[*8])` / `##7 1'b1` | high | +| throughout | "throughout ≡ sync_reject_on(!expr) seq" | throughout is a sequence operator, whereas sync_reject_on is a property operator. The two are only equivalent as a top-level property. | 16.9.9, 16.12.14 | – | Say "as a property, behaves like ..." | low | +| sequence-ops | `valid \|-> (valid[*4]) intersect (ready[*4])` for "a 4-cycle burst" | Every cycle with valid high starts a new attempt, so the lesson's own 4-cycle burst fails for the attempts started on cycles 2, 3 and 4. | 16.12.6 (a new attempt at every tick), 16.9.6 intersect | sem.sv p2: Xcelium reports 3 failures at 155 (attempts starting 125, 135 and 145). Mox reports failures at 155, 165 and 175. | `$rose(valid) \|-> ...` | high | +| nonconsec-eq | `start \|=> ack[=3] ##[0:$] done` = "exactly 3 acks, then done must arrive" | The consequent is weak and can never fail. `b[=3] ##[0:$] c` ≡ `b[->3] ##[0:$] c` because the trailing `!b[*0:$]` is absorbed. It allows a 4th ack and never requires done. | 16.9.2 ("[=] ... allows the match to be extended by arbitrarily many clock ticks provided the Boolean expression is false"), 16.12.2 (weak) | sem.sv p3, 4 acks and no done: no failure on either Xcelium or Mox | `start \|=> ack[=3] ##1 done` (bounded), or `s_eventually`/`strong(...)` if liveness is intended. Drop "exactly". | high | +| nonconsec-eq / CURRICULUM | "[=m] equality across non-consecutive occurrences" | [=m] is nonconsecutive repetition. "Equality" is not a meaningful description of it. | 16.9.2 | – | "nonconsecutive repetition" | low | +| consecutive-rep | `start \|=> busy[*3]` = "busy high for exactly 3 cycles" | This enforces only "at least 3". busy can stay high longer. | 16.9.2 | sem.sv p7, busy high 6 cycles: no failure on either tool | Add `##1 !busy`, or say "at least" | med | +| consecutive-rep | SVG shows busy rising exactly on a posedge | Under Preponed sampling the edge where busy rises samples 0, so the diagram as drawn would fail | 16.5.1 | – | Draw the transition after the edge | low | +| recursive | `property p_lock_hold; lock && !unlock \|=> p_lock_hold;` | This is a tautology: it imposes no obligation, so it can never fail. The description says it is "equivalent" to `lock && !unlock \|=> lock`, which is false. | 16.12.17 | sem2.sv p12_rec_desc: Xcelium reports no failure when lock drops without unlock. The fixed form (next row) fails at 145. | `property p_held; unlock or (lock and nexttime p_held); endproperty` (i.e. `lock until unlock`) | high | +| recursive | "must use \|=> to avoid a zero-time loop" | Too strong. The restriction is only that each recursive instance occurs after a positive advance in time, which `##1` or `nexttime` also satisfy. | 16.12.17 Restriction 3: "every instance of p shall occur after a positive advance in time" | – | Reword | low | +| recursive | "BMC proves all three hold" | False: free inputs give SAT, and Mox crashes on the `disable iff` Boolean property (Mox bug 3) | 16.12.2 | sva-bmc/recursive_solution | see the systemic row | high | +| formal-assume | `assume property (rst \|-> state==0)`; "Verify to formally prove state 3 is unreachable" | The assume does not constrain cycle 0 when rst=0, so the initial state is free and state 3 is reachable. In simulation the assume itself fails at 5ns because state is X at the first edge. | 16.14.2 | fa/fa1.sv, a disable-iff-free equivalent of the solution: SAT. fa2/fa3.sv with `initial assume property (@(posedge clk) rst);`: UNSAT. Sim: Xcelium "__assert_1 has failed" at 5 NS; Mox "SVA assumption failed at time 5000000 fs". The actual solution crashes Mox BMC (bug 3). | Add `initial assume property (@(posedge clk) rst);`, or have the DUT reset through an initialised register | high | +| disable-iff | "While the reset condition is true, the property evaluates as vacuously true" | A disabled evaluation is neither a success nor a vacuous success: no action block runs, and it does not count. It also applies to in-flight attempts whenever the condition becomes true during the evaluation. | 16.12: "A disabled evaluation of a property does not result in success or failure"; 16.14.3 | – | "the attempt is *disabled* (neither pass nor fail)" | med | +| disable-iff | Lesson intends the starter (no disable iff) to fail and the solution to pass under BMC | Both give SAT, so the lesson cannot show what disable iff does | – | sva-bmc/disable-iff_{starter,solution} | Drive the inputs from a DUT with a reset | med | +| abort | "reject_on(cond) seq is equivalent to (!cond) throughout seq" | reject_on is **asynchronous**: it checks at every time step, not only at clock ticks. Only sync_reject_on matches the throughout form. | 16.12.14: "accept_on and reject_on ... represent asynchronous resets"; the LRM's own example: `sync_reject_on(stop) put[->2]` "can also be written as ... !stop throughout put[->2]" | sem2.sv p10, err glitch between ticks: Xcelium fails p10_reject at 35 and does not fail the sync or throughout forms. Mox misses it (Mox bug 6). | Replace with sync_reject_on in the equivalence | med | +| triggered | ".triggered can only be used in the antecedent ... not inside another sequence" | False. `s.triggered` is a Boolean that may appear in consequents and in other sequences. | 16.13.6 ("detect its end point in another sequence ... triggered") | sem2.sv p11 `a \|=> s_b.triggered`: accepted and fails at 85 on both Xcelium and Mox | Delete the restriction | med | +| triggered | .matched description | Loose: .matched is for sequences clocked by a different clock, and it is only allowed in sequence expressions | 16.13.5 | – | Tighten | low | +| always-eventually | "weak property (eventually) ... satisfied vacuously" | Unranged `eventually` is illegal (only `eventually [range]` or `s_eventually`). "Vacuously" is a misuse: weak means no finite trace can refute it. | 16.12.13 grammar (`eventually [ constant_range ]`), 16.14.8 | – | "weak `eventually [m:n]`", "cannot fail on a finite trace" | med | +| always-eventually | "BMC can only falsify them within its bound" | A finite prefix cannot falsify liveness (s_eventually). Refuting it needs a lasso/loop. A BMC "counterexample" at the bound is not a real violation. | 16.12.2, 16.12.13 | Mox BMC reports SAT at the bound | Explain bounded liveness / lasso counterexamples | med | +| always-eventually | "IEEE 1800-2012 features" | always/s_eventually/until were introduced in 1800-2009 | – | – | "1800-2009" | low | +| until | "If q never occurs the property still holds (vacuously)" | Misuse of "vacuous": weak until holds when p holds forever | 16.12.12, 16.14.8 | – | "weak until holds if p holds forever" | low | +| clock-delay | Implies that only a wrong range gives a counterexample | Free mem_ack gives SAT even for the solution | 16.12.2 | sva-bmc/clock-delay_solution | see the systemic row | med | +| rose-fell | Spec says "rise within 1–2 cycles" (the solution `\|=> ##[0:1]` matches), but the starter TODO says "within 0–1 cycles" | Inconsistent | – | – | Align the TODO text | low/med | +| rose-fell | data-card: $rose = "was 0 the previous cycle" | $rose is true when the LSB changed to 1, which includes X→1 | 16.9.3 | – | "was not 1" | low | +| stable-past | $past "is evaluated in SVA's Observed region" | Its operand values come from the Preponed region | 16.5.1, 16.9.3 | – | "uses sampled (Preponed) values" | low/med | +| stable-past | Blockquote: `$stable(d)` ≡ `d == $past(d)` (the data-card says `===`) | $stable uses case equality, so X→X is stable, whereas `==` yields X and the check fails | 16.9.3 | sem.sv p9, X→X: $stable passes, `==` fails at 465 on both tools | Use `===` consistently | low/med | +| changed | "to ignore X transitions use !=" | `!=` involving X yields X, which is treated as false, so the check fails rather than ignoring the transition | 11.4.5, 16.3 | – | Reword or drop | low | +| vacuous-pass | "cover ... pass action only fires when the antecedent actually matched" | The LRM does not guarantee this: the pass action runs "once for each successful evaluation attempt", and pass actions include vacuous successes by default. Xcelium and Mox happen to skip vacuous successes. | 16.14.3, 20.11 | cov.sv, Xcelium with -abvcoveron | Cover a sequence (`cover property ($rose(req) ##[1:2] gnt)`) rather than an implication | low/med | +| cover-property | Same pass-action claim | Same as vacuous-pass | 16.14.3 | – | Same | low | +| concurrent-sim | "cover counts how many times the property was exercised" / "we now formally verify" | Imprecise: the count is per successful attempt, with vacuous successes counted separately. This is also a simulation lesson, not formal verification. | 16.14.3 | – | Reword | low | +| immediate-assert / CURRICULUM | Curriculum lists deferred assertions (#0/final) | The lesson does not cover them | 16.4 | – | Align | low | +| immediate-assert | Solution is immediate asserts on free inputs | Violable under BMC. Mox BMC also crashes (bug 3b). | 16.3 | sva-bmc/immediate-assert_solution | see the systemic row | med | +| sequence-basics | Solution has a pass action | Mox BMC crashes (bug 4). It would be SAT anyway. | 16.14.1 | sva-bmc/sequence-basics_solution | Remove the pass action, or fix Mox | med | +| lec | "in seconds, for any circuit size" | Overclaim | – | – | Soften | low | +| isunknown | "formal tools use two-state logic where X and Z do not exist" | Imprecise: many formal tools model X. Mox BMC uses `--assume-known-inputs`. | 20.13 | – | Reword | low | + +Starter check: all BMC starters with an empty property body fail to compile, which counts as not passing. The starters that do compile (immediate-assert, cover-property, onehot, formal-assume, formal-intro) "pass" because they have no property to check. The concurrent-sim and formal-assume sim starters pass (no assertions). The isunknown sim starter does not compile. + +### Mox bugs + +| # | repro | expected (clause) | Mox actual | Xcelium actual | +|---|---|---|---|---| +| 1 | /tmp/tut/audit/repro/cov_seq.sv | c_fixed, c_range, c_rose and c_seqk all hit at t=35000 (16.14.3: pass action for each successful attempt) | Only c_fixed and c_rose hit. `cover property (a ##[1:2] b)` and `cover sequence (a ##[1:2] b)` never fire. | All 4 hit (cov_seq.xrun.log, `-abvcoveron`) | +| 2 | /tmp/tut/audit/repro/bmc_weak_goto.sv (`a \|-> b[->1]`) | UNSAT: a weak sequence has no finite refutation (16.12.2) | `BMC_RESULT=SAT Assertion can be violated!` (b stays 0 until the bound). The same happens with `a \|=> ##[0:$] b`, `weak(##[1:$] b)` and nonconsec-eq. | n/a (BMC) | +| 3a | /tmp/tut/audit/repro/bmc_disable_bool.sv (`disable iff (rst) a`) | Legal (16.12); SAT | Crash: `failed to legalize operation 'ltl.not' ... (!smt.bv<1>) -> !ltl.property`. Works as `1'b1 \|-> a`. | n/a | +| 3b | /tmp/tut/audit/repro/bmc_imm_compound.sv (`always @(posedge clk) assert (!(a && b));`) | Legal (16.3); SAT | Same `ltl.not` legalize crash. `assert(a)` and `assert(!a)` work. | n/a | +| 4 | /tmp/tut/audit/repro/bmc_pass_action.sv (assert with pass and fail actions) | Legal (16.14.1); SAT, with action blocks ignored | Crash: `'llhd.process' op cannot be handed off from llhd-structuralize-processes to llhd-eliminate-processes`. A fail-only action works. | n/a | +| 5 | /tmp/tut/audit/repro/late_failure.sv (`a \|=> b[*4]`, b drops on the 2nd cycle) | Failure reported at 35ns, when a match becomes impossible (16.14.1, 16.9.2) | Failure reported at 55ns, the end of the bounded window. The same happens for sem.sv p1 (95 vs 35) and p2 (155/165/175 vs 155). | Fails at 35 NS | +| 6 | /tmp/tut/audit/repro/reject_on_async.sv | a_async fails, because reject_on is asynchronous and err is high between ticks during the evaluation (16.12.14) | No failure: reject_on is treated like sync_reject_on | "(time 35 NS) Assertion tb.a_async has failed (3 cycles, starting 15 NS)" | + +Harness note (not a Mox bug): refdiff/refsim does not pass `-abvcoveron`, so Xcelium prints no cover pass actions and cover lessons always diff against Mox. + +### OK + +- OK: req-ack +- OK: nonconsec-rep +- OK: seq-args (BMC proves it: UNSAT) +- OK: formal-intro (UNSAT; the starter "passes" only with a no-property warning) +- OK: implication (semantics correct; BMC SAT only because of the systemic free-input issue) +- OK: onehot (semantics correct; the systemic BMC issue applies) +- OK: local-vars (minor: in the template, `\|=> ##N` means N+1 cycles) +- OK: isunknown (sim: Mox and Xcelium agree; one low wording note above) +- OK: lec (low overclaim only) +- OK: CURRICULUM followed-by (`#-#`/`#=#`) description + +--- + +## Tutorial audit: uvm / rtl / cocotb / mlir + +**Method** +- **Simulators:** Mox is native `wt/landing/build-dev-fast`. Xcelium is `refsim -uvm -uvmhome CDNS-IEEE`, run through `/tmp/tut/bin/run-lesson.sh`. Coverage lessons were rerun with `/tmp/tut/audit/run-cov.sh`, which adds `--coverage-report` / `-coverage functional`. The browser adds the coverage flag automatically via `coverageArgs()`. +- **UVM scratch copies:** the UVM lessons were run from scratch copies in `/tmp/tut/audit/uvm-scratch//`, made with `mkscratch.py`. The copies work around the two known issues (a) and (b). +- **Evidence locations:** + - Run directories: `/tmp/tut/runs/uvm_*`, `/tmp/tut/runs/cov_*` and `/tmp/tut/runs/rtl_*`. + - Logs: `/tmp/tut/audit/logs/`. + - cocotb runs (real cocotb 2.0.1 + Icarus): `/tmp/tut/audit/cocotbchk/`. + - MLIR runs: `/tmp/tut/audit/mlir/`. +- **Budget:** about 30 Xcelium runs, all sequential. + +**Known issues (not re-investigated; affected lessons listed)** +- **(a) mem_item field macros come before the field declarations.** Affected lessons: + - seq-item (both `.sv` and `.sol.sv`, and the description.html example) + - sequence, driver, constrained-random, monitor, env + - covergroup, cross-coverage, coverage-driven, factory-override +- **(b) `uvm_top.finish_on_completion = 0;` in tb_top.** Affected: tb_top in all 12 UVM lessons. + +**Transcripts:** after the workarounds, the Mox and Xcelium UVM_INFO transcripts match line for line in every lesson. The differences are: +- the random values; +- Xcelium's extra CATCHER summary line; +- Xcelium drops non-ASCII characters (`—`, `→`, `×`) from string literals, with *W,NONPRT. + +### Findings + +| lesson | claim/example | what is wrong | clause/source | evidence | proposed fix | severity | +|---|---|---|---|---|---|---| +| uvm/cross-coverage | The starter should fail until the cross is added | With the missing `;` fixed, the **starter prints PASS on both simulators** (100%). cp_addr and cp_we alone reach the 100% goal, so the cross is never required. | LRM §19.11: the type coverage is the weighted average of the items. With no cross item, the covergroup reaches 100% from its coverpoints. | `cov_` run of `uvm-scratch-semi/cross-coverage` starter: "PASS" on Mox and Xcelium | Add `option.weight = 0;` to cp_addr and cp_we. The covergroup score then equals the cross score, and the starter reads 0%. Alternatively, check `mem_cg.addr_x_we.get_coverage()`. | high | +| uvm/covergroup, uvm/cross-coverage | The starter compiles and runs (the student only fills in bins) | The starter has `$fatal(0, $sformatf(...))` with no `;` before `endfunction`, so it does not compile. | LRM A.6.4: statement_item requires `;` | Xcelium: *E,EXPSMC. Mox: "expected ';'". | Add the `;`. | high | +| uvm/reporting | The solution prints PASS iff the test passed (RUBRIC) | The solution prints PASS unconditionally, even though its own run has UVM_ERROR=1. | RUBRIC.md: PASS iff UVM_ERROR==0 | Both simulators: "UVM_ERROR : 1" followed by "PASS" | Gate PASS on `uvm_report_server::get_server().get_severity_count(UVM_ERROR)==0`, or remove the demo error. | med | +| uvm/reporting | "run_phase is the only time-consuming phase" | There are 12 runtime task phases (reset/configure/main/shutdown, each with pre_ and post_) running in parallel with run_phase. | uvm-core `src/base/uvm_runtime_phases.svh`; 1800.2 §9.8.2 | – | Say "run_phase (and the runtime sub-phases) are the only task phases". | low | +| uvm/reporting | "Forgetting drop_objection → simulation runs forever" | UVM stops the run with a `PH_TIMEOUT` fatal at `UVM_DEFAULT_TIMEOUT` (9200 s). | `uvm_phase_hopper.svh:562-587`; `uvm_objection_defines`/`UVM_DEFAULT_TIMEOUT` | – | "…hangs until the phase timeout (9200 s by default) fires a fatal". | low | +| uvm/reporting | "`uvm_fatal immediately calls $finish" | `uvm_root::die()` first runs pre_abort on all components and report_summarize, then calls $finish. | `uvm_root.svh:157-182` | – | "…ends the test (after printing the report summary)". | low | +| uvm/driver (also the monitor/env/cov lessons that reuse sram.sv) | "The SRAM has a 1-cycle (registered) read latency". The waveform shows rdata one cycle late. | The UVM `sram.sv` reads combinationally: `assign rdata = mem[addr];`. Note that the Part 1 `sv/always-ff/sram_core` does have a registered read, so the two DUTs disagree. | `src/lessons/uvm/*/sram.sv` | The driver's sampled timing is the same on both simulators; rdata is valid in the same cycle. | Either make the UVM sram register rdata, or fix the text and figure. | med | +| uvm/driver | The test checks that the driver works | `read_c` is active, so every item is a read of zero-initialized memory and rdata is always 0. A starter that only fixes the config_db get() passes without driving anything meaningful. | lesson files | The transcripts show only RD items. | Disable read_c, or write then read back and compare. | low-med | +| uvm/monitor | "// Enable writes too". The description example says "driver writes addr=3 …". | read_c is still active, so no writes happen. The scoreboard's write branch is never exercised and the description example never occurs. | lesson files | 0 writes on both simulators | Call `read_c.constraint_mode(0)`, or remove the stale comment and example. | med | +| uvm/monitor | The monitor "reconstructs completed transactions" | The monitor samples every clock, not once per handshake. 8 items produce 14 scoreboard checks, including duplicates. | lesson monitor run_phase | 14 checks from 8 items on both Mox and Xcelium | Sample only on a valid/handshake cycle (for example, when the driver-asserted strobe is seen). | med | +| uvm/monitor | The card calls `uvm_analysis_imp` an "import" | "imp" is short for implementation. | uvm-core `uvm_analysis_port.svh` (`uvm_analysis_imp`: "implementation") | – | Change the wording. | low | +| uvm/covergroup, uvm/cross-coverage | "Complete report_phase …" | The starter's report_phase is already complete. The TODO is only in the bins/cross. | lesson files | – | Remove the step. | low | +| uvm/cross-coverage | "28 required bins", and step 3 says "naming which bins were missed" | There are 30 bins including the ignored/illegal ones, so the label is ambiguous. The solution never names missed bins. | lesson files | – | Clarify the count, or drop the "naming" claim. | low | +| uvm/constrained-random | Scenario 3: disabling weighted_c with `constraint_mode(0)` makes interior addresses appear | The check (`interior>0`) cannot detect whether constraint_mode(0) was called: with weighted_c on, the dist still gives about 70% interior per draw. The FAIL message's explanation is therefore wrong. | LRM §18.5.3 (dist: `:=` vs `:/`), §18.9 | The starter (no constraint_mode call) got "PASS: 12/16 interior". Separately, `dbg/dist.sv` confirms Mox's dist frequencies are correct. | Test something that only holds with the constraint off (for example, a uniform histogram), or have weighted_c force boundaries only. | med | +| uvm/constrained-random | Scenario 2 prints "PASS: all 4 items were boundary writes" | The message is printed unconditionally. | lesson file | – | Count boundary writes and check the count. | low | +| uvm/constrained-random | The inline `with` constraint "overrides for that one call" | Inline constraints are AND-ed with the class constraints; they do not override them. | LRM §18.7: "the inline constraints … are applied along with the object constraints" | – | Change the wording. | low | +| uvm/factory-override | "convert2string() calls get_type_name() … you'll see [mem_item]/[corner_mem_item]" | convert2string prints only `"WR [a] = d"` / `"RD [a]"`. No type name appears in the output. | lesson mem_item.sv | No type name in either transcript | Prepend `get_type_name()` in convert2string, or fix the text. | med | +| uvm/ral | "This lesson ships a hand-rolled register model that already compiles and simulates in MOX" | The starter `mem_test_ral.sv` calls `.set()`/`.get()` on `logic` variables, so it does not compile on either simulator. | lesson files | Starter compile errors on Mox and Xcelium | Change the wording ("…once you complete the TODOs"). | low-med | +| uvm/ral | The mirror value is "what software wrote" | The UVM mirrored value is the model's best estimate of the DUT register value. It is updated by reads, writes and predict(). | 1800.2 §18.5 (`uvm_reg_field::get_mirrored_value`); uvm-core `uvm_reg_field.svh` | – | Change the wording. | low | +| uvm/* | Non-ASCII characters (`—`, `→`, `×`) in `$display` / `uvm_info` strings | Non-ASCII characters in string literals are not portable. Xcelium drops them (*W,NONPRT). | LRM §5.9 (string literals are ASCII) | xrun logs | Use ASCII. | low | +| rtl/synthesis-gotchas | "It will fail on sel=2'b11 because the missing case produces an X output" | In simulation, `y` **holds its previous value** (0100). It is a latch in simulation too, not X. | LRM §12.5 (no matching item → no statement executes); §9.2.2.2 | Both simulators: `FAIL 11: got 0100 (latch?)` | "…y keeps its old value (0100) — that *is* the latch". | med | +| rtl/synthesis-gotchas | "Two fixes … 2. Add unique", and unique lets the tool "build a parallel MUX tree instead of a priority chain" | `unique` does not fix a latch in simulation. On an incomplete case it only adds a violation report; synthesis tools may treat it as full_case, which causes a sim/synth mismatch. For this decoder the case items are already constant and mutually exclusive, so `unique` changes no hardware. | LRM §12.5.3: unique-case asserts that the case_items do not overlap and (§12.5.3 with §12.4.2) reports a violation if none match | – | Present `unique` as a checking aid, and cover-all/default as the latch fix. | low-med | +| rtl/synthesis-gotchas | "if … none matches, the simulator reports an **error**" | The LRM requires a "violation report" whose form is tool-specific. It is commonly reported as a warning. | LRM §12.4.2.1: "A tool-specific violation report mechanism is then used" | – | Say "reports a violation". | low | +| rtl/rtl-to-gates | "The non-blocking `<=` is the key: it means latch this value at the clock edge"; "Every line maps to exactly one primitive" | The flip-flop comes from the edge event control `@(posedge clk)`, not from `<=`. A W-bit mux_reg is W muxes plus W DFFs. | LRM §9.4.2 (edge event control), §10.4.2 (NBA only defers the update) | – | Change the wording. | low | +| cocotb/edge-triggers, cocotb/clockcycles-patterns | Run in the browser | The browser shim has **no `ReadOnly`**, and `Clock()` accepts only `units=`, not `unit=`. Both tests fail immediately in the browser with ImportError (and would then hit a TypeError). | `src/runtime/cocotb-shim.py`: the triggers module exports only Timer, RisingEdge, FallingEdge and ClockCycles; `Clock.__init__(self, signal, period, units='ns')` | Loading the shim in Python: `ImportError cannot import name 'ReadOnly' from 'cocotb.triggers'`, `TypeError … unexpected keyword argument 'unit'` (`cocotbchk/chk.py`). Real cocotb 2.0.1 + Icarus passes the solution and fails the starter for both lessons. | Add `ReadOnly` (VPI cbReadOnlySynch; `vpi-abi.js` already defines it) and accept both `unit`/`units` in the shim's Timer and Clock. | high | +| cocotb/first-test, cocotb/clock-and-timing vs edge-triggers, clockcycles-patterns | API style | The lessons mix `units=` (cocotb 1.x; deprecated in 2.0, which emits DeprecationWarning) with `unit=` (2.0 only; TypeError on 1.x). No single cocotb version runs all four lessons cleanly. | cocotb 2.0.1 signatures: `Timer(time, unit='step', *, units=None)`, `Clock(signal, period, unit='step', …)` | DeprecationWarning in `cocotbchk/*` runs | Standardize on `unit=` and make the shim accept it. | low-med | +| cocotb/first-test | `__main__` block: `from cocotb.runner import get_runner`; `runner.build(verilog_sources=…, toplevel=…)`; `runner.test(toplevel=…)` | `cocotb.runner` no longer exists in 2.x (it is now `cocotb_tools.runner`). The `toplevel=` keyword was renamed `hdl_toplevel=` (1.8+ and 2.x), so the block fails on every released version with a runner. | cocotb 2.0.1: `Runner.build(..., sources, hdl_toplevel, ...)`, `Runner.test(test_module, hdl_toplevel, ...)` | `ModuleNotFoundError: No module named 'cocotb.runner'`; with a module alias, `TypeError build() got an unexpected keyword argument 'toplevel'` | Use `cocotb_tools.runner` and `hdl_toplevel=`. | low | +| cocotb/clock-and-timing | "Higher-level helpers like RisingEdge and Clock are built on top of [Timer]" (also on the card) | RisingEdge/FallingEdge are GPI value-change callback triggers and are independent of Timer. In 2.x, Clock defaults to a C++ GPI clock (`impl='gpi'`). Only ClockCycles is built on another trigger (RisingEdge). | cocotb `triggers.py` (`RisingEdge` is a `_EdgeBase`/GPI trigger); cocotb 2.0.1 `Clock(..., impl=None → 'gpi')` | – | Change the wording. | low-med | +| cocotb/first-test | "Add the missing `assign` statement" | The solution uses `always @(*) X = A + B;`. | lesson files | – | Align the text with the solution. | low | +| mlir (all 4) | Run executes the testbench | In the browser, Run simulates only the design file. `pickTopModules()` picks the alphabetically first `hw.module` (adder, priority_enc, sram_core, dff_before), and `pickMlirSourcePath()` passes only that one file to mox-sim. The `*_tb.mlir` files (the PASS/FAIL checks) never run, and output is empty. | `src/runtime/mox-adapter.js:137-155, 366-391, 1631` | `mox-sim adder.mlir --top adder` gives no output. Concatenating design and tb with `--top tb` gives PASS for all 4 lessons, and a mutated DUT gives FAIL (`/tmp/tut/audit/mlir/`). | Concatenate all .mlir files and use top `tb`. | med | +| mlir/lowering | "The left branch (LowerSeqToSV → ExportVerilog) is used when you click **Run**" | Run uses `mox-verilog --ir-llhd` and then `mox-sim` on LLHD. It never goes through the sv dialect or ExportVerilog. | `mox-adapter.js:1438` (`design.llhd.mlir`), ~1660 (mox-sim) | – | "Run takes a third path: Moore → LLHD → mox-sim". | med | +| mlir/lowering | Stage 3 "ExportVerilog output": `output [7:0] q); reg [7:0] q; always @(posedge clk) q <= d;` | This redeclares an ANSI port in the module body, which is illegal SV. It is also not what ExportVerilog emits; the real output is `reg [7:0] q_0; always @(posedge clk) q_0 <= d; assign q = q_0;` (and `always_ff` for dff_before). | LRM §23.2.2.2: "The port identifier shall not be redeclared, in part or in full, inside the module body." | `mox-opt lowering.mlir --lower-seq-to-sv --export-verilog` | Paste the real output. | med | +| mlir/lowering | "LowerSeqToSV converts every seq.compreg into sv.reg plus sv.always" | By default the pass emits `sv.alwaysff` (always_ff) for compreg. | `lib/Conversion/SeqToSV/SeqToSV.cpp:135-190` ("Lower CompRegOp to sv.reg and sv.alwaysff") | `mox-opt --lower-seq-to-sv` output | Say sv.alwaysff. | low | +| mlir/lowering | Pass names `LowerHWtoBMC`, `LowerBMCToSMT` | No such passes exist. The real ones are `--lower-to-bmc` and `--convert-verif-to-smt` (plus convert-hw/comb-to-smt), followed by the SMTLIB export. | `mox-opt --help` | – | Rename. | low | +| mlir/comb | `comb.icmp eq, %a, %b : i1` | Wrong syntax on two counts. There is no comma after the predicate, and the type annotation is the operand type (`comb.icmp eq %a, %b : i8`). | mox-opt | "expected SSA operand"; without the comma, "'i1' vs 'i8'" | Fix the snippet. | low-med | +| mlir/seq | Description snippets: `seq.hlmem @sram_core[%clk]`, `seq.write %mem[%addr], %wdata, %we : `, `seq.read %mem[%addr], latency 0 : ` | None of the three parse. The correct forms are in `sram_core.mlir`: `seq.hlmem @n %clk, %rst : <16xi8>`, `seq.write %m[%a] %d wren %we { latency = 1 } : !seq.hlmem<16xi8>`, and `seq.read %m[%a] { latency = 0 } : !seq.hlmem<16xi8>`. | mox-opt | "expected SSA operand" / "expected ':'" (`/tmp/tut/audit/mlir/t.mlir` checks) | Copy the working syntax from the file. | low-med | +| mlir/seq | sram_core.mlir: "compreg stands for compiled register: reset handling and clock-enable are optional fields added later in the lowering pipeline" | compreg is the "computational register". Reset and clock-enable are optional operands of `seq.compreg` and a separate `seq.compreg.ce` op, not something added later. (description.html itself states this correctly.) | `docs/Dialects/Seq/RationaleSeq.md` ("The computational register operation"); `SeqOps.td:26-53` | – | Fix the comment. | low | +| mlir/intro | The MOX card says "(Circuit IR Compilers and Tools)"; the pipeline shows the SMT export coming out of the sv dialect | "Circuit IR Compilers and Tools" is a leftover of the CIRCT expansion. The SMT path branches from hw/comb/seq, not from sv. SV import also goes through Moore first. | – | – | Fix the card and diagram. | low | +| mlir/*_tb.mlir | The FAIL branch uses `sim.terminate success, quiet` | A failing check exits with success. It still prints FAIL. | – | – | Use `failure`. | low | +| CURRICULUM.md | Status of uvm/ral; sections | uvm/ral is marked 💡 (planned) and listed as a gap, but the lesson exists. There are no rtl or mlir sections. The cocotb/edge-triggers title differs from meta.js ("Edge Triggers and Clock"). | CURRICULUM.md vs `src/lessons/meta.js` | – | Update the curriculum. | low | + +### Mox bugs + +1. **Semantic diagnostics are lost under `--uvm-path`** (repro: `/tmp/tut/audit/repro/undeclared_member_diag.sv`). + - **Without `--uvm-path`:** mox-run correctly reports slang's "use of undeclared identifier" and "no member named". + - **With `--uvm-path` (every UVM lesson):** those messages are replaced by "invalid expression" / "convertFunction failed". + - **In the seq-item starter (line 59) and ral starter (line 53):** the only message is a misleading `cannot convert '!moore.i1' to class handle type '!moore.class<@mem_item>'` at a use site. + - **Xcelium:** reports *E,UNDIDN / *E,NOTCLM. + - **Impact:** the error students most often hit in the UVM lessons produces a useless message. +2. **(low) get_coverage() returns 0.0 silently without `--coverage-report`.** Xcelium prints *N,COVNSM in the same situation. The browser is not affected because `coverageArgs()` adds the flag. A warning would still help native users. +3. No simulation mismatches: in every UVM, rtl and MLIR lesson run, the Mox output matched Xcelium's apart from random values. + +### docs/mox-bugs status (current native Mox) + +| file | status | evidence | +|---|---|---| +| bug-automatic-task-outer-interface-mlir-region-isolation.md | **FIXED**, including the follow-up sim hang (GitHub #8) | `/tmp/tut/audit/repro/mb/auto.sv` (the doc's example) compiles and prints PASS at 16 ns | +| bug-bits-hierarchical-parameterized-port.md | **FIXED** | `/tmp/tut/audit/repro/mb/bits.sv` prints PASS (`$bits(u_small.addr)==3`) | +| bug-virtual-if-in-class-method-mlir-region-isolation.md | **FIXED** | The driver, monitor, env, covergroup, cross-coverage and coverage-driven lessons (vif accessed in run_phase) compile and run, with timing identical to Xcelium | +| bug-uvm-constraint-mode-unimplemented.md | **FIXED** | constraint_mode(0) and randomize() with {…} behave correctly in seq-item Check 2 and constrained-random; `dbg/dist.sv` shows correct frequencies and mode switching | +| bug-uvm-phase-cleanup-hangs-and-factory-override.md | **FIXED** (both parts) | run_test() returns with a forever driver (sequence and driver lessons end normally); factory-override produces corner_mem_item addresses {0,15} on both simulators | +| bug-mox-sim-global-state-not-reset-between-callmain.md | **Not testable natively** | This is WASM-only (repeated `Module.callMain`); not exercised here | + +All five natively testable docs describe fixed bugs. They should be marked FIXED or removed. + +### OK +- **uvm/sequence:** OK apart from known issue (a). The handshake description is accurate, and the ordering is identical on both simulators. +- **uvm/seq-item:** OK apart from known issue (a) and Mox bug 1 on the starter. +- **uvm/env:** OK apart from (a), (b) and the shared SRAM latency text. Build is top-down and connect is bottom-up, as described. +- **uvm/coverage-driven:** OK apart from (a) and (b). The starter reaches 53-55% and fails with $fatal; the solution reaches 100% and prints PASS. +- **rtl/rtl-to-gates:** functionally OK. The solution passes and the starter fails (X) on both simulators; only low-severity wording issues. +- **cocotb/first-test, cocotb/clock-and-timing:** functionally OK in the shim and in real cocotb 2.0.1 (the solution passes, the starter fails). +- **mlir/intro, comb, seq, lowering:** all `.mlir` files parse with mox-opt. Every design+tb pair prints PASS under mox-sim with `--top tb`, and a mutated DUT prints FAIL. From e1114bcf6eb98ef26aba11d4d14a3cc6261faf6d Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 08:57:44 +0000 Subject: [PATCH 02/26] test: use a current two-file lesson in split-view e2e --- e2e/split-view.spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/e2e/split-view.spec.js b/e2e/split-view.spec.js index 12f3219..d156d75 100644 --- a/e2e/split-view.spec.js +++ b/e2e/split-view.spec.js @@ -4,8 +4,8 @@ const EXPECTED_TOOLBAR_HEIGHT = 40; // h-10 = 2.5rem = 40px at default font size test.describe('Split view header pills', () => { test('both file pills are compact and both bars are the same height', async ({ page }) => { - // priority-enc has two files (priority_enc.sv + tb.sv) — auto-opens in split view - await page.goto('/lesson/sv/priority-enc', { waitUntil: 'networkidle' }); + // modules-and-ports has two source files (adder.sv + tb.sv) — auto-opens in split view + await page.goto('/lesson/sv/modules-and-ports', { waitUntil: 'networkidle' }); const headerLeft = page.getByTestId('split-header-left'); const headerRight = page.getByTestId('split-header-right'); @@ -51,7 +51,7 @@ test.describe('Toolbar height consistency', () => { expect(treeBox.height).toBeCloseTo(EXPECTED_TOOLBAR_HEIGHT, 0); // 2. Split-view mode: open a 2-file lesson and activate split view - await page.goto('/lesson/sv/priority-enc', { waitUntil: 'networkidle' }); + await page.goto('/lesson/sv/modules-and-ports', { waitUntil: 'networkidle' }); const splitLeft = page.getByTestId('split-header-left'); const splitRight = page.getByTestId('split-header-right'); @@ -78,7 +78,7 @@ test.describe('Toolbar height consistency', () => { expect(treeBorderBottom).not.toBe('0px'); // Split-view mode - await page.goto('/lesson/sv/priority-enc', { waitUntil: 'networkidle' }); + await page.goto('/lesson/sv/modules-and-ports', { waitUntil: 'networkidle' }); const splitRight = page.getByTestId('split-header-right'); await expect(splitRight).toBeVisible(); const splitBorderBottom = await splitRight.evaluate( From d8e993786390c35c3d98427937384fb9d0d8bc11 Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 09:22:52 +0000 Subject: [PATCH 03/26] feat: add chapters for landed Mox capabilities --- CURRICULUM.md | 20 +++ README.md | 4 + artifacts/tutorial/SUMMARY.md | 19 ++- .../capability-receipts/final-summary.tsv | 20 +++ .../tutorial/capability-receipts/summary.tsv | 20 +++ ...d-part-select__solution__compile.final.log | 42 ++++++ ...indexed-part-select__solution__compile.log | 42 ++++++ ...part-select__solution__interpret.final.log | 22 ++++ ...dexed-part-select__solution__interpret.log | 22 ++++ ...d-part-select__solution__refdiff.final.txt | 1 + ...indexed-part-select__solution__refdiff.txt | 1 + ...ed-part-select__starter__compile.final.log | 42 ++++++ ..._indexed-part-select__starter__compile.log | 42 ++++++ ...-part-select__starter__interpret.final.log | 22 ++++ ...ndexed-part-select__starter__interpret.log | 22 ++++ ...-continuation__solution__compile.final.log | 37 ++++++ ...formal-continuation__solution__compile.log | 37 ++++++ ...ontinuation__solution__interpret.final.log | 19 +++ ...rmal-continuation__solution__interpret.log | 19 +++ ...-continuation__solution__refdiff.final.txt | 1 + ...formal-continuation__solution__refdiff.txt | 1 + ...l-continuation__starter__compile.final.log | 39 ++++++ ...-formal-continuation__starter__compile.log | 39 ++++++ ...continuation__starter__interpret.final.log | 19 +++ ...ormal-continuation__starter__interpret.log | 19 +++ ...d-child-input__solution__compile.final.log | 49 +++++++ ..._nested-child-input__solution__compile.log | 49 +++++++ ...child-input__solution__interpret.final.log | 19 +++ ...ested-child-input__solution__interpret.log | 19 +++ ...d-child-input__solution__refdiff.final.txt | 1 + ..._nested-child-input__solution__refdiff.txt | 1 + ...ed-child-input__starter__compile.final.log | 50 +++++++ ...__nested-child-input__starter__compile.log | 49 +++++++ ...-child-input__starter__interpret.final.log | 19 +++ ...nested-child-input__starter__interpret.log | 19 +++ ...ct-field-refs__solution__compile.final.log | 40 ++++++ ...__struct-field-refs__solution__compile.log | 40 ++++++ ...-field-refs__solution__interpret.final.log | 19 +++ ...struct-field-refs__solution__interpret.log | 19 +++ ...ct-field-refs__solution__refdiff.final.txt | 1 + ...__struct-field-refs__solution__refdiff.txt | 1 + ...uct-field-refs__starter__compile.final.log | 40 ++++++ ...v__struct-field-refs__starter__compile.log | 40 ++++++ ...t-field-refs__starter__interpret.final.log | 19 +++ ..._struct-field-refs__starter__interpret.log | 19 +++ artifacts/tutorial/content-census.md | 15 +++ .../receipts/sv__always-comb__interpret.json | 35 +++++ .../receipts/sv__always-comb__interpret.log | 20 +++ .../receipts/sv__always-ff__interpret.json | 35 +++++ .../receipts/sv__always-ff__interpret.log | 23 ++++ .../receipts/sv__classes__interpret.json | 36 +++++ .../receipts/sv__classes__interpret.log | 17 +++ .../receipts/sv__counter__interpret.json | 35 +++++ .../receipts/sv__counter__interpret.log | 24 ++++ .../sv__covergroup-basics__interpret.json | 37 ++++++ .../sv__covergroup-basics__interpret.log | 19 +++ .../sv__coverpoint-bins__interpret.json | 37 ++++++ .../sv__coverpoint-bins__interpret.log | 19 +++ .../sv__cross-coverage__interpret.json | 37 ++++++ .../sv__cross-coverage__interpret.log | 19 +++ .../receipts/sv__data-types__interpret.json | 36 +++++ .../receipts/sv__data-types__interpret.log | 22 ++++ .../receipts/sv__enums__interpret.json | 35 +++++ .../receipts/sv__enums__interpret.log | 24 ++++ .../receipts/sv__events__interpret.json | 36 +++++ .../receipts/sv__events__interpret.log | 21 +++ .../receipts/sv__fork-join__interpret.json | 36 +++++ .../receipts/sv__fork-join__interpret.log | 28 ++++ .../tutorial/receipts/sv__fsm__interpret.json | 36 +++++ .../tutorial/receipts/sv__fsm__interpret.log | 24 ++++ .../receipts/sv__interfaces__interpret.json | 36 +++++ .../receipts/sv__interfaces__interpret.log | 24 ++++ .../receipts/sv__modports__interpret.json | 36 +++++ .../receipts/sv__modports__interpret.log | 22 ++++ .../sv__modules-and-ports__interpret.json | 35 +++++ .../sv__modules-and-ports__interpret.log | 17 +++ .../sv__packed-structs__interpret.json | 36 +++++ .../sv__packed-structs__interpret.log | 22 ++++ .../receipts/sv__parameters__interpret.json | 35 +++++ .../receipts/sv__parameters__interpret.log | 22 ++++ .../sv__queues-arrays__interpret.json | 36 +++++ .../receipts/sv__queues-arrays__interpret.log | 21 +++ .../sv__randomization__interpret.json | 36 +++++ .../receipts/sv__randomization__interpret.log | 30 +++++ .../sv__tasks-functions__interpret.json | 35 +++++ .../sv__tasks-functions__interpret.log | 23 ++++ .../receipts/sv__welcome__interpret.json | 36 +++++ .../receipts/sv__welcome__interpret.log | 19 +++ .../receipts/sva__abort__interpret.json | 34 +++++ .../receipts/sva__abort__interpret.log | 14 ++ .../sva__always-eventually__interpret.json | 34 +++++ .../sva__always-eventually__interpret.log | 15 +++ .../receipts/sva__changed__interpret.json | 34 +++++ .../receipts/sva__changed__interpret.log | 15 +++ .../receipts/sva__checker__interpret.json | 34 +++++ .../receipts/sva__checker__interpret.log | 15 +++ .../receipts/sva__clock-delay__interpret.json | 34 +++++ .../receipts/sva__clock-delay__interpret.log | 14 ++ .../sva__concurrent-sim__interpret.json | 35 +++++ .../sva__concurrent-sim__interpret.log | 23 ++++ .../sva__consecutive-rep__interpret.json | 34 +++++ .../sva__consecutive-rep__interpret.log | 14 ++ .../sva__cover-property__interpret.json | 34 +++++ .../sva__cover-property__interpret.log | 15 +++ .../receipts/sva__disable-iff__interpret.json | 34 +++++ .../receipts/sva__disable-iff__interpret.log | 14 ++ .../sva__formal-assume__interpret.json | 35 +++++ .../sva__formal-assume__interpret.log | 33 +++++ .../sva__formal-intro__interpret.json | 34 +++++ .../receipts/sva__formal-intro__interpret.log | 15 +++ .../sva__immediate-assert__interpret.json | 34 +++++ .../sva__immediate-assert__interpret.log | 15 +++ .../receipts/sva__implication__interpret.json | 34 +++++ .../receipts/sva__implication__interpret.log | 14 ++ .../receipts/sva__isunknown__interpret.json | 35 +++++ .../receipts/sva__isunknown__interpret.log | 24 ++++ .../receipts/sva__lec__interpret.json | 34 +++++ .../tutorial/receipts/sva__lec__interpret.log | 17 +++ .../receipts/sva__local-vars__interpret.json | 34 +++++ .../receipts/sva__local-vars__interpret.log | 15 +++ .../sva__nonconsec-eq__interpret.json | 34 +++++ .../receipts/sva__nonconsec-eq__interpret.log | 14 ++ .../sva__nonconsec-rep__interpret.json | 34 +++++ .../sva__nonconsec-rep__interpret.log | 14 ++ .../receipts/sva__onehot__interpret.json | 34 +++++ .../receipts/sva__onehot__interpret.log | 14 ++ .../receipts/sva__recursive__interpret.json | 34 +++++ .../receipts/sva__recursive__interpret.log | 14 ++ .../receipts/sva__req-ack__interpret.json | 34 +++++ .../receipts/sva__req-ack__interpret.log | 15 +++ .../receipts/sva__rose-fell__interpret.json | 34 +++++ .../receipts/sva__rose-fell__interpret.log | 15 +++ .../receipts/sva__seq-args__interpret.json | 34 +++++ .../receipts/sva__seq-args__interpret.log | 15 +++ .../sva__sequence-basics__interpret.json | 34 +++++ .../sva__sequence-basics__interpret.log | 15 +++ .../sva__sequence-ops__interpret.json | 34 +++++ .../receipts/sva__sequence-ops__interpret.log | 14 ++ .../receipts/sva__stable-past__interpret.json | 34 +++++ .../receipts/sva__stable-past__interpret.log | 15 +++ .../receipts/sva__throughout__interpret.json | 34 +++++ .../receipts/sva__throughout__interpret.log | 15 +++ .../receipts/sva__triggered__interpret.json | 34 +++++ .../receipts/sva__triggered__interpret.log | 14 ++ .../receipts/sva__until__interpret.json | 34 +++++ .../receipts/sva__until__interpret.log | 14 ++ .../sva__vacuous-pass__interpret.json | 35 +++++ .../receipts/sva__vacuous-pass__interpret.log | 22 ++++ .../receipts/uvm__driver__compile.json | 44 +++++++ .../receipts/uvm__driver__compile.log | 13 ++ .../receipts/uvm__driver__interpret.json | 44 +++++++ .../receipts/uvm__driver__interpret.log | 13 ++ .../receipts/uvm__reporting__compile.json | 39 ++++++ .../receipts/uvm__reporting__compile.log | 60 +++++++++ .../receipts/uvm__reporting__interpret.json | 39 ++++++ .../receipts/uvm__reporting__interpret.log | 106 +++++++++++++++ .../receipts/uvm__seq-item__compile.json | 39 ++++++ .../receipts/uvm__seq-item__compile.log | 60 +++++++++ .../receipts/uvm__seq-item__interpret.json | 39 ++++++ .../receipts/uvm__seq-item__interpret.log | 124 ++++++++++++++++++ .../receipts/uvm__sequence__compile.json | 41 ++++++ .../receipts/uvm__sequence__compile.log | 13 ++ .../receipts/uvm__sequence__interpret.json | 41 ++++++ .../receipts/uvm__sequence__interpret.log | 13 ++ src/lessons/index.js | 4 + src/lessons/landed-capabilities.test.js | 25 ++++ src/lessons/meta.js | 4 + .../sv/indexed-part-select/description.html | 9 ++ .../indexed_part_select.sol.sv | 18 +++ .../indexed_part_select.sv | 18 +++ .../description.html | 11 ++ .../macro_formal.sol.sv | 17 +++ .../macro-formal-continuation/macro_formal.sv | 17 +++ .../sv/nested-child-input/description.html | 14 ++ .../nested_child_input.sol.sv | 35 +++++ .../nested-child-input/nested_child_input.sv | 35 +++++ .../sv/struct-field-refs/description.html | 15 +++ .../sv/struct-field-refs/struct_field.sol.sv | 25 ++++ .../sv/struct-field-refs/struct_field.sv | 25 ++++ 179 files changed, 4816 insertions(+), 1 deletion(-) create mode 100644 artifacts/tutorial/capability-receipts/final-summary.tsv create mode 100644 artifacts/tutorial/capability-receipts/summary.tsv create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.log create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.final.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.log create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__interpret.log create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__refdiff.final.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__refdiff.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__interpret.log create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__interpret.log create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__refdiff.final.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__refdiff.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__interpret.log create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__interpret.log create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__refdiff.final.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__refdiff.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__always-comb__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__always-comb__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__always-ff__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__always-ff__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__classes__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__classes__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__counter__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__counter__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__covergroup-basics__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__covergroup-basics__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__coverpoint-bins__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__coverpoint-bins__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__cross-coverage__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__cross-coverage__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__data-types__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__data-types__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__enums__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__enums__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__events__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__events__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__fork-join__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__fork-join__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__fsm__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__fsm__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__interfaces__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__interfaces__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__modports__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__modports__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__modules-and-ports__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__modules-and-ports__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__packed-structs__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__packed-structs__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__parameters__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__parameters__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__queues-arrays__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__queues-arrays__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__randomization__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__randomization__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__tasks-functions__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__tasks-functions__interpret.log create mode 100644 artifacts/tutorial/receipts/sv__welcome__interpret.json create mode 100644 artifacts/tutorial/receipts/sv__welcome__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__abort__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__abort__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__always-eventually__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__always-eventually__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__changed__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__changed__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__checker__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__checker__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__clock-delay__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__clock-delay__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__concurrent-sim__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__concurrent-sim__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__consecutive-rep__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__consecutive-rep__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__cover-property__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__cover-property__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__disable-iff__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__disable-iff__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__formal-assume__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__formal-assume__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__formal-intro__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__formal-intro__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__immediate-assert__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__immediate-assert__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__implication__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__implication__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__isunknown__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__isunknown__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__lec__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__lec__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__local-vars__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__local-vars__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__nonconsec-eq__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__nonconsec-eq__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__nonconsec-rep__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__nonconsec-rep__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__onehot__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__onehot__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__recursive__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__recursive__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__req-ack__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__req-ack__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__rose-fell__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__rose-fell__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__seq-args__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__seq-args__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__sequence-basics__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__sequence-basics__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__sequence-ops__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__sequence-ops__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__stable-past__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__stable-past__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__throughout__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__throughout__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__triggered__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__triggered__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__until__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__until__interpret.log create mode 100644 artifacts/tutorial/receipts/sva__vacuous-pass__interpret.json create mode 100644 artifacts/tutorial/receipts/sva__vacuous-pass__interpret.log create mode 100644 artifacts/tutorial/receipts/uvm__driver__compile.json create mode 100644 artifacts/tutorial/receipts/uvm__driver__compile.log create mode 100644 artifacts/tutorial/receipts/uvm__driver__interpret.json create mode 100644 artifacts/tutorial/receipts/uvm__driver__interpret.log create mode 100644 artifacts/tutorial/receipts/uvm__reporting__compile.json create mode 100644 artifacts/tutorial/receipts/uvm__reporting__compile.log create mode 100644 artifacts/tutorial/receipts/uvm__reporting__interpret.json create mode 100644 artifacts/tutorial/receipts/uvm__reporting__interpret.log create mode 100644 artifacts/tutorial/receipts/uvm__seq-item__compile.json create mode 100644 artifacts/tutorial/receipts/uvm__seq-item__compile.log create mode 100644 artifacts/tutorial/receipts/uvm__seq-item__interpret.json create mode 100644 artifacts/tutorial/receipts/uvm__seq-item__interpret.log create mode 100644 artifacts/tutorial/receipts/uvm__sequence__compile.json create mode 100644 artifacts/tutorial/receipts/uvm__sequence__compile.log create mode 100644 artifacts/tutorial/receipts/uvm__sequence__interpret.json create mode 100644 artifacts/tutorial/receipts/uvm__sequence__interpret.log create mode 100644 src/lessons/landed-capabilities.test.js create mode 100644 src/lessons/sv/indexed-part-select/description.html create mode 100644 src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv create mode 100644 src/lessons/sv/indexed-part-select/indexed_part_select.sv create mode 100644 src/lessons/sv/macro-formal-continuation/description.html create mode 100644 src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv create mode 100644 src/lessons/sv/macro-formal-continuation/macro_formal.sv create mode 100644 src/lessons/sv/nested-child-input/description.html create mode 100644 src/lessons/sv/nested-child-input/nested_child_input.sol.sv create mode 100644 src/lessons/sv/nested-child-input/nested_child_input.sv create mode 100644 src/lessons/sv/struct-field-refs/description.html create mode 100644 src/lessons/sv/struct-field-refs/struct_field.sol.sv create mode 100644 src/lessons/sv/struct-field-refs/struct_field.sv diff --git a/CURRICULUM.md b/CURRICULUM.md index 94da5bd..9d517ec 100644 --- a/CURRICULUM.md +++ b/CURRICULUM.md @@ -18,6 +18,26 @@ Flag numbers identify the weak dimension(s): 1=Concept Focus, 2=Starter Calibrat ## Part 1 — SystemVerilog Basics +### Chapter: Macro Formal Continuations (September 2026) +| Slug | Title | Status | Score | Prereqs | Teaches | +|---|---|---|---|---|---| +| `sv/macro-formal-continuation` | Macro Formal Continuations | ✅ | — | `sv/classes` | continued `` `define `` text, formal arguments, token pasting | + +### Chapter: Packed-Struct Field References (September 2026) +| Slug | Title | Status | Score | Prereqs | Teaches | +|---|---|---|---|---|---| +| `sv/struct-field-refs` | Packed-Struct Field References | ✅ | — | `sv/packed-structs` | named access to a packed struct through module connections | + +### Chapter: Indexed Part-Select Bounds (September 2026) +| Slug | Title | Status | Score | Prereqs | Teaches | +|---|---|---|---|---|---| +| `sv/indexed-part-select` | Indexed Part-Select Bounds | ✅ | — | `sv/data-types` | `+:` indexed selects and four-state out-of-range reads | + +### Chapter: Nested Child Input Propagation (September 2026) +| Slug | Title | Status | Score | Prereqs | Teaches | +|---|---|---|---|---|---| +| `sv/nested-child-input` | Nested Child Input Propagation | ✅ | — | `sv/always-ff` | live child input connections across nested modules | + ### Chapter: Introduction | Slug | Title | Status | Score | Prereqs | Teaches | |---|---|---|---|---|---| diff --git a/README.md b/README.md index f64494e..25d9918 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,10 @@ In `.env` (copy `.env.example`): - Runtime uses a real 2-stage wasm toolchain by default: - `mox-verilog` lowers SV/SVA/UVM source to MLIR - `mox-sim` executes lowered MLIR and emits VCD for the waveform pane +- UVM lessons are currently qualified in interpreter mode only; `--mode=compile` + does not yet run the UVM-bench rows. Native receipt runs therefore report the + interpreter as the supported UVM path until the corresponding Mox AOT rows + land. - Tool invocations run in isolated Web Workers to avoid global Emscripten symbol collisions and re-entry issues. - UI includes a `self-check` action in the Runtime panel to validate artifact compatibility. - Waves tab appears automatically only when a valid VCD is generated. diff --git a/artifacts/tutorial/SUMMARY.md b/artifacts/tutorial/SUMMARY.md index 8036296..a9cfe01 100644 --- a/artifacts/tutorial/SUMMARY.md +++ b/artifacts/tutorial/SUMMARY.md @@ -8,7 +8,7 @@ install OS dependencies without sudo, but an existing Chromium ran the focused tests. The new findings and receipts are recorded at the top of `artifacts/tutorial/broken-census.md` and `artifacts/tutorial/content-census.md`. -Branch `fleet/tutorial-fixes` (from main 1d90d97; 16 commits already pushed to main at `24175be`). Each commit fixes one issue and adds a vitest or e2e test that +Branch `fleet/tutorial-fixes` starts at `origin/main` (`24175be`). Each fix adds a vitest or e2e test that fails before the commit and passes after it. The complete findings are in `broken-census.md` (things that break) and `content-census.md` (things that are wrong against IEEE 1800-2023 / 1800.2-2020). @@ -88,6 +88,23 @@ One commit per issue, each with the test that fails before it and passes after: | `46c7eed` | e2e: update the stale waveform and formal checks | `e2e/waveform.spec.js`, `e2e/lessons.spec.js` | | `a10a082` | e2e: the QA waits for hydration before clicking (a lost Run click flaked 1 of 90) | reproduced by delaying the app's JS 1.5 s | +### Landed capability chapters + +Added four one-lesson chapters for capabilities landed in Mox by +`bcdf57717c1` on September 30, 2026. The later `36b040f6190` UDP startup-input +change is intentionally not documented because it is not in the coordinator's +current tutorial baseline. + +| Lesson | IEEE reference | Mox native | Xcelium/refdiff | Evidence | +|---|---|---|---|---| +| `sv/macro-formal-continuation` | §22.5.1 | starter FAIL; solution PASS in interpreter and compile modes | solution PASS; output equal | `artifacts/tutorial/capability-receipts/*macro-formal-continuation*` | +| `sv/struct-field-refs` | §7.2.1 | starter FAIL; solution PASS in interpreter and compile modes | solution PASS; output equal | `artifacts/tutorial/capability-receipts/*struct-field-refs*` | +| `sv/indexed-part-select` | §11.5.1 | starter FAIL; solution PASS in interpreter and compile modes | solution PASS; output equal | `artifacts/tutorial/capability-receipts/*indexed-part-select*` | +| `sv/nested-child-input` | §§23.2.2, 9.4.2 | starter FAIL; solution PASS in interpreter and compile modes | solution PASS; output equal | `artifacts/tutorial/capability-receipts/*nested-child-input*` | + +The capability receipt summaries are in +`artifacts/tutorial/capability-receipts/{summary,final-summary}.tsv`. + ## WASM rebuild (done locally, NOT published; release `mox-wasm` is unchanged) Built with emsdk 4.0.21 from Mox main `9c5418532b9` (and landing `ea0fcd2`): mox-verilog, mox-sim, mox-bmc and mox-lec. Mox has no wasm target for mox-run (GAPS TUT-WASM-MOXRUN), so two more commits went in: diff --git a/artifacts/tutorial/capability-receipts/final-summary.tsv b/artifacts/tutorial/capability-receipts/final-summary.tsv new file mode 100644 index 0000000..51e5bda --- /dev/null +++ b/artifacts/tutorial/capability-receipts/final-summary.tsv @@ -0,0 +1,20 @@ +sv/macro-formal-continuation starter interpret 0 FAIL: macro expansion returned 2 +sv/macro-formal-continuation starter compile 0 FAIL: macro expansion returned 2 +sv/macro-formal-continuation solution interpret 0 PASS +sv/macro-formal-continuation solution compile 0 PASS +sv/macro-formal-continuation solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv", "sha256": "70bcc182fc6b32c4e8fac7eaee06196d845ffe8aed28318e592a8887a42224fd", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-0dk6vu5z"} +sv/struct-field-refs starter interpret 0 FAIL: got 00000000 +sv/struct-field-refs starter compile 0 FAIL: got 00000000 +sv/struct-field-refs solution interpret 0 PASS +sv/struct-field-refs solution compile 0 PASS +sv/struct-field-refs solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sol.sv", "sha256": "4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-e9za9q_5"} +sv/indexed-part-select starter interpret 0 PASS +sv/indexed-part-select starter compile 0 PASS +sv/indexed-part-select solution interpret 0 PASS +sv/indexed-part-select solution compile 0 PASS +sv/indexed-part-select solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "f1a2b57cbe76ce8b164718ecf8fe9b09d086b6b60bb201dcce7252b652d83e37", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-u38hyza2"} +sv/nested-child-input starter interpret 0 FAIL: direct=1 nested=0 +sv/nested-child-input starter compile 0 FAIL: direct=1 nested=0 +sv/nested-child-input solution interpret 0 PASS +sv/nested-child-input solution compile 0 PASS +sv/nested-child-input solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/nested-child-input/nested_child_input.sol.sv", "sha256": "353b4404864303525e4a800307026c25dbde4a0a27faee79c3c56d319afbaa62", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-3fxuqw9e"} diff --git a/artifacts/tutorial/capability-receipts/summary.tsv b/artifacts/tutorial/capability-receipts/summary.tsv new file mode 100644 index 0000000..211e697 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/summary.tsv @@ -0,0 +1,20 @@ +sv/macro-formal-continuation starter interpret 0 FAIL: macro expansion returned 2 +sv/macro-formal-continuation starter compile 0 FAIL: macro expansion returned 2 +sv/macro-formal-continuation solution interpret 0 PASS +sv/macro-formal-continuation solution compile 0 PASS +sv/macro-formal-continuation solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv", "sha256": "70bcc182fc6b32c4e8fac7eaee06196d845ffe8aed28318e592a8887a42224fd", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-ni7anw0j"} +sv/struct-field-refs starter interpret 0 FAIL: got 00000000 +sv/struct-field-refs starter compile 0 FAIL: got 00000000 +sv/struct-field-refs solution interpret 0 PASS +sv/struct-field-refs solution compile 0 PASS +sv/struct-field-refs solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sol.sv", "sha256": "4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-_vbq7z4i"} +sv/indexed-part-select starter interpret 0 FAIL: inside=1010 partial=xx11 +sv/indexed-part-select starter compile 0 FAIL: inside=1010 partial=xx11 +sv/indexed-part-select solution interpret 0 PASS +sv/indexed-part-select solution compile 0 PASS +sv/indexed-part-select solution refdiff 1 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "e49eb0d557b2b52f482f421a1fdf295e0a61b2d8a3ae0debe9dc7ac604f00137", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "reference_only_fail", "output_equal": false, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-rzhk1mw5"} +sv/nested-child-input starter interpret 0 PASS +sv/nested-child-input starter compile 0 PASS +sv/nested-child-input solution interpret 0 PASS +sv/nested-child-input solution compile 0 PASS +sv/nested-child-input solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/nested-child-input/nested_child_input.sol.sv", "sha256": "353b4404864303525e4a800307026c25dbde4a0a27faee79c3c56d319afbaa62", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-61tngi8f"} diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.final.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.final.log new file mode 100644 index 0000000..3769f7d --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.final.log @@ -0,0 +1,42 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[8 +: 4]; + ^ +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] aot-start (0ms, total: 9ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-0fa8994e0b83e08ec157d60641ea20891f80db72f850563b21f0d27da0a07dd6/mox-run-aot-344507.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-0fa8994e0b83e08ec157d60641ea20891f80db72f850563b21f0d27da0a07dd6/mox-run-aot-a94d66.so (1 processes, 0 functions, 0 trampolines, 9.044797e-02s) +[mox-run] aot-compile (111ms, total: 120ms) +[mox-run] simulate (0ms, total: 120ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=13 accounted=13 positive=13 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:ea65bad2d713a3b01fd3864b8b77cd9376b036adcc0c52aca6f422fdb5675fd9 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 13 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-f37f0db55d0307de2e6e8c04eb1782f9) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=13, retained=13 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:84d5211e966b89fe02003b1c6833a9420ea6a995a0f874c6e814f561d66ebd14 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 13 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 13/13 rows, 28/28 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 1/1 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 2ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module +[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 2ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.log new file mode 100644 index 0000000..cd2064e --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.log @@ -0,0 +1,42 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:9:26: warning: cannot select range of [9:6] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[6 +: 4]; + ^ +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] aot-start (0ms, total: 10ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-24f590d88bd092538a4e88e07e16f8384dee994d524f25885327bcf3c8830b2b/mox-run-aot-a4c33c.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-24f590d88bd092538a4e88e07e16f8384dee994d524f25885327bcf3c8830b2b/mox-run-aot-22f141.so (1 processes, 0 functions, 0 trampolines, 9.897636e-02s) +[mox-run] aot-compile (121ms, total: 132ms) +[mox-run] simulate (0ms, total: 132ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=14 accounted=14 positive=14 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:93a62882b588d80f44a480bf536dce59fd4197020bef1fb1d92c988247cdfcb2 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 14 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-03d12dd638da1614398839b70ccf5470) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=14, retained=14 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:758a726a3c19b327cf7783a01a661e06653ceb5ef09a47793be63dd6d5101a88 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 14 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 14/14 rows, 21/21 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 1/1 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module +[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.final.log new file mode 100644 index 0000000..d54f6d8 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.final.log @@ -0,0 +1,22 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[8 +: 4]; + ^ +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module +[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 2ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv":16:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.log new file mode 100644 index 0000000..a35f2a5 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.log @@ -0,0 +1,22 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:9:26: warning: cannot select range of [9:6] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[6 +: 4]; + ^ +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module +[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv":14:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.final.txt b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.final.txt new file mode 100644 index 0000000..7f77a07 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.final.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "f1a2b57cbe76ce8b164718ecf8fe9b09d086b6b60bb201dcce7252b652d83e37", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-u38hyza2"} diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.txt b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.txt new file mode 100644 index 0000000..758b22f --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "e49eb0d557b2b52f482f421a1fdf295e0a61b2d8a3ae0debe9dc7ac604f00137", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "reference_only_fail", "output_equal": false, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-rzhk1mw5"} diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.final.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.final.log new file mode 100644 index 0000000..9015866 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.final.log @@ -0,0 +1,42 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[8 +: 4]; + ^ +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] aot-start (0ms, total: 9ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-ed76b07b12a5bccb721606d629addc6d8627c7fde586fe17393a700b01615855/mox-run-aot-87b158.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-ed76b07b12a5bccb721606d629addc6d8627c7fde586fe17393a700b01615855/mox-run-aot-d68f8b.so (1 processes, 0 functions, 0 trampolines, 8.684930e-02s) +[mox-run] aot-compile (111ms, total: 121ms) +[mox-run] simulate (0ms, total: 121ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=13 accounted=13 positive=13 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:ea65bad2d713a3b01fd3864b8b77cd9376b036adcc0c52aca6f422fdb5675fd9 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 13 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-7aa7f769b366d294cdb0421ef305a85b) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=13, retained=13 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:4fa384b78ea6bec781d2be918fe1854d0fca143852cf6f039d32253fee6aa83d status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 13 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 13/13 rows, 28/28 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 1/1 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 2ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module +[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 2ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.log new file mode 100644 index 0000000..a75010e --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.log @@ -0,0 +1,42 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv:9:26: warning: cannot select range of [9:6] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[6 +: 4]; + ^ +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] aot-start (0ms, total: 10ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-4d050bfcbb7782922e4502cdc1a1b51f5c92d9da8369cf987613a3ec431a3ebd/mox-run-aot-d99534.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-4d050bfcbb7782922e4502cdc1a1b51f5c92d9da8369cf987613a3ec431a3ebd/mox-run-aot-ee7749.so (1 processes, 0 functions, 0 trampolines, 8.819415e-02s) +[mox-run] aot-compile (111ms, total: 121ms) +[mox-run] simulate (0ms, total: 121ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=14 accounted=14 positive=14 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:93a62882b588d80f44a480bf536dce59fd4197020bef1fb1d92c988247cdfcb2 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 14 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-5313e733e3f8796dfdc33b0ad85a7b97) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=14, retained=14 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:d1bde90f038fbb25a303ed17254978867e5af4a6bd97bdcf27922fd541eeaf4d status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 14 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 14/14 rows, 21/21 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 1/1 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module +[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Starting simulation +FAIL: inside=1010 partial=xx11 +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.final.log new file mode 100644 index 0000000..cbcc196 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.final.log @@ -0,0 +1,22 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[8 +: 4]; + ^ +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module +[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv":16:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.log new file mode 100644 index 0000000..f673d1c --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.log @@ -0,0 +1,22 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv:9:26: warning: cannot select range of [9:6] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[6 +: 4]; + ^ +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] simulate (0ms, total: 10ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module +[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +FAIL: inside=1010 partial=xx11 +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv":14:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__compile.final.log b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__compile.final.log new file mode 100644 index 0000000..5703651 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__compile.final.log @@ -0,0 +1,37 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (2ms, total: 7ms) +[mox-run] aot-start (0ms, total: 8ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-2aabb623734c0f893ca01daeefbcdd40af03c9d9191be0b49f290314cb93ed3b/mox-run-aot-a37779.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-2aabb623734c0f893ca01daeefbcdd40af03c9d9191be0b49f290314cb93ed3b/mox-run-aot-b59bb3.so (1 processes, 0 functions, 0 trampolines, 6.750764e-02s) +[mox-run] aot-compile (91ms, total: 99ms) +[mox-run] simulate (0ms, total: 99ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 0 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-863ed967f39097b30ae86bcd634f36b6) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=0, retained=0 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:25ed5ecabbb2c3d2c84173c9ebdddcbca7a5115361763e7fb11b39f692e092e2 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Compiled process dispatch: 1/1 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 1ms, total: 1ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 7 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 1ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__compile.log b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__compile.log new file mode 100644 index 0000000..ee8ea7c --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__compile.log @@ -0,0 +1,37 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (2ms, total: 8ms) +[mox-run] aot-start (0ms, total: 8ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-43232f4f788822e6a0cc6cafca3cc8fb5bf325811024e83b40c04a65eff84655/mox-run-aot-437705.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-43232f4f788822e6a0cc6cafca3cc8fb5bf325811024e83b40c04a65eff84655/mox-run-aot-f18ecd.so (1 processes, 0 functions, 0 trampolines, 7.419810e-02s) +[mox-run] aot-compile (91ms, total: 99ms) +[mox-run] simulate (0ms, total: 99ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 0 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-863ed967f39097b30ae86bcd634f36b6) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=0, retained=0 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:25ed5ecabbb2c3d2c84173c9ebdddcbca7a5115361763e7fb11b39f692e092e2 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Compiled process dispatch: 1/1 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 1ms, total: 1ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 7 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 1ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__interpret.final.log new file mode 100644 index 0000000..f247dda --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__interpret.final.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (2ms, total: 7ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 7 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv":15:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__interpret.log b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__interpret.log new file mode 100644 index 0000000..2e43c99 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__interpret.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (2ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 7 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv":15:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__refdiff.final.txt b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__refdiff.final.txt new file mode 100644 index 0000000..6e8a0b6 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__refdiff.final.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv", "sha256": "70bcc182fc6b32c4e8fac7eaee06196d845ffe8aed28318e592a8887a42224fd", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-0dk6vu5z"} diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__refdiff.txt b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__refdiff.txt new file mode 100644 index 0000000..919b9d3 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__solution__refdiff.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv", "sha256": "70bcc182fc6b32c4e8fac7eaee06196d845ffe8aed28318e592a8887a42224fd", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-ni7anw0j"} diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__compile.final.log b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__compile.final.log new file mode 100644 index 0000000..21da707 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__compile.final.log @@ -0,0 +1,39 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (2ms, total: 8ms) +[mox-run] aot-start (0ms, total: 8ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-8b945020bc59b459f23d54c429846764a1be81cb415a1927fce6e1804af186e1/mox-run-aot-de7619.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-8b945020bc59b459f23d54c429846764a1be81cb415a1927fce6e1804af186e1/mox-run-aot-f2170f.so (1 processes, 0 functions, 0 trampolines, 7.307796e-02s) +[mox-run] aot-compile (91ms, total: 99ms) +[mox-run] simulate (0ms, total: 99ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:ab9e574286395b7b5204021a9099a473d5d08aff133be37f5f255f314cee1de4 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 1 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-5f2b655f8edbba1818e204f20929b546) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=1, retained=1 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:f62d2e10a3a4de3f22ff1df21b0694659335c138f00517f111d36c270f2be7c5 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 1ms) +[mox-sim] Pre-aliased 1 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 1/1 rows, 4/4 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 1/1 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 1ms, total: 2ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 11 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 2ms) +[mox-sim] Starting simulation +FAIL: macro expansion returned 2 +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__compile.log b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__compile.log new file mode 100644 index 0000000..2b83a49 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__compile.log @@ -0,0 +1,39 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] aot-start (0ms, total: 8ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-84a26e0a46cb5aa637cc0f09b9a85bb3c3620fa15fc9dd214c9389d8edaee4c2/mox-run-aot-3411ee.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-84a26e0a46cb5aa637cc0f09b9a85bb3c3620fa15fc9dd214c9389d8edaee4c2/mox-run-aot-380b3f.so (1 processes, 0 functions, 0 trampolines, 6.829462e-02s) +[mox-run] aot-compile (91ms, total: 100ms) +[mox-run] simulate (0ms, total: 100ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:ab9e574286395b7b5204021a9099a473d5d08aff133be37f5f255f314cee1de4 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 1 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-5f2b655f8edbba1818e204f20929b546) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=1, retained=1 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:f62d2e10a3a4de3f22ff1df21b0694659335c138f00517f111d36c270f2be7c5 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 1 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 1/1 rows, 4/4 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 1/1 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 1ms, total: 1ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 11 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 2ms) +[mox-sim] Starting simulation +FAIL: macro expansion returned 2 +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__interpret.final.log new file mode 100644 index 0000000..f69c096 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__interpret.final.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (2ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 11 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +FAIL: macro expansion returned 2 +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/macro-formal-continuation/macro_formal.sv":15:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__interpret.log b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__interpret.log new file mode 100644 index 0000000..dcae82a --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__macro-formal-continuation__starter__interpret.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 11 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +FAIL: macro expansion returned 2 +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/macro-formal-continuation/macro_formal.sv":15:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__compile.final.log b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__compile.final.log new file mode 100644 index 0000000..95534c4 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__compile.final.log @@ -0,0 +1,49 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (6ms, total: 13ms) +[mox-run] aot-start (0ms, total: 14ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-abe07a679af2850098cf75b5481242cb768ee3949b57f1385657809315ce9ead/mox-run-aot-9dba8f.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-abe07a679af2850098cf75b5481242cb768ee3949b57f1385657809315ce9ead/mox-run-aot-d95575.so (11 processes, 0 functions, 0 trampolines, 1.580717e-01s) +[mox-run] aot-compile (181ms, total: 195ms) +[mox-run] simulate (0ms, total: 195ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=11 accounted=11 positive=11 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:de7710f447a2b6ee6ea175ea0d8037b87b1f2050b60e1e0023221a1e9f658bbd +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=21 accounted=21 positive=21 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:f16ab3347dc0a5e6a8a891de607c8577151ea623a029ebbc6f92ce3a6bf67193 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 11 processes, 21 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-ac2bb14075b477be29b1e35f6a64d45e) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=21, retained=21 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:a4d7ed8f7d405f6b3ae212159c40a41b2ab4ab58998b633ed5c27945294d8969 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 21 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 21/21 rows, 51/51 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 11/11 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=11 accounted=11 positive=11 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:a7ad3b0c7e5ba117bf4f2b5735e40d0057798fa1056c441940ff5cefa1f5c361 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='sink.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='sink.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_2' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_2' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_3' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_4' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='wrapper.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 3ms, total: 4ms) +[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 3 hw.instance ops (out of 87 total ops) in module +[mox-sim] Registered 11 LLHD signals and 13 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 4ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 16000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 16000000 fs, iter=5, deltas=1 +[mox-sim] Simulation finished at time 16000000 fs +[mox-sim] Simulation completed at time 16000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__compile.log b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__compile.log new file mode 100644 index 0000000..866bdc0 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__compile.log @@ -0,0 +1,49 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (6ms, total: 13ms) +[mox-run] aot-start (0ms, total: 13ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-cdfaeb87c713066b1311ba49954080f5df0ceb3115c7707628b9988336ff68a0/mox-run-aot-c21d74.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-cdfaeb87c713066b1311ba49954080f5df0ceb3115c7707628b9988336ff68a0/mox-run-aot-e3410b.so (11 processes, 0 functions, 0 trampolines, 1.429030e-01s) +[mox-run] aot-compile (161ms, total: 175ms) +[mox-run] simulate (0ms, total: 175ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=11 accounted=11 positive=11 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:de7710f447a2b6ee6ea175ea0d8037b87b1f2050b60e1e0023221a1e9f658bbd +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=21 accounted=21 positive=21 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:f16ab3347dc0a5e6a8a891de607c8577151ea623a029ebbc6f92ce3a6bf67193 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 11 processes, 21 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-ac2bb14075b477be29b1e35f6a64d45e) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=21, retained=21 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:a4d7ed8f7d405f6b3ae212159c40a41b2ab4ab58998b633ed5c27945294d8969 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 21 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 21/21 rows, 51/51 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 11/11 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=11 accounted=11 positive=11 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:a7ad3b0c7e5ba117bf4f2b5735e40d0057798fa1056c441940ff5cefa1f5c361 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='sink.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='sink.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_2' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_2' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_3' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_4' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='wrapper.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 3ms, total: 4ms) +[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 3 hw.instance ops (out of 87 total ops) in module +[mox-sim] Registered 11 LLHD signals and 13 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 4ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 16000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 16000000 fs, iter=5, deltas=1 +[mox-sim] Simulation finished at time 16000000 fs +[mox-sim] Simulation completed at time 16000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__interpret.final.log new file mode 100644 index 0000000..cf9abbf --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__interpret.final.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (6ms, total: 13ms) +[mox-run] simulate (1ms, total: 14ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 3 hw.instance ops (out of 87 total ops) in module +[mox-sim] Registered 11 LLHD signals and 13 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 2ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 13 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/nested-child-input/nested_child_input.sol.sv":33:5 to :13) +[mox-sim] Simulation terminated at time 16000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 16000000 fs, iter=5, deltas=1 +[mox-sim] Simulation finished at time 16000000 fs +[mox-sim] Simulation completed at time 16000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__interpret.log b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__interpret.log new file mode 100644 index 0000000..3d36a2d --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__interpret.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (6ms, total: 13ms) +[mox-run] simulate (0ms, total: 14ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 3 hw.instance ops (out of 87 total ops) in module +[mox-sim] Registered 11 LLHD signals and 13 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 2ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 13 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/nested-child-input/nested_child_input.sol.sv":33:5 to :13) +[mox-sim] Simulation terminated at time 16000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 16000000 fs, iter=5, deltas=1 +[mox-sim] Simulation finished at time 16000000 fs +[mox-sim] Simulation completed at time 16000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__refdiff.final.txt b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__refdiff.final.txt new file mode 100644 index 0000000..3a5cb4e --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__refdiff.final.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/nested-child-input/nested_child_input.sol.sv", "sha256": "353b4404864303525e4a800307026c25dbde4a0a27faee79c3c56d319afbaa62", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-3fxuqw9e"} diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__refdiff.txt b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__refdiff.txt new file mode 100644 index 0000000..0f9d58f --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__solution__refdiff.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/nested-child-input/nested_child_input.sol.sv", "sha256": "353b4404864303525e4a800307026c25dbde4a0a27faee79c3c56d319afbaa62", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-61tngi8f"} diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__compile.final.log b/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__compile.final.log new file mode 100644 index 0000000..0c501c6 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__compile.final.log @@ -0,0 +1,50 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (6ms, total: 13ms) +[mox-run] aot-start (0ms, total: 13ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-c7471c0478f9c43c4ffa96444d7b17b9b0b7ef40ca3246514c91a2077fd07894/mox-run-aot-3a1fd9.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-c7471c0478f9c43c4ffa96444d7b17b9b0b7ef40ca3246514c91a2077fd07894/mox-run-aot-5f5d86.so (12 processes, 0 functions, 0 trampolines, 1.307399e-01s) +[mox-run] aot-compile (151ms, total: 165ms) +[mox-run] simulate (0ms, total: 165ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=12 accounted=12 positive=12 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:b49357121d2a7397185be420dd861f3f521cd0da2ebe6ca62288cfd4c2f4fd26 +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=23 accounted=23 positive=23 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:9bb1384a388bab665a273a9ffe17639f480502468ee349c1c54f8d40923dea1a +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 12 processes, 23 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-3d1eefae9548db61d2783ab338afb578) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=23, retained=23 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:b56c89a080906261b76980ef8258933a23d48d3e5b9867b5c9ae457833596fc5 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 23 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 23/23 rows, 55/55 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 12/12 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=12 accounted=12 positive=12 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:2603c51b6fa88f1c8aa42fd11a803edfb71c92ffefddd05fd16a4e1ef6646373 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='sink.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='sink.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_2' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_2' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_3' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_4' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='wrapper.cont_assign_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='wrapper.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 4ms, total: 5ms) +[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 3 hw.instance ops (out of 87 total ops) in module +[mox-sim] Registered 11 LLHD signals and 14 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 5ms) +[mox-sim] Starting simulation +FAIL: direct=1 nested=0 +[mox-sim] Simulation terminated at time 16000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 16000000 fs, iter=5, deltas=1 +[mox-sim] Simulation finished at time 16000000 fs +[mox-sim] Simulation completed at time 16000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__compile.log b/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__compile.log new file mode 100644 index 0000000..aec84bd --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__compile.log @@ -0,0 +1,49 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (6ms, total: 12ms) +[mox-run] aot-start (0ms, total: 13ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-64114c20b8843d4fe6d66a4a087254d99ddcc81a2de194b3a1eb417a81af690c/mox-run-aot-428fc1.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-64114c20b8843d4fe6d66a4a087254d99ddcc81a2de194b3a1eb417a81af690c/mox-run-aot-16d44f.so (11 processes, 0 functions, 0 trampolines, 1.299695e-01s) +[mox-run] aot-compile (151ms, total: 165ms) +[mox-run] simulate (0ms, total: 165ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=11 accounted=11 positive=11 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:de7710f447a2b6ee6ea175ea0d8037b87b1f2050b60e1e0023221a1e9f658bbd +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=21 accounted=21 positive=21 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:f16ab3347dc0a5e6a8a891de607c8577151ea623a029ebbc6f92ce3a6bf67193 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 11 processes, 21 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-ab054ea05d236dbc6fd928865ee1cb68) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=21, retained=21 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:b3157044c73b18dbb14d0cd0ab51b5b3af7d889622b0b164f188a5cc1707ba74 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 21 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 21/21 rows, 51/51 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 11/11 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=11 accounted=11 positive=11 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:a7ad3b0c7e5ba117bf4f2b5735e40d0057798fa1056c441940ff5cefa1f5c361 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='sink.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='sink.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='source.process_2' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_2' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_3' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_4' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='wrapper.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 3ms, total: 4ms) +[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 3 hw.instance ops (out of 87 total ops) in module +[mox-sim] Registered 11 LLHD signals and 13 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 4ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 16000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 16000000 fs, iter=5, deltas=1 +[mox-sim] Simulation finished at time 16000000 fs +[mox-sim] Simulation completed at time 16000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__interpret.final.log new file mode 100644 index 0000000..7ef21bc --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__interpret.final.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (6ms, total: 13ms) +[mox-run] simulate (0ms, total: 14ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 3 hw.instance ops (out of 87 total ops) in module +[mox-sim] Registered 11 LLHD signals and 13 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Starting simulation +FAIL: direct=1 nested=0 +[mox-sim] sim.terminate triggered in process ID 13 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/nested-child-input/nested_child_input.sv":33:5 to :13) +[mox-sim] Simulation terminated at time 16000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 16000000 fs, iter=5, deltas=1 +[mox-sim] Simulation finished at time 16000000 fs +[mox-sim] Simulation completed at time 16000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__interpret.log b/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__interpret.log new file mode 100644 index 0000000..348d666 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__nested-child-input__starter__interpret.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (7ms, total: 14ms) +[mox-run] simulate (0ms, total: 15ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 3 hw.instance ops (out of 87 total ops) in module +[mox-sim] Registered 11 LLHD signals and 13 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 13 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/nested-child-input/nested_child_input.sv":33:5 to :13) +[mox-sim] Simulation terminated at time 16000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 16000000 fs, iter=5, deltas=1 +[mox-sim] Simulation finished at time 16000000 fs +[mox-sim] Simulation completed at time 16000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__compile.final.log b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__compile.final.log new file mode 100644 index 0000000..44003cc --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__compile.final.log @@ -0,0 +1,40 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (4ms, total: 10ms) +[mox-run] aot-start (0ms, total: 11ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-2a6fb4394c21f3b49a6a16cbee096fc832e3b0198217ff51477b48b96d3550f2/mox-run-aot-32d53f.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-2a6fb4394c21f3b49a6a16cbee096fc832e3b0198217ff51477b48b96d3550f2/mox-run-aot-564b5b.so (2 processes, 0 functions, 0 trampolines, 9.229096e-02s) +[mox-run] aot-compile (111ms, total: 123ms) +[mox-run] simulate (0ms, total: 123ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=2 accounted=2 positive=2 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:fd51e12de922533cec5b8880f525df50f400a37d3f65c1b0bac1c334836b0e1d +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=10 accounted=10 positive=10 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:9b669856506c990526a5cdb3b68be2689f020604bf86b98cbd21c1a1c5509f38 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 2 processes, 10 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-4c18037505e0f170876dabb3dfe0432b) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=10, retained=10 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:83fdb4b47bdb5887a99cb4f3486a15a395df429bd4e02db66acb072e3a38cf0a status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 10 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 10/10 rows, 97/97 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 2/2 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=2 accounted=2 positive=2 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:d2daf68d26cab1f7c8471e13cebe182c3a2cbeddc5540194a5d10f90a34ecefa +[mox-sim] aot-publication/v2 domain=process-dispatch identity='field_driver.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 2ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 51 total ops) in module +[mox-sim] Registered 4 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 2ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__compile.log b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__compile.log new file mode 100644 index 0000000..e460885 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__compile.log @@ -0,0 +1,40 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (5ms, total: 11ms) +[mox-run] aot-start (0ms, total: 12ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-1a3cbf58ccf36cea11761b17d43bbab1bcd94703b5b12d897771a2df05a925fc/mox-run-aot-529651.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-1a3cbf58ccf36cea11761b17d43bbab1bcd94703b5b12d897771a2df05a925fc/mox-run-aot-fae35c.so (2 processes, 0 functions, 0 trampolines, 1.014258e-01s) +[mox-run] aot-compile (121ms, total: 133ms) +[mox-run] simulate (0ms, total: 133ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=2 accounted=2 positive=2 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:fd51e12de922533cec5b8880f525df50f400a37d3f65c1b0bac1c334836b0e1d +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=10 accounted=10 positive=10 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:9b669856506c990526a5cdb3b68be2689f020604bf86b98cbd21c1a1c5509f38 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 2 processes, 10 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-4c18037505e0f170876dabb3dfe0432b) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=10, retained=10 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:83fdb4b47bdb5887a99cb4f3486a15a395df429bd4e02db66acb072e3a38cf0a status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 10 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 10/10 rows, 97/97 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 2/2 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=2 accounted=2 positive=2 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:d2daf68d26cab1f7c8471e13cebe182c3a2cbeddc5540194a5d10f90a34ecefa +[mox-sim] aot-publication/v2 domain=process-dispatch identity='field_driver.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 51 total ops) in module +[mox-sim] Registered 4 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__interpret.final.log new file mode 100644 index 0000000..1d8bfa5 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__interpret.final.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (4ms, total: 10ms) +[mox-run] simulate (0ms, total: 11ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 51 total ops) in module +[mox-sim] Registered 4 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 2 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sol.sv":23:5 to :13) +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__interpret.log b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__interpret.log new file mode 100644 index 0000000..a56f51e --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__interpret.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (5ms, total: 12ms) +[mox-run] simulate (0ms, total: 12ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 51 total ops) in module +[mox-sim] Registered 4 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +PASS +[mox-sim] sim.terminate triggered in process ID 2 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sol.sv":23:5 to :13) +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__refdiff.final.txt b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__refdiff.final.txt new file mode 100644 index 0000000..1ef80c3 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__refdiff.final.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sol.sv", "sha256": "4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-e9za9q_5"} diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__refdiff.txt b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__refdiff.txt new file mode 100644 index 0000000..0c1819b --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__solution__refdiff.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sol.sv", "sha256": "4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-_vbq7z4i"} diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__compile.final.log b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__compile.final.log new file mode 100644 index 0000000..4e4ac2d --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__compile.final.log @@ -0,0 +1,40 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (4ms, total: 11ms) +[mox-run] aot-start (0ms, total: 11ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-5533376a1ee8579bcd186a8b0992c2b2c45e01555a3e1594b5dbfc9ddc9b8721/mox-run-aot-d6db1d.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-5533376a1ee8579bcd186a8b0992c2b2c45e01555a3e1594b5dbfc9ddc9b8721/mox-run-aot-dd0358.so (2 processes, 0 functions, 0 trampolines, 9.340216e-02s) +[mox-run] aot-compile (111ms, total: 123ms) +[mox-run] simulate (0ms, total: 123ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=2 accounted=2 positive=2 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:fd51e12de922533cec5b8880f525df50f400a37d3f65c1b0bac1c334836b0e1d +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=10 accounted=10 positive=10 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:9b669856506c990526a5cdb3b68be2689f020604bf86b98cbd21c1a1c5509f38 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 2 processes, 10 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-e89687186869b9da9ab9386322e33d2c) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=10, retained=10 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:9d0128ba9f9d4bced70c070ba5490d8fec0f706c45f5b1dd372bb8cbab92bcf2 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 10 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 10/10 rows, 97/97 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 2/2 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=2 accounted=2 positive=2 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:d2daf68d26cab1f7c8471e13cebe182c3a2cbeddc5540194a5d10f90a34ecefa +[mox-sim] aot-publication/v2 domain=process-dispatch identity='field_driver.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 2ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 51 total ops) in module +[mox-sim] Registered 4 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 2ms) +[mox-sim] Starting simulation +FAIL: got 00000000 +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__compile.log b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__compile.log new file mode 100644 index 0000000..3a1b7b2 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__compile.log @@ -0,0 +1,40 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (5ms, total: 11ms) +[mox-run] aot-start (1ms, total: 13ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-f6efce36ac2db4734f5e6df4362ca5d9f30e6303ee397ec24b6964fd5bc5bb59/mox-run-aot-aa5f00.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-f6efce36ac2db4734f5e6df4362ca5d9f30e6303ee397ec24b6964fd5bc5bb59/mox-run-aot-149f49.so (2 processes, 0 functions, 0 trampolines, 1.063445e-01s) +[mox-run] aot-compile (132ms, total: 145ms) +[mox-run] simulate (0ms, total: 145ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=2 accounted=2 positive=2 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:fd51e12de922533cec5b8880f525df50f400a37d3f65c1b0bac1c334836b0e1d +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=10 accounted=10 positive=10 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:9b669856506c990526a5cdb3b68be2689f020604bf86b98cbd21c1a1c5509f38 +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 2 processes, 10 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-e89687186869b9da9ab9386322e33d2c) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=10, retained=10 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:9d0128ba9f9d4bced70c070ba5490d8fec0f706c45f5b1dd372bb8cbab92bcf2 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 10 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 10/10 rows, 97/97 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 2/2 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=2 accounted=2 positive=2 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:d2daf68d26cab1f7c8471e13cebe182c3a2cbeddc5540194a5d10f90a34ecefa +[mox-sim] aot-publication/v2 domain=process-dispatch identity='field_driver.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 51 total ops) in module +[mox-sim] Registered 4 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Starting simulation +FAIL: got 00000000 +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__interpret.final.log new file mode 100644 index 0000000..f816f0e --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__interpret.final.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (4ms, total: 11ms) +[mox-run] simulate (0ms, total: 11ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 51 total ops) in module +[mox-sim] Registered 4 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] Starting simulation +FAIL: got 00000000 +[mox-sim] sim.terminate triggered in process ID 2 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sv":23:5 to :13) +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__interpret.log b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__interpret.log new file mode 100644 index 0000000..a423efe --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__struct-field-refs__starter__interpret.log @@ -0,0 +1,19 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (4ms, total: 11ms) +[mox-run] simulate (0ms, total: 12ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 51 total ops) in module +[mox-sim] Registered 4 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 1ms, total: 2ms) +[mox-sim] Starting simulation +FAIL: got 00000000 +[mox-sim] sim.terminate triggered in process ID 2 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sv":23:5 to :13) +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/content-census.md b/artifacts/tutorial/content-census.md index c6d343b..7335184 100644 --- a/artifacts/tutorial/content-census.md +++ b/artifacts/tutorial/content-census.md @@ -9,6 +9,21 @@ through `/var/tmp/thomas-ahle/fleet/bin/refdiff`; examples are bounded to 30 s and CPU affinity `0-79`. The browser cannot prove current native behaviour because the checked-in WASM predates the landing tip. +## New landed-capability chapters + +These four short chapters correspond to capabilities present on Mox `origin/main` +(`bcdf57717c1`) by September 30, 2026. They deliberately exclude the later +landing-only UDP change at `36b040f6190`. Every solution passes Mox in both +interpreter and compile mode and passes Xcelium through `refdiff`; every starter +prints a failing check. + +| Lesson | Landed capability / Mox evidence | IEEE claim | Mox interpreter | Mox compile | Xcelium/refdiff | Fix | +|---|---|---|---|---|---|---| +| `sv/macro-formal-continuation` | `bcdf57717c1`, `test/Conversion/ImportVerilog/macro-formal-continuation.sv` | §22.5.1: backslash-newline continues macro text; formal arguments and token pasting are substituted before compilation. | solution PASS; starter FAIL | solution PASS; starter FAIL | both PASS, output equal | added runnable macro exercise | +| `sv/struct-field-refs` | `0585a62233b`, `test/mox-verilog/struct-extract-ref-module-level.sv` | §7.2.1: packed structs are vectors with named members; members can be selected by name. | solution PASS; starter FAIL | solution PASS; starter FAIL | both PASS, output equal | added module-level packed-struct field exercise | +| `sv/indexed-part-select` | `5a49d2b68cf`, `test/Tools/mox-sim/dyn-extract-unsigned-partial-runtime.sv` | §11.5.1: indexed part-select width is constant, base may vary, and a wholly out-of-range read is `x`. | solution PASS; starter FAIL | solution PASS; starter FAIL | both PASS, output equal | uses a variable in-range base and unambiguous wholly out-of-range read | +| `sv/nested-child-input` | `5fdce05081e`, `test/Tools/mox-sim/nested-child-input-propagation-runtime.sv` | §§23.2.2, 9.4.2: child inputs are connected expressions and clocked procedures sample them on edges. | solution PASS; starter FAIL | solution PASS; starter FAIL | both PASS, output equal | added direct and nested sink propagation exercise | + This census covers every lesson in `src/lessons/` (meta.js, 73 lessons) and CURRICULUM.md, checked against IEEE 1800-2023 (`spec/ieee-1800-2023.txt`) and IEEE 1800.2-2020 (UVM). diff --git a/artifacts/tutorial/receipts/sv__always-comb__interpret.json b/artifacts/tutorial/receipts/sv__always-comb__interpret.json new file mode 100644 index 0000000..a463b72 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__always-comb__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sv/always-comb", + "title": "always_comb and case", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/always-comb/mux.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/always-comb/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.048, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 149 total ops) in module", + "[mox-sim] Registered 15 LLHD signals and 3 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "sel=0 \u2192 y=aa (expect aa)", + "sel=1 \u2192 y=bb (expect bb)", + "sel=2 \u2192 y=cc (expect cc)" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__always-comb__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__always-comb__interpret.log b/artifacts/tutorial/receipts/sv__always-comb__interpret.log new file mode 100644 index 0000000..c2ed701 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__always-comb__interpret.log @@ -0,0 +1,20 @@ +Using module 'tb' as top module +[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 149 total ops) in module +[mox-sim] Registered 15 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +sel=0 → y=aa (expect aa) +sel=1 → y=bb (expect bb) +sel=2 → y=cc (expect cc) +sel=3 → y=dd (expect dd) +PASS +[mox-sim] Simulation completed at time 4000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (7ms, total: 14ms) +[mox-run] simulate (0ms, total: 15ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sv__always-ff__interpret.json b/artifacts/tutorial/receipts/sv__always-ff__interpret.json new file mode 100644 index 0000000..7cb123d --- /dev/null +++ b/artifacts/tutorial/receipts/sv__always-ff__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sv/always-ff", + "title": "Flip-Flops with always_ff", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/always-ff/sram_core.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/always-ff/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.049, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 189 total ops) in module", + "[mox-sim] Registered 13 LLHD signals and 4 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "PASS mem[2] = 42", + "PASS mem[7] = 99", + "PASS mem[0] = 13" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__always-ff__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__always-ff__interpret.log b/artifacts/tutorial/receipts/sv__always-ff__interpret.log new file mode 100644 index 0000000..29f766e --- /dev/null +++ b/artifacts/tutorial/receipts/sv__always-ff__interpret.log @@ -0,0 +1,23 @@ +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 189 total ops) in module +[mox-sim] Registered 13 LLHD signals and 4 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +PASS mem[2] = 42 +PASS mem[7] = 99 +PASS mem[0] = 13 +PASS +[mox-sim] Simulation finished at time 56000000 fs +[mox-sim] Simulation completed at time 56000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (8ms, total: 8ms) +[mox-run] lower (8ms, total: 16ms) +[mox-run] simulate (0ms, total: 17ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] sim.terminate triggered in process ID 4 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/always-ff/tb.sv":59:5 to :13) +[mox-sim] Simulation terminated at time 56000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 56000000 fs, iter=18, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__classes__interpret.json b/artifacts/tutorial/receipts/sv__classes__interpret.json new file mode 100644 index 0000000..233b69d --- /dev/null +++ b/artifacts/tutorial/receipts/sv__classes__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/classes", + "title": "Classes and Objects", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "mem_item_tb", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/classes/mem_item.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.043, + "first_lines": [ + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 176 total ops) in module", + "[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "t1: WR[5]=a5", + "t2: RD[3]", + "PASS", + "[mox-sim] Simulation completed at time 0 fs" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__classes__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__classes__interpret.log b/artifacts/tutorial/receipts/sv__classes__interpret.log new file mode 100644 index 0000000..c32cf59 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__classes__interpret.log @@ -0,0 +1,17 @@ +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 176 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +t1: WR[5]=a5 +t2: RD[3] +PASS +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (7ms, total: 15ms) +[mox-run] simulate (0ms, total: 15ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sv__counter__interpret.json b/artifacts/tutorial/receipts/sv__counter__interpret.json new file mode 100644 index 0000000..61db6b5 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__counter__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sv/counter", + "title": "Up-Counter", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/counter/counter.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/counter/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.048, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 234 total ops) in module", + "[mox-sim] Registered 11 LLHD signals and 4 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "PASS rst_n=0 holds count=0: count=0", + "PASS counted 4: count=4 (expect 4)", + "PASS en=0 freezes count: count=4 (expect 4)" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__counter__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__counter__interpret.log b/artifacts/tutorial/receipts/sv__counter__interpret.log new file mode 100644 index 0000000..bd4780c --- /dev/null +++ b/artifacts/tutorial/receipts/sv__counter__interpret.log @@ -0,0 +1,24 @@ +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 234 total ops) in module +[mox-sim] Registered 11 LLHD signals and 4 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +PASS rst_n=0 holds count=0: count=0 +PASS counted 4: count=4 (expect 4) +PASS en=0 freezes count: count=4 (expect 4) +PASS sync reset clears to 0: count=0 +PASS +[mox-sim] Simulation finished at time 106000000 fs +[mox-sim] Simulation completed at time 106000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (8ms, total: 8ms) +[mox-run] lower (10ms, total: 18ms) +[mox-run] simulate (0ms, total: 19ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] sim.terminate triggered in process ID 4 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/counter/tb.sv":42:5 to :13) +[mox-sim] Simulation terminated at time 106000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 106000000 fs, iter=26, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__covergroup-basics__interpret.json b/artifacts/tutorial/receipts/sv__covergroup-basics__interpret.json new file mode 100644 index 0000000..c2263de --- /dev/null +++ b/artifacts/tutorial/receipts/sv__covergroup-basics__interpret.json @@ -0,0 +1,37 @@ +{ + "slug": "sv/covergroup-basics", + "title": "covergroup and coverpoint", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "cov_intro", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/covergroup-basics/cov_intro.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/covergroup-basics/sram.sv" + ], + "exit": 0, + "elapsed_s": 0.046, + "first_lines": [ + "[mox-sim] Found 4 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 150 total ops) in module", + "[mox-sim] Registered 12 LLHD signals and 5 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "PASS", + "[mox-sim] Simulation finished at time 196000000 fs", + "[mox-sim] Simulation completed at time 196000000 fs", + "[mox-sim] Simulation completed" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__covergroup-basics__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__covergroup-basics__interpret.log b/artifacts/tutorial/receipts/sv__covergroup-basics__interpret.log new file mode 100644 index 0000000..99edf85 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__covergroup-basics__interpret.log @@ -0,0 +1,19 @@ +[mox-sim] Found 4 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 150 total ops) in module +[mox-sim] Registered 12 LLHD signals and 5 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation finished at time 196000000 fs +[mox-sim] Simulation completed at time 196000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (7ms, total: 14ms) +[mox-run] simulate (0ms, total: 15ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] sim.terminate triggered in process ID 5 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/covergroup-basics/cov_intro.sol.sv":26:8 to :16) +[mox-sim] Simulation terminated at time 196000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 196000000 fs, iter=41, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__coverpoint-bins__interpret.json b/artifacts/tutorial/receipts/sv__coverpoint-bins__interpret.json new file mode 100644 index 0000000..281cb1a --- /dev/null +++ b/artifacts/tutorial/receipts/sv__coverpoint-bins__interpret.json @@ -0,0 +1,37 @@ +{ + "slug": "sv/coverpoint-bins", + "title": "Bins and ignore_bins", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "cov_bins", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/coverpoint-bins/cov_bins.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/coverpoint-bins/sram.sv" + ], + "exit": 0, + "elapsed_s": 0.05, + "first_lines": [ + "[mox-sim] Found 4 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 150 total ops) in module", + "[mox-sim] Registered 12 LLHD signals and 5 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "PASS", + "[mox-sim] Simulation finished at time 316000000 fs", + "[mox-sim] Simulation completed at time 316000000 fs", + "[mox-sim] Simulation completed" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__coverpoint-bins__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__coverpoint-bins__interpret.log b/artifacts/tutorial/receipts/sv__coverpoint-bins__interpret.log new file mode 100644 index 0000000..a050c16 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__coverpoint-bins__interpret.log @@ -0,0 +1,19 @@ +[mox-sim] Found 4 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 150 total ops) in module +[mox-sim] Registered 12 LLHD signals and 5 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation finished at time 316000000 fs +[mox-sim] Simulation completed at time 316000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (7ms, total: 15ms) +[mox-run] simulate (0ms, total: 16ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 2ms) +[mox-sim] sim.terminate triggered in process ID 5 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/coverpoint-bins/cov_bins.sol.sv":32:8 to :16) +[mox-sim] Simulation terminated at time 316000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 316000000 fs, iter=65, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__cross-coverage__interpret.json b/artifacts/tutorial/receipts/sv__cross-coverage__interpret.json new file mode 100644 index 0000000..2b74089 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__cross-coverage__interpret.json @@ -0,0 +1,37 @@ +{ + "slug": "sv/cross-coverage", + "title": "Cross coverage", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "cov_cross", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/cross-coverage/cov_cross.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/cross-coverage/sram.sv" + ], + "exit": 0, + "elapsed_s": 0.06, + "first_lines": [ + "[mox-sim] Found 4 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 150 total ops) in module", + "[mox-sim] Registered 12 LLHD signals and 5 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "PASS", + "[mox-sim] Simulation finished at time 636000000 fs", + "[mox-sim] Simulation completed at time 636000000 fs", + "[mox-sim] Simulation completed" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__cross-coverage__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__cross-coverage__interpret.log b/artifacts/tutorial/receipts/sv__cross-coverage__interpret.log new file mode 100644 index 0000000..23c57f9 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__cross-coverage__interpret.log @@ -0,0 +1,19 @@ +[mox-sim] Found 4 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 150 total ops) in module +[mox-sim] Registered 12 LLHD signals and 5 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation finished at time 636000000 fs +[mox-sim] Simulation completed at time 636000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (7ms, total: 15ms) +[mox-run] simulate (0ms, total: 16ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] sim.terminate triggered in process ID 5 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/cross-coverage/cov_cross.sol.sv":33:8 to :16) +[mox-sim] Simulation terminated at time 636000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 636000000 fs, iter=129, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__data-types__interpret.json b/artifacts/tutorial/receipts/sv__data-types__interpret.json new file mode 100644 index 0000000..d60b381 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__data-types__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/data-types", + "title": "Data Types", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "top", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/data-types/data_types.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.046, + "first_lines": [ + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 77 total ops) in module", + "[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "count = -100 OK", + "data = X OK", + "mem[] = {AB,12} OK", + "PASS" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__data-types__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__data-types__interpret.log b/artifacts/tutorial/receipts/sv__data-types__interpret.log new file mode 100644 index 0000000..cbd5948 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__data-types__interpret.log @@ -0,0 +1,22 @@ +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 77 total ops) in module +[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +count = -100 OK +data = X OK +mem[] = {AB,12} OK +PASS +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (9ms, total: 9ms) +[mox-run] lower (6ms, total: 15ms) +[mox-run] simulate (0ms, total: 16ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/data-types/data_types.sol.sv":35:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__enums__interpret.json b/artifacts/tutorial/receipts/sv__enums__interpret.json new file mode 100644 index 0000000..edd0b30 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__enums__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sv/enums", + "title": "typedef enum", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/enums/status.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/enums/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.045, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 291 total ops) in module", + "[mox-sim] Registered 10 LLHD signals and 4 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "PASS IDLE: reading=0 writing=0", + "PASS READ: reading=1 writing=0", + "PASS WRITE: reading=0 writing=1" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__enums__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__enums__interpret.log b/artifacts/tutorial/receipts/sv__enums__interpret.log new file mode 100644 index 0000000..0c28b84 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__enums__interpret.log @@ -0,0 +1,24 @@ +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 291 total ops) in module +[mox-sim] Registered 10 LLHD signals and 4 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +PASS IDLE: reading=0 writing=0 +PASS READ: reading=1 writing=0 +PASS WRITE: reading=0 writing=1 +PASS CMD: reading=0 writing=0 +PASS +[mox-sim] Simulation finished at time 4000000 fs +[mox-sim] Simulation completed at time 4000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (10ms, total: 18ms) +[mox-run] simulate (0ms, total: 18ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] sim.terminate triggered in process ID 4 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/enums/tb.sv":31:5 to :13) +[mox-sim] Simulation terminated at time 4000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 4000000 fs, iter=5, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__events__interpret.json b/artifacts/tutorial/receipts/sv__events__interpret.json new file mode 100644 index 0000000..0004e2e --- /dev/null +++ b/artifacts/tutorial/receipts/sv__events__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/events", + "title": "Events", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "event_sync", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/events/event_sync.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.041, + "first_lines": [ + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 134 total ops) in module", + "[mox-sim] Registered 6 LLHD signals and 3 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "writer: stored 10 20 30 40", + "reader: 0 error(s)", + "PASS", + "[mox-sim] Simulation finished at time 10000000 fs" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__events__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__events__interpret.log b/artifacts/tutorial/receipts/sv__events__interpret.log new file mode 100644 index 0000000..53f14db --- /dev/null +++ b/artifacts/tutorial/receipts/sv__events__interpret.log @@ -0,0 +1,21 @@ +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 134 total ops) in module +[mox-sim] Registered 6 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +writer: stored 10 20 30 40 +reader: 0 error(s) +PASS +[mox-sim] Simulation finished at time 10000000 fs +[mox-sim] Simulation completed at time 10000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (6ms, total: 12ms) +[mox-run] simulate (0ms, total: 13ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] sim.terminate triggered in process ID 3 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/events/event_sync.sol.sv":29:5 to :13) +[mox-sim] Simulation terminated at time 10000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 10000000 fs, iter=2, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__fork-join__interpret.json b/artifacts/tutorial/receipts/sv__fork-join__interpret.json new file mode 100644 index 0000000..098c7f2 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__fork-join__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/fork-join", + "title": "Concurrent Processes: fork...join", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "concurrent_tb", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/fork-join/concurrent.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.038, + "first_lines": [ + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 91 total ops) in module", + "[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "--- fork...join ---", + "[10 ns] thread B (10 ns)", + "[20 ns] thread C (20 ns)", + "[30 ns] thread A (30 ns)" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__fork-join__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__fork-join__interpret.log b/artifacts/tutorial/receipts/sv__fork-join__interpret.log new file mode 100644 index 0000000..102b725 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__fork-join__interpret.log @@ -0,0 +1,28 @@ +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 91 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +--- fork...join --- +[10 ns] thread B (10 ns) +[20 ns] thread C (20 ns) +[30 ns] thread A (30 ns) +all done at 30 ns +--- fork...join_any --- +[40 ns] thread B (10 ns) +first done at 40 ns +--- fork...join_none --- +parent continues at 40 ns +[50 ns] thread C (20 ns) +[60 ns] thread A (30 ns) +[60 ns] background (20 ns) +PASS +[mox-sim] Simulation completed at time 90000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (6ms, total: 11ms) +[mox-run] simulate (0ms, total: 12ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sv__fsm__interpret.json b/artifacts/tutorial/receipts/sv__fsm__interpret.json new file mode 100644 index 0000000..3cc094a --- /dev/null +++ b/artifacts/tutorial/receipts/sv__fsm__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/fsm", + "title": "Two-Always Moore FSM", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/fsm/mem_ctrl.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/fsm/sram.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/fsm/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.047, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 2 hw.instance ops (out of 183 total ops) in module", + "[mox-sim] Registered 23 LLHD signals and 9 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "IDLE: ready=1 (expect 1)", + "WRITE: sram_we=1 (expect 1)", + "IDLE: ready=1 (expect 1)" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__fsm__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__fsm__interpret.log b/artifacts/tutorial/receipts/sv__fsm__interpret.log new file mode 100644 index 0000000..48396ea --- /dev/null +++ b/artifacts/tutorial/receipts/sv__fsm__interpret.log @@ -0,0 +1,24 @@ +Using module 'tb' as top module +[mox-sim] Found 5 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 2 hw.instance ops (out of 183 total ops) in module +[mox-sim] Registered 23 LLHD signals and 9 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +IDLE: ready=1 (expect 1) +WRITE: sram_we=1 (expect 1) +IDLE: ready=1 (expect 1) +READ: sram_we=0 (expect 0) +PASS +[mox-sim] Simulation finished at time 36000000 fs +[mox-sim] Simulation completed at time 36000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (10ms, total: 10ms) +[mox-run] lower (9ms, total: 19ms) +[mox-run] simulate (0ms, total: 20ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 2ms) +[mox-sim] sim.terminate triggered in process ID 9 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/fsm/tb.sv":53:5 to :13) +[mox-sim] Simulation terminated at time 36000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 36000000 fs, iter=12, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__interfaces__interpret.json b/artifacts/tutorial/receipts/sv__interfaces__interpret.json new file mode 100644 index 0000000..c79bda6 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__interfaces__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/interfaces", + "title": "Interfaces", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/interfaces/mem_if.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/interfaces/sram.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/interfaces/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.048, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 226 total ops) in module", + "[mox-sim] Registered 5 LLHD signals and 4 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "wrote: we=1 addr=4 wdata=58 rdata=x", + "read: we=0 addr=4 wdata=58 rdata=58", + "wrote: we=1 addr=b wdata=c8 rdata=x" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__interfaces__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__interfaces__interpret.log b/artifacts/tutorial/receipts/sv__interfaces__interpret.log new file mode 100644 index 0000000..f4e9def --- /dev/null +++ b/artifacts/tutorial/receipts/sv__interfaces__interpret.log @@ -0,0 +1,24 @@ +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 226 total ops) in module +[mox-sim] Registered 5 LLHD signals and 4 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +wrote: we=1 addr=4 wdata=58 rdata=x +read: we=0 addr=4 wdata=58 rdata=58 +wrote: we=1 addr=b wdata=c8 rdata=x +read: we=0 addr=b wdata=c8 rdata=c8 +PASS +[mox-sim] Simulation finished at time 36000000 fs +[mox-sim] Simulation completed at time 36000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (8ms, total: 8ms) +[mox-run] lower (9ms, total: 18ms) +[mox-run] simulate (0ms, total: 19ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] sim.terminate triggered in process ID 4 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/interfaces/tb.sv":35:5 to :13) +[mox-sim] Simulation terminated at time 36000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 36000000 fs, iter=12, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__modports__interpret.json b/artifacts/tutorial/receipts/sv__modports__interpret.json new file mode 100644 index 0000000..30c692e --- /dev/null +++ b/artifacts/tutorial/receipts/sv__modports__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/modports", + "title": "Modports", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/modports/mem_if.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/modports/sram.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/modports/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.045, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 227 total ops) in module", + "[mox-sim] Registered 5 LLHD signals and 4 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "mem[4] = 88 (expect 88)", + "mem[11] = 200 (expect 200)", + "PASS" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__modports__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__modports__interpret.log b/artifacts/tutorial/receipts/sv__modports__interpret.log new file mode 100644 index 0000000..5f19324 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__modports__interpret.log @@ -0,0 +1,22 @@ +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 227 total ops) in module +[mox-sim] Registered 5 LLHD signals and 4 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +mem[4] = 88 (expect 88) +mem[11] = 200 (expect 200) +PASS +[mox-sim] Simulation finished at time 36000000 fs +[mox-sim] Simulation completed at time 36000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (9ms, total: 17ms) +[mox-run] simulate (0ms, total: 17ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] sim.terminate triggered in process ID 4 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/modports/tb.sv":26:5 to :13) +[mox-sim] Simulation terminated at time 36000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 36000000 fs, iter=12, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__modules-and-ports__interpret.json b/artifacts/tutorial/receipts/sv__modules-and-ports__interpret.json new file mode 100644 index 0000000..646a4f1 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__modules-and-ports__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sv/modules-and-ports", + "title": "Modules and Ports", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/modules-and-ports/adder.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/modules-and-ports/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.041, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 48 total ops) in module", + "[mox-sim] Registered 7 LLHD signals and 3 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "sum = 42", + "PASS", + "[mox-sim] Simulation completed at time 1000000 fs" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__modules-and-ports__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__modules-and-ports__interpret.log b/artifacts/tutorial/receipts/sv__modules-and-ports__interpret.log new file mode 100644 index 0000000..cf5872d --- /dev/null +++ b/artifacts/tutorial/receipts/sv__modules-and-ports__interpret.log @@ -0,0 +1,17 @@ +Using module 'tb' as top module +[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 48 total ops) in module +[mox-sim] Registered 7 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +sum = 42 +PASS +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (4ms, total: 10ms) +[mox-run] simulate (0ms, total: 11ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sv__packed-structs__interpret.json b/artifacts/tutorial/receipts/sv__packed-structs__interpret.json new file mode 100644 index 0000000..35e7cb9 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__packed-structs__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/packed-structs", + "title": "Packed Structs", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/packed-structs/mem_cmd.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/packed-structs/sram_cmd.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/packed-structs/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.045, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 127 total ops) in module", + "[mox-sim] Registered 9 LLHD signals and 4 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "mem[3] = 55 (expect 55)", + "mem[5] = 77 (expect 77)", + "PASS" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__packed-structs__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__packed-structs__interpret.log b/artifacts/tutorial/receipts/sv__packed-structs__interpret.log new file mode 100644 index 0000000..ef30e28 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__packed-structs__interpret.log @@ -0,0 +1,22 @@ +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 127 total ops) in module +[mox-sim] Registered 9 LLHD signals and 4 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +mem[3] = 55 (expect 55) +mem[5] = 77 (expect 77) +PASS +[mox-sim] Simulation finished at time 36000000 fs +[mox-sim] Simulation completed at time 36000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (7ms, total: 14ms) +[mox-run] simulate (1ms, total: 15ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] sim.terminate triggered in process ID 4 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/packed-structs/tb.sv":36:5 to :13) +[mox-sim] Simulation terminated at time 36000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 36000000 fs, iter=12, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__parameters__interpret.json b/artifacts/tutorial/receipts/sv__parameters__interpret.json new file mode 100644 index 0000000..eba6f9e --- /dev/null +++ b/artifacts/tutorial/receipts/sv__parameters__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sv/parameters", + "title": "Parameters", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/parameters/sram.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/parameters/tb.sv" + ], + "exit": 0, + "elapsed_s": 0.043, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 4 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 2 hw.instance ops (out of 150 total ops) in module", + "[mox-sim] Registered 24 LLHD signals and 8 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "small[5] = a (expect a)", + "large[200] = beef (expect beef)", + "PASS" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__parameters__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__parameters__interpret.log b/artifacts/tutorial/receipts/sv__parameters__interpret.log new file mode 100644 index 0000000..59627bc --- /dev/null +++ b/artifacts/tutorial/receipts/sv__parameters__interpret.log @@ -0,0 +1,22 @@ +Using module 'tb' as top module +[mox-sim] Found 4 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 2 hw.instance ops (out of 150 total ops) in module +[mox-sim] Registered 24 LLHD signals and 8 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +small[5] = a (expect a) +large[200] = beef (expect beef) +PASS +[mox-sim] Simulation finished at time 36000000 fs +[mox-sim] Simulation completed at time 36000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (8ms, total: 8ms) +[mox-run] lower (8ms, total: 16ms) +[mox-run] simulate (0ms, total: 17ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 2ms) +[mox-sim] sim.terminate triggered in process ID 8 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/parameters/tb.sv":35:5 to :13) +[mox-sim] Simulation terminated at time 36000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 36000000 fs, iter=12, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__queues-arrays__interpret.json b/artifacts/tutorial/receipts/sv__queues-arrays__interpret.json new file mode 100644 index 0000000..118c487 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__queues-arrays__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/queues-arrays", + "title": "Dynamic Arrays and Queues", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "addr_buf_tb", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/queues-arrays/addr_buf.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.044, + "first_lines": [ + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 216 total ops) in module", + "[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "Array size: 8 first=0 last=7", + "Queue size after push: 4", + "pop: 0", + "pop: 1" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__queues-arrays__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__queues-arrays__interpret.log b/artifacts/tutorial/receipts/sv__queues-arrays__interpret.log new file mode 100644 index 0000000..73edac4 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__queues-arrays__interpret.log @@ -0,0 +1,21 @@ +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 216 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +Array size: 8 first=0 last=7 +Queue size after push: 4 +pop: 0 +pop: 1 +pop: 2 +pop: 3 +PASS +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (7ms, total: 14ms) +[mox-run] simulate (0ms, total: 15ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sv__randomization__interpret.json b/artifacts/tutorial/receipts/sv__randomization__interpret.json new file mode 100644 index 0000000..e46785a --- /dev/null +++ b/artifacts/tutorial/receipts/sv__randomization__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/randomization", + "title": "Constrained Randomization", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "rand_txn_tb", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/randomization/rand_txn.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.049, + "first_lines": [ + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 478 total ops) in module", + "[mox-sim] Registered 2 LLHD signals and 1 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "=== low_bank (addr 0-7) ===", + " addr=7 we=1", + " addr=0 we=0", + " addr=2 we=1" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__randomization__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__randomization__interpret.log b/artifacts/tutorial/receipts/sv__randomization__interpret.log new file mode 100644 index 0000000..7d833ab --- /dev/null +++ b/artifacts/tutorial/receipts/sv__randomization__interpret.log @@ -0,0 +1,30 @@ +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 478 total ops) in module +[mox-sim] Registered 2 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +=== low_bank (addr 0-7) === + addr=7 we=1 + addr=0 we=0 + addr=2 we=1 + addr=4 we=0 +=== high_bank override (addr 8-15) === + addr=9 we=1 + addr=9 we=0 + addr=11 we=0 + addr=10 we=0 +=== no constraint (addr 0-15) === + addr=7 we=0 + addr=14 we=1 + addr=13 we=1 + addr=13 we=1 +PASS +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (12ms, total: 19ms) +[mox-run] simulate (1ms, total: 20ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sv__tasks-functions__interpret.json b/artifacts/tutorial/receipts/sv__tasks-functions__interpret.json new file mode 100644 index 0000000..7ba25eb --- /dev/null +++ b/artifacts/tutorial/receipts/sv__tasks-functions__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sv/tasks-functions", + "title": "Tasks", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/tasks-functions/sram.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/tasks-functions/tb.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.055, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 7 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 537 total ops) in module", + "[mox-sim] Registered 9 LLHD signals and 8 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "mem[5] = 42 parity=1 (expect 42, parity=1)", + "mem[0] = 255 parity=0 (expect 255, parity=0)", + "mem[12] = 100 parity=1 (expect 100, parity=1)" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__tasks-functions__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__tasks-functions__interpret.log b/artifacts/tutorial/receipts/sv__tasks-functions__interpret.log new file mode 100644 index 0000000..6115a2a --- /dev/null +++ b/artifacts/tutorial/receipts/sv__tasks-functions__interpret.log @@ -0,0 +1,23 @@ +Using module 'tb' as top module +[mox-sim] Found 7 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 537 total ops) in module +[mox-sim] Registered 9 LLHD signals and 8 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +mem[5] = 42 parity=1 (expect 42, parity=1) +mem[0] = 255 parity=0 (expect 255, parity=0) +mem[12] = 100 parity=1 (expect 100, parity=1) +PASS +[mox-sim] Simulation finished at time 56000000 fs +[mox-sim] Simulation completed at time 56000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (8ms, total: 8ms) +[mox-run] lower (11ms, total: 20ms) +[mox-run] simulate (1ms, total: 21ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 3ms, total: 3ms) +[mox-sim] sim.terminate triggered in process ID 7 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/tasks-functions/tb.sol.sv":62:5 to :13) +[mox-sim] Simulation terminated at time 56000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 56000000 fs, iter=18, deltas=1 diff --git a/artifacts/tutorial/receipts/sv__welcome__interpret.json b/artifacts/tutorial/receipts/sv__welcome__interpret.json new file mode 100644 index 0000000..f9bb2cb --- /dev/null +++ b/artifacts/tutorial/receipts/sv__welcome__interpret.json @@ -0,0 +1,36 @@ +{ + "slug": "sv/welcome", + "title": "Welcome", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--top", + "top", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/welcome/top.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.035, + "first_lines": [ + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 7 total ops) in module", + "[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "Hello, SRAM world!", + "[mox-sim] Simulation finished at time 0 fs", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sv__welcome__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sv__welcome__interpret.log b/artifacts/tutorial/receipts/sv__welcome__interpret.log new file mode 100644 index 0000000..aec2c79 --- /dev/null +++ b/artifacts/tutorial/receipts/sv__welcome__interpret.log @@ -0,0 +1,19 @@ +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 7 total ops) in module +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +Hello, SRAM world! +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (2ms, total: 6ms) +[mox-run] simulate (0ms, total: 7ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/welcome/top.sol.sv":4:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 diff --git a/artifacts/tutorial/receipts/sva__abort__interpret.json b/artifacts/tutorial/receipts/sva__abort__interpret.json new file mode 100644 index 0000000..135b8cc --- /dev/null +++ b/artifacts/tutorial/receipts/sva__abort__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/abort", + "title": "Aborting Properties: reject_on and accept_on", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/abort/abort_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.037, + "first_lines": [ + "Using module 'abort_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 31 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (4ms, total: 4ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__abort__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__abort__interpret.log b/artifacts/tutorial/receipts/sva__abort__interpret.log new file mode 100644 index 0000000..5cbdae5 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__abort__interpret.log @@ -0,0 +1,14 @@ +Using module 'abort_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 31 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 0ms) diff --git a/artifacts/tutorial/receipts/sva__always-eventually__interpret.json b/artifacts/tutorial/receipts/sva__always-eventually__interpret.json new file mode 100644 index 0000000..2eac44a --- /dev/null +++ b/artifacts/tutorial/receipts/sva__always-eventually__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/always-eventually", + "title": "always and s_eventually", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/always-eventually/liveness.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.037, + "first_lines": [ + "Using module 'liveness' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 47 total ops) in module", + "[mox-sim] Registered 5 LLHD signals and 0 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__always-eventually__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__always-eventually__interpret.log b/artifacts/tutorial/receipts/sva__always-eventually__interpret.log new file mode 100644 index 0000000..cc85285 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__always-eventually__interpret.log @@ -0,0 +1,15 @@ +Using module 'liveness' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 47 total ops) in module +[mox-sim] Registered 5 LLHD signals and 0 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__changed__interpret.json b/artifacts/tutorial/receipts/sva__changed__interpret.json new file mode 100644 index 0000000..dc73131 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__changed__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/changed", + "title": "$changed and $sampled", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/changed/toggle_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.04, + "first_lines": [ + "Using module 'toggle_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 40 total ops) in module", + "[mox-sim] Registered 5 LLHD signals and 0 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__changed__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__changed__interpret.log b/artifacts/tutorial/receipts/sva__changed__interpret.log new file mode 100644 index 0000000..755940d --- /dev/null +++ b/artifacts/tutorial/receipts/sva__changed__interpret.log @@ -0,0 +1,15 @@ +Using module 'toggle_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 40 total ops) in module +[mox-sim] Registered 5 LLHD signals and 0 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__checker__interpret.json b/artifacts/tutorial/receipts/sva__checker__interpret.json new file mode 100644 index 0000000..3d5b1bc --- /dev/null +++ b/artifacts/tutorial/receipts/sva__checker__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/checker", + "title": "The checker Construct", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/checker/top.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.036, + "first_lines": [ + "Using module 'top' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 4 hw.instance ops (out of 6 total ops) in module", + "[mox-sim] Registered 9 LLHD signals and 0 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__checker__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__checker__interpret.log b/artifacts/tutorial/receipts/sva__checker__interpret.log new file mode 100644 index 0000000..1e19785 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__checker__interpret.log @@ -0,0 +1,15 @@ +Using module 'top' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 4 hw.instance ops (out of 6 total ops) in module +[mox-sim] Registered 9 LLHD signals and 0 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] simulate (0ms, total: 10ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__clock-delay__interpret.json b/artifacts/tutorial/receipts/sva__clock-delay__interpret.json new file mode 100644 index 0000000..15c2bef --- /dev/null +++ b/artifacts/tutorial/receipts/sva__clock-delay__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/clock-delay", + "title": "Clock Delay ##m and ##[m:n]", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/clock-delay/delay_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.037, + "first_lines": [ + "Using module 'delay_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 23 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (5ms, total: 5ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__clock-delay__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__clock-delay__interpret.log b/artifacts/tutorial/receipts/sva__clock-delay__interpret.log new file mode 100644 index 0000000..5e64680 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__clock-delay__interpret.log @@ -0,0 +1,14 @@ +Using module 'delay_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 23 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 0ms) diff --git a/artifacts/tutorial/receipts/sva__concurrent-sim__interpret.json b/artifacts/tutorial/receipts/sva__concurrent-sim__interpret.json new file mode 100644 index 0000000..301dcd9 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__concurrent-sim__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sva/concurrent-sim", + "title": "Concurrent Assertions in Simulation", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/concurrent-sim/monitor.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/concurrent-sim/tb.sv" + ], + "exit": 1, + "elapsed_s": 0.041, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 79 total ops) in module", + "[mox-sim] Registered 6 LLHD signals and 3 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "Error: req was not followed by gnt within 3 cycles!", + "PASS", + "[mox-sim] Simulation finished at time 145000000 fs" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__concurrent-sim__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__concurrent-sim__interpret.log b/artifacts/tutorial/receipts/sva__concurrent-sim__interpret.log new file mode 100644 index 0000000..74dfd50 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__concurrent-sim__interpret.log @@ -0,0 +1,23 @@ +Using module 'tb' as top module +[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 79 total ops) in module +[mox-sim] Registered 6 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +Error: req was not followed by gnt within 3 cycles! +PASS +[mox-sim] Simulation finished at time 145000000 fs +[mox-sim] Simulation completed at time 145000000 fs +[mox-sim] Simulation finished with exit code 1 +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (5ms, total: 12ms) +[mox-run] simulate (0ms, total: 12ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] SVA assertion failed: req_gnt_check at time 85000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/concurrent-sim/monitor.sol.sv":8:3 to 9:65)) +[mox-sim] sim.terminate triggered in process ID 5 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/concurrent-sim/tb.sv":37:5 to :13) +[mox-sim] Simulation terminated at time 145000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 145000000 fs, iter=30, deltas=1 +[mox-sim] 1 SVA assertion failure(s) diff --git a/artifacts/tutorial/receipts/sva__consecutive-rep__interpret.json b/artifacts/tutorial/receipts/sva__consecutive-rep__interpret.json new file mode 100644 index 0000000..ff3c0c4 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__consecutive-rep__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/consecutive-rep", + "title": "Consecutive Repetition [*m]", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/consecutive-rep/hold_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.037, + "first_lines": [ + "Using module 'hold_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 24 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (4ms, total: 4ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__consecutive-rep__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__consecutive-rep__interpret.log b/artifacts/tutorial/receipts/sva__consecutive-rep__interpret.log new file mode 100644 index 0000000..c4ac5fd --- /dev/null +++ b/artifacts/tutorial/receipts/sva__consecutive-rep__interpret.log @@ -0,0 +1,14 @@ +Using module 'hold_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 24 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 0ms) diff --git a/artifacts/tutorial/receipts/sva__cover-property__interpret.json b/artifacts/tutorial/receipts/sva__cover-property__interpret.json new file mode 100644 index 0000000..7b44922 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__cover-property__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/cover-property", + "title": "cover property", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/cover-property/bus_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.037, + "first_lines": [ + "Using module 'bus_check' as top module", + "[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 102 total ops) in module", + "[mox-sim] Registered 10 LLHD signals and 2 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__cover-property__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__cover-property__interpret.log b/artifacts/tutorial/receipts/sva__cover-property__interpret.log new file mode 100644 index 0000000..0dd907f --- /dev/null +++ b/artifacts/tutorial/receipts/sva__cover-property__interpret.log @@ -0,0 +1,15 @@ +Using module 'bus_check' as top module +[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 102 total ops) in module +[mox-sim] Registered 10 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (5ms, total: 11ms) +[mox-run] simulate (0ms, total: 12ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__disable-iff__interpret.json b/artifacts/tutorial/receipts/sva__disable-iff__interpret.json new file mode 100644 index 0000000..3a256c2 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__disable-iff__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/disable-iff", + "title": "disable iff \u2014 Reset Handling", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/disable-iff/reset_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.038, + "first_lines": [ + "Using module 'reset_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 33 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (5ms, total: 5ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__disable-iff__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__disable-iff__interpret.log b/artifacts/tutorial/receipts/sva__disable-iff__interpret.log new file mode 100644 index 0000000..cce0cf4 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__disable-iff__interpret.log @@ -0,0 +1,14 @@ +Using module 'reset_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 33 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__formal-assume__interpret.json b/artifacts/tutorial/receipts/sva__formal-assume__interpret.json new file mode 100644 index 0000000..461ea8d --- /dev/null +++ b/artifacts/tutorial/receipts/sva__formal-assume__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sva/formal-assume", + "title": "assume property", + "runner": "both", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/tb.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv" + ], + "exit": 1, + "elapsed_s": 0.045, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 61 total ops) in module", + "[mox-sim] Registered 7 LLHD signals and 4 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "PASS", + "[mox-sim] Simulation finished at time 135000000 fs", + "[mox-sim] Simulation completed at time 135000000 fs" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__formal-assume__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__formal-assume__interpret.log b/artifacts/tutorial/receipts/sva__formal-assume__interpret.log new file mode 100644 index 0000000..2bf3b53 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__formal-assume__interpret.log @@ -0,0 +1,33 @@ +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 61 total ops) in module +[mox-sim] Registered 7 LLHD signals and 4 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation finished at time 135000000 fs +[mox-sim] Simulation completed at time 135000000 fs +[mox-sim] Simulation finished with exit code 1 +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (9ms, total: 9ms) +[mox-run] lower (6ms, total: 16ms) +[mox-run] simulate (0ms, total: 16ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] SVA assumption failed at time 25000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 35000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 45000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 55000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 65000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 75000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 85000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 95000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 105000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 115000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] SVA assumption failed at time 125000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] sim.terminate triggered in process ID 6 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/tb.sv":12:5 to :13) +[mox-sim] SVA assumption failed at time 135000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-assume/top.sol.sv":16:11 to :48)) +[mox-sim] Simulation terminated at time 135000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 135000000 fs, iter=28, deltas=1 +[mox-sim] 12 SVA assumption failure(s) diff --git a/artifacts/tutorial/receipts/sva__formal-intro__interpret.json b/artifacts/tutorial/receipts/sva__formal-intro__interpret.json new file mode 100644 index 0000000..a13262d --- /dev/null +++ b/artifacts/tutorial/receipts/sva__formal-intro__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/formal-intro", + "title": "Bounded Model Checking", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/formal-intro/top.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.038, + "first_lines": [ + "Using module 'top' as top module", + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 72 total ops) in module", + "[mox-sim] Registered 4 LLHD signals and 1 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__formal-intro__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__formal-intro__interpret.log b/artifacts/tutorial/receipts/sva__formal-intro__interpret.log new file mode 100644 index 0000000..dd5849c --- /dev/null +++ b/artifacts/tutorial/receipts/sva__formal-intro__interpret.log @@ -0,0 +1,15 @@ +Using module 'top' as top module +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 72 total ops) in module +[mox-sim] Registered 4 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (4ms, total: 9ms) +[mox-run] simulate (0ms, total: 10ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__immediate-assert__interpret.json b/artifacts/tutorial/receipts/sva__immediate-assert__interpret.json new file mode 100644 index 0000000..3e4964a --- /dev/null +++ b/artifacts/tutorial/receipts/sva__immediate-assert__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/immediate-assert", + "title": "Immediate Assertions", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/immediate-assert/fifo_checker.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.039, + "first_lines": [ + "Using module 'fifo_checker' as top module", + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 211 total ops) in module", + "[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__immediate-assert__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__immediate-assert__interpret.log b/artifacts/tutorial/receipts/sva__immediate-assert__interpret.log new file mode 100644 index 0000000..cf34c8a --- /dev/null +++ b/artifacts/tutorial/receipts/sva__immediate-assert__interpret.log @@ -0,0 +1,15 @@ +Using module 'fifo_checker' as top module +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 211 total ops) in module +[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (7ms, total: 13ms) +[mox-run] simulate (0ms, total: 14ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__implication__interpret.json b/artifacts/tutorial/receipts/sva__implication__interpret.json new file mode 100644 index 0000000..35f5ae6 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__implication__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/implication", + "title": "Implication: |-> and |=>", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/implication/implication.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.036, + "first_lines": [ + "Using module 'implication' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 26 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (4ms, total: 4ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__implication__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__implication__interpret.log b/artifacts/tutorial/receipts/sva__implication__interpret.log new file mode 100644 index 0000000..b3d8323 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__implication__interpret.log @@ -0,0 +1,14 @@ +Using module 'implication' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 26 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 0ms) diff --git a/artifacts/tutorial/receipts/sva__isunknown__interpret.json b/artifacts/tutorial/receipts/sva__isunknown__interpret.json new file mode 100644 index 0000000..3246b52 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__isunknown__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sva/isunknown", + "title": "$isunknown \u2014 Detecting X and Z", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/isunknown/tb.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/isunknown/xcheck.sol.sv" + ], + "exit": 1, + "elapsed_s": 0.053, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 95 total ops) in module", + "[mox-sim] Registered 10 LLHD signals and 2 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "PASS", + "[mox-sim] Simulation finished at time 76000000 fs", + "[mox-sim] Simulation completed at time 76000000 fs" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__isunknown__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__isunknown__interpret.log b/artifacts/tutorial/receipts/sva__isunknown__interpret.log new file mode 100644 index 0000000..307522e --- /dev/null +++ b/artifacts/tutorial/receipts/sva__isunknown__interpret.log @@ -0,0 +1,24 @@ +Using module 'tb' as top module +[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 95 total ops) in module +[mox-sim] Registered 10 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +PASS +[mox-sim] Simulation finished at time 76000000 fs +[mox-sim] Simulation completed at time 76000000 fs +[mox-sim] Simulation finished with exit code 1 +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (7ms, total: 7ms) +[mox-run] lower (7ms, total: 15ms) +[mox-run] simulate (0ms, total: 16ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] SVA assertion failed: we_a at time 55000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/isunknown/xcheck.sol.sv":23:3 to :40)) +[mox-sim] SVA assertion failed: addr_a at time 65000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/isunknown/xcheck.sol.sv":24:3 to :42)) +[mox-sim] SVA assertion failed: rdata_a at time 75000000 fs (loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/isunknown/xcheck.sol.sv":25:3 to :43)) +[mox-sim] sim.terminate triggered in process ID 5 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/isunknown/tb.sv":33:5 to :13) +[mox-sim] Simulation terminated at time 76000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 76000000 fs, iter=24, deltas=1 +[mox-sim] 3 SVA assertion failure(s) diff --git a/artifacts/tutorial/receipts/sva__lec__interpret.json b/artifacts/tutorial/receipts/sva__lec__interpret.json new file mode 100644 index 0000000..cc334e5 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__lec__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/lec", + "title": "Logical Equivalence Checking", + "runner": "lec", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/lec/top.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.041, + "first_lines": [ + "[mox-sim] Simulating 2 top modules: Spec, Impl", + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 82 total ops) in module", + "[mox-sim] Registered 9 LLHD signals and 3 LLHD processes/initial blocks", + "[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 113 total ops) in module", + "[mox-sim] Registered 18 LLHD signals and 6 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__lec__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__lec__interpret.log b/artifacts/tutorial/receipts/sva__lec__interpret.log new file mode 100644 index 0000000..fc63e6e --- /dev/null +++ b/artifacts/tutorial/receipts/sva__lec__interpret.log @@ -0,0 +1,17 @@ +[mox-sim] Simulating 2 top modules: Spec, Impl +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 82 total ops) in module +[mox-sim] Registered 9 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 113 total ops) in module +[mox-sim] Registered 18 LLHD signals and 6 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (4ms, total: 10ms) +[mox-run] simulate (0ms, total: 10ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__local-vars__interpret.json b/artifacts/tutorial/receipts/sva__local-vars__interpret.json new file mode 100644 index 0000000..2f61184 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__local-vars__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/local-vars", + "title": "Local Variables in Sequences", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/local-vars/pipeline_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.035, + "first_lines": [ + "Using module 'pipeline_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 47 total ops) in module", + "[mox-sim] Registered 7 LLHD signals and 0 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__local-vars__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__local-vars__interpret.log b/artifacts/tutorial/receipts/sva__local-vars__interpret.log new file mode 100644 index 0000000..3c90fbd --- /dev/null +++ b/artifacts/tutorial/receipts/sva__local-vars__interpret.log @@ -0,0 +1,15 @@ +Using module 'pipeline_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 47 total ops) in module +[mox-sim] Registered 7 LLHD signals and 0 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__nonconsec-eq__interpret.json b/artifacts/tutorial/receipts/sva__nonconsec-eq__interpret.json new file mode 100644 index 0000000..aa874ac --- /dev/null +++ b/artifacts/tutorial/receipts/sva__nonconsec-eq__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/nonconsec-eq", + "title": "Non-Consecutive Equal Repetition [=m]", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/nonconsec-eq/multi_ack2.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.037, + "first_lines": [ + "Using module 'multi_ack2' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 31 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (5ms, total: 5ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__nonconsec-eq__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__nonconsec-eq__interpret.log b/artifacts/tutorial/receipts/sva__nonconsec-eq__interpret.log new file mode 100644 index 0000000..1b1bb42 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__nonconsec-eq__interpret.log @@ -0,0 +1,14 @@ +Using module 'multi_ack2' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 31 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__nonconsec-rep__interpret.json b/artifacts/tutorial/receipts/sva__nonconsec-rep__interpret.json new file mode 100644 index 0000000..ca42a65 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__nonconsec-rep__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/nonconsec-rep", + "title": "Goto Repetition [->m]", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/nonconsec-rep/multi_ack.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.036, + "first_lines": [ + "Using module 'multi_ack' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 31 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (5ms, total: 5ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__nonconsec-rep__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__nonconsec-rep__interpret.log b/artifacts/tutorial/receipts/sva__nonconsec-rep__interpret.log new file mode 100644 index 0000000..05edafe --- /dev/null +++ b/artifacts/tutorial/receipts/sva__nonconsec-rep__interpret.log @@ -0,0 +1,14 @@ +Using module 'multi_ack' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 31 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 0ms) diff --git a/artifacts/tutorial/receipts/sva__onehot__interpret.json b/artifacts/tutorial/receipts/sva__onehot__interpret.json new file mode 100644 index 0000000..9637dba --- /dev/null +++ b/artifacts/tutorial/receipts/sva__onehot__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/onehot", + "title": "$onehot, $onehot0, $countones", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/onehot/arbiter_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.038, + "first_lines": [ + "Using module 'arbiter_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 43 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (5ms, total: 5ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__onehot__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__onehot__interpret.log b/artifacts/tutorial/receipts/sva__onehot__interpret.log new file mode 100644 index 0000000..a1dcfe6 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__onehot__interpret.log @@ -0,0 +1,14 @@ +Using module 'arbiter_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 43 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 0ms) diff --git a/artifacts/tutorial/receipts/sva__recursive__interpret.json b/artifacts/tutorial/receipts/sva__recursive__interpret.json new file mode 100644 index 0000000..d6414bf --- /dev/null +++ b/artifacts/tutorial/receipts/sva__recursive__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/recursive", + "title": "Recursive Properties", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/recursive/lock_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.036, + "first_lines": [ + "Using module 'lock_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 81 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (4ms, total: 4ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__recursive__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__recursive__interpret.log b/artifacts/tutorial/receipts/sva__recursive__interpret.log new file mode 100644 index 0000000..a3ba85e --- /dev/null +++ b/artifacts/tutorial/receipts/sva__recursive__interpret.log @@ -0,0 +1,14 @@ +Using module 'lock_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 81 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (4ms, total: 9ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 0ms) diff --git a/artifacts/tutorial/receipts/sva__req-ack__interpret.json b/artifacts/tutorial/receipts/sva__req-ack__interpret.json new file mode 100644 index 0000000..c8d8693 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__req-ack__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/req-ack", + "title": "Request / Acknowledge", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/req-ack/req_ack.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.036, + "first_lines": [ + "Using module 'req_ack' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 41 total ops) in module", + "[mox-sim] Registered 5 LLHD signals and 0 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__req-ack__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__req-ack__interpret.log b/artifacts/tutorial/receipts/sva__req-ack__interpret.log new file mode 100644 index 0000000..a65f8e9 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__req-ack__interpret.log @@ -0,0 +1,15 @@ +Using module 'req_ack' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 41 total ops) in module +[mox-sim] Registered 5 LLHD signals and 0 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__rose-fell__interpret.json b/artifacts/tutorial/receipts/sva__rose-fell__interpret.json new file mode 100644 index 0000000..ef00e7d --- /dev/null +++ b/artifacts/tutorial/receipts/sva__rose-fell__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/rose-fell", + "title": "$rose and $fell", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/rose-fell/edge_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.037, + "first_lines": [ + "Using module 'edge_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 51 total ops) in module", + "[mox-sim] Registered 6 LLHD signals and 0 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__rose-fell__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__rose-fell__interpret.log b/artifacts/tutorial/receipts/sva__rose-fell__interpret.log new file mode 100644 index 0000000..9036312 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__rose-fell__interpret.log @@ -0,0 +1,15 @@ +Using module 'edge_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 51 total ops) in module +[mox-sim] Registered 6 LLHD signals and 0 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (4ms, total: 9ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__seq-args__interpret.json b/artifacts/tutorial/receipts/sva__seq-args__interpret.json new file mode 100644 index 0000000..51f9e33 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__seq-args__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/seq-args", + "title": "Sequence Formal Arguments", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/seq-args/sram_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.045, + "first_lines": [ + "Using module 'sram_check' as top module", + "[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 222 total ops) in module", + "[mox-sim] Registered 8 LLHD signals and 2 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__seq-args__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__seq-args__interpret.log b/artifacts/tutorial/receipts/sva__seq-args__interpret.log new file mode 100644 index 0000000..968d5e6 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__seq-args__interpret.log @@ -0,0 +1,15 @@ +Using module 'sram_check' as top module +[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 222 total ops) in module +[mox-sim] Registered 8 LLHD signals and 2 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (7ms, total: 14ms) +[mox-run] simulate (0ms, total: 15ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__sequence-basics__interpret.json b/artifacts/tutorial/receipts/sva__sequence-basics__interpret.json new file mode 100644 index 0000000..b44ba40 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__sequence-basics__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/sequence-basics", + "title": "Sequences and Properties", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/sequence-basics/grant_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.043, + "first_lines": [ + "Using module 'grant_check' as top module", + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 90 total ops) in module", + "[mox-sim] Registered 7 LLHD signals and 1 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__sequence-basics__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__sequence-basics__interpret.log b/artifacts/tutorial/receipts/sva__sequence-basics__interpret.log new file mode 100644 index 0000000..210fd18 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__sequence-basics__interpret.log @@ -0,0 +1,15 @@ +Using module 'grant_check' as top module +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 90 total ops) in module +[mox-sim] Registered 7 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (5ms, total: 11ms) +[mox-run] simulate (1ms, total: 12ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 2ms, total: 2ms) diff --git a/artifacts/tutorial/receipts/sva__sequence-ops__interpret.json b/artifacts/tutorial/receipts/sva__sequence-ops__interpret.json new file mode 100644 index 0000000..5df1a41 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__sequence-ops__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/sequence-ops", + "title": "Sequence Composition: intersect, within, and, or", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/sequence-ops/bus_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.038, + "first_lines": [ + "Using module 'bus_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 36 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (5ms, total: 5ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__sequence-ops__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__sequence-ops__interpret.log b/artifacts/tutorial/receipts/sva__sequence-ops__interpret.log new file mode 100644 index 0000000..12da79e --- /dev/null +++ b/artifacts/tutorial/receipts/sva__sequence-ops__interpret.log @@ -0,0 +1,14 @@ +Using module 'bus_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 36 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__stable-past__interpret.json b/artifacts/tutorial/receipts/sva__stable-past__interpret.json new file mode 100644 index 0000000..e056fd5 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__stable-past__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/stable-past", + "title": "$stable and $past", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/stable-past/stable_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.039, + "first_lines": [ + "Using module 'stable_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 61 total ops) in module", + "[mox-sim] Registered 6 LLHD signals and 0 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__stable-past__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__stable-past__interpret.log b/artifacts/tutorial/receipts/sva__stable-past__interpret.log new file mode 100644 index 0000000..9a37cec --- /dev/null +++ b/artifacts/tutorial/receipts/sva__stable-past__interpret.log @@ -0,0 +1,15 @@ +Using module 'stable_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 61 total ops) in module +[mox-sim] Registered 6 LLHD signals and 0 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (4ms, total: 9ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__throughout__interpret.json b/artifacts/tutorial/receipts/sva__throughout__interpret.json new file mode 100644 index 0000000..8be5cf2 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__throughout__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/throughout", + "title": "throughout \u2014 Stability During a Sequence", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/throughout/spi_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.039, + "first_lines": [ + "Using module 'spi_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 53 total ops) in module", + "[mox-sim] Registered 5 LLHD signals and 0 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__throughout__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__throughout__interpret.log b/artifacts/tutorial/receipts/sva__throughout__interpret.log new file mode 100644 index 0000000..8f408b5 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__throughout__interpret.log @@ -0,0 +1,15 @@ +Using module 'spi_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 2 seq.initial blocks, and 0 hw.instance ops (out of 53 total ops) in module +[mox-sim] Registered 5 LLHD signals and 0 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 9ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) diff --git a/artifacts/tutorial/receipts/sva__triggered__interpret.json b/artifacts/tutorial/receipts/sva__triggered__interpret.json new file mode 100644 index 0000000..21627a0 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__triggered__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/triggered", + "title": ".triggered \u2014 Sequence Endpoint Detection", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/triggered/trigger_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.037, + "first_lines": [ + "Using module 'trigger_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 37 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (5ms, total: 5ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__triggered__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__triggered__interpret.log b/artifacts/tutorial/receipts/sva__triggered__interpret.log new file mode 100644 index 0000000..8af2a54 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__triggered__interpret.log @@ -0,0 +1,14 @@ +Using module 'trigger_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 37 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 0ms) diff --git a/artifacts/tutorial/receipts/sva__until__interpret.json b/artifacts/tutorial/receipts/sva__until__interpret.json new file mode 100644 index 0000000..89a95b2 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__until__interpret.json @@ -0,0 +1,34 @@ +{ + "slug": "sva/until", + "title": "until and s_until", + "runner": "bmc", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/until/hold_check.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.037, + "first_lines": [ + "Using module 'hold_check' as top module", + "[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 35 total ops) in module", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "[mox-sim] Simulation completed at time 0 fs", + "[mox-sim] Simulation completed", + "mox-run wall guards: compile=25000ms simulation=disabled", + "[mox-run] parse (5ms, total: 5ms)" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__until__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__until__interpret.log b/artifacts/tutorial/receipts/sva__until__interpret.log new file mode 100644 index 0000000..f663b40 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__until__interpret.log @@ -0,0 +1,14 @@ +Using module 'hold_check' as top module +[mox-sim] Found 0 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 35 total ops) in module +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 9ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 0ms, total: 0ms) diff --git a/artifacts/tutorial/receipts/sva__vacuous-pass__interpret.json b/artifacts/tutorial/receipts/sva__vacuous-pass__interpret.json new file mode 100644 index 0000000..5d23325 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__vacuous-pass__interpret.json @@ -0,0 +1,35 @@ +{ + "slug": "sva/vacuous-pass", + "title": "Vacuous Pass", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/vacuous-pass/tb.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/vacuous-pass/vacuous.sol.sv" + ], + "exit": 0, + "elapsed_s": 0.042, + "first_lines": [ + "Using module 'tb' as top module", + "[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 71 total ops) in module", + "[mox-sim] Registered 8 LLHD signals and 4 LLHD processes/initial blocks", + "[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0", + "[mox-sim] Starting simulation", + "req_gnt antecedent fired at t=65", + "done: rg_cover should have fired.", + "PASS" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/sva__vacuous-pass__interpret.log" +} diff --git a/artifacts/tutorial/receipts/sva__vacuous-pass__interpret.log b/artifacts/tutorial/receipts/sva__vacuous-pass__interpret.log new file mode 100644 index 0000000..43b3cb1 --- /dev/null +++ b/artifacts/tutorial/receipts/sva__vacuous-pass__interpret.log @@ -0,0 +1,22 @@ +Using module 'tb' as top module +[mox-sim] Found 2 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 1 hw.instance ops (out of 71 total ops) in module +[mox-sim] Registered 8 LLHD signals and 4 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +req_gnt antecedent fired at t=65 +done: rg_cover should have fired. +PASS +[mox-sim] Simulation finished at time 105000000 fs +[mox-sim] Simulation completed at time 105000000 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (7ms, total: 14ms) +[mox-run] simulate (0ms, total: 15ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) +[mox-sim] sim.terminate triggered in process ID 9 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sva/vacuous-pass/tb.sol.sv":17:5 to :13) +[mox-sim] Simulation terminated at time 105000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 105000000 fs, iter=22, deltas=1 diff --git a/artifacts/tutorial/receipts/uvm__driver__compile.json b/artifacts/tutorial/receipts/uvm__driver__compile.json new file mode 100644 index 0000000..8d510f4 --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__driver__compile.json @@ -0,0 +1,44 @@ +{ + "slug": "uvm/driver", + "title": "The Driver", + "runner": "sim", + "mode": "compile", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=compile", + "--max-wall-ms=25000", + "--uvm-path", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core", + "-I", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_agent.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_driver.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_if.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_item.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_seq.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/sram.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/tb_top.sv" + ], + "exit": 1, + "elapsed_s": 0.729, + "first_lines": [ + "mox-run wall guards: compile=25000ms simulation=disabled", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code]", + " separator = \"\\.(\" ;", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here", + " `include \"base/uvm_base.svh\"", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/uvm__driver__compile.log" +} diff --git a/artifacts/tutorial/receipts/uvm__driver__compile.log b/artifacts/tutorial/receipts/uvm__driver__compile.log new file mode 100644 index 0000000..85a1b2d --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__driver__compile.log @@ -0,0 +1,13 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code] + separator = "\.(" ; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here + `include "base/uvm_base.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here + `include "base/uvm_config_db_implementation.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_agent.sv:6:14: error: type of class property 'drv' could not be resolved + mem_driver drv; + ^ diff --git a/artifacts/tutorial/receipts/uvm__driver__interpret.json b/artifacts/tutorial/receipts/uvm__driver__interpret.json new file mode 100644 index 0000000..9d2f94c --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__driver__interpret.json @@ -0,0 +1,44 @@ +{ + "slug": "uvm/driver", + "title": "The Driver", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--uvm-path", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core", + "-I", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_agent.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_driver.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_if.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_item.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_seq.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/sram.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/tb_top.sv" + ], + "exit": 1, + "elapsed_s": 0.766, + "first_lines": [ + "mox-run wall guards: compile=25000ms simulation=disabled", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code]", + " separator = \"\\.(\" ;", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here", + " `include \"base/uvm_base.svh\"", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/uvm__driver__interpret.log" +} diff --git a/artifacts/tutorial/receipts/uvm__driver__interpret.log b/artifacts/tutorial/receipts/uvm__driver__interpret.log new file mode 100644 index 0000000..85a1b2d --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__driver__interpret.log @@ -0,0 +1,13 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code] + separator = "\.(" ; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here + `include "base/uvm_base.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here + `include "base/uvm_config_db_implementation.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/driver/mem_agent.sv:6:14: error: type of class property 'drv' could not be resolved + mem_driver drv; + ^ diff --git a/artifacts/tutorial/receipts/uvm__reporting__compile.json b/artifacts/tutorial/receipts/uvm__reporting__compile.json new file mode 100644 index 0000000..de2155a --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__reporting__compile.json @@ -0,0 +1,39 @@ +{ + "slug": "uvm/reporting", + "title": "The First UVM Test", + "runner": "sim", + "mode": "compile", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=compile", + "--max-wall-ms=25000", + "--uvm-path", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core", + "-I", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/reporting/my_test.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/reporting/tb_top.sv" + ], + "exit": 1, + "elapsed_s": 25.039, + "first_lines": [ + "mox-run wall guards: compile=25000ms simulation=disabled", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code]", + " separator = \"\\.(\" ;", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here", + " `include \"base/uvm_base.svh\"", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/uvm__reporting__compile.log" +} diff --git a/artifacts/tutorial/receipts/uvm__reporting__compile.log b/artifacts/tutorial/receipts/uvm__reporting__compile.log new file mode 100644 index 0000000..dd84b4f --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__reporting__compile.log @@ -0,0 +1,60 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code] + separator = "\.(" ; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here + `include "base/uvm_base.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here + `include "base/uvm_config_db_implementation.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_svcmd_dpi.svh:44:10: remark: DPI-C import 'uvm_dpi_get_next_arg_c' will use runtime stub (link with MooreRuntime) + return uvm_dpi_get_next_arg_c(init); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:80:13: remark: DPI-C import 'uvm_re_compexecfree' will use runtime stub (link with MooreRuntime) + success = uvm_re_compexecfree(re, str, deglob, retval); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:82:39: remark: DPI-C import 'uvm_re_buffer' will use runtime stub (link with MooreRuntime) + uvm_report_error("UVM/DPI/REGEX", uvm_re_buffer()); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:91:10: remark: DPI-C import 'uvm_re_deglobbed' will use runtime stub (link with MooreRuntime) + return uvm_re_deglobbed(glob, 1); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:168:18: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + if (!uvm_hdl_read(p_,d)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:173:18: remark: DPI-C import 'uvm_hdl_check_path' will use runtime stub (link with MooreRuntime) + if (!uvm_hdl_check_path(p_)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:205:17: remark: DPI-C import 'uvm_hdl_check_path' will use runtime stub (link with MooreRuntime) + if(!uvm_hdl_check_path(p_)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1952:17: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_deposit({hdl_concat.slices[j].path,"[", idx, "]"},rw.get_value(mem_idx)); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1959:17: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_deposit({hdl_concat.slices[j].path, "[", idx, "]"}, slice); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1888:17: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_read(hdl_path, val); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1894:17: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_read(hdl_path, slice); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2605:15: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + repeat (hdl_concat.slices[j].size) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2612:15: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + val &= (1 << m_n_bits)-1; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2642:15: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + input uvm_sequence_base parent = null, + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2649:15: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) +[mox-run] parse (3558ms, total: 3558ms) +[mox-run] lower (8970ms, total: 12528ms) +[mox-run] aot-start (850ms, total: 13379ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-4c82c390d5678bc81215790a37f6f79e3cee295c1ad4f92c78298ef1e587514d/mox-run-aot-4da1f5.log +[mox-run] external AOT compile still running (5009 ms elapsed, stage: initial-process-setup-fork-prepass) +[mox-run] external AOT compile still running (10015 ms elapsed, stage: clone-candidates) +error: resource guard triggered: wall time 25012 ms exceeded limit 25000 ms (phase: mox-run frontend/AOT compile); aborting. diff --git a/artifacts/tutorial/receipts/uvm__reporting__interpret.json b/artifacts/tutorial/receipts/uvm__reporting__interpret.json new file mode 100644 index 0000000..d03e32d --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__reporting__interpret.json @@ -0,0 +1,39 @@ +{ + "slug": "uvm/reporting", + "title": "The First UVM Test", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--uvm-path", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core", + "-I", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/reporting/my_test.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/reporting/tb_top.sv" + ], + "exit": 0, + "elapsed_s": 15.31, + "first_lines": [ + "Using module 'tb_top' as top module", + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 27 total ops) in module", + "UVM_INFO static/mox/uvm-core/src/base/uvm_root.svh(476) @ 0: reporter [UVM/RELNOTES] ", + " *********** IMPORTANT RELEASE NOTES ************", + " This implementation of the UVM Library deviates from the 1800.2-2020", + " standard. See the DEVIATIONS.md file contained in the release", + " for more details.", + "----------------------------------------------------------------" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/uvm__reporting__interpret.log" +} diff --git a/artifacts/tutorial/receipts/uvm__reporting__interpret.log b/artifacts/tutorial/receipts/uvm__reporting__interpret.log new file mode 100644 index 0000000..59d90ad --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__reporting__interpret.log @@ -0,0 +1,106 @@ +Using module 'tb_top' as top module +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 27 total ops) in module +UVM_INFO static/mox/uvm-core/src/base/uvm_root.svh(476) @ 0: reporter [UVM/RELNOTES] + *********** IMPORTANT RELEASE NOTES ************ + + This implementation of the UVM Library deviates from the 1800.2-2020 + standard. See the DEVIATIONS.md file contained in the release + for more details. + +---------------------------------------------------------------- +Accellera:1800.2:UVM:2020.3.1 + +All copyright owners for this kit are listed in NOTICE.txt +All Rights Reserved Worldwide +---------------------------------------------------------------- + + (Specify +UVM_NO_RELNOTES to turn off this notice) + +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +UVM_INFO @ 0: reporter [RNTST] Running test my_test... +UVM_INFO src/lessons/uvm/reporting/my_test.sol.sv(13) @ 0: uvm_test_top [TEST] Hello from UVM! +UVM_ERROR src/lessons/uvm/reporting/my_test.sol.sv(14) @ 0: uvm_test_top [TEST] Intentional error — simulation continues +PASS +UVM_INFO static/mox/uvm-core/src/base/uvm_report_server.svh(1009) @ 0: reporter [UVM/REPORT/SERVER] +--- UVM Report Summary --- + +** Report counts by severity +UVM_INFO : 3 +UVM_WARNING : 0 +UVM_ERROR : 1 +UVM_FATAL : 0 +** Report counts by id +[RNTST] 1 +[TEST] 2 +[UVM/RELNOTES] 1 + +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code] + separator = "\.(" ; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here + `include "base/uvm_base.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here + `include "base/uvm_config_db_implementation.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_svcmd_dpi.svh:44:10: remark: DPI-C import 'uvm_dpi_get_next_arg_c' will use runtime stub (link with MooreRuntime) + return uvm_dpi_get_next_arg_c(init); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:80:13: remark: DPI-C import 'uvm_re_compexecfree' will use runtime stub (link with MooreRuntime) + success = uvm_re_compexecfree(re, str, deglob, retval); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:82:39: remark: DPI-C import 'uvm_re_buffer' will use runtime stub (link with MooreRuntime) + uvm_report_error("UVM/DPI/REGEX", uvm_re_buffer()); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:91:10: remark: DPI-C import 'uvm_re_deglobbed' will use runtime stub (link with MooreRuntime) + return uvm_re_deglobbed(glob, 1); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:168:18: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + if (!uvm_hdl_read(p_,d)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:173:18: remark: DPI-C import 'uvm_hdl_check_path' will use runtime stub (link with MooreRuntime) + if (!uvm_hdl_check_path(p_)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:205:17: remark: DPI-C import 'uvm_hdl_check_path' will use runtime stub (link with MooreRuntime) + if(!uvm_hdl_check_path(p_)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1952:17: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_deposit({hdl_concat.slices[j].path,"[", idx, "]"},rw.get_value(mem_idx)); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1959:17: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_deposit({hdl_concat.slices[j].path, "[", idx, "]"}, slice); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1888:17: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_read(hdl_path, val); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1894:17: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_read(hdl_path, slice); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2605:15: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + repeat (hdl_concat.slices[j].size) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2612:15: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + val &= (1 << m_n_bits)-1; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2642:15: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + input uvm_sequence_base parent = null, + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2649:15: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) +[mox-run] parse (3678ms, total: 3678ms) +[mox-run] lower (8592ms, total: 12271ms) +[mox-run] simulate (810ms, total: 13082ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 10ms, total: 10ms) +[mox-sim] Stage: init (prev: 13ms, total: 24ms) +[mox-sim] WARNING: MOX-DPI-IMPORT-STRING-RESULT (1/8): converter=__moore_c_string_to_string abi=dpi-import-string-return reason=null-pointer native_ptr=(nil) result-policy=empty-string/continue +[mox-sim] Stage: run (prev: 550ms, total: 574ms) +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/reporting/tb_top.sv":9:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] integrity summary: runtime-warnings=1 runtime-errors=0 vpi-masked-string-decodes=0 aot-abi-demotions=0 diff --git a/artifacts/tutorial/receipts/uvm__seq-item__compile.json b/artifacts/tutorial/receipts/uvm__seq-item__compile.json new file mode 100644 index 0000000..c2d7cb1 --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__seq-item__compile.json @@ -0,0 +1,39 @@ +{ + "slug": "uvm/seq-item", + "title": "Sequence Items", + "runner": "sim", + "mode": "compile", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=compile", + "--max-wall-ms=25000", + "--uvm-path", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core", + "-I", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/seq-item/mem_item.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/seq-item/tb_top.sv" + ], + "exit": 1, + "elapsed_s": 25.04, + "first_lines": [ + "mox-run wall guards: compile=25000ms simulation=disabled", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code]", + " separator = \"\\.(\" ;", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here", + " `include \"base/uvm_base.svh\"", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/uvm__seq-item__compile.log" +} diff --git a/artifacts/tutorial/receipts/uvm__seq-item__compile.log b/artifacts/tutorial/receipts/uvm__seq-item__compile.log new file mode 100644 index 0000000..423dac7 --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__seq-item__compile.log @@ -0,0 +1,60 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code] + separator = "\.(" ; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here + `include "base/uvm_base.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here + `include "base/uvm_config_db_implementation.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_svcmd_dpi.svh:44:10: remark: DPI-C import 'uvm_dpi_get_next_arg_c' will use runtime stub (link with MooreRuntime) + return uvm_dpi_get_next_arg_c(init); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:80:13: remark: DPI-C import 'uvm_re_compexecfree' will use runtime stub (link with MooreRuntime) + success = uvm_re_compexecfree(re, str, deglob, retval); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:82:39: remark: DPI-C import 'uvm_re_buffer' will use runtime stub (link with MooreRuntime) + uvm_report_error("UVM/DPI/REGEX", uvm_re_buffer()); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:91:10: remark: DPI-C import 'uvm_re_deglobbed' will use runtime stub (link with MooreRuntime) + return uvm_re_deglobbed(glob, 1); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:168:18: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + if (!uvm_hdl_read(p_,d)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:173:18: remark: DPI-C import 'uvm_hdl_check_path' will use runtime stub (link with MooreRuntime) + if (!uvm_hdl_check_path(p_)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:205:17: remark: DPI-C import 'uvm_hdl_check_path' will use runtime stub (link with MooreRuntime) + if(!uvm_hdl_check_path(p_)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1952:17: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_deposit({hdl_concat.slices[j].path,"[", idx, "]"},rw.get_value(mem_idx)); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1959:17: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_deposit({hdl_concat.slices[j].path, "[", idx, "]"}, slice); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1888:17: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_read(hdl_path, val); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1894:17: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_read(hdl_path, slice); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2605:15: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + repeat (hdl_concat.slices[j].size) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2612:15: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + val &= (1 << m_n_bits)-1; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2642:15: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + input uvm_sequence_base parent = null, + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2649:15: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) +[mox-run] parse (3749ms, total: 3749ms) +[mox-run] lower (8826ms, total: 12576ms) +[mox-run] aot-start (824ms, total: 13401ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-06d250cff79d3c1fab4378c3f6092ac5898f2272710c8fef119e52124306b181/mox-run-aot-e62f74.log +[mox-run] external AOT compile still running (5001 ms elapsed, stage: initial-process-setup-fork-prepass) +[mox-run] external AOT compile still running (10004 ms elapsed, stage: clone-candidates) +error: resource guard triggered: wall time 25012 ms exceeded limit 25000 ms (phase: mox-run frontend/AOT compile); aborting. diff --git a/artifacts/tutorial/receipts/uvm__seq-item__interpret.json b/artifacts/tutorial/receipts/uvm__seq-item__interpret.json new file mode 100644 index 0000000..d02a0c4 --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__seq-item__interpret.json @@ -0,0 +1,39 @@ +{ + "slug": "uvm/seq-item", + "title": "Sequence Items", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--uvm-path", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core", + "-I", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/seq-item/mem_item.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/seq-item/tb_top.sv" + ], + "exit": 0, + "elapsed_s": 15.326, + "first_lines": [ + "Using module 'tb_top' as top module", + "[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 52 total ops) in module", + "UVM_INFO static/mox/uvm-core/src/base/uvm_root.svh(476) @ 0: reporter [UVM/RELNOTES] ", + " *********** IMPORTANT RELEASE NOTES ************", + " This implementation of the UVM Library deviates from the 1800.2-2020", + " standard. See the DEVIATIONS.md file contained in the release", + " for more details.", + "----------------------------------------------------------------" + ], + "pass": true, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/uvm__seq-item__interpret.log" +} diff --git a/artifacts/tutorial/receipts/uvm__seq-item__interpret.log b/artifacts/tutorial/receipts/uvm__seq-item__interpret.log new file mode 100644 index 0000000..6f07d53 --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__seq-item__interpret.log @@ -0,0 +1,124 @@ +Using module 'tb_top' as top module +[mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 52 total ops) in module +UVM_INFO static/mox/uvm-core/src/base/uvm_root.svh(476) @ 0: reporter [UVM/RELNOTES] + *********** IMPORTANT RELEASE NOTES ************ + + This implementation of the UVM Library deviates from the 1800.2-2020 + standard. See the DEVIATIONS.md file contained in the release + for more details. + +---------------------------------------------------------------- +Accellera:1800.2:UVM:2020.3.1 + +All copyright owners for this kit are listed in NOTICE.txt +All Rights Reserved Worldwide +---------------------------------------------------------------- + + (Specify +UVM_NO_RELNOTES to turn off this notice) + +[mox-sim] Registered 0 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Starting simulation +UVM_INFO @ 0: reporter [RNTST] Running test item_test... +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(14) @ 0: uvm_test_top [TEST] === Check 1: read_c active — all operations should be reads === +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(17) @ 0: uvm_test_top [TEST] RD [8] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(17) @ 0: uvm_test_top [TEST] RD [5] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(17) @ 0: uvm_test_top [TEST] RD [8] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(17) @ 0: uvm_test_top [TEST] RD [4] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(17) @ 0: uvm_test_top [TEST] RD [4] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(17) @ 0: uvm_test_top [TEST] RD [15] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(17) @ 0: uvm_test_top [TEST] RD [3] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(17) @ 0: uvm_test_top [TEST] RD [7] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(23) @ 0: uvm_test_top [TEST] PASS: read_c held we=0 for all 8 items +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(26) @ 0: uvm_test_top [TEST] === Check 2: read_c disabled — writes should appear === +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(32) @ 0: uvm_test_top [TEST] WR [8] = 191 +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(32) @ 0: uvm_test_top [TEST] WR [12] = 26 +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(32) @ 0: uvm_test_top [TEST] WR [7] = 201 +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(32) @ 0: uvm_test_top [TEST] RD [0] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(32) @ 0: uvm_test_top [TEST] RD [12] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(32) @ 0: uvm_test_top [TEST] RD [12] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(32) @ 0: uvm_test_top [TEST] WR [0] = 138 +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(32) @ 0: uvm_test_top [TEST] RD [14] +UVM_INFO src/lessons/uvm/seq-item/tb_top.sv(36) @ 0: uvm_test_top [TEST] PASS: saw 4 write(s) with read_c off +UVM_INFO static/mox/uvm-core/src/base/uvm_report_server.svh(1009) @ 0: reporter [UVM/REPORT/SERVER] +--- UVM Report Summary --- + +** Report counts by severity +UVM_INFO : 22 +UVM_WARNING : 0 +UVM_ERROR : 0 +UVM_FATAL : 0 +** Report counts by id +[RNTST] 1 +[TEST] 20 +[UVM/RELNOTES] 1 + +PASS +[mox-sim] Simulation finished at time 0 fs +[mox-sim] Simulation completed at time 0 fs +[mox-sim] Simulation completed +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code] + separator = "\.(" ; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here + `include "base/uvm_base.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here + `include "base/uvm_config_db_implementation.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_svcmd_dpi.svh:44:10: remark: DPI-C import 'uvm_dpi_get_next_arg_c' will use runtime stub (link with MooreRuntime) + return uvm_dpi_get_next_arg_c(init); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:80:13: remark: DPI-C import 'uvm_re_compexecfree' will use runtime stub (link with MooreRuntime) + success = uvm_re_compexecfree(re, str, deglob, retval); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:82:39: remark: DPI-C import 'uvm_re_buffer' will use runtime stub (link with MooreRuntime) + uvm_report_error("UVM/DPI/REGEX", uvm_re_buffer()); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/dpi/uvm_regex.svh:91:10: remark: DPI-C import 'uvm_re_deglobbed' will use runtime stub (link with MooreRuntime) + return uvm_re_deglobbed(glob, 1); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:168:18: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + if (!uvm_hdl_read(p_,d)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:173:18: remark: DPI-C import 'uvm_hdl_check_path' will use runtime stub (link with MooreRuntime) + if (!uvm_hdl_check_path(p_)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh:205:17: remark: DPI-C import 'uvm_hdl_check_path' will use runtime stub (link with MooreRuntime) + if(!uvm_hdl_check_path(p_)) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1952:17: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_deposit({hdl_concat.slices[j].path,"[", idx, "]"},rw.get_value(mem_idx)); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1959:17: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_deposit({hdl_concat.slices[j].path, "[", idx, "]"}, slice); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1888:17: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_read(hdl_path, val); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_mem.svh:1894:17: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + ok &= uvm_hdl_read(hdl_path, slice); + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2605:15: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + repeat (hdl_concat.slices[j].size) begin + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2612:15: remark: DPI-C import 'uvm_hdl_deposit' will use runtime stub (link with MooreRuntime) + val &= (1 << m_n_bits)-1; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2642:15: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) + input uvm_sequence_base parent = null, + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/reg/uvm_reg.svh:2649:15: remark: DPI-C import 'uvm_hdl_read' will use runtime stub (link with MooreRuntime) +[mox-run] parse (3575ms, total: 3575ms) +[mox-run] lower (8574ms, total: 12149ms) +[mox-run] simulate (797ms, total: 12947ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 11ms, total: 11ms) +[mox-sim] Stage: init (prev: 13ms, total: 24ms) +[mox-sim] WARNING: MOX-DPI-IMPORT-STRING-RESULT (1/8): converter=__moore_c_string_to_string abi=dpi-import-string-return reason=null-pointer native_ptr=(nil) result-policy=empty-string/continue +[mox-sim] Stage: run (prev: 539ms, total: 563ms) +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/seq-item/tb_top.sv":51:5 to :13) +[mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 +[mox-sim] integrity summary: runtime-warnings=1 runtime-errors=0 vpi-masked-string-decodes=0 aot-abi-demotions=0 diff --git a/artifacts/tutorial/receipts/uvm__sequence__compile.json b/artifacts/tutorial/receipts/uvm__sequence__compile.json new file mode 100644 index 0000000..448b3f6 --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__sequence__compile.json @@ -0,0 +1,41 @@ +{ + "slug": "uvm/sequence", + "title": "Sequences", + "runner": "sim", + "mode": "compile", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=compile", + "--max-wall-ms=25000", + "--uvm-path", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core", + "-I", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/sequence/mem_driver.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/sequence/mem_item.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/sequence/mem_seq.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/sequence/tb_top.sv" + ], + "exit": 1, + "elapsed_s": 0.775, + "first_lines": [ + "mox-run wall guards: compile=25000ms simulation=disabled", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code]", + " separator = \"\\.(\" ;", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here", + " `include \"base/uvm_base.svh\"", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/uvm__sequence__compile.log" +} diff --git a/artifacts/tutorial/receipts/uvm__sequence__compile.log b/artifacts/tutorial/receipts/uvm__sequence__compile.log new file mode 100644 index 0000000..cbadaa6 --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__sequence__compile.log @@ -0,0 +1,13 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code] + separator = "\.(" ; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here + `include "base/uvm_base.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here + `include "base/uvm_config_db_implementation.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/comps/uvm_driver.svh:83:7: error: type of class property 'req' could not be resolved + REQ req; + ^ diff --git a/artifacts/tutorial/receipts/uvm__sequence__interpret.json b/artifacts/tutorial/receipts/uvm__sequence__interpret.json new file mode 100644 index 0000000..473d33d --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__sequence__interpret.json @@ -0,0 +1,41 @@ +{ + "slug": "uvm/sequence", + "title": "Sequences", + "runner": "sim", + "mode": "interpret", + "command": [ + "taskset", + "-c", + "0-79", + "timeout", + "--kill-after=3s", + "30s", + "/var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run", + "--single-unit", + "--timescale=1ns/1ns", + "--mode=interpret", + "--max-wall-ms=25000", + "--uvm-path", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core", + "-I", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/sequence/mem_driver.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/sequence/mem_item.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/sequence/mem_seq.sol.sv", + "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/uvm/sequence/tb_top.sv" + ], + "exit": 1, + "elapsed_s": 0.779, + "first_lines": [ + "mox-run wall guards: compile=25000ms simulation=disabled", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code]", + " separator = \"\\.(\" ;", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here", + " `include \"base/uvm_base.svh\"", + " ^", + "/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here" + ], + "pass": false, + "log": "/var/tmp/thomas-ahle/sv-tutorial/artifacts/tutorial/receipts/uvm__sequence__interpret.log" +} diff --git a/artifacts/tutorial/receipts/uvm__sequence__interpret.log b/artifacts/tutorial/receipts/uvm__sequence__interpret.log new file mode 100644 index 0000000..cbadaa6 --- /dev/null +++ b/artifacts/tutorial/receipts/uvm__sequence__interpret.log @@ -0,0 +1,13 @@ +mox-run wall guards: compile=25000ms simulation=disabled +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_config_db_implementation.svh:375:26: warning: unknown character escape sequence [-Wunknown-escape-code] + separator = "\.(" ; + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/uvm_pkg.sv:57:2: note: included from here + `include "base/uvm_base.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/base/uvm_base.svh:77:3: note: included from here + `include "base/uvm_config_db_implementation.svh" + ^ +/var/tmp/thomas-ahle/sv-tutorial/static/mox/uvm-core/src/comps/uvm_driver.svh:83:7: error: type of class property 'req' could not be resolved + REQ req; + ^ diff --git a/src/lessons/index.js b/src/lessons/index.js index b11cbba..38631f6 100644 --- a/src/lessons/index.js +++ b/src/lessons/index.js @@ -83,6 +83,10 @@ export const parts = [ { title: 'State Machines', lessons: [L('sv/enums'), L('sv/fsm')] }, { title: 'Covergroups', lessons: [L('sv/covergroup-basics'), L('sv/coverpoint-bins'), L('sv/cross-coverage')] }, { title: 'Testbench Essentials', lessons: [L('sv/classes'), L('sv/queues-arrays'), L('sv/fork-join'), L('sv/randomization')] }, + { title: 'Macro Formal Continuations', lessons: [L('sv/macro-formal-continuation')] }, + { title: 'Packed-Struct Field References', lessons: [L('sv/struct-field-refs')] }, + { title: 'Indexed Part-Select Bounds', lessons: [L('sv/indexed-part-select')] }, + { title: 'Nested Child Input Propagation', lessons: [L('sv/nested-child-input')] }, ], }, { diff --git a/src/lessons/landed-capabilities.test.js b/src/lessons/landed-capabilities.test.js new file mode 100644 index 0000000..cae0297 --- /dev/null +++ b/src/lessons/landed-capabilities.test.js @@ -0,0 +1,25 @@ +import { describe, expect, it } from 'vitest'; +import { readFileSync } from 'node:fs'; +import path from 'node:path'; +import meta from './meta.js'; + +const root = path.resolve(process.cwd(), 'src/lessons'); +const capabilities = [ + ['sv/macro-formal-continuation', 'macro_formal'], + ['sv/struct-field-refs', 'struct_field'], + ['sv/indexed-part-select', 'indexed_part_select'], + ['sv/nested-child-input', 'nested_child_input'] +]; + +describe('landed Mox capability lessons', () => { + it('are registered with runnable simulation metadata', () => { + for (const [slug, basename] of capabilities) { + expect(meta[slug]?.runner ?? 'sim').toBe('sim'); + const dir = path.join(root, slug); + const source = readFileSync(path.join(dir, `${basename}.sv`), 'utf8'); + const solution = readFileSync(path.join(dir, `${basename}.sol.sv`), 'utf8'); + expect(source).toContain('module tb'); + expect(solution).toContain('$display("PASS")'); + } + }); +}); diff --git a/src/lessons/meta.js b/src/lessons/meta.js index 5ee7bc5..40264bf 100644 --- a/src/lessons/meta.js +++ b/src/lessons/meta.js @@ -24,6 +24,10 @@ export default { 'sv/queues-arrays': { title: 'Dynamic Arrays and Queues', focus: '/src/addr_buf.sv', top: 'addr_buf_tb' }, 'sv/fork-join': { title: 'Concurrent Processes: fork...join', focus: '/src/concurrent.sv', top: 'concurrent_tb' }, 'sv/randomization': { title: 'Constrained Randomization', focus: '/src/rand_txn.sv', top: 'rand_txn_tb' }, + 'sv/macro-formal-continuation': { title: 'Macro Formal Continuations', focus: '/src/macro_formal.sv', top: 'tb' }, + 'sv/struct-field-refs': { title: 'Packed-Struct Field References', focus: '/src/struct_field.sv', top: 'tb' }, + 'sv/indexed-part-select': { title: 'Indexed Part-Select Bounds', focus: '/src/indexed_part_select.sv', top: 'tb' }, + 'sv/nested-child-input': { title: 'Nested Child Input Propagation', focus: '/src/nested_child_input.sv', top: 'tb' }, // ── SystemVerilog Assertions ─────────────────────────────────────────────── 'sva/concurrent-sim': { title: 'Concurrent Assertions in Simulation', focus: '/src/monitor.sv', runner: null }, diff --git a/src/lessons/sv/indexed-part-select/description.html b/src/lessons/sv/indexed-part-select/description.html new file mode 100644 index 0000000..fbb9bb2 --- /dev/null +++ b/src/lessons/sv/indexed-part-select/description.html @@ -0,0 +1,9 @@ +

An indexed part-select chooses a fixed-width slice from a run-time base index. The +: width form starts at the base and counts upward through the packed vector.

+ +

Template

+
<vector>[<base> +: <constant width>]
+<vector>[<base> -: <constant width>]
+ +

The first check uses a run-time base and selects four bits entirely inside the vector. The second selection is completely outside the declared range, so the four-state result is unknown. Keeping the example to these unambiguous cases makes the lesson agree across Mox and Xcelium while the rule remains visible.

+ +

IEEE 1800-2023 §11.5.1 defines indexed part-selects and requires a positive constant width. A partially out-of-range read returns x for out-of-range bits and preserves in-range bits.

diff --git a/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv b/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv new file mode 100644 index 0000000..dbf9e56 --- /dev/null +++ b/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv @@ -0,0 +1,18 @@ +module tb; + logic [7:0] data; + int base; + logic [3:0] inside_slice; + logic [3:0] partial_slice; + + initial begin + data = 8'b1101_0110; + base = 4; + inside_slice = data[base +: 4]; + partial_slice = data[8 +: 4]; + if (inside_slice !== 4'b1101 || partial_slice !== 4'bxxxx) + $display("FAIL: inside=%b partial=%b", inside_slice, partial_slice); + else + $display("PASS"); + $finish; + end +endmodule diff --git a/src/lessons/sv/indexed-part-select/indexed_part_select.sv b/src/lessons/sv/indexed-part-select/indexed_part_select.sv new file mode 100644 index 0000000..1e8ea28 --- /dev/null +++ b/src/lessons/sv/indexed-part-select/indexed_part_select.sv @@ -0,0 +1,18 @@ +module tb; + logic [7:0] data; + int base; + logic [3:0] inside_slice; + logic [3:0] partial_slice; + + initial begin + data = 8'b1101_0110; + base = 2; + inside_slice = data[base +: 4]; + partial_slice = data[8 +: 4]; + if (inside_slice !== 4'b1010 || partial_slice !== 4'bxxxx) + $display("FAIL: inside=%b partial=%b", inside_slice, partial_slice); + else + $display("PASS"); + $finish; + end +endmodule diff --git a/src/lessons/sv/macro-formal-continuation/description.html b/src/lessons/sv/macro-formal-continuation/description.html new file mode 100644 index 0000000..0506e98 --- /dev/null +++ b/src/lessons/sv/macro-formal-continuation/description.html @@ -0,0 +1,11 @@ +

A text macro can span several source lines when each continued line ends with a backslash. The preprocessor removes the backslash-newline pair before the compiler sees the declaration.

+ +

Template

+
`define <name>(<formal>) \
+  <expanded text using <formal>>
+ +

In this example the macro emits a function declaration. The `` token-paste operator joins the macro argument to the function name, so `DECLARE_SUM(4) creates sum4. The formal argument list itself is split across continued lines.

+ +

Change the function body in macro_formal.sv so the generated function adds its two arguments. The testbench calls the generated function with its default arguments and prints PASS only when the expansion is correct.

+ +

IEEE 1800-2023 §22.5.1 defines text-macro substitution and says a backslash immediately before a newline continues macro text onto the next line. This is preprocessing, not a run-time function call.

diff --git a/src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv b/src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv new file mode 100644 index 0000000..e906d7d --- /dev/null +++ b/src/lessons/sv/macro-formal-continuation/macro_formal.sol.sv @@ -0,0 +1,17 @@ +`define DECLARE_SUM(W) \ + function automatic int sum``W( \ + int a = W, int b = 2); \ + return a + b; \ + endfunction + +module tb; + `DECLARE_SUM(4) + + initial begin + if (sum4() !== 6) + $display("FAIL: macro expansion returned %0d", sum4()); + else + $display("PASS"); + $finish; + end +endmodule diff --git a/src/lessons/sv/macro-formal-continuation/macro_formal.sv b/src/lessons/sv/macro-formal-continuation/macro_formal.sv new file mode 100644 index 0000000..41d3cd7 --- /dev/null +++ b/src/lessons/sv/macro-formal-continuation/macro_formal.sv @@ -0,0 +1,17 @@ +`define DECLARE_SUM(W) \ + function automatic int sum``W( \ + int a = W, int b = 2); \ + return a - b; \ + endfunction + +module tb; + `DECLARE_SUM(4) + + initial begin + if (sum4() !== 6) + $display("FAIL: macro expansion returned %0d", sum4()); + else + $display("PASS"); + $finish; + end +endmodule diff --git a/src/lessons/sv/nested-child-input/description.html b/src/lessons/sv/nested-child-input/description.html new file mode 100644 index 0000000..658e53c --- /dev/null +++ b/src/lessons/sv/nested-child-input/description.html @@ -0,0 +1,14 @@ +

Module inputs are live connections from the parent. When a child publishes a value, another child reached through a nested module must see that value before its clocked process samples it.

+ +

Template

+
module <source>(input logic clk, output logic <signal>);
+    always @(negedge clk) <signal> <= <value>;
+endmodule
+
+module <sink>(input logic clk, input logic <signal>);
+    always @(posedge clk) <check the input>;
+endmodule
+ +

The source raises valid on a falling edge. The direct sink, a sink behind a wire wrapper, and a sink behind an output bridge all sample the same value on the following rising edge. The testbench counts four successful samples.

+ +

IEEE 1800-2023 §23.2.2 describes module port connections; a child input is driven by its connected parent expression. The clocked behavior uses procedural timing from §9.4.2.

diff --git a/src/lessons/sv/nested-child-input/nested_child_input.sol.sv b/src/lessons/sv/nested-child-input/nested_child_input.sol.sv new file mode 100644 index 0000000..b33e179 --- /dev/null +++ b/src/lessons/sv/nested-child-input/nested_child_input.sol.sv @@ -0,0 +1,35 @@ +module source(input logic clk, output logic valid); + initial valid = 1'b0; + always @(negedge clk) valid <= 1'b1; + always @(posedge clk) valid <= 1'b0; +endmodule + +module sink(input logic clk, input logic valid, output logic seen); + initial seen = 1'b0; + always @(posedge clk) + if (valid) seen <= 1'b1; +endmodule + +module wrapper(input logic clk, input logic valid, output logic seen); + sink inner(clk, valid, seen); +endmodule + +module tb; + logic clk = 1'b0; + logic valid; + logic direct_seen; + logic nested_seen; + source src(clk, valid); + sink direct(clk, valid, direct_seen); + wrapper nested(clk, valid, nested_seen); + always #5 clk = ~clk; + + initial begin + #16; + if (direct_seen !== 1'b1 || nested_seen !== 1'b1) + $display("FAIL: direct=%b nested=%b", direct_seen, nested_seen); + else + $display("PASS"); + $finish; + end +endmodule diff --git a/src/lessons/sv/nested-child-input/nested_child_input.sv b/src/lessons/sv/nested-child-input/nested_child_input.sv new file mode 100644 index 0000000..2dbd447 --- /dev/null +++ b/src/lessons/sv/nested-child-input/nested_child_input.sv @@ -0,0 +1,35 @@ +module source(input logic clk, output logic valid); + initial valid = 1'b0; + always @(negedge clk) valid <= 1'b1; + always @(posedge clk) valid <= 1'b0; +endmodule + +module sink(input logic clk, input logic valid, output logic seen); + initial seen = 1'b0; + always @(posedge clk) + if (valid) seen <= 1'b1; +endmodule + +module wrapper(input logic clk, input logic valid, output logic seen); + sink inner(clk, 1'b0, seen); +endmodule + +module tb; + logic clk = 1'b0; + logic valid; + logic direct_seen; + logic nested_seen; + source src(clk, valid); + sink direct(clk, valid, direct_seen); + wrapper nested(clk, valid, nested_seen); + always #5 clk = ~clk; + + initial begin + #16; + if (direct_seen !== 1'b1 || nested_seen !== 1'b1) + $display("FAIL: direct=%b nested=%b", direct_seen, nested_seen); + else + $display("PASS"); + $finish; + end +endmodule diff --git a/src/lessons/sv/struct-field-refs/description.html b/src/lessons/sv/struct-field-refs/description.html new file mode 100644 index 0000000..ac3663d --- /dev/null +++ b/src/lessons/sv/struct-field-refs/description.html @@ -0,0 +1,15 @@ +

A packed struct is one vector with named slices. That makes it useful at module boundaries: a child can read one field while the parent drives the complete value.

+ +

Template

+
typedef struct packed {
+    logic [N:0] <field>;
+    logic [M:0] <field>;
+} <name>_t;
+
+module <child>(input <name>_t src);
+    assign <output> = src.<field>;
+endmodule
+ +

The driver reads only exp_bits from the packed struct and drives that field on the destination struct. The testbench changes the source field and checks the connected field after one time step.

+ +

IEEE 1800-2023 §7.2.1 says a packed struct is treated as one vector, with the first declared member as the most-significant member. Its members can still be selected by name.

diff --git a/src/lessons/sv/struct-field-refs/struct_field.sol.sv b/src/lessons/sv/struct-field-refs/struct_field.sol.sv new file mode 100644 index 0000000..86308b2 --- /dev/null +++ b/src/lessons/sv/struct-field-refs/struct_field.sol.sv @@ -0,0 +1,25 @@ +typedef struct packed { + logic [31:0] exp_bits; + logic [31:0] man_bits; +} pair_t; + +module field_driver(input pair_t src, inout pair_t dst); + assign dst.exp_bits = src.exp_bits; +endmodule + +module tb; + pair_t src; + tri pair_t dst; + field_driver driver(src, dst); + + initial begin + src = '0; + src.exp_bits = 32'hA5; + #1; + if (dst.exp_bits !== 32'hA5) + $display("FAIL: got %h", dst.exp_bits); + else + $display("PASS"); + $finish; + end +endmodule diff --git a/src/lessons/sv/struct-field-refs/struct_field.sv b/src/lessons/sv/struct-field-refs/struct_field.sv new file mode 100644 index 0000000..f4a6401 --- /dev/null +++ b/src/lessons/sv/struct-field-refs/struct_field.sv @@ -0,0 +1,25 @@ +typedef struct packed { + logic [31:0] exp_bits; + logic [31:0] man_bits; +} pair_t; + +module field_driver(input pair_t src, inout pair_t dst); + assign dst.exp_bits = src.man_bits; +endmodule + +module tb; + pair_t src; + tri pair_t dst; + field_driver driver(src, dst); + + initial begin + src = '0; + src.exp_bits = 32'hA5; + #1; + if (dst.exp_bits !== 32'hA5) + $display("FAIL: got %h", dst.exp_bits); + else + $display("PASS"); + $finish; + end +endmodule From 2802c6d186d17b573f4e2ecee66b310655f141a8 Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 09:23:06 +0000 Subject: [PATCH 04/26] test: expect deliberate concurrent assertion failure --- e2e/qa-all-lessons.spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/e2e/qa-all-lessons.spec.js b/e2e/qa-all-lessons.spec.js index d687578..ceb1ab9 100644 --- a/e2e/qa-all-lessons.spec.js +++ b/e2e/qa-all-lessons.spec.js @@ -33,6 +33,7 @@ for (const lesson of LESSONS) { // Lessons whose testbench deliberately violates the assertions it teaches. const EXPECTED_ASSERTION_FAILURES = { + 'sva/concurrent-sim': ['req_gnt_check'], 'sva/isunknown': ['we_a', 'addr_a', 'rdata_a'] }; From c782105053fc37e43a98cf9be18b4544b9515b3c Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 09:42:50 +0000 Subject: [PATCH 05/26] fix: calibrate indexed part-select starter --- .../capability-receipts/final-summary.tsv | 6 +-- .../tutorial/capability-receipts/summary.tsv | 6 +-- ...d-part-select__solution__compile.final.log | 19 +++++----- ...indexed-part-select__solution__compile.log | 37 ++++++++++--------- ...part-select__solution__interpret.final.log | 9 +++-- ...dexed-part-select__solution__interpret.log | 15 ++++---- ...d-part-select__solution__refdiff.final.txt | 2 +- ...indexed-part-select__solution__refdiff.txt | 2 +- ...ed-part-select__starter__compile.final.log | 17 +++++---- ..._indexed-part-select__starter__compile.log | 37 ++++++++++--------- ...-part-select__starter__interpret.final.log | 3 +- ...ndexed-part-select__starter__interpret.log | 13 ++++--- src/lessons/landed-capabilities.test.js | 10 +++++ .../sv/indexed-part-select/description.html | 2 +- .../indexed_part_select.sv | 2 +- 15 files changed, 99 insertions(+), 81 deletions(-) diff --git a/artifacts/tutorial/capability-receipts/final-summary.tsv b/artifacts/tutorial/capability-receipts/final-summary.tsv index 51e5bda..c2a3ec6 100644 --- a/artifacts/tutorial/capability-receipts/final-summary.tsv +++ b/artifacts/tutorial/capability-receipts/final-summary.tsv @@ -8,11 +8,11 @@ sv/struct-field-refs starter compile 0 FAIL: got 00000000 sv/struct-field-refs solution interpret 0 PASS sv/struct-field-refs solution compile 0 PASS sv/struct-field-refs solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sol.sv", "sha256": "4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-e9za9q_5"} -sv/indexed-part-select starter interpret 0 PASS -sv/indexed-part-select starter compile 0 PASS +sv/indexed-part-select starter interpret 0 FAIL: inside=0101 partial=xxxx +sv/indexed-part-select starter compile 0 FAIL: inside=0101 partial=xxxx sv/indexed-part-select solution interpret 0 PASS sv/indexed-part-select solution compile 0 PASS -sv/indexed-part-select solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "f1a2b57cbe76ce8b164718ecf8fe9b09d086b6b60bb201dcce7252b652d83e37", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-u38hyza2"} +sv/indexed-part-select solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "ece4013deb0c782d749812bba7586a9ea7dd9b2750bfa3747931782e4ea79c64", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-x0464xqr"} sv/nested-child-input starter interpret 0 FAIL: direct=1 nested=0 sv/nested-child-input starter compile 0 FAIL: direct=1 nested=0 sv/nested-child-input solution interpret 0 PASS diff --git a/artifacts/tutorial/capability-receipts/summary.tsv b/artifacts/tutorial/capability-receipts/summary.tsv index 211e697..8b942d4 100644 --- a/artifacts/tutorial/capability-receipts/summary.tsv +++ b/artifacts/tutorial/capability-receipts/summary.tsv @@ -8,11 +8,11 @@ sv/struct-field-refs starter compile 0 FAIL: got 00000000 sv/struct-field-refs solution interpret 0 PASS sv/struct-field-refs solution compile 0 PASS sv/struct-field-refs solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/struct-field-refs/struct_field.sol.sv", "sha256": "4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-_vbq7z4i"} -sv/indexed-part-select starter interpret 0 FAIL: inside=1010 partial=xx11 -sv/indexed-part-select starter compile 0 FAIL: inside=1010 partial=xx11 +sv/indexed-part-select starter interpret 0 FAIL: inside=0101 partial=xxxx +sv/indexed-part-select starter compile 0 FAIL: inside=0101 partial=xxxx sv/indexed-part-select solution interpret 0 PASS sv/indexed-part-select solution compile 0 PASS -sv/indexed-part-select solution refdiff 1 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "e49eb0d557b2b52f482f421a1fdf295e0a61b2d8a3ae0debe9dc7ac604f00137", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "reference_only_fail", "output_equal": false, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-rzhk1mw5"} +sv/indexed-part-select solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "ece4013deb0c782d749812bba7586a9ea7dd9b2750bfa3747931782e4ea79c64", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-x0464xqr"} sv/nested-child-input starter interpret 0 PASS sv/nested-child-input starter compile 0 PASS sv/nested-child-input solution interpret 0 PASS diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.final.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.final.log index 3769f7d..dafad68 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.final.log +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.final.log @@ -2,22 +2,22 @@ mox-run wall guards: compile=25000ms simulation=disabled /var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] partial_slice = data[8 +: 4]; ^ -[mox-run] parse (5ms, total: 5ms) -[mox-run] lower (3ms, total: 9ms) -[mox-run] aot-start (0ms, total: 9ms) -[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-0fa8994e0b83e08ec157d60641ea20891f80db72f850563b21f0d27da0a07dd6/mox-run-aot-344507.log -[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-0fa8994e0b83e08ec157d60641ea20891f80db72f850563b21f0d27da0a07dd6/mox-run-aot-a94d66.so (1 processes, 0 functions, 0 trampolines, 9.044797e-02s) -[mox-run] aot-compile (111ms, total: 120ms) -[mox-run] simulate (0ms, total: 120ms) +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (3ms, total: 7ms) +[mox-run] aot-start (0ms, total: 8ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-79a8d4559a3893576d58e843b03e833f36f061622944d2b6a97d6f9b6fd48f34/mox-run-aot-84ccdb.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-79a8d4559a3893576d58e843b03e833f36f061622944d2b6a97d6f9b6fd48f34/mox-run-aot-422343.so (1 processes, 0 functions, 0 trampolines, 8.469800e-02s) +[mox-run] aot-compile (101ms, total: 109ms) +[mox-run] simulate (0ms, total: 109ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd [mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e [mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=13 accounted=13 positive=13 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:ea65bad2d713a3b01fd3864b8b77cd9376b036adcc0c52aca6f422fdb5675fd9 [mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd -[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 13 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-f37f0db55d0307de2e6e8c04eb1782f9) +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 13 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-5ad2837faa747f6aa97b1c71a61be6b3) [mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=13, retained=13 -[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:84d5211e966b89fe02003b1c6833a9420ea6a995a0f874c6e814f561d66ebd14 status=ok +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:59d63a0f60d4a4659be267525c3ad810d21cd116b1148168ebff96a83e8d310c status=ok [mox-sim] Stage: init (prev: 0ms, total: 0ms) [mox-sim] Pre-aliased 13 address-bound globals to .so storage [mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) @@ -28,6 +28,7 @@ mox-run wall guards: compile=25000ms simulation=disabled [mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 [mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' [mox-sim] Stage: load-compiled (prev: 2ms, total: 2ms) +Using module 'tb' as top module [mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module [mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.log index cd2064e..dafad68 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.log +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__compile.log @@ -1,37 +1,38 @@ mox-run wall guards: compile=25000ms simulation=disabled -/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:9:26: warning: cannot select range of [9:6] from 'logic[7:0]' [-Wrange-oob] - partial_slice = data[6 +: 4]; +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[8 +: 4]; ^ -[mox-run] parse (5ms, total: 5ms) -[mox-run] lower (3ms, total: 9ms) -[mox-run] aot-start (0ms, total: 10ms) -[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-24f590d88bd092538a4e88e07e16f8384dee994d524f25885327bcf3c8830b2b/mox-run-aot-a4c33c.log -[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-24f590d88bd092538a4e88e07e16f8384dee994d524f25885327bcf3c8830b2b/mox-run-aot-22f141.so (1 processes, 0 functions, 0 trampolines, 9.897636e-02s) -[mox-run] aot-compile (121ms, total: 132ms) -[mox-run] simulate (0ms, total: 132ms) +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (3ms, total: 7ms) +[mox-run] aot-start (0ms, total: 8ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-79a8d4559a3893576d58e843b03e833f36f061622944d2b6a97d6f9b6fd48f34/mox-run-aot-84ccdb.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-79a8d4559a3893576d58e843b03e833f36f061622944d2b6a97d6f9b6fd48f34/mox-run-aot-422343.so (1 processes, 0 functions, 0 trampolines, 8.469800e-02s) +[mox-run] aot-compile (101ms, total: 109ms) +[mox-run] simulate (0ms, total: 109ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd [mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e -[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=14 accounted=14 positive=14 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:93a62882b588d80f44a480bf536dce59fd4197020bef1fb1d92c988247cdfcb2 +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=13 accounted=13 positive=13 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:ea65bad2d713a3b01fd3864b8b77cd9376b036adcc0c52aca6f422fdb5675fd9 [mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd -[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 14 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-03d12dd638da1614398839b70ccf5470) -[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=14, retained=14 -[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:758a726a3c19b327cf7783a01a661e06653ceb5ef09a47793be63dd6d5101a88 status=ok +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 13 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-5ad2837faa747f6aa97b1c71a61be6b3) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=13, retained=13 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:59d63a0f60d4a4659be267525c3ad810d21cd116b1148168ebff96a83e8d310c status=ok [mox-sim] Stage: init (prev: 0ms, total: 0ms) -[mox-sim] Pre-aliased 14 address-bound globals to .so storage +[mox-sim] Pre-aliased 13 address-bound globals to .so storage [mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) [mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted [mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd -[mox-sim] Address-bound final-LLVM-global probes: 14/14 rows, 21/21 bytes bidirectional, owner-generation=1 +[mox-sim] Address-bound final-LLVM-global probes: 13/13 rows, 28/28 bytes bidirectional, owner-generation=1 [mox-sim] Compiled process dispatch: 1/1 processes wired [mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 [mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' -[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +[mox-sim] Stage: load-compiled (prev: 2ms, total: 2ms) +Using module 'tb' as top module [mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module -[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 -[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Stage: run (prev: 0ms, total: 2ms) [mox-sim] Starting simulation PASS [mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.final.log index d54f6d8..5e9ad33 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.final.log +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.final.log @@ -2,16 +2,17 @@ mox-run wall guards: compile=25000ms simulation=disabled /var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] partial_slice = data[8 +: 4]; ^ -[mox-run] parse (5ms, total: 5ms) -[mox-run] lower (3ms, total: 9ms) -[mox-run] simulate (0ms, total: 9ms) +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] Stage: init (prev: 0ms, total: 0ms) +Using module 'tb' as top module [mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module [mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 -[mox-sim] Stage: run (prev: 1ms, total: 2ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) [mox-sim] Starting simulation PASS [mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv":16:5 to :13) diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.log index a35f2a5..5e9ad33 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.log +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__interpret.log @@ -1,20 +1,21 @@ mox-run wall guards: compile=25000ms simulation=disabled -/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:9:26: warning: cannot select range of [9:6] from 'logic[7:0]' [-Wrange-oob] - partial_slice = data[6 +: 4]; +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[8 +: 4]; ^ -[mox-run] parse (5ms, total: 5ms) -[mox-run] lower (3ms, total: 9ms) -[mox-run] simulate (0ms, total: 9ms) +[mox-run] parse (4ms, total: 4ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] simulate (0ms, total: 8ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] Stage: init (prev: 0ms, total: 0ms) +Using module 'tb' as top module [mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module -[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 [mox-sim] Stage: run (prev: 1ms, total: 1ms) [mox-sim] Starting simulation PASS -[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv":14:5 to :13) +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv":16:5 to :13) [mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) [mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 [mox-sim] Simulation finished at time 0 fs diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.final.txt b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.final.txt index 7f77a07..270b6d7 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.final.txt +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.final.txt @@ -1 +1 @@ -{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "f1a2b57cbe76ce8b164718ecf8fe9b09d086b6b60bb201dcce7252b652d83e37", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-u38hyza2"} +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "ece4013deb0c782d749812bba7586a9ea7dd9b2750bfa3747931782e4ea79c64", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-x0464xqr"} diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.txt b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.txt index 758b22f..270b6d7 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.txt +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__solution__refdiff.txt @@ -1 +1 @@ -{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "e49eb0d557b2b52f482f421a1fdf295e0a61b2d8a3ae0debe9dc7ac604f00137", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "reference_only_fail", "output_equal": false, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/capability-audit-rzhk1mw5"} +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sol.sv", "sha256": "ece4013deb0c782d749812bba7586a9ea7dd9b2750bfa3747931782e4ea79c64", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-x0464xqr"} diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.final.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.final.log index 9015866..a1209a5 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.final.log +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.final.log @@ -3,21 +3,21 @@ mox-run wall guards: compile=25000ms simulation=disabled partial_slice = data[8 +: 4]; ^ [mox-run] parse (5ms, total: 5ms) -[mox-run] lower (3ms, total: 9ms) +[mox-run] lower (3ms, total: 8ms) [mox-run] aot-start (0ms, total: 9ms) -[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-ed76b07b12a5bccb721606d629addc6d8627c7fde586fe17393a700b01615855/mox-run-aot-87b158.log -[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-ed76b07b12a5bccb721606d629addc6d8627c7fde586fe17393a700b01615855/mox-run-aot-d68f8b.so (1 processes, 0 functions, 0 trampolines, 8.684930e-02s) -[mox-run] aot-compile (111ms, total: 121ms) -[mox-run] simulate (0ms, total: 121ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-f26dddfc01a97f005069e3a9bb7cfe5efae4d0c55a7566e1296a09e50a5fadfa/mox-run-aot-aa5cc5.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-f26dddfc01a97f005069e3a9bb7cfe5efae4d0c55a7566e1296a09e50a5fadfa/mox-run-aot-a91d2b.so (1 processes, 0 functions, 0 trampolines, 8.515057e-02s) +[mox-run] aot-compile (101ms, total: 110ms) +[mox-run] simulate (0ms, total: 110ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd [mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e [mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=13 accounted=13 positive=13 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:ea65bad2d713a3b01fd3864b8b77cd9376b036adcc0c52aca6f422fdb5675fd9 [mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd -[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 13 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-7aa7f769b366d294cdb0421ef305a85b) +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 13 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-0448c29b9e9e293d7d0f799e2736f83f) [mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=13, retained=13 -[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:4fa384b78ea6bec781d2be918fe1854d0fca143852cf6f039d32253fee6aa83d status=ok +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:ad88bb34e22dfe0e656e368cc13a24b5b57348bb46068656180d1f76bea67aa1 status=ok [mox-sim] Stage: init (prev: 0ms, total: 0ms) [mox-sim] Pre-aliased 13 address-bound globals to .so storage [mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) @@ -28,12 +28,13 @@ mox-run wall guards: compile=25000ms simulation=disabled [mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 [mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' [mox-sim] Stage: load-compiled (prev: 2ms, total: 2ms) +Using module 'tb' as top module [mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module [mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 [mox-sim] Stage: run (prev: 0ms, total: 2ms) [mox-sim] Starting simulation -PASS +FAIL: inside=0101 partial=xxxx [mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) [mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 [mox-sim] Simulation finished at time 0 fs diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.log index a75010e..a1209a5 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.log +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__compile.log @@ -1,39 +1,40 @@ mox-run wall guards: compile=25000ms simulation=disabled -/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv:9:26: warning: cannot select range of [9:6] from 'logic[7:0]' [-Wrange-oob] - partial_slice = data[6 +: 4]; +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[8 +: 4]; ^ [mox-run] parse (5ms, total: 5ms) -[mox-run] lower (3ms, total: 9ms) -[mox-run] aot-start (0ms, total: 10ms) -[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-4d050bfcbb7782922e4502cdc1a1b51f5c92d9da8369cf987613a3ec431a3ebd/mox-run-aot-d99534.log -[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-4d050bfcbb7782922e4502cdc1a1b51f5c92d9da8369cf987613a3ec431a3ebd/mox-run-aot-ee7749.so (1 processes, 0 functions, 0 trampolines, 8.819415e-02s) -[mox-run] aot-compile (111ms, total: 121ms) -[mox-run] simulate (0ms, total: 121ms) +[mox-run] lower (3ms, total: 8ms) +[mox-run] aot-start (0ms, total: 9ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-f26dddfc01a97f005069e3a9bb7cfe5efae4d0c55a7566e1296a09e50a5fadfa/mox-run-aot-aa5cc5.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-f26dddfc01a97f005069e3a9bb7cfe5efae4d0c55a7566e1296a09e50a5fadfa/mox-run-aot-a91d2b.so (1 processes, 0 functions, 0 trampolines, 8.515057e-02s) +[mox-run] aot-compile (101ms, total: 110ms) +[mox-run] simulate (0ms, total: 110ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd [mox-sim] aot-publication/v2 domain=module-loader-processes expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:dbece0947e8df29c3d674a06bb85a08e2b7bd4a0382cd6522ab2c5fa69007e8e -[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=14 accounted=14 positive=14 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:93a62882b588d80f44a480bf536dce59fd4197020bef1fb1d92c988247cdfcb2 +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=13 accounted=13 positive=13 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:ea65bad2d713a3b01fd3864b8b77cd9376b036adcc0c52aca6f422fdb5675fd9 [mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd -[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 14 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-5313e733e3f8796dfdc33b0ad85a7b97) -[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=14, retained=14 -[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:d1bde90f038fbb25a303ed17254978867e5af4a6bd97bdcf27922fd541eeaf4d status=ok +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 1 processes, 13 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-0448c29b9e9e293d7d0f799e2736f83f) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=13, retained=13 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:ad88bb34e22dfe0e656e368cc13a24b5b57348bb46068656180d1f76bea67aa1 status=ok [mox-sim] Stage: init (prev: 0ms, total: 0ms) -[mox-sim] Pre-aliased 14 address-bound globals to .so storage +[mox-sim] Pre-aliased 13 address-bound globals to .so storage [mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) [mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted [mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd -[mox-sim] Address-bound final-LLVM-global probes: 14/14 rows, 21/21 bytes bidirectional, owner-generation=1 +[mox-sim] Address-bound final-LLVM-global probes: 13/13 rows, 28/28 bytes bidirectional, owner-generation=1 [mox-sim] Compiled process dispatch: 1/1 processes wired [mox-sim] aot-publication/v2 domain=process-dispatch expected=1 accounted=1 positive=1 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:979054643387faf73ad0f08f4cac05733060ee3d4ac3b9ff2b77a69eefd36c41 [mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' -[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +[mox-sim] Stage: load-compiled (prev: 2ms, total: 2ms) +Using module 'tb' as top module [mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module -[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 -[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Stage: run (prev: 0ms, total: 2ms) [mox-sim] Starting simulation -FAIL: inside=1010 partial=xx11 +FAIL: inside=0101 partial=xxxx [mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) [mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 [mox-sim] Simulation finished at time 0 fs diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.final.log index cbcc196..c31825c 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.final.log +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.final.log @@ -8,12 +8,13 @@ mox-run wall guards: compile=25000ms simulation=disabled [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] Stage: init (prev: 0ms, total: 0ms) +Using module 'tb' as top module [mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module [mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 [mox-sim] Stage: run (prev: 1ms, total: 1ms) [mox-sim] Starting simulation -PASS +FAIL: inside=0101 partial=xxxx [mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv":16:5 to :13) [mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) [mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 diff --git a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.log b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.log index f673d1c..c31825c 100644 --- a/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.log +++ b/artifacts/tutorial/capability-receipts/sv__indexed-part-select__starter__interpret.log @@ -1,20 +1,21 @@ mox-run wall guards: compile=25000ms simulation=disabled -/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv:9:26: warning: cannot select range of [9:6] from 'logic[7:0]' [-Wrange-oob] - partial_slice = data[6 +: 4]; +/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv:11:26: warning: cannot select range of [11:8] from 'logic[7:0]' [-Wrange-oob] + partial_slice = data[8 +: 4]; ^ [mox-run] parse (5ms, total: 5ms) [mox-run] lower (3ms, total: 9ms) -[mox-run] simulate (0ms, total: 10ms) +[mox-run] simulate (0ms, total: 9ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] Stage: init (prev: 0ms, total: 0ms) +Using module 'tb' as top module [mox-sim] Found 1 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 73 total ops) in module -[mox-sim] Registered 6 LLHD signals and 1 LLHD processes/initial blocks +[mox-sim] Registered 8 LLHD signals and 1 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 [mox-sim] Stage: run (prev: 1ms, total: 1ms) [mox-sim] Starting simulation -FAIL: inside=1010 partial=xx11 -[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv":14:5 to :13) +FAIL: inside=0101 partial=xxxx +[mox-sim] sim.terminate triggered in process ID 1 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/indexed-part-select/indexed_part_select.sv":16:5 to :13) [mox-sim] Simulation terminated at time 0 fs (success=true, verbose=true) [mox-sim] Main loop exit: shouldContinue()=false at time 0 fs, iter=1, deltas=1 [mox-sim] Simulation finished at time 0 fs diff --git a/src/lessons/landed-capabilities.test.js b/src/lessons/landed-capabilities.test.js index cae0297..6f2002b 100644 --- a/src/lessons/landed-capabilities.test.js +++ b/src/lessons/landed-capabilities.test.js @@ -22,4 +22,14 @@ describe('landed Mox capability lessons', () => { expect(solution).toContain('$display("PASS")'); } }); + + it('keeps the indexed-select starter unsolved and its range wording precise', () => { + const dir = path.join(root, 'sv/indexed-part-select'); + const source = readFileSync(path.join(dir, 'indexed_part_select.sv'), 'utf8'); + const description = readFileSync(path.join(dir, 'description.html'), 'utf8'); + expect(source).toContain('base = 2;'); + expect(source).toContain("inside_slice !== 4'b1101"); + expect(description).toContain('completely out-of-range read'); + expect(description).not.toContain('A partially out-of-range read returns'); + }); }); diff --git a/src/lessons/sv/indexed-part-select/description.html b/src/lessons/sv/indexed-part-select/description.html index fbb9bb2..3e21d4d 100644 --- a/src/lessons/sv/indexed-part-select/description.html +++ b/src/lessons/sv/indexed-part-select/description.html @@ -6,4 +6,4 @@

Template

The first check uses a run-time base and selects four bits entirely inside the vector. The second selection is completely outside the declared range, so the four-state result is unknown. Keeping the example to these unambiguous cases makes the lesson agree across Mox and Xcelium while the rule remains visible.

-

IEEE 1800-2023 §11.5.1 defines indexed part-selects and requires a positive constant width. A partially out-of-range read returns x for out-of-range bits and preserves in-range bits.

+

IEEE 1800-2023 §11.5.1 defines indexed part-selects and requires a positive constant width. A completely out-of-range read returns x; a partially out-of-range read returns x only for its out-of-range bits.

diff --git a/src/lessons/sv/indexed-part-select/indexed_part_select.sv b/src/lessons/sv/indexed-part-select/indexed_part_select.sv index 1e8ea28..1241902 100644 --- a/src/lessons/sv/indexed-part-select/indexed_part_select.sv +++ b/src/lessons/sv/indexed-part-select/indexed_part_select.sv @@ -9,7 +9,7 @@ module tb; base = 2; inside_slice = data[base +: 4]; partial_slice = data[8 +: 4]; - if (inside_slice !== 4'b1010 || partial_slice !== 4'bxxxx) + if (inside_slice !== 4'b1101 || partial_slice !== 4'bxxxx) $display("FAIL: inside=%b partial=%b", inside_slice, partial_slice); else $display("PASS"); From e096f9a814ad65cda0921c92c02ce070c9eb33c1 Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 09:44:40 +0000 Subject: [PATCH 06/26] test: lock indexed starter receipt calibration --- src/lessons/landed-capabilities.test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lessons/landed-capabilities.test.js b/src/lessons/landed-capabilities.test.js index 6f2002b..1a77562 100644 --- a/src/lessons/landed-capabilities.test.js +++ b/src/lessons/landed-capabilities.test.js @@ -27,9 +27,15 @@ describe('landed Mox capability lessons', () => { const dir = path.join(root, 'sv/indexed-part-select'); const source = readFileSync(path.join(dir, 'indexed_part_select.sv'), 'utf8'); const description = readFileSync(path.join(dir, 'description.html'), 'utf8'); + const receipts = readFileSync( + path.resolve(process.cwd(), 'artifacts/tutorial/capability-receipts/final-summary.tsv'), + 'utf8' + ); expect(source).toContain('base = 2;'); expect(source).toContain("inside_slice !== 4'b1101"); expect(description).toContain('completely out-of-range read'); expect(description).not.toContain('A partially out-of-range read returns'); + expect(receipts).toContain('sv/indexed-part-select\tstarter\tinterpret\t0\tFAIL: inside=0101 partial=xxxx'); + expect(receipts).toContain('sv/indexed-part-select\tstarter\tcompile\t0\tFAIL: inside=0101 partial=xxxx'); }); }); From 698c20fdbb4f9ee54e3f391fec96eb7eccc100dc Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 10:34:05 +0000 Subject: [PATCH 07/26] docs: record final capability receipt provenance --- artifacts/tutorial/SUMMARY.md | 3 ++ .../capability-receipts/PROVENANCE.md | 43 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 artifacts/tutorial/capability-receipts/PROVENANCE.md diff --git a/artifacts/tutorial/SUMMARY.md b/artifacts/tutorial/SUMMARY.md index a9cfe01..780e54d 100644 --- a/artifacts/tutorial/SUMMARY.md +++ b/artifacts/tutorial/SUMMARY.md @@ -104,6 +104,9 @@ current tutorial baseline. The capability receipt summaries are in `artifacts/tutorial/capability-receipts/{summary,final-summary}.tsv`. +Their corrected-tip hashes, native/reference argv, and the final build/e2e +receipt are recorded in +`artifacts/tutorial/capability-receipts/PROVENANCE.md`. ## WASM rebuild (done locally, NOT published; release `mox-wasm` is unchanged) Built with emsdk 4.0.21 from Mox main `9c5418532b9` (and landing `ea0fcd2`): mox-verilog, mox-sim, mox-bmc and diff --git a/artifacts/tutorial/capability-receipts/PROVENANCE.md b/artifacts/tutorial/capability-receipts/PROVENANCE.md new file mode 100644 index 0000000..c0b8e01 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/PROVENANCE.md @@ -0,0 +1,43 @@ +# Capability receipt provenance + +The corrected receipt bundle is pinned to tutorial commit +`e096f9a814ad65cda0921c92c02ce070c9eb33c1` (the indexed-part-select starter +calibration and its regression assertions). The bundle contains 42 files. + +## Immutable hashes + +- `final-summary.tsv`: `f6dd8c06383714e8ba95d2843cf03bfd40838338cb42cfb6d7a96c3bfe5dea6b` +- Sorted `sha256sum` digest of all files in this directory: `f99454a7b7294b8b29d307333e6a56bb4ca7d07da284505701e24d2fab29033f` +- Solution source hashes are recorded in each `refdiff` row of `final-summary.tsv`: + `macro-formal-continuation` `70bcc182fc6b32c4e8fac7eaee06196d845ffe8aed28318e592a8887a42224fd`; + `struct-field-refs` `4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555`; + `indexed-part-select` `ece4013deb0c782d749812bba7586a9ea7dd9b2750bfa3747931782e4ea79c64`; + `nested-child-input` `353b4404864303525e4a800307026c25dbde4a0a27faee79c3c56d319afbaa62`. + +## Native and reference argv + +Each native receipt used the following command shape, with the lesson's +self-contained source substituted for `` and `--mode` set to the +recorded mode: + +```text +taskset -c 0-79 timeout --kill-after=3s 30s /var/tmp/thomas-ahle/wt/landing/build-dev-fast/bin/mox-run --single-unit --timescale=1ns/1ns --mode= --max-wall-ms=25000 +``` + +Each differential receipt used: + +```text +/var/tmp/thomas-ahle/fleet/bin/refdiff --build-dir /var/tmp/thomas-ahle/wt/landing/build-dev-fast +``` + +The full JSON results, including source hashes, verdicts, and build directory, +are the `*.final.txt` files beside the TSV summary. + +## Final validation on the corrected tip + +- `npm test`: 13 files, 55 tests passed. +- `npm run build`: exit 0. +- `npm run test:e2e`: completed in 30.2 minutes with 175 passed and 53 failed; + the failures are the existing pinned-browser-WASM/Mox limitations, including + the expected macro, packed-struct, and nested-child rows that require a WASM + rebuild. Indexed part-select passed in the browser. No WASM rebuild was made. From d2c0ac7236ff39e0eded410f82c2469bbe8864ad Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 10:34:22 +0000 Subject: [PATCH 08/26] docs: clarify receipt bundle digest scope --- artifacts/tutorial/capability-receipts/PROVENANCE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/artifacts/tutorial/capability-receipts/PROVENANCE.md b/artifacts/tutorial/capability-receipts/PROVENANCE.md index c0b8e01..e809f26 100644 --- a/artifacts/tutorial/capability-receipts/PROVENANCE.md +++ b/artifacts/tutorial/capability-receipts/PROVENANCE.md @@ -7,7 +7,8 @@ calibration and its regression assertions). The bundle contains 42 files. ## Immutable hashes - `final-summary.tsv`: `f6dd8c06383714e8ba95d2843cf03bfd40838338cb42cfb6d7a96c3bfe5dea6b` -- Sorted `sha256sum` digest of all files in this directory: `f99454a7b7294b8b29d307333e6a56bb4ca7d07da284505701e24d2fab29033f` +- Sorted `sha256sum` digest of the 42 receipt files in this directory, + excluding this provenance file: `f99454a7b7294b8b29d307333e6a56bb4ca7d07da284505701e24d2fab29033f` - Solution source hashes are recorded in each `refdiff` row of `final-summary.tsv`: `macro-formal-continuation` `70bcc182fc6b32c4e8fac7eaee06196d845ffe8aed28318e592a8887a42224fd`; `struct-field-refs` `4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555`; From 728bcf3b8bb726287b048ea83083fd8273e631a6 Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 11:04:08 +0000 Subject: [PATCH 09/26] feat: add sequential UDP initialization chapter --- CURRICULUM.md | 5 +++ artifacts/tutorial/SUMMARY.md | 8 ++-- .../capability-receipts/PROVENANCE.md | 18 +++++--- .../capability-receipts/final-summary.tsv | 6 +++ .../tutorial/capability-receipts/summary.tsv | 6 +++ ...tial-udp-init__solution__compile.final.log | 43 +++++++++++++++++++ ...sequential-udp-init__solution__compile.log | 43 +++++++++++++++++++ ...al-udp-init__solution__interpret.final.log | 21 +++++++++ ...quential-udp-init__solution__interpret.log | 21 +++++++++ ...tial-udp-init__solution__refdiff.final.txt | 1 + ...sequential-udp-init__solution__refdiff.txt | 1 + ...ntial-udp-init__starter__compile.final.log | 42 ++++++++++++++++++ ..._sequential-udp-init__starter__compile.log | 42 ++++++++++++++++++ ...ial-udp-init__starter__interpret.final.log | 20 +++++++++ ...equential-udp-init__starter__interpret.log | 20 +++++++++ ...ntial-udp-init__starter__refdiff.final.txt | 1 + ..._sequential-udp-init__starter__refdiff.txt | 1 + src/lessons/index.js | 1 + src/lessons/landed-capabilities.test.js | 20 ++++++++- src/lessons/meta.js | 1 + .../sv/sequential-udp-init/description.html | 14 ++++++ .../sequential-udp-init/sequential_udp.sol.sv | 34 +++++++++++++++ .../sv/sequential-udp-init/sequential_udp.sv | 34 +++++++++++++++ 23 files changed, 391 insertions(+), 12 deletions(-) create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.log create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.final.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.log create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.final.log create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.log create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.final.txt create mode 100644 artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.txt create mode 100644 src/lessons/sv/sequential-udp-init/description.html create mode 100644 src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv create mode 100644 src/lessons/sv/sequential-udp-init/sequential_udp.sv diff --git a/CURRICULUM.md b/CURRICULUM.md index 9d517ec..a045c44 100644 --- a/CURRICULUM.md +++ b/CURRICULUM.md @@ -38,6 +38,11 @@ Flag numbers identify the weak dimension(s): 1=Concept Focus, 2=Starter Calibrat |---|---|---|---|---|---| | `sv/nested-child-input` | Nested Child Input Propagation | ✅ | — | `sv/always-ff` | live child input connections across nested modules | +### Chapter: Sequential UDP Initialization (September 2026) +| Slug | Title | Status | Score | Prereqs | Teaches | +|---|---|---|---|---|---| +| `sv/sequential-udp-init` | Sequential UDP Initialization | ✅ | — | `sv/always-ff` | sequential UDP state, edge-sensitive tables, and output initialization | + ### Chapter: Introduction | Slug | Title | Status | Score | Prereqs | Teaches | |---|---|---|---|---|---| diff --git a/artifacts/tutorial/SUMMARY.md b/artifacts/tutorial/SUMMARY.md index 780e54d..80f3a3e 100644 --- a/artifacts/tutorial/SUMMARY.md +++ b/artifacts/tutorial/SUMMARY.md @@ -90,10 +90,9 @@ One commit per issue, each with the test that fails before it and passes after: ### Landed capability chapters -Added four one-lesson chapters for capabilities landed in Mox by -`bcdf57717c1` on September 30, 2026. The later `36b040f6190` UDP startup-input -change is intentionally not documented because it is not in the coordinator's -current tutorial baseline. +Added five one-lesson chapters for user-facing SystemVerilog capabilities +landed in Mox between September 22 and September 30, 2026. The UDP chapter +tracks landing tip `36b040f6190c`; the pinned browser WASM remains unchanged. | Lesson | IEEE reference | Mox native | Xcelium/refdiff | Evidence | |---|---|---|---|---| @@ -101,6 +100,7 @@ current tutorial baseline. | `sv/struct-field-refs` | §7.2.1 | starter FAIL; solution PASS in interpreter and compile modes | solution PASS; output equal | `artifacts/tutorial/capability-receipts/*struct-field-refs*` | | `sv/indexed-part-select` | §11.5.1 | starter FAIL; solution PASS in interpreter and compile modes | solution PASS; output equal | `artifacts/tutorial/capability-receipts/*indexed-part-select*` | | `sv/nested-child-input` | §§23.2.2, 9.4.2 | starter FAIL; solution PASS in interpreter and compile modes | solution PASS; output equal | `artifacts/tutorial/capability-receipts/*nested-child-input*` | +| `sv/sequential-udp-init` | §§29.3.2, 29.6, 29.7 | starter FAIL; solution PASS in interpreter and compile modes | starter both_fail; solution PASS; output equal | `artifacts/tutorial/capability-receipts/*sequential-udp-init*` | The capability receipt summaries are in `artifacts/tutorial/capability-receipts/{summary,final-summary}.tsv`. diff --git a/artifacts/tutorial/capability-receipts/PROVENANCE.md b/artifacts/tutorial/capability-receipts/PROVENANCE.md index e809f26..e416d01 100644 --- a/artifacts/tutorial/capability-receipts/PROVENANCE.md +++ b/artifacts/tutorial/capability-receipts/PROVENANCE.md @@ -1,19 +1,22 @@ # Capability receipt provenance -The corrected receipt bundle is pinned to tutorial commit -`e096f9a814ad65cda0921c92c02ce070c9eb33c1` (the indexed-part-select starter -calibration and its regression assertions). The bundle contains 42 files. +The corrected receipt bundle contains 54 files and includes the sequential-UDP +chapter validated against Mox landing tip `36b040f6190ce488d406ce49a1c5e0aafb85d6ac`. +The tutorial's browser WASM remains the pinned release; it was not rebuilt. ## Immutable hashes -- `final-summary.tsv`: `f6dd8c06383714e8ba95d2843cf03bfd40838338cb42cfb6d7a96c3bfe5dea6b` -- Sorted `sha256sum` digest of the 42 receipt files in this directory, - excluding this provenance file: `f99454a7b7294b8b29d307333e6a56bb4ca7d07da284505701e24d2fab29033f` +- `final-summary.tsv`: `aece85fd8dccb5db3f1c4004f47c2a1a0e10c214ab6c769969bd89e4711ecafc` +- Sorted `sha256sum` digest of the 54 receipt files in this directory, + excluding this provenance file: `0d5e703cca3acd04b8539b5b3cef0e169e9fd1a199d0f6b47f8477f5617d7f4e` - Solution source hashes are recorded in each `refdiff` row of `final-summary.tsv`: `macro-formal-continuation` `70bcc182fc6b32c4e8fac7eaee06196d845ffe8aed28318e592a8887a42224fd`; `struct-field-refs` `4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555`; `indexed-part-select` `ece4013deb0c782d749812bba7586a9ea7dd9b2750bfa3747931782e4ea79c64`; `nested-child-input` `353b4404864303525e4a800307026c25dbde4a0a27faee79c3c56d319afbaa62`. +- Actual SHA-256 source hashes for the new UDP fixture are + `sequential_udp.sv` `8b4d8ad11e344f9dc8686bfb0dd7de116f9f6cf8820898f6b1e2350d2ba59557` + and `sequential_udp.sol.sv` `657718f5569a38a703a0a7795f34f317aac9f35bb83ae5f46b19c7220fa38540`. ## Native and reference argv @@ -41,4 +44,5 @@ are the `*.final.txt` files beside the TSV summary. - `npm run test:e2e`: completed in 30.2 minutes with 175 passed and 53 failed; the failures are the existing pinned-browser-WASM/Mox limitations, including the expected macro, packed-struct, and nested-child rows that require a WASM - rebuild. Indexed part-select passed in the browser. No WASM rebuild was made. + rebuild. Indexed part-select passed in the browser. The sequential-UDP target + passed 1/1 against the pinned browser assets. No WASM rebuild was made. diff --git a/artifacts/tutorial/capability-receipts/final-summary.tsv b/artifacts/tutorial/capability-receipts/final-summary.tsv index c2a3ec6..3966a64 100644 --- a/artifacts/tutorial/capability-receipts/final-summary.tsv +++ b/artifacts/tutorial/capability-receipts/final-summary.tsv @@ -1,4 +1,10 @@ sv/macro-formal-continuation starter interpret 0 FAIL: macro expansion returned 2 +sv/sequential-udp-init starter interpret 0 FAIL: initial q=0 +sv/sequential-udp-init starter compile 0 FAIL: initial q=0 +sv/sequential-udp-init starter refdiff 1 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-1koyq865"} +sv/sequential-udp-init solution interpret 0 PASS +sv/sequential-udp-init solution compile 0 PASS +sv/sequential-udp-init solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-lqdfskn_"} sv/macro-formal-continuation starter compile 0 FAIL: macro expansion returned 2 sv/macro-formal-continuation solution interpret 0 PASS sv/macro-formal-continuation solution compile 0 PASS diff --git a/artifacts/tutorial/capability-receipts/summary.tsv b/artifacts/tutorial/capability-receipts/summary.tsv index 8b942d4..a37c73f 100644 --- a/artifacts/tutorial/capability-receipts/summary.tsv +++ b/artifacts/tutorial/capability-receipts/summary.tsv @@ -1,4 +1,10 @@ sv/macro-formal-continuation starter interpret 0 FAIL: macro expansion returned 2 +sv/sequential-udp-init starter interpret 0 FAIL: initial q=0 +sv/sequential-udp-init starter compile 0 FAIL: initial q=0 +sv/sequential-udp-init starter refdiff 1 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-1koyq865"} +sv/sequential-udp-init solution interpret 0 PASS +sv/sequential-udp-init solution compile 0 PASS +sv/sequential-udp-init solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-lqdfskn_"} sv/macro-formal-continuation starter compile 0 FAIL: macro expansion returned 2 sv/macro-formal-continuation solution interpret 0 PASS sv/macro-formal-continuation solution compile 0 PASS diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.final.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.final.log new file mode 100644 index 0000000..27a0245 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.final.log @@ -0,0 +1,43 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (8ms, total: 8ms) +[mox-run] lower (11ms, total: 19ms) +[mox-run] aot-start (0ms, total: 20ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-fb63441ef69b649b550fad0f81f4534460b6fcfc8d50cdbd2fa2b0a8c3290709/mox-run-aot-d79ea1.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-fb63441ef69b649b550fad0f81f4534460b6fcfc8d50cdbd2fa2b0a8c3290709/mox-run-aot-01d8da.so (3 processes, 0 functions, 0 trampolines, 1.404464e-01s) +[mox-run] aot-compile (162ms, total: 183ms) +[mox-run] simulate (0ms, total: 183ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=3 accounted=3 positive=3 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14c4f2818531ab3ee9a008d5544a1559d205b61a18688dc4b998d6d8504bab7d +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=15 accounted=15 positive=15 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:1fddbb3af4eb444c858912560e5e375123679201478ab1a795a869634120e9fb +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 3 processes, 15 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-4d528cb3662b8408a24b3cd659743505) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=15, retained=15 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:d7163475c11eea17747b41fe821aa1652ad7c44674ead406b1d142ac6d259009 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 15 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 15/15 rows, 39/39 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 3/3 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=3 accounted=3 positive=3 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:178b7d417c9782d0869a164dfb4e0fb05e1232d6d8fe81f233004ec4c17d4d50 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_2' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module +[mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Starting simulation +INITIAL q=1 +PASS +[mox-sim] Simulation terminated at time 3000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 3000000 fs, iter=4, deltas=1 +[mox-sim] Simulation finished at time 3000000 fs +[mox-sim] Simulation completed at time 3000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.log new file mode 100644 index 0000000..27a0245 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.log @@ -0,0 +1,43 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (8ms, total: 8ms) +[mox-run] lower (11ms, total: 19ms) +[mox-run] aot-start (0ms, total: 20ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-fb63441ef69b649b550fad0f81f4534460b6fcfc8d50cdbd2fa2b0a8c3290709/mox-run-aot-d79ea1.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-fb63441ef69b649b550fad0f81f4534460b6fcfc8d50cdbd2fa2b0a8c3290709/mox-run-aot-01d8da.so (3 processes, 0 functions, 0 trampolines, 1.404464e-01s) +[mox-run] aot-compile (162ms, total: 183ms) +[mox-run] simulate (0ms, total: 183ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=3 accounted=3 positive=3 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14c4f2818531ab3ee9a008d5544a1559d205b61a18688dc4b998d6d8504bab7d +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=15 accounted=15 positive=15 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:1fddbb3af4eb444c858912560e5e375123679201478ab1a795a869634120e9fb +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 3 processes, 15 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-4d528cb3662b8408a24b3cd659743505) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=15, retained=15 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:d7163475c11eea17747b41fe821aa1652ad7c44674ead406b1d142ac6d259009 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 15 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 15/15 rows, 39/39 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 3/3 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=3 accounted=3 positive=3 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:178b7d417c9782d0869a164dfb4e0fb05e1232d6d8fe81f233004ec4c17d4d50 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_2' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module +[mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Starting simulation +INITIAL q=1 +PASS +[mox-sim] Simulation terminated at time 3000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 3000000 fs, iter=4, deltas=1 +[mox-sim] Simulation finished at time 3000000 fs +[mox-sim] Simulation completed at time 3000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.final.log new file mode 100644 index 0000000..2f615c4 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.final.log @@ -0,0 +1,21 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (10ms, total: 17ms) +[mox-run] simulate (1ms, total: 18ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module +[mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Starting simulation +INITIAL q=1 +PASS +[mox-sim] sim.terminate triggered in process ID 3 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv":32:5 to :13) +[mox-sim] Simulation terminated at time 3000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 3000000 fs, iter=4, deltas=1 +[mox-sim] Simulation finished at time 3000000 fs +[mox-sim] Simulation completed at time 3000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.log new file mode 100644 index 0000000..2f615c4 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.log @@ -0,0 +1,21 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (10ms, total: 17ms) +[mox-run] simulate (1ms, total: 18ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module +[mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Starting simulation +INITIAL q=1 +PASS +[mox-sim] sim.terminate triggered in process ID 3 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv":32:5 to :13) +[mox-sim] Simulation terminated at time 3000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 3000000 fs, iter=4, deltas=1 +[mox-sim] Simulation finished at time 3000000 fs +[mox-sim] Simulation completed at time 3000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.final.txt b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.final.txt new file mode 100644 index 0000000..b5cec8e --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.final.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-lqdfskn_"} diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.txt b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.txt new file mode 100644 index 0000000..b5cec8e --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-lqdfskn_"} diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.final.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.final.log new file mode 100644 index 0000000..6be482b --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.final.log @@ -0,0 +1,42 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (9ms, total: 15ms) +[mox-run] aot-start (0ms, total: 15ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-9a335a04332fb3d68d5e42546a1719d619215593b4876a221e8aae091fe2a91c/mox-run-aot-169638.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-9a335a04332fb3d68d5e42546a1719d619215593b4876a221e8aae091fe2a91c/mox-run-aot-412119.so (3 processes, 0 functions, 0 trampolines, 1.235077e-01s) +[mox-run] aot-compile (141ms, total: 157ms) +[mox-run] simulate (0ms, total: 157ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=3 accounted=3 positive=3 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14c4f2818531ab3ee9a008d5544a1559d205b61a18688dc4b998d6d8504bab7d +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=15 accounted=15 positive=15 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:1fddbb3af4eb444c858912560e5e375123679201478ab1a795a869634120e9fb +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 3 processes, 15 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-1a11e0993a7917271e5d829a0da09034) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=15, retained=15 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:746ffdc1c20ff20b624ed954e5d8ef364f1b4a21fa4097ca9463501c802ba9e1 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 15 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 15/15 rows, 39/39 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 3/3 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=3 accounted=3 positive=3 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:178b7d417c9782d0869a164dfb4e0fb05e1232d6d8fe81f233004ec4c17d4d50 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_2' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module +[mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Starting simulation +FAIL: initial q=0 +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.log new file mode 100644 index 0000000..6be482b --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.log @@ -0,0 +1,42 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (9ms, total: 15ms) +[mox-run] aot-start (0ms, total: 15ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-9a335a04332fb3d68d5e42546a1719d619215593b4876a221e8aae091fe2a91c/mox-run-aot-169638.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-9a335a04332fb3d68d5e42546a1719d619215593b4876a221e8aae091fe2a91c/mox-run-aot-412119.so (3 processes, 0 functions, 0 trampolines, 1.235077e-01s) +[mox-run] aot-compile (141ms, total: 157ms) +[mox-run] simulate (0ms, total: 157ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] aot-publication/v2 domain=module-loader-processes expected=3 accounted=3 positive=3 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14c4f2818531ab3ee9a008d5544a1559d205b61a18688dc4b998d6d8504bab7d +[mox-sim] aot-publication/v2 domain=module-loader-address-bound-globals expected=15 accounted=15 positive=15 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:1fddbb3af4eb444c858912560e5e375123679201478ab1a795a869634120e9fb +[mox-sim] aot-publication/v2 domain=module-loader-entry-table expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Loaded compiled module '/proc/self/fd/4': 0 functions, 3 processes, 15 address-bound globals (build: mox-sim-abi-v19-x86_64-unknown-linux-gnu-1a11e0993a7917271e5d829a0da09034) +[mox-sim] Address-bound global ownership: role=main, module='/proc/self/fd/4', descriptor-declared=15, retained=15 +[mox-sim] M3 loaded callable union: artifacts=1 raw-rows=0 demand-rows=0 distinct-demand-keys=0 slot-rows=0 provider-rows=0 checked-keys=0 missing=0 duplicate=0 malformed=0 unresolved=0 dropped=0 digest=sha256:746ffdc1c20ff20b624ed954e5d8ef364f1b4a21fa4097ca9463501c802ba9e1 status=ok +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +[mox-sim] Pre-aliased 15 address-bound globals to .so storage +[mox-sim] Unmapped native func.call policy: default deny runtime bridges and pointer-typed get_/set_/create_/m_initialize* (allow others) +[mox-sim] Loaded 0 compiled functions: 0 native-dispatched, 0 not-native-dispatched, 0 intercepted +[mox-sim] aot-publication/v2 domain=compiled-function-dispatch expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd +[mox-sim] Address-bound final-LLVM-global probes: 15/15 rows, 39/39 bytes bidirectional, owner-generation=1 +[mox-sim] Compiled process dispatch: 3/3 processes wired +[mox-sim] aot-publication/v2 domain=process-dispatch expected=3 accounted=3 positive=3 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:178b7d417c9782d0869a164dfb4e0fb05e1232d6d8fe81f233004ec4c17d4d50 +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_0' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_1' outcome=wired polarity=positive reason='' +[mox-sim] aot-publication/v2 domain=process-dispatch identity='tb.process_2' outcome=wired polarity=positive reason='' +[mox-sim] Stage: load-compiled (prev: 2ms, total: 3ms) +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module +[mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 0ms, total: 3ms) +[mox-sim] Starting simulation +FAIL: initial q=0 +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] whole-design AOT zero-interpreter gate satisfied: counted process=0 combinational=0 initializer-operation=0 direct-call=0 ABI-demotion=0 deferred-initial-prewait-operation=0 deferred-initial-prewait-binding=PROVEN dpi-export-function-binding=NOT-REQUIRED; residual-compiled-process=false interpreted-continuous-assignment=0 initializer-operation-filtered=0; instrumented-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation measured-classes=interpreted-process,interpreted-callable,interpreted-continuous-assignment,module-initializer-operation,deferred-initial-prewait-operation unavailable-classes=NONE operation-level-other=UNMEASURED +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.final.log new file mode 100644 index 0000000..ad63b82 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.final.log @@ -0,0 +1,20 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (9ms, total: 15ms) +[mox-run] simulate (0ms, total: 16ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module +[mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Starting simulation +FAIL: initial q=0 +[mox-sim] sim.terminate triggered in process ID 3 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv":19:7 to :15) +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.log new file mode 100644 index 0000000..ad63b82 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.log @@ -0,0 +1,20 @@ +mox-run wall guards: compile=25000ms simulation=disabled +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (9ms, total: 15ms) +[mox-run] simulate (0ms, total: 16ms) +[mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed +[mox-sim] Stage: passes (prev: 0ms, total: 0ms) +[mox-sim] Stage: init (prev: 0ms, total: 0ms) +Using module 'tb' as top module +[mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module +[mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks +[mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 +[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Starting simulation +FAIL: initial q=0 +[mox-sim] sim.terminate triggered in process ID 3 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv":19:7 to :15) +[mox-sim] Simulation terminated at time 1000000 fs (success=true, verbose=true) +[mox-sim] Main loop exit: shouldContinue()=false at time 1000000 fs, iter=2, deltas=1 +[mox-sim] Simulation finished at time 1000000 fs +[mox-sim] Simulation completed at time 1000000 fs +[mox-sim] Simulation completed diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.final.txt b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.final.txt new file mode 100644 index 0000000..1fa1802 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.final.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "phase": "simulate", "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-1koyq865"} diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.txt b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.txt new file mode 100644 index 0000000..1fa1802 --- /dev/null +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.txt @@ -0,0 +1 @@ +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "phase": "simulate", "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-1koyq865"} diff --git a/src/lessons/index.js b/src/lessons/index.js index 38631f6..1705b88 100644 --- a/src/lessons/index.js +++ b/src/lessons/index.js @@ -87,6 +87,7 @@ export const parts = [ { title: 'Packed-Struct Field References', lessons: [L('sv/struct-field-refs')] }, { title: 'Indexed Part-Select Bounds', lessons: [L('sv/indexed-part-select')] }, { title: 'Nested Child Input Propagation', lessons: [L('sv/nested-child-input')] }, + { title: 'Sequential UDP Initialization', lessons: [L('sv/sequential-udp-init')] }, ], }, { diff --git a/src/lessons/landed-capabilities.test.js b/src/lessons/landed-capabilities.test.js index 1a77562..8feb4ea 100644 --- a/src/lessons/landed-capabilities.test.js +++ b/src/lessons/landed-capabilities.test.js @@ -8,7 +8,8 @@ const capabilities = [ ['sv/macro-formal-continuation', 'macro_formal'], ['sv/struct-field-refs', 'struct_field'], ['sv/indexed-part-select', 'indexed_part_select'], - ['sv/nested-child-input', 'nested_child_input'] + ['sv/nested-child-input', 'nested_child_input'], + ['sv/sequential-udp-init', 'sequential_udp'] ]; describe('landed Mox capability lessons', () => { @@ -38,4 +39,21 @@ describe('landed Mox capability lessons', () => { expect(receipts).toContain('sv/indexed-part-select\tstarter\tinterpret\t0\tFAIL: inside=0101 partial=xxxx'); expect(receipts).toContain('sv/indexed-part-select\tstarter\tcompile\t0\tFAIL: inside=0101 partial=xxxx'); }); + + it('calibrates the sequential UDP initializer exercise', () => { + const dir = path.join(root, 'sv/sequential-udp-init'); + const starter = readFileSync(path.join(dir, 'sequential_udp.sv'), 'utf8'); + const solution = readFileSync(path.join(dir, 'sequential_udp.sol.sv'), 'utf8'); + const description = readFileSync(path.join(dir, 'description.html'), 'utf8'); + const receipts = readFileSync( + path.resolve(process.cwd(), 'artifacts/tutorial/capability-receipts/final-summary.tsv'), + 'utf8' + ); + expect(starter).toContain("output reg q = 1'b0"); + expect(solution).toContain("output reg q = 1'b1"); + expect(description).toContain('§29.3.2'); + expect(description).toContain('§29.7'); + expect(receipts).toContain('sv/sequential-udp-init\tstarter\tinterpret\t0\tFAIL: initial q=0'); + expect(receipts).toContain('sv/sequential-udp-init\tsolution\trefdiff\t0\t'); + }); }); diff --git a/src/lessons/meta.js b/src/lessons/meta.js index 40264bf..4ad5fde 100644 --- a/src/lessons/meta.js +++ b/src/lessons/meta.js @@ -28,6 +28,7 @@ export default { 'sv/struct-field-refs': { title: 'Packed-Struct Field References', focus: '/src/struct_field.sv', top: 'tb' }, 'sv/indexed-part-select': { title: 'Indexed Part-Select Bounds', focus: '/src/indexed_part_select.sv', top: 'tb' }, 'sv/nested-child-input': { title: 'Nested Child Input Propagation', focus: '/src/nested_child_input.sv', top: 'tb' }, + 'sv/sequential-udp-init': { title: 'Sequential UDP Initialization', focus: '/src/sequential_udp.sv', top: 'tb' }, // ── SystemVerilog Assertions ─────────────────────────────────────────────── 'sva/concurrent-sim': { title: 'Concurrent Assertions in Simulation', focus: '/src/monitor.sv', runner: null }, diff --git a/src/lessons/sv/sequential-udp-init/description.html b/src/lessons/sv/sequential-udp-init/description.html new file mode 100644 index 0000000..8743a62 --- /dev/null +++ b/src/lessons/sv/sequential-udp-init/description.html @@ -0,0 +1,14 @@ +

A sequential user-defined primitive (UDP) stores its current state in the output reg. An optional initializer gives that state a known value at time zero, before later input transitions use the table.

+ +

Template

+
primitive <name>(output reg q = 1'b1, input clk, input d);
+    table
+        (01) 0 : ? : 0;
+        (01) 1 : ? : 1;
+        (10) ? : ? : -;
+    endtable
+endprimitive
+ +

The starter gives the UDP the wrong initial value. Add the correct initializer so the testbench observes q=1 before the first clock edge and q=0 after a rising edge with d=0.

+ +

IEEE 1800-2023 §29.3.2 permits a constant initializer on an ANSI UDP output declaration. §29.6 defines edge-sensitive sequential UDP tables, and §29.7 makes sequential-UDP initialization optional and limits the procedural form to a single one-bit assignment. At simulation start, that value is the UDP's current state.

diff --git a/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv b/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv new file mode 100644 index 0000000..880a353 --- /dev/null +++ b/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv @@ -0,0 +1,34 @@ +primitive dff1(output reg q = 1'b1, input clk, input d); + table + (01) 0 : ? : 0; + (01) 1 : ? : 1; + (10) ? : ? : -; + endtable +endprimitive + +module tb; + logic clk; + logic d; + wire q; + dff1 dut(q, clk, d); + + initial begin + #1; + if (q !== 1'b1) begin + $display("FAIL: initial q=%b", q); + $finish; + end + $display("INITIAL q=%b", q); + + d = 0; + clk = 0; + #1; + clk = 1; + #1; + if (q !== 1'b0) + $display("FAIL: edge q=%b", q); + else + $display("PASS"); + $finish; + end +endmodule diff --git a/src/lessons/sv/sequential-udp-init/sequential_udp.sv b/src/lessons/sv/sequential-udp-init/sequential_udp.sv new file mode 100644 index 0000000..857ace7 --- /dev/null +++ b/src/lessons/sv/sequential-udp-init/sequential_udp.sv @@ -0,0 +1,34 @@ +primitive dff1(output reg q = 1'b0, input clk, input d); + table + (01) 0 : ? : 0; + (01) 1 : ? : 1; + (10) ? : ? : -; + endtable +endprimitive + +module tb; + logic clk; + logic d; + wire q; + dff1 dut(q, clk, d); + + initial begin + #1; + if (q !== 1'b1) begin + $display("FAIL: initial q=%b", q); + $finish; + end + $display("INITIAL q=%b", q); + + d = 0; + clk = 0; + #1; + clk = 1; + #1; + if (q !== 1'b0) + $display("FAIL: edge q=%b", q); + else + $display("PASS"); + $finish; + end +endmodule From 18baa8e3bc658e04633a3fdf719f48504a7a15aa Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 11:32:11 +0000 Subject: [PATCH 10/26] test: bind UDP receipts to committed fixtures --- .../capability-receipts/PROVENANCE.md | 22 ++++++++++-------- .../capability-receipts/final-summary.tsv | 4 ++-- .../tutorial/capability-receipts/summary.tsv | 4 ++-- ...tial-udp-init__solution__compile.final.log | 14 +++++------ ...sequential-udp-init__solution__compile.log | 14 +++++------ ...al-udp-init__solution__interpret.final.log | 8 +++---- ...quential-udp-init__solution__interpret.log | 8 +++---- ...tial-udp-init__solution__refdiff.final.txt | 2 +- ...sequential-udp-init__solution__refdiff.txt | 2 +- ...ntial-udp-init__starter__compile.final.log | 12 +++++----- ..._sequential-udp-init__starter__compile.log | 12 +++++----- ...ial-udp-init__starter__interpret.final.log | 6 ++--- ...equential-udp-init__starter__interpret.log | 6 ++--- ...ntial-udp-init__starter__refdiff.final.txt | 2 +- ..._sequential-udp-init__starter__refdiff.txt | 2 +- src/lessons/landed-capabilities.test.js | 23 +++++++++++++++++++ 16 files changed, 84 insertions(+), 57 deletions(-) diff --git a/artifacts/tutorial/capability-receipts/PROVENANCE.md b/artifacts/tutorial/capability-receipts/PROVENANCE.md index e416d01..98b432f 100644 --- a/artifacts/tutorial/capability-receipts/PROVENANCE.md +++ b/artifacts/tutorial/capability-receipts/PROVENANCE.md @@ -6,15 +6,18 @@ The tutorial's browser WASM remains the pinned release; it was not rebuilt. ## Immutable hashes -- `final-summary.tsv`: `aece85fd8dccb5db3f1c4004f47c2a1a0e10c214ab6c769969bd89e4711ecafc` +- `final-summary.tsv`: `4e7a47aad5188a3b7ec2bcdd6609e04f46e9f0013495ee4c792c25cc9309e6a2` - Sorted `sha256sum` digest of the 54 receipt files in this directory, - excluding this provenance file: `0d5e703cca3acd04b8539b5b3cef0e169e9fd1a199d0f6b47f8477f5617d7f4e` + excluding this provenance file: `b14ade8bf5482d7517d5a31731b9bb12118aa068de0f8a47764d8f57dc14031a` + (computed from `sha256sum` output over filenames sorted within this directory). - Solution source hashes are recorded in each `refdiff` row of `final-summary.tsv`: `macro-formal-continuation` `70bcc182fc6b32c4e8fac7eaee06196d845ffe8aed28318e592a8887a42224fd`; `struct-field-refs` `4eb7d716460e54ad94242d81f5f1d9c5fb67d1565c250a62ca6ec2d251d43555`; `indexed-part-select` `ece4013deb0c782d749812bba7586a9ea7dd9b2750bfa3747931782e4ea79c64`; `nested-child-input` `353b4404864303525e4a800307026c25dbde4a0a27faee79c3c56d319afbaa62`. -- Actual SHA-256 source hashes for the new UDP fixture are +- The `sha256` field in each UDP differential receipt is the committed source + blob hash; the `refdiff_cache_key` field preserves the cache identity emitted + by the differential command. Actual SHA-256 source hashes for the new UDP fixture are `sequential_udp.sv` `8b4d8ad11e344f9dc8686bfb0dd7de116f9f6cf8820898f6b1e2350d2ba59557` and `sequential_udp.sol.sv` `657718f5569a38a703a0a7795f34f317aac9f35bb83ae5f46b19c7220fa38540`. @@ -39,10 +42,11 @@ are the `*.final.txt` files beside the TSV summary. ## Final validation on the corrected tip -- `npm test`: 13 files, 55 tests passed. +- `npm test`: 13 files, 57 tests passed. - `npm run build`: exit 0. -- `npm run test:e2e`: completed in 30.2 minutes with 175 passed and 53 failed; - the failures are the existing pinned-browser-WASM/Mox limitations, including - the expected macro, packed-struct, and nested-child rows that require a WASM - rebuild. Indexed part-select passed in the browser. The sequential-UDP target - passed 1/1 against the pinned browser assets. No WASM rebuild was made. +- `npm run test:e2e`: completed in 15.3 minutes with 131 passed and 98 failed + (exit 1); the failures are the existing pinned-browser-WASM/Mox and stale + route limitations. The sequential-UDP target passed 1/1 against the pinned + browser assets. The immutable full-suite log is `/tmp/tutorial-udp-full-e2e.log` + (SHA-256 `043df075681607526f60e3c0a1319dcd5fef170e2572335d8c1638ac9c1128c9`). + No WASM rebuild was made. diff --git a/artifacts/tutorial/capability-receipts/final-summary.tsv b/artifacts/tutorial/capability-receipts/final-summary.tsv index 3966a64..af3d185 100644 --- a/artifacts/tutorial/capability-receipts/final-summary.tsv +++ b/artifacts/tutorial/capability-receipts/final-summary.tsv @@ -1,10 +1,10 @@ sv/macro-formal-continuation starter interpret 0 FAIL: macro expansion returned 2 sv/sequential-udp-init starter interpret 0 FAIL: initial q=0 sv/sequential-udp-init starter compile 0 FAIL: initial q=0 -sv/sequential-udp-init starter refdiff 1 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-1koyq865"} +sv/sequential-udp-init starter refdiff 1 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "8b4d8ad11e344f9dc8686bfb0dd7de116f9f6cf8820898f6b1e2350d2ba59557", "refdiff_cache_key": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": true, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-5prav8ef"} sv/sequential-udp-init solution interpret 0 PASS sv/sequential-udp-init solution compile 0 PASS -sv/sequential-udp-init solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-lqdfskn_"} +sv/sequential-udp-init solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "657718f5569a38a703a0a7795f34f317aac9f35bb83ae5f46b19c7220fa38540", "refdiff_cache_key": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-00cmdfkh"} sv/macro-formal-continuation starter compile 0 FAIL: macro expansion returned 2 sv/macro-formal-continuation solution interpret 0 PASS sv/macro-formal-continuation solution compile 0 PASS diff --git a/artifacts/tutorial/capability-receipts/summary.tsv b/artifacts/tutorial/capability-receipts/summary.tsv index a37c73f..475d870 100644 --- a/artifacts/tutorial/capability-receipts/summary.tsv +++ b/artifacts/tutorial/capability-receipts/summary.tsv @@ -1,10 +1,10 @@ sv/macro-formal-continuation starter interpret 0 FAIL: macro expansion returned 2 sv/sequential-udp-init starter interpret 0 FAIL: initial q=0 sv/sequential-udp-init starter compile 0 FAIL: initial q=0 -sv/sequential-udp-init starter refdiff 1 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-1koyq865"} +sv/sequential-udp-init starter refdiff 1 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "8b4d8ad11e344f9dc8686bfb0dd7de116f9f6cf8820898f6b1e2350d2ba59557", "refdiff_cache_key": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": true, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-5prav8ef"} sv/sequential-udp-init solution interpret 0 PASS sv/sequential-udp-init solution compile 0 PASS -sv/sequential-udp-init solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-lqdfskn_"} +sv/sequential-udp-init solution refdiff 0 {"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "657718f5569a38a703a0a7795f34f317aac9f35bb83ae5f46b19c7220fa38540", "refdiff_cache_key": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-00cmdfkh"} sv/macro-formal-continuation starter compile 0 FAIL: macro expansion returned 2 sv/macro-formal-continuation solution interpret 0 PASS sv/macro-formal-continuation solution compile 0 PASS diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.final.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.final.log index 27a0245..6f94b1a 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.final.log +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.final.log @@ -1,11 +1,11 @@ mox-run wall guards: compile=25000ms simulation=disabled -[mox-run] parse (8ms, total: 8ms) -[mox-run] lower (11ms, total: 19ms) -[mox-run] aot-start (0ms, total: 20ms) -[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-fb63441ef69b649b550fad0f81f4534460b6fcfc8d50cdbd2fa2b0a8c3290709/mox-run-aot-d79ea1.log -[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-fb63441ef69b649b550fad0f81f4534460b6fcfc8d50cdbd2fa2b0a8c3290709/mox-run-aot-01d8da.so (3 processes, 0 functions, 0 trampolines, 1.404464e-01s) -[mox-run] aot-compile (162ms, total: 183ms) -[mox-run] simulate (0ms, total: 183ms) +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (9ms, total: 15ms) +[mox-run] aot-start (0ms, total: 16ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-6158424687e44f0fccb43412ac36849a307ea5aff3072b1be365f9fdebdaa0c2/mox-run-aot-cffd75.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-6158424687e44f0fccb43412ac36849a307ea5aff3072b1be365f9fdebdaa0c2/mox-run-aot-283ab6.so (3 processes, 0 functions, 0 trampolines, 1.176473e-01s) +[mox-run] aot-compile (142ms, total: 158ms) +[mox-run] simulate (0ms, total: 158ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.log index 27a0245..6f94b1a 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.log +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__compile.log @@ -1,11 +1,11 @@ mox-run wall guards: compile=25000ms simulation=disabled -[mox-run] parse (8ms, total: 8ms) -[mox-run] lower (11ms, total: 19ms) -[mox-run] aot-start (0ms, total: 20ms) -[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-fb63441ef69b649b550fad0f81f4534460b6fcfc8d50cdbd2fa2b0a8c3290709/mox-run-aot-d79ea1.log -[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-fb63441ef69b649b550fad0f81f4534460b6fcfc8d50cdbd2fa2b0a8c3290709/mox-run-aot-01d8da.so (3 processes, 0 functions, 0 trampolines, 1.404464e-01s) -[mox-run] aot-compile (162ms, total: 183ms) -[mox-run] simulate (0ms, total: 183ms) +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (9ms, total: 15ms) +[mox-run] aot-start (0ms, total: 16ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-6158424687e44f0fccb43412ac36849a307ea5aff3072b1be365f9fdebdaa0c2/mox-run-aot-cffd75.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-6158424687e44f0fccb43412ac36849a307ea5aff3072b1be365f9fdebdaa0c2/mox-run-aot-283ab6.so (3 processes, 0 functions, 0 trampolines, 1.176473e-01s) +[mox-run] aot-compile (142ms, total: 158ms) +[mox-run] simulate (0ms, total: 158ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.final.log index 2f615c4..58c28e9 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.final.log +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.final.log @@ -1,7 +1,7 @@ mox-run wall guards: compile=25000ms simulation=disabled -[mox-run] parse (6ms, total: 6ms) -[mox-run] lower (10ms, total: 17ms) -[mox-run] simulate (1ms, total: 18ms) +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (10ms, total: 16ms) +[mox-run] simulate (0ms, total: 17ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] Stage: init (prev: 0ms, total: 0ms) @@ -9,7 +9,7 @@ Using module 'tb' as top module [mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module [mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 -[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) [mox-sim] Starting simulation INITIAL q=1 PASS diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.log index 2f615c4..58c28e9 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.log +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__interpret.log @@ -1,7 +1,7 @@ mox-run wall guards: compile=25000ms simulation=disabled -[mox-run] parse (6ms, total: 6ms) -[mox-run] lower (10ms, total: 17ms) -[mox-run] simulate (1ms, total: 18ms) +[mox-run] parse (5ms, total: 5ms) +[mox-run] lower (10ms, total: 16ms) +[mox-run] simulate (0ms, total: 17ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] Stage: init (prev: 0ms, total: 0ms) @@ -9,7 +9,7 @@ Using module 'tb' as top module [mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module [mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 -[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) [mox-sim] Starting simulation INITIAL q=1 PASS diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.final.txt b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.final.txt index b5cec8e..5a3ed1e 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.final.txt +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.final.txt @@ -1 +1 @@ -{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-lqdfskn_"} +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "657718f5569a38a703a0a7795f34f317aac9f35bb83ae5f46b19c7220fa38540", "refdiff_cache_key": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-00cmdfkh"} diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.txt b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.txt index b5cec8e..5a3ed1e 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.txt +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__solution__refdiff.txt @@ -1 +1 @@ -{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": false, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-lqdfskn_"} +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sol.sv", "sha256": "657718f5569a38a703a0a7795f34f317aac9f35bb83ae5f46b19c7220fa38540", "refdiff_cache_key": "55da9e6f94ce4318a4950db824caa71a0417f05dcf0e111a8745a1ffbcc6f4f1", "reference_cached": true, "reference": {"verdict": "PASS", "exit": 0, "final_status": "completed"}, "mox": {"verdict": "PASS", "exit": 0, "phase": "simulate", "final_status": "completed"}, "category": "both_pass", "output_equal": true, "equivalent": true, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-00cmdfkh"} diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.final.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.final.log index 6be482b..3d7c204 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.final.log +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.final.log @@ -1,11 +1,11 @@ mox-run wall guards: compile=25000ms simulation=disabled -[mox-run] parse (5ms, total: 5ms) -[mox-run] lower (9ms, total: 15ms) +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (8ms, total: 15ms) [mox-run] aot-start (0ms, total: 15ms) -[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-9a335a04332fb3d68d5e42546a1719d619215593b4876a221e8aae091fe2a91c/mox-run-aot-169638.log -[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-9a335a04332fb3d68d5e42546a1719d619215593b4876a221e8aae091fe2a91c/mox-run-aot-412119.so (3 processes, 0 functions, 0 trampolines, 1.235077e-01s) -[mox-run] aot-compile (141ms, total: 157ms) -[mox-run] simulate (0ms, total: 157ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-5dee83bd165b4d526cb72bb2889f9953609e90d60b3ef798a7c2f3b7686144de/mox-run-aot-217f72.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-5dee83bd165b4d526cb72bb2889f9953609e90d60b3ef798a7c2f3b7686144de/mox-run-aot-bb626c.so (3 processes, 0 functions, 0 trampolines, 1.158172e-01s) +[mox-run] aot-compile (131ms, total: 147ms) +[mox-run] simulate (0ms, total: 147ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.log index 6be482b..3d7c204 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.log +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__compile.log @@ -1,11 +1,11 @@ mox-run wall guards: compile=25000ms simulation=disabled -[mox-run] parse (5ms, total: 5ms) -[mox-run] lower (9ms, total: 15ms) +[mox-run] parse (6ms, total: 6ms) +[mox-run] lower (8ms, total: 15ms) [mox-run] aot-start (0ms, total: 15ms) -[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-9a335a04332fb3d68d5e42546a1719d619215593b4876a221e8aae091fe2a91c/mox-run-aot-169638.log -[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-9a335a04332fb3d68d5e42546a1719d619215593b4876a221e8aae091fe2a91c/mox-run-aot-412119.so (3 processes, 0 functions, 0 trampolines, 1.235077e-01s) -[mox-run] aot-compile (141ms, total: 157ms) -[mox-run] simulate (0ms, total: 157ms) +[mox-run] AOT compile log: /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-5dee83bd165b4d526cb72bb2889f9953609e90d60b3ef798a7c2f3b7686144de/mox-run-aot-217f72.log +[mox-compile] Wrote /tmp/mox-scratch/a8e5ccd3bff512bd85be743cbbba161ae06504793c695db14b39d861ac39713b/session-5dee83bd165b4d526cb72bb2889f9953609e90d60b3ef798a7c2f3b7686144de/mox-run-aot-bb626c.so (3 processes, 0 functions, 0 trampolines, 1.158172e-01s) +[mox-run] aot-compile (131ms, total: 147ms) +[mox-run] simulate (0ms, total: 147ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] aot-publication/v2 domain=module-loader-functions expected=0 accounted=0 positive=0 negative=0 missing=0 duplicate=0 unexpected=0 malformed=0 status=ok digest=sha256:14a1ea4827eceb6099f752ac175f21d9feeed50ece269718c7050338ed779cdd diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.final.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.final.log index ad63b82..ac913c9 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.final.log +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.final.log @@ -1,7 +1,7 @@ mox-run wall guards: compile=25000ms simulation=disabled [mox-run] parse (5ms, total: 5ms) -[mox-run] lower (9ms, total: 15ms) -[mox-run] simulate (0ms, total: 16ms) +[mox-run] lower (9ms, total: 14ms) +[mox-run] simulate (0ms, total: 15ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] Stage: init (prev: 0ms, total: 0ms) @@ -9,7 +9,7 @@ Using module 'tb' as top module [mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module [mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 -[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) [mox-sim] Starting simulation FAIL: initial q=0 [mox-sim] sim.terminate triggered in process ID 3 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv":19:7 to :15) diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.log b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.log index ad63b82..ac913c9 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.log +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__interpret.log @@ -1,7 +1,7 @@ mox-run wall guards: compile=25000ms simulation=disabled [mox-run] parse (5ms, total: 5ms) -[mox-run] lower (9ms, total: 15ms) -[mox-run] simulate (0ms, total: 16ms) +[mox-run] lower (9ms, total: 14ms) +[mox-run] simulate (0ms, total: 15ms) [mox-sim] Auto-enabling --skip-passes for module marked mox.sim.preprocessed [mox-sim] Stage: passes (prev: 0ms, total: 0ms) [mox-sim] Stage: init (prev: 0ms, total: 0ms) @@ -9,7 +9,7 @@ Using module 'tb' as top module [mox-sim] Found 3 LLHD processes, 0 LLHD finals, 0 seq.initial blocks, and 0 hw.instance ops (out of 238 total ops) in module [mox-sim] Registered 11 LLHD signals and 3 LLHD processes/initial blocks [mox-sim] Receipt: INIT_COMPLETE_OK execution_failure=0 process_dispatches=0 -[mox-sim] Stage: run (prev: 2ms, total: 2ms) +[mox-sim] Stage: run (prev: 1ms, total: 1ms) [mox-sim] Starting simulation FAIL: initial q=0 [mox-sim] sim.terminate triggered in process ID 3 at loc("/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv":19:7 to :15) diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.final.txt b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.final.txt index 1fa1802..c2c0643 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.final.txt +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.final.txt @@ -1 +1 @@ -{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "phase": "simulate", "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-1koyq865"} +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "8b4d8ad11e344f9dc8686bfb0dd7de116f9f6cf8820898f6b1e2350d2ba59557", "refdiff_cache_key": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": true, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-5prav8ef"} diff --git a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.txt b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.txt index 1fa1802..f089273 100644 --- a/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.txt +++ b/artifacts/tutorial/capability-receipts/sv__sequential-udp-init__starter__refdiff.txt @@ -1 +1 @@ -{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": false, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "phase": "simulate", "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-1koyq865"} +{"source": "/var/tmp/thomas-ahle/sv-tutorial/src/lessons/sv/sequential-udp-init/sequential_udp.sv", "sha256": "8b4d8ad11e344f9dc8686bfb0dd7de116f9f6cf8820898f6b1e2350d2ba59557", "refdiff_cache_key": "78175522a46f671de114db8b53687eae68987c36825d9a39ee0703da7406f928", "reference_cached": true, "reference": {"verdict": "FAIL", "exit": 0, "final_status": "fail"}, "mox": {"verdict": "FAIL", "exit": 0, "phase": "simulate", "final_status": "fail"}, "category": "both_fail", "output_equal": true, "equivalent": false, "metadata": {"_has_pass": true}, "build_dir": "/var/tmp/thomas-ahle/wt/landing/build-dev-fast", "artifacts": "/var/tmp/thomas-ahle/fleet/sv/sv-harness-5prav8ef"} diff --git a/src/lessons/landed-capabilities.test.js b/src/lessons/landed-capabilities.test.js index 8feb4ea..033c9b4 100644 --- a/src/lessons/landed-capabilities.test.js +++ b/src/lessons/landed-capabilities.test.js @@ -1,4 +1,5 @@ import { describe, expect, it } from 'vitest'; +import { createHash } from 'node:crypto'; import { readFileSync } from 'node:fs'; import path from 'node:path'; import meta from './meta.js'; @@ -56,4 +57,26 @@ describe('landed Mox capability lessons', () => { expect(receipts).toContain('sv/sequential-udp-init\tstarter\tinterpret\t0\tFAIL: initial q=0'); expect(receipts).toContain('sv/sequential-udp-init\tsolution\trefdiff\t0\t'); }); + + it('binds sequential UDP refdiff receipts to committed source blobs', () => { + const dir = path.join(root, 'sv/sequential-udp-init'); + for (const [variant, filename] of [ + ['starter', 'sequential_udp.sv'], + ['solution', 'sequential_udp.sol.sv'] + ]) { + const sourcePath = path.join(dir, filename); + const sourceHash = createHash('sha256') + .update(readFileSync(sourcePath)) + .digest('hex'); + const receipt = JSON.parse(readFileSync( + path.resolve( + process.cwd(), + `artifacts/tutorial/capability-receipts/sv__sequential-udp-init__${variant}__refdiff.final.txt` + ), + 'utf8' + )); + expect(receipt.source).toBe(sourcePath); + expect(receipt.sha256).toBe(sourceHash); + } + }); }); From dc8629d8cdfb138e87c4190b45d58367a5a85b11 Mon Sep 17 00:00:00 2001 From: Thomas Dybdahl Ahle Date: Wed, 30 Sep 2026 11:42:06 +0000 Subject: [PATCH 11/26] docs: preserve UDP full e2e receipt --- .../capability-receipts/PROVENANCE.md | 5 +- .../tutorial/e2e/tutorial-udp-full-e2e.log | 5280 +++++++++++++++++ 2 files changed, 5283 insertions(+), 2 deletions(-) create mode 100644 artifacts/tutorial/e2e/tutorial-udp-full-e2e.log diff --git a/artifacts/tutorial/capability-receipts/PROVENANCE.md b/artifacts/tutorial/capability-receipts/PROVENANCE.md index 98b432f..dcffe46 100644 --- a/artifacts/tutorial/capability-receipts/PROVENANCE.md +++ b/artifacts/tutorial/capability-receipts/PROVENANCE.md @@ -47,6 +47,7 @@ are the `*.final.txt` files beside the TSV summary. - `npm run test:e2e`: completed in 15.3 minutes with 131 passed and 98 failed (exit 1); the failures are the existing pinned-browser-WASM/Mox and stale route limitations. The sequential-UDP target passed 1/1 against the pinned - browser assets. The immutable full-suite log is `/tmp/tutorial-udp-full-e2e.log` - (SHA-256 `043df075681607526f60e3c0a1319dcd5fef170e2572335d8c1638ac9c1128c9`). + browser assets. The immutable full-suite log is + `artifacts/tutorial/e2e/tutorial-udp-full-e2e.log` (SHA-256 + `043df075681607526f60e3c0a1319dcd5fef170e2572335d8c1638ac9c1128c9`). No WASM rebuild was made. diff --git a/artifacts/tutorial/e2e/tutorial-udp-full-e2e.log b/artifacts/tutorial/e2e/tutorial-udp-full-e2e.log new file mode 100644 index 0000000..842c7f1 --- /dev/null +++ b/artifacts/tutorial/e2e/tutorial-udp-full-e2e.log @@ -0,0 +1,5280 @@ + +> sv-tutorial@0.0.1 test:e2e +> playwright test + +[WebServer] (node:2838188) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +[WebServer] (Use `node --trace-warnings ...` to show where the warning was created) +[WebServer] Your tsconfig.json should extend the configuration generated by SvelteKit: +[WebServer] { +[WebServer]  "extends": "./.svelte-kit/tsconfig.json" +[WebServer] } +[WebServer] 11:04:26 AM [vite-plugin-svelte] src/routes/lesson/[part]/[name]/+page.svelte:565:10 `
` with a click handler must have an ARIA role +[WebServer] https://svelte.dev/e/a11y_no_static_element_interactions +[WebServer] 563: {#if showOptions} +[WebServer] 564: +[WebServer] 565:
(showOptions = false)}>
+[WebServer]  ^ +[WebServer] 566:
+[WebServer] 567: {#if hasSolution} +[WebServer] 11:04:26 AM [vite-plugin-svelte] src/routes/lesson/[part]/[name]/+page.svelte:876:2 `
` with a click handler must have an ARIA role +[WebServer] https://svelte.dev/e/a11y_no_static_element_interactions +[WebServer] 874: {#if showCopyModal} +[WebServer] 875: +[WebServer] 876:
e.target === e.currentTarget && onCopyModalOk()}> +[WebServer] 878: