Skip to content

Skill Dependencies and Data Flow

Every skill on the Forenyx platform follows an explicit input/output contract. Configuration files and code artifacts produced upstream become the input for downstream skills.


1. Global Dependency Topology

The diagram below shows how data flows between skills across the verification process:


2. Skill Input/Output Contracts

SkillPrerequisite skillInput files / dataOutput artifacts
ic-docx2mdNone$0 input .docx
$1 output .md
.md document + extracted image directory
ic-audit-specic-docx2md$0 design spec .md
$1 register .xml (IP-XACT)
FSM logic review report .md
Spec quality review report .md
ic-audit-prd-specic-docx2md$0 register .xml
$1 design spec .md
$2 PRD .yaml
$3 output path (optional)
spec_review_result.md
ic-audit-soc-specic-docx2md$0 SoC spec .md
$1 chip register description .svd/.xml (optional)
$2 report output directory (optional)
Three SoC spec quality review reports .md — IP level, connection level, system level
ic-audit-soc-prd-specic-docx2md$0 SoC integration spec .md
$1 SoC PRD .yaml
$2 chip register description (optional)
$3 output path (optional)
soc_review_result.md
ic-audit-design-autoic-docx2md$0 design spec .md
$1 register .xml
$2 PRD .yaml
$3 report output path (optional)
Orchestrates ic-audit-prd-spec + ic-audit-spec
Staged review reports (pauses after each stage)
ic-gen-halic-docx2md$0 design spec .md
$1 register .xml (optional)
$2 IP module name
$3 output path (optional)
{IP}_hal.md
uvm-testplan-gen-featureic-docx2md$0 register .xml
$1 IP design document .md
$2 output path (optional)
uvm_feature_report.md
uvm-testplan-gen-testplanuvm-testplan-gen-feature$0 feature report .md
$1 design spec .md
$2 design source RTL/Chisel (optional)
$3 output path (optional)
uvm_testplan.md
uvm-testplan-autoic-docx2md$0 register .xml
$1 IP design document .md
$2 design source RTL/Chisel (optional)
$3/$4 feature / test plan output paths (optional)
Orchestrates gen-feature + gen-testplan
uvm_feature_report.md + uvm_testplan.md
uvm-env-createNone$0 IP_NAME
$1 TC_NAME
$2 WORK_DIR
$3 register .xml
UVM skeleton directory + smoke test
uvm-env-cfguvm-env-createNo positional arguments (triggered while editing *_env.sv / *_env_cfg.sv){ip}_env.sv, {ip}_env_cfg.sv
uvm-env-config-dbuvm-env-createNo positional arguments (triggered while editing *_config_db.sv){ip}_config_db.sv (virtual interface and config object injection via uvm_config_db::set)
uvm-env-inf-connectuvm-env-create$0 IP_NAME
$1 WORK_DIR
$2 top-level RTL .v/.sv
$3 VIP_DIR (optional)
{ip}_inf_connect.sv
uvm-env-impluvm-env-create$0 IP_NAME
$1 WORK_DIR
$2 top-level RTL .v/.sv
$3 spec .md
$4 testplan .md
$5 VIP_DIR (optional)
Driver / Monitor / Scoreboard / coverage implementation
uvm-env-svauvm-testplan-gen-testplan$0 IP_NAME
$1 WORK_DIR
$2 top-level RTL .v/.sv
$3 testplan .md
$4 spec .md (optional)
$5 FSM coverage directory (optional)
sim/sva/*.sv, sva_bind.sv
sva_index.md, signal_manifest.json
uvm-env-base-seq-genuvm-env-createNo positional arguments (triggered by IP name and protocol){ip}_base_sequence.sv
{ip}_smoke_sequence.sv
uvm-testcase-gen-testcaseuvm-testplan-gen-testplan$0 WORK_DIR
$1 testplan .md
$2 TC_NAME (optional, prompts if omitted)
TC class, virtual sequence
tbench.v include registration
uvm-testcase-autouvm-testplan-gen-testplan$0 WORK_DIR
$1 testplan .md
Orchestrates gen-testcase + compile-sim + debug-failure
Per-TC closed loop + summary report
Writes generation status back to the testplan
uvm-testcase-compile-simuvm-testcase-gen-testcase$0 WORK_DIR
$1 TC name
com.log / run.log
PASS / FAIL verdict
uvm-testcase-debug-failureuvm-testcase-compile-sim$0 WORK_DIR
$1 TC name
Auto-fix for compile errors (TC/env, max 3 rounds)
RCA report for simulation errors
uvm-testcase-wave-rcauvm-testcase-compile-sim$0 WORK_DIR
$1 TC name
$2 RTL file or directory
Waveform RCA report
uvm-fsdb-wave-extractuvm-testcase-compile-sim$0 FSDB path
$1 top scope (optional)
$2/$3 start/end time (optional)
$4 signal names
$5 max transitions (optional)
$6 output path (optional)
Signal transition history JSON
uvm-coverage-closureuvm-testcase-compile-sim$0 WORK_DIR
$1 testplan .md
$2 RTL directory
--spec / --extra-points / --target-func / --target-code / --exclude-modules (all optional)
Coverage gap report with two human-decision tables (suspected dead code; coverage-model build)
[coverage-driven] entries appended to testplan
Coverage-model build list
uvm-env-coverage-adduvm-coverage-closure
uvm-env-impl
$0 WORK_DIR
$1 testplan .md
$2 RTL directory
--from-report / --categories / --spec / --max-groups (all optional)
Incrementally added covergroups (edits {IP}_coverage.sv only)
Verified by a COV=1 compile
uvm-progress-trackeruvm-testplan-gen-testplan$0 stage name (optional; append mode when given)
$1 coverage 0-100 (optional)
--file / --start-time / --rpt-dir (optional)
uvm_progress.json (each stage carries start_time / finish_time / duration)
uvm-progress-chartuvm-progress-tracker$0 stage data JSON
$1 output directory
$2 filename prefix (optional)
Trend line chart .drawio + .png
uvm-report-genuvm-coverage-closure
uvm-testcase-auto
$0 WORK_DIR
$1 output .docx
--ledger DUT defect ledger (strongly recommended)
--rpt-dir / --testplan / --spec / --rtl-dir / --kb / --progress / --outline (optional)
Formal verification report .docx (screenshots left as placeholder boxes)
Data-reconciliation notes + open-item list
uvm-report-gen-qmdsame as uvm-report-gen$0 WORK_DIR
$1 output directory
--formats / --assets-dir / --reference-docx
remaining arguments as for uvm-report-gen
.qmd source + .docx + .html (+ .pdf)
Missing-figure list + data-reconciliation notes + open items

3. Core Data Handoffs

3.1 Test Plan Attribute Tags

uvm_testplan.md records each feature together with the mechanism that checks it:

  • [CSR] — covered by UVM RAL read/write tests.
  • [Scoreboard] — the scoreboard compares expected against actual values.
  • [SVA-cover] — coverage is collected by an SVA cover module.
  • [SVA-off] — instructs uvm-testcase-gen-testcase to emit $assertoff() suppression.

3.2 Interface and Data Flow Contracts

  • Monitor ➔ Scoreboard — the monitor samples bus transactions and broadcasts them through an analysis port into the scoreboard comparison FIFO.
  • Sequence ➔ Driver — sequence items travel through the sequencer to the driver, which drives the interface.
  • SVA ➔ DUT — SVA checker modules attach to internal DUT signals through the SystemVerilog bind construct.

4. Troubleshooting

4.1 Missing uvm_testplan.md

If testcase generation is invoked without a test plan, the system falls back to generic baseline testcases derived from the interface definition. Feature-specific configuration is not possible in this mode.

4.2 SVA Binding and Hierarchy Errors

If compilation reports that the assertion hierarchy is unavailable, confirm that:

  • uvm-env-sva has been run and produced sva_bind.sv;
  • sva_bind.sv has been added to the compilation filelist.f.

Released under the MIT License