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
1. Practical Detector - RECOMMENDED
Best for: Most real-world applications
Performance:
- 98%+ accuracy with baseline methods
- Fast execution on all circuit types
- Reliable results across diverse topologies
- Production-ready implementation
Use Cases:
- Circuit design validation
- DFT (Design for Test) analysis
- General testability assessment
- Educational purposes
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:
- Highly selective detection
- Research-grade accuracy
- Excellent for complex circuits (pipelined, register-heavy)
- Note: Very selective on simple circuits
Use Cases:
- Academic research
- Complex VLSI designs
- Pipelined architectures
- Register-heavy circuits
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:
- Traditional approach (well-understood)
- Reliable baseline for comparison
- Good for simple circuits
- Note: May miss complex patterns
Use Cases:
- Algorithm comparison
- Legacy system compatibility
- Educational baseline
- Simple circuit analysis
Circuit-Specific Recommendations
Simple Combinational Circuits
- Primary: Practical Detector
- Alternative: Baseline BFS
- Avoid: Research Algorithm (too selective)
Complex Pipelined Circuits
- Primary: Research Algorithm
- Alternative: Practical Detector
- Avoid: Baseline BFS (may miss patterns)
Register-Heavy Designs
- Primary: Research Algorithm
- Alternative: Practical Detector
- Avoid: Baseline BFS (limited register awareness)
Mixed-Signal or Analog-Digital
- Primary: Practical Detector
- Alternative: Compare all three
- Note: May need custom analysis
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
- Higher counts: More complex fanout structures detected
- Lower counts: Simpler circuit topology or selective detection
- Zero counts: No reconvergent fanout detected (may indicate simple circuit or very selective algorithm)
Accuracy Assessment
- Practical Detector: Should match baseline within 2-5%
- Research Algorithm: May be significantly different, especially on simple circuits
- Baseline BFS: Traditional approach, good for comparison
Troubleshooting
If Practical Detector Returns 0 Reconvergences
- Check if circuit has fanout points (nodes with multiple outputs)
- Verify DAG construction was successful
- Try baseline BFS for comparison
If Research Algorithm Returns 0 Reconvergences
- This is normal for simple circuits
- Try practical detector for more comprehensive results
- Consider if circuit has complex pipelined structures
If All Algorithms Return 0 Reconvergences
- Circuit may not have reconvergent fanout
- Check circuit topology
- Verify input file format
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?
- Documentation: Check the main README.md
- Issues: Report problems on GitHub Issues
- Discussions: Ask questions on GitHub Discussions
Remember: Start with the Practical Detector for most applications, and use the Research Algorithm for complex circuits or academic work! 🎯