Skip to content

Changelog

Unreleased

Features

  • New uvm-env-coverage-add skill — reads the coverage-model build list decided in uvm-coverage-closure together with the coverage goals in the test plan, and adds covergroups to an existing environment. It edits {IP}_coverage.sv only, verifies by compiling with COV=1 and fixes until the build passes (at most 3 rounds, otherwise it restores from the backup). It touches no other environment file and runs no simulation.
  • New uvm-report-gen skill — when a verification round wraps up, it collects verifiable facts from the coverage report, regression status, DUT defect ledger, test plan, RTL, SVA and simulation logs, cross-checks them for definitional conflicts, and renders a styled Word verification report with placeholder boxes where screenshots belong. Two hard rules: conflicts are never resolved silently (both sources go into the data-reconciliation section) and a docx that already has screenshots pasted in is never overwritten (use --force if you mean it).

Enhancements

  • uvm-coverage-closure gained a second human-decision table, the coverage-model build decision. The original table only adjudicated suspected dead code — it answers "which bins does an existing model still miss". The new one answers a different question: were the coverage models that should exist ever written? Functional coverage can read 100% while an entire feature has no sampling points at all, and such a percentage must not be read as "functional verification completeness". Categories marked "not for now" are listed again in the next round's report with the earlier decision pre-filled, so they never quietly drop out of sight.
  • Testcase generation gained a third verdict, NEED_DECISION (non-terminal). Previously only PASS and GEN_FAIL existed, which lumped "never attempted" together with "attempted, but a human has to choose". The three are now distinct: ABORTED (never attempted) / GEN_FAIL (attempted and failed, terminal) / NEED_DECISION (stopped for a human decision; the next run retries once it is made).
  • Both GEN_FAIL and NEED_DECISION now write a report for the testcase. Generation-stage failures previously left no report, so there was no way to trace back what had actually happened.
  • Progress JSON schema change: time_minduration, plus a per-stage start_time. The old time_min was minutes elapsed from the start of the run to the end of that stage — a 9-minute document review and a 52-hour simulation looked alike in the file, and you had to subtract by hand to recover either one. Each stage now records its own duration. uvm-progress-tracker gained --start-time so the orchestrator can pass the real execution start; without it the previous stage's finish_time is used, which folds any idle gap into that stage's duration.
  • New shared reference references/coverage-modeling.md — the coverage-modelling rules shared by uvm-env-impl and uvm-env-coverage-add (choosing between ignore_bins and illegal_bins, judging cross reachability, and so on), kept identical in both places.

Bug Fixes

  • Fixed under-reported coverage gaps. When parsing urg's uncovered-cross tables, parse_coverage.py accepted only COUNT == '--', but urg writes 0 for single-combination rows and reserves -- for folded multi-value rows — so some functional coverage gaps were silently dropped. It now identifies the uncovered table by its NUMBER column and takes every row in it.
  • Fixed a duplicated testcase-name prefix that produced tc_tc_test_xxx in reports.

Forenyx AI v0.4.1 (2026-09-01)

Features

  • New ic-audit-soc-spec skill — SoC-level spec quality review. It checks, from three verification angles (IP level, connection level, system level), whether the SoC specification supplies the information verification needs, rather than nitpicking the document in general, and emits three Markdown review reports. A chip register description (.svd / IP-XACT .xml) can serve as a second source; without one the skill enters register-degraded mode and states the cost plainly at the top of each report.
  • New ic-audit-soc-prd-spec skill — takes the SoC PRD as the baseline and verifies, requirement by requirement, whether each system-level requirement is realized in the SoC integration spec and the chip register description. Includes a sanity check for swapped arguments (.yaml vs .md) and a scope check that points you at ic-audit-prd-spec when an IP-level PRD is passed by mistake.
  • ic-docx2md gained PDF conversion (pdf2md.py).pdf design documents convert straight to Markdown and feed the same downstream chain as .docx.
  • AI-assisted image analysis in document conversion — extracted images are described by a vision model, with size filtering to drop icons, rules and other uninformative graphics.

Enhancements

  • ic-docx2md heading-level parsing improved, giving better section structure on long documents.
  • Offline licensing gained expiry evaluation and renewal reminders; the offline installer package now ships the Python dependencies it was missing.

Forenyx AI v0.4.0 (2026-08-12)

Features

  • Offline installation and deployment for air-gapped environments — the offline package bundles its Python dependencies, and activation delivers the .lic file alongside verify for the installer to write to disk.
  • Offline license verification and runtime fingerprinting, including seat auditing.

Forenyx AI v0.3.9 (2026-08-05)

  • The CLI no longer displays information about the underlying framework.

Forenyx AI v0.3.8 (2026-08-05)

  • License expiry management — the CLI validates the license at startup and re-checks periodically within a session; expiry notices are accurate to the minute and consistently use Beijing time.
  • Failed license-server requests now retry with exponential backoff.

Forenyx AI v0.3.7 (2026-07-28)

  • uvm-testplan-gen-testplan argument change — the spec directory is now a required argument, and the Chisel source path was downgraded to optional.

Forenyx AI v0.3.6 (2026-07-27)

Features

  • New uvm-env-sva skill — generates SVA checker modules, a non-intrusive bind and the sva_index.md index from the "DUT-level SVA invariant list" in uvm_testplan.md. Includes the signal discovery script (discover_signals.py) and fail-closed degradation.

Enhancements

  • uvm-testplan-gen-testplan — checkpoints gained the [SVA-off] tag for negative and exception testcases that disable assertions, distinguishing them from [SVA-cover] positive coverage. Output templates updated accordingly.
  • uvm-testcase-gen-testcase — added step 2c, "SVA state probing and four-quadrant decision matrix". Virtual sequences now require a recorded SVA decision and a balance check on $assertoff / $asserton pairs. Steps renumbered 2a–2h with all cross-references updated.
  • uvm-env-sva bidirectional cross-check — invariant IDs referenced by [SVA-cover] and [SVA-off] must exist in the list; the list-to-reference coverage check counts only [SVA-cover].

Forenyx AI v0.3.5 (2026-07-24)

  • Fixed a CLI hang: after running /uvm-testcase-auto, subsequent input was queued and never processed.
  • Fixed testcases being falsely reported as "generation failed": register_tc.py required an include marker in tbench.v.

Released under the MIT License