Outputs¶
Every campaign writes into a per-design workspace, output/<top>/. The user-facing
deliverables live at the top of that directory; transient internal state lives in
output/<top>/.faultflow/ and is what --clean removes.
Directory layout¶
output/<top>/
├── coverage.rpt # human-readable coverage report
├── rule_check.rpt # DFT rule-check report (rule_check command)
├── report.rpt # unified report (shell `report` command)
├── <top>_scan.v # scan deliverable (after scan + techmap)
├── <top>_scan.json # scanned generic JSON
├── scan.rpt # scan-insertion report
└── .faultflow/ # internal workspace (removed by --clean)
├── faultflow.sqlite # campaign database (combinational + scan)
├── logs/ # Yosys / nl2bench / quaigh logs
├── manifests/
├── intermediate/ # <top>.json, <top>_gate.v, coverage_report.json
├── verification/ # iverilog verification reports
└── generated_scripts/ # rendered yosys_synth.tcl
In OpenTestability oracle mode (run), an oracle_response.json is written to the
output root.
coverage.rpt¶
A plain-text summary of the campaign: the coverage headline, the fault classification
counts, the policy in effect, and per-node detail. The file name is set by
[report] output. (The interactive shell additionally writes report.rpt, a unified
report with a scan-focused headline; the batch CLI flow produces coverage.rpt.)
coverage_report.json¶
The machine-readable report, written to
output/<top>/.faultflow/intermediate/coverage_report.json and validated against
schemas/coverage.schema.json.
Its top-level structure is:
Section |
Contents |
|---|---|
|
Tool/run identity and input fingerprints |
|
The active policies (collapsing, clock/reset inclusion, unsupported-cell mode) |
|
The coverage and fault-count totals (see below) |
|
Per-run statistics, including ATPG round counts and timing |
|
Per-net fault counts and detection status |
|
The remaining undetected/redundant faults |
The summary block¶
Field |
Meaning |
|---|---|
|
Every enumerated fault, including all tagged exclusions |
|
Faults eligible by structure: supported cell, not collapsed, not clock/reset (the structural denominator) |
|
The effective (testable) denominator: |
|
Faults detected by the test set |
|
Faults neither detected nor proven redundant |
|
Faults proven untestable (SAT UNSAT) under the current model |
|
Faults removed by collapsing |
|
Faults on blackboxed-cell outputs |
|
Clock-net faults (unless |
|
Reset-net faults (unless |
|
Scan-cell-internal and scan-path-only faults (scan campaigns) |
|
|
|
|
|
The headline coverage figure (equal to |
Note
total_raw_faults = denominator + redundant + collapsed + excluded_blackbox + excluded_clock + excluded_reset + excluded_scan + excluded_cross_domain. Exclusions
are always tagged and counted, never silently dropped, and a zero denominator is
raised as an error rather than producing a NaN.
patterns.test¶
Important
Despite being a documented config key ([atpg] output, default patterns.test),
this file is not written by a normal sim / run_atpg run — combinational or
scan. It is only ever written as an internal fallback inside scan_check’s
vector-source resolution, when the optional Quaigh comparison path (quaigh atpg ... -o patterns.test) runs because no vectors were found any other way. In
practice it is rarely present — don’t rely on it as a routine deliverable.
The reliable ways to get generated vectors out are the campaign database
(faultflow.sqlite) and coverage_report.json below, or
sim --scan --export-patterns PATH — a distinct, JSON-format mechanism (see
Running without the shell). In that file a transition
pattern carries launch: loc, a functional clock pulse between the load and the
capture, or los, one more shift with scan enable on and each chain’s
launch_scan_in bit at its scan input. External vectors supplied
with sim --ext use the same plain-text format as patterns.test and require a
same-stem .bench sidecar that fixes the primary-input order.
faultflow.sqlite¶
The campaign database under .faultflow/. It holds the fault list, per-fault
detection records, generated vectors, run metadata, and timing — and is shared by the
combinational and scan campaigns. status reads its current state; --clean deletes
it.
Warning
The database uses the default (rollback) SQLite journal mode, not WAL. WAL is not
reliable on a Windows drive mounted into WSL (/mnt/c/...), so do not switch it on
when the workspace lives on such a path.
oracle_response.json¶
Produced by run (OpenTestability oracle mode). A flat JSON document — validated
against schemas/oracle_response.schema.json
— carrying backend, coverage_percent, fault_coverage_percent, vector_count,
a terminal_reason (target_reached / exhausted / timeout), and the
undetected_faults and per_node arrays. See External tools.