This page gives a quick developer reference for the SCOAP API surface in OpenTestability.
Purpose
SCOAP computes structural testability metrics:
CC0: controllability to logic 0CC1: controllability to logic 1CO: observability to outputs
These metrics are used directly in DFT analysis and test-point selection workflows.
Primary package
opentestability.core.scoap
Common imports
from opentestability.core.scoap import run
from opentestability.core.scoap import build_controllability, build_observability
Main entry point
run(input_filename, output_filename, json_flag=False, reconvergence_data=None, reconvergent_roots=None, parallel=False, max_workers=4)
Runs SCOAP end to end.
Key arguments:
| Argument | Meaning |
|---|---|
input_filename |
parsed netlist input |
output_filename |
output report/metrics file |
json_flag |
output JSON when True |
reconvergence_data |
optional reconvergence metadata |
reconvergent_roots |
fanout roots for reconvergence-aware processing |
parallel |
enable parallel controllability pass |
max_workers |
worker count for parallel mode |
Minimal examples
Basic run:
from opentestability.core.scoap import run
run(
input_filename="circuit.txt",
output_filename="scoap_results.json",
json_flag=True,
)
Reconvergence-aware run:
run(
input_filename="circuit.txt",
output_filename="scoap_results.json",
json_flag=True,
parallel=True,
max_workers=4,
)
Notes for developers
- keep mode and input format aligned (
--genusvs--yosysworkflows) - when benchmarking, keep algorithm and worker settings fixed for fair comparisons
- for large circuits, parallel mode can improve runtime significantly