zigzag-dse 3.8.5
ZigZag - Deep Learning Hardware Design Space Exploration
License: MIT
Requires Python: >=3.11
Keywords: zigzag, dse, design-space-exploration, machine-learning, deep-learning, mapping

# 🌀 ZigZag  
[![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/pylint-dev/pylint)  

**ZigZag** is a novel HW Architecture-Mapping Design Space Exploration (DSE) framework for Deep Learning (DL) accelerators. It bridges the gap between algorithmic DL decisions and their acceleration cost on specialized hardware, providing **fast and accurate HW cost estimation**. Through its advanced mapping engines, ZigZag automates the discovery of optimal mappings for complex DL computations on custom architectures.

### 🌟 [**Explore Documentation**](https://kuleuven-micas.github.io/zigzag/)  
### 📖 [**Start Tutorial**](https://github.com/KULeuven-MICAS/zigzag/tree/tutorial) 

---

## ✨ Key Features  

✔ **ONNX Integration**: Directly parse ONNX models for seamless compatibility with modern deep learning workflows.  
✔ **Flexible Hardware Architecture**: Supports multi-dimensional (>2D) MAC arrays, advanced interconnection patterns, and high-level memory structures.  
✔ **Enhanced Cost Models**: Includes detailed energy and latency analysis for memories with variable port structures through inferred spatial and temporal data sharing and reuse patterns.  
✔ **Modular and Extensible**: Fully revamped structure with object-oriented paradigms to support user-friendly extensions and interfaces.  
✔ **Integrated In-Memory Computing Support**: Seamlessly define digital and analog in-memory-computing (IMC) cores via an intuitive user interface.  
✔ **Comprehensive Output Options**: Outputs results in YAML format, enabling further analysis and integration.

---

## 🚀 Installation  

Visit the [Installation Guide](https://kuleuven-micas.github.io/zigzag/installation.html) for step-by-step instructions to set up ZigZag on your system.

---

## 📖 Getting Started  

Get up to speed with ZigZag using our resources:
- Check out the [Getting Started Guide](https://kuleuven-micas.github.io/zigzag/getting-started.html).
- Explore the [Jupyter Notebook Demo](https://github.com/ZigZag-Project/zigzag-demo) to see ZigZag in action.

---

## 🔧 What’s Next  

We are continuously improving ZigZag to stay at the forefront of HW design space exploration. Here’s what we’re working on:  

- 🧠 **ONNX Operator Support**: Expanding compatibility for modern generative AI workloads.  
- 📂 **Novel Memory Models**: Integrating advanced memory models and compilers for better performance analysis.  
- ⚙️ **Automatic Hardware Generation**: Enabling end-to-end generation of hardware configurations.  
- 🚀 **Enhanced Mapping Methods**: Developing more efficient and intelligent mapping techniques.  

#### ⭐ Please consider starring this repository to stay up to date!  

---

## 📚 Publication Pointers  

Learn more about the concepts behind ZigZag and its applications:

### The General Idea of ZigZag  
- **[ZigZag: Enlarging Joint Architecture-Mapping Design Space Exploration for DNN Accelerators](https://ieeexplore.ieee.org/document/9360462)**  
  L. Mei, P. Houshmand, V. Jain, S. Giraldo, M. Verhelst  
  _IEEE Transactions on Computers_, vol. 70, no. 8, pp. 1160-1174, Aug. 2021.  

### Advanced Features and Extensions  
- **[Uniform Latency Model for DNN Accelerators](https://lirias.kuleuven.be/retrieve/661303)**  
  L. Mei, H. Liu, T. Wu, et al.  
  _DATE 2022_.  
- **[LOMA: Fast Auto-Scheduling on DNN Accelerators](https://ieeexplore.ieee.org/document/9458493)**  
  A. Symons, L. Mei, M. Verhelst  
  _AICAS 2021_.  

For more publications and detailed case studies, refer to the full list in our [Documentation](https://kuleuven-micas.github.io/zigzag/).

---

## 💻 Contributing  

We welcome contributions! Feel free to fork the repository, submit pull requests, or open issues. Check our [Contributing Guidelines](CONTRIBUTING.md) for more details.

---