View on GitHub

Which Algorithm Should You Use?

Quick Decision Matrix

Your Use Case Recommended Algorithm Command Why?
Production/General Use Practical Detector ./opentestability practical 98%+ accuracy, fast, reliable
Research/Academic Xu & Edirisuriya ./opentestability research Complete research implementation
Complex Pipelined Circuits Xu & Edirisuriya ./opentestability research Best for register-heavy designs
Comparison/Baseline BFS Method ./opentestability reconv Traditional approach
All Algorithms Compare ./opentestability compare See all results side-by-side

Detailed Algorithm Analysis

Best for: Most real-world applications

Performance:

Use Cases:

Example Results:

Priority Encoder: 113 reconvergences (98.3% match with baseline)
Pipelined Multiplier: 7,137 reconvergences (comprehensive detection)

2. Xu & Edirisuriya Research Algorithm

Best for: Research and complex circuits

Performance:

Use Cases:

Example Results:

Priority Encoder: 0 reconvergences (too selective for simple circuits)
Pipelined Multiplier: 74 reconvergences (excellent for complex circuits)

3. Baseline BFS Method 📊

Best for: Comparison and legacy compatibility

Performance:

Use Cases:

Circuit-Specific Recommendations

Simple Combinational Circuits

Complex Pipelined Circuits

Register-Heavy Designs

Mixed-Signal or Analog-Digital

Performance Comparison

Metric Practical Research Baseline
Accuracy ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
Speed ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐
Complex Circuit Support ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐
Simple Circuit Support ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐
Ease of Use ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐

Getting Started

For New Users

# Start with the practical detector (recommended)
./opentestability practical your_circuit_dag.json

# If you need research-grade analysis
./opentestability research your_circuit_dag.json

# Compare all algorithms to understand differences
./opentestability compare your_circuit_dag.json

For Researchers

# Use research algorithm for academic work
./opentestability research your_circuit_dag.json

# Compare with baseline for validation
./opentestability compare your_circuit_dag.json

For Production Use

# Use practical detector for reliable results
./opentestability practical your_circuit_dag.json

# Validate with comparison if needed
./opentestability compare your_circuit_dag.json

Understanding Results

Reconvergence Counts

Accuracy Assessment

Troubleshooting

If Practical Detector Returns 0 Reconvergences

If Research Algorithm Returns 0 Reconvergences

If All Algorithms Return 0 Reconvergences

Advanced Usage

Custom Analysis Pipeline

# Parse and build DAG
./opentestability parse circuit.v circuit --json
./opentestability dag circuit.json

# Run multiple analyses
./opentestability practical circuit_dag.json
./opentestability research circuit_dag.json
./opentestability compare circuit_dag.json

# Generate visualizations
./opentestability visualize circuit_dag.json

Batch Processing

# Process multiple circuits
for circuit in *.v; do
    base=$(basename $circuit .v)
    ./opentestability parse $circuit $base --json
    ./opentestability dag ${base}.json
    ./opentestability practical ${base}_dag.json
done

Need Help?


Remember: Start with the Practical Detector for most applications, and use the Research Algorithm for complex circuits or academic work! 🎯