API Documentation Index
Comprehensive API documentation for OpenTestability modules.
Module Organization
OpenTestability is organized into the following modules:
Core Modules
- core - Main analysis engines
scoap.py- SCOAP metrics calculationdag_builder.py- DAG constructionreconvergence.py- Basic reconvergence detectionsimple_reconvergence.py- Enhanced reconvergenceadvanced_reconvergence.py- Advanced reconvergence
Parser Modules
- parsers - File parsing and conversion
verilog_parser.py- Verilog netlist parserjson_converter.py- Text to JSON converter
Visualization Modules
- visualization - Graph rendering
graph_renderer.py- Graphviz-based visualization
Utility Modules
- utils - Helper functions
file_utils.py- File and path management
Quick Reference
Most Common Functions
# Parsing
from opentestability.parsers.verilog_parser import parse
parse("circuit.v", "circuit.txt")
# DAG Creation
from opentestability.core.dag_builder import create_dag_from_netlist
create_dag_from_netlist("circuit_parsed.json")
# SCOAP Analysis
from opentestability.core.scoap import run
run("circuit.txt", "scoap_results.json", json_flag=True)
# Reconvergence Detection
from opentestability.core.reconvergence import analyze_reconvergence
analyze_reconvergence("circuit_dag.json")
# Visualization
from opentestability.visualization.graph_renderer import visualize_gate_graph
visualize_gate_graph("circuit_dag.json")
Usage Patterns
As a Library
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent / "src"))
from opentestability.parsers.verilog_parser import parse_verilog_netlist
from opentestability.core.dag_builder import build_dag
from opentestability.core.scoap import calculate_scoap
# Parse netlist
modules = parse_verilog_netlist("path/to/circuit.v")
# Extract gates
gates = modules['my_module']['instances']
# Build DAG
edges, labels = build_dag(gates)
# Calculate metrics
metrics = calculate_scoap(gates, inputs, outputs)
Direct Script Execution
Most modules can be run directly:
# Parse Verilog
python3 -m opentestability.parsers.verilog_parser circuit.v
# Build DAG
python3 -m opentestability.core.dag_builder circuit_parsed.json
# Run SCOAP
python3 -m opentestability.core.scoap circuit.txt
# Convert to JSON
python3 -m opentestability.parsers.json_converter circuit.txt
Module Dependencies
opentestability/
├── core/
│ ├── scoap.py → utils.file_utils
│ ├── dag_builder.py → utils.file_utils
│ ├── reconvergence.py → utils.file_utils, dag_builder
│ ├── simple_reconvergence.py → utils.file_utils
│ └── advanced_reconvergence.py → utils.file_utils
├── parsers/
│ ├── verilog_parser.py → utils.file_utils, pyverilog
│ └── json_converter.py → utils.file_utils
├── visualization/
│ └── graph_renderer.py → utils.file_utils, pygraphviz
└── utils/
└── file_utils.py → (no dependencies)
External Dependencies
- pyverilog: Verilog parsing (AST generation)
- pygraphviz: Graph visualization
- graphviz: System-level graph rendering (required by pygraphviz)
Type Hints and Documentation
All functions include:
- Type hints for parameters and return values
- Comprehensive docstrings
- Usage examples in docstrings
- Error handling documentation
Error Handling
Common exceptions raised:
FileNotFoundError: Input file doesn’t existValueError: Invalid input data or formatKeyError: Missing required keys in data structuresjson.JSONDecodeError: Invalid JSON format