Reconvergence handling improves metric quality in circuits with fanout branches that rejoin.
Algorithm selection
| Algorithm | Complexity | Use when |
|---|---|---|
basic |
O(n^2) |
quick checks and small circuits |
simple |
O(n^2 log n) |
default production choice |
advanced |
O(n^3) |
deep debug, complex pipelines, FaultFlow integration |
advanced is the recommended algorithm when using the FaultFlow integration interface because it produces stem fields in reconvergence records — the fields FaultFlow needs to structurally pre-certify canceling-path faults.
CLI usage
Reconvergence-aware metrics:
python3 opentest cop -i <design.json> -r -a simple -j
python3 opentest scoap -i <design.json> -r -a simple
Reconvergence alongside TPI:
python3 opentest --yosys analyze_and_add_tp -i <design.json> --scoap -r -t 50 -m 10 --tech sky130 -v
tpi_manifest.json net-ID enrichment
When a Yosys JSON netlist is available, structural_hints.fanout_points in the manifest is written as list[dict] with yosys_net_id on each entry:
{
"structural_hints": {
"fanout_points": [
{"name": "net_foo", "yosys_net_id": 42},
{"name": "internal_sig", "yosys_net_id": null}
]
}
}
yosys_net_id is netnames[name]["bits"][0] — the first integer in Yosys’s bits list, directly usable as a Yosys net index. Signals not in netnames or with only string-constant bits get null.
Practical recommendations
- Start with
simplefor normal runs. - Use
advancedonly when metric behavior looks suspicious around heavy fanout, or when integrating with FaultFlow. - Keep verbose mode enabled while tuning thresholds and test-point count.
Parallel execution
Large circuits can automatically use parallel processing in analysis paths. Keep reconvergence enabled so observability adjustments remain correlation-aware.
Output usage
- feed reconvergence-aware COP/SCOAP results into TPI selection
- compare outputs between algorithms only when behavior needs investigation
- keep algorithm choice consistent inside a single benchmark campaign
FaultFlow integration
OT exposes a machine interface that FaultFlow calls before ATPG to obtain reconvergence structural data without inserting test points. The interface runs SCOAP + reconvergence analysis (defaulting to the advanced algorithm), writes an enriched tpi_manifest.json and a separate <design>_reconv_ids.json, and emits a JSON status line on stdout for the calling process to parse.
See FaultFlow Preflight Protocol for the full contract.