Docs / Core Architecture Guide

Goal

This page gives developers the minimum architecture map needed to extend OpenTestability safely.

Current core packages

src/opentestability/core/
├── cop/            # Probability-based controllability/observability
├── scoap/          # Classical CC0/CC1/CO metrics
├── dag/            # DAG build/save helpers
├── reconvergence/  # basic/simple/advanced + integration
└── testpoint/      # TPI orchestrator and insertion pipeline

Main extension points

  1. Add a gate model:
    • COP: core/cop/gate_logic.py
    • SCOAP: core/scoap/gate_logic.py
  2. Add or tune reconvergence behavior:
    • core/reconvergence/basic.py
    • core/reconvergence/simple.py
    • core/reconvergence/advanced.py
  3. Extend TPI flow:
    • ranking: core/testpoint/analyzer.py
    • selection/design: core/testpoint/designer.py
    • netlist edits: core/testpoint/inserter.py
    • output generation: core/testpoint/verilog_writer.py

Compatibility note

Public imports are intentionally re-exported in package __init__.py files where possible. Prefer package-level imports unless you are intentionally targeting a specific internal module.

Safe-change checklist

  1. Validate both --genus and --yosys paths for mode-sensitive edits.
  2. Keep file/path handling through existing utilities, not hardcoded directories.
  3. Preserve output schema compatibility for metrics consumed by TPI.
  4. Run unit and integration tests for touched modules.

Developer references

  1. API Overview
  2. Command Reference
  3. Reconvergence Integration