Changelog
Unreleased
Features
- New
uvm-env-coverage-addskill — reads the coverage-model build list decided inuvm-coverage-closuretogether with the coverage goals in the test plan, and adds covergroups to an existing environment. It edits{IP}_coverage.svonly, verifies by compiling withCOV=1and 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-genskill — 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--forceif you mean it).
Enhancements
uvm-coverage-closuregained 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_FAILandNEED_DECISIONnow 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_min➔duration, plus a per-stagestart_time. The oldtime_minwas 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-trackergained--start-timeso the orchestrator can pass the real execution start; without it the previous stage'sfinish_timeis used, which folds any idle gap into that stage'sduration. - New shared reference
references/coverage-modeling.md— the coverage-modelling rules shared byuvm-env-implanduvm-env-coverage-add(choosing betweenignore_binsandillegal_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.pyaccepted onlyCOUNT == '--', but urg writes0for 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 itsNUMBERcolumn and takes every row in it. - Fixed a duplicated testcase-name prefix that produced
tc_tc_test_xxxin reports.
Forenyx AI v0.4.1 (2026-09-01)
Features
- New
ic-audit-soc-specskill — 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-specskill — 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 (.yamlvs.md) and a scope check that points you atic-audit-prd-specwhen an IP-level PRD is passed by mistake. ic-docx2mdgained PDF conversion (pdf2md.py) —.pdfdesign 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-docx2mdheading-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
.licfile alongsideverifyfor 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-testplanargument 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-svaskill — generates SVA checker modules, a non-intrusive bind and thesva_index.mdindex from the "DUT-level SVA invariant list" inuvm_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/$assertonpairs. Steps renumbered 2a–2h with all cross-references updated.uvm-env-svabidirectional 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.pyrequired an include marker intbench.v.
