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.
A live benchmark comparison report is automatically generated on every push:
👉 View Benchmark Report
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
Metadata
Release files for optivlsi 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| optivlsi-0.1.2.tar.gz | 24.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| optivlsi-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.1 kB
Release files / optivlsi-0.1.2.tar.gz
| Download URL | optivlsi-0.1.2.tar.gz |
|---|---|
| Size | 24.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c464c77a6aee89a28e926275d174fb81dfd6bb2746dc108481a006084e4b08e6
|
|
BLAKE2b-256 checksum How to use checksums |
fbdd80d42ba24a2d57491bcd614915a244fc35b79ed7dd4654fc2725da7f02d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / optivlsi-0.1.2-py3-none-any.whl
| Download URL | optivlsi-0.1.2-py3-none-any.whl |
|---|---|
| Size | 25.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
da7dcb00228f05124e344eff61af283cb1c04fcabf307d48474809a3ed5aa444
|
|
BLAKE2b-256 checksum How to use checksums |
84e44ab25f023186a6d7713d9406711b59c9cf977e146a14b7b2708b7474961a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|