High-performance VLSI CAD algorithms with Numba-accelerated implementations
Project description
optiVLSI
optiVLSI is a Python package that implements a collection of classic graph and circuit algorithms, including:
- Bellman‑Ford
- Dijkstra
- Prim
- Kruskal
- Lee (maze solver)
- BDD (binary decision diagrams)
- Simulation engines (compiled‑code and event‑driven)
The project has been refactored into a proper Python package with a modern pyproject.toml, type hints, comprehensive tests, documentation, and CI/CD pipelines.
Quick Start
# Install the package
pip install optivlsi
# Run a quick demo
python -m optivlsi.lee.algorithms.lee_algorithm
Documentation
Contributing
See the CONTRIBUTING.md file for guidelines.
Implemented Algorithms
Graph Algorithms
| Algorithm | Package | Variants |
|---|---|---|
| Bellman-Ford Shortest Path | optivlsi.bellman_ford |
Pythonic, NetworkX, Numba |
| Dijkstra Shortest Path | optivlsi.dijkstra |
Pythonic, NetworkX, Numba |
| Kruskal Minimum Spanning Tree | optivlsi.kruskal |
Pythonic (DSU), NetworkX, Numba |
| Prim Minimum Spanning Tree | optivlsi.prim |
Pythonic, NetworkX, Numba |
Routing
| Algorithm | Package | Variants |
|---|---|---|
| Lee Maze Routing | optivlsi.lee |
Pythonic BFS, NetworkX, Numba |
Digital Circuit Simulation
| Algorithm | Package | Variants |
|---|---|---|
| Compiled-Code Simulator | optivlsi.simulation.compiled_code |
Gate classes, Numba |
| Event-Driven Simulator | optivlsi.simulation.event_driven |
Event propagation, Numba |
Binary Decision Diagrams
| Algorithm | Package | Variants |
|---|---|---|
| ROBDD | optivlsi.bdd |
Python, Numba |
Running Tests
# Run all tests
pytest
# Run with coverage
pytest --cov=optivlsi --cov-report=term
# Run benchmarks
pytest tests/test_benchmarks.py --benchmark-only
Documentation
Full documentation is available in the docs/ directory:
Detailed research paper: OptiVLSI.pdf
Benchmarking
Each algorithm module includes an automate.py file for automan-based benchmarking across various problem sizes. The package also provides pytest-benchmark integration for performance regression detection.
Optimization Tools Used
- Numba: All algorithms have Numba-accelerated variants with JIT compilation
- Automan: Automated simulation and benchmarking infrastructure
- NetworkX: Reference implementations using standard graph library
Project Structure
optivlsi/ # Main package
├── bellman_ford/ # Bellman-Ford algorithm
├── dijkstra/ # Dijkstra's algorithm
├── kruskal/ # Kruskal's MST
├── prim/ # Prim's MST
├── lee/ # Lee maze routing
├── simulation/
│ ├── compiled_code/ # Compiled-code simulator
│ ├── compiled_code_numba/# Numba-accelerated variant
│ └── event_driven/ # Event-driven simulator
├── bdd/ # ROBDD
└── utils/ # Shared utilities
bellman-ford/ # Original standalone modules
dijkstra/ # (preserved for reproducibility)
kruskal/ #
prim/ #
lee-algorithm/ #
compiled-code-simulator/ #
event-driven-sim/ #
ROBDD/ #
Original Research
This open-source codebase started as a course project for AE6102 - Parallel Scientific Computing and Visualization at IIT Bombay. The original standalone research modules are preserved in their respective directories.
Collaborators
- Rohan Rajesh Kalbag
- Neeraj Prabhu
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file optivlsi-0.1.1.tar.gz.
File metadata
- Download URL: optivlsi-0.1.1.tar.gz
- Upload date:
- Size: 24.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7db7315132b543f174b7a9a5e6c07e3c447c866dc576510b9610f81eaa2fb697
|
|
| MD5 |
abd2cf7b0cb0117c49e320426135f100
|
|
| BLAKE2b-256 |
3972e752868664ba51ea4d65b625d4509688f5f732d026456950ec9c5132ed22
|
File details
Details for the file optivlsi-0.1.1-py3-none-any.whl.
File metadata
- Download URL: optivlsi-0.1.1-py3-none-any.whl
- Upload date:
- Size: 25.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7759691b13774a652cc362b8c01420311911bf10cae2fa97a68395bb4b0789c3
|
|
| MD5 |
4cf9d54a17743899c57a7a4600f7fe73
|
|
| BLAKE2b-256 |
41e55e131f8243113efdee04e901346e9716aad9f0652689e0f2f6b716868390
|