# iMAP
**Repository Path**: oscc-project/iMAP
## Basic Information
- **Project Name**: iMAP
- **Description**: Logic optimization and technology mapping tool.
- **Primary Language**: C++
- **License**: MulanPSL-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 20
- **Forks**: 13
- **Created**: 2023-03-26
- **Last Updated**: 2025-07-01
## Categories & Tags
**Categories**: chips
**Tags**: None
## README
iMAP
```
Logic optimization and technology mapping tool.
```
### **Features**
- All the operation is mainly based on the strcuture of And-Inverter Graph (AIG) now.
- Logic Optimization
- rewrite
- refactor
- balance
- lut_opt
- Technology mapping
- map_fpga
- IO
- read_aiger
- write_aiger
- write_fpga
- write_verilog
- write_dot
### **Compilation**
```
mkdir build && cd build
cmake ..
make -j 8
```
After compilation, the binary will be stored in the ${project_path}/bin/ directory.
### **Usages**
- Interactive execution
```
username@pcl-X11DPi-N-T:/bin$ ./imap
imap> read_aiger -f ../../../benchmark/EPFL/arithmetic/adder.aig
imap> print_stats -t 0
Stats of AIG: pis=256, pos=129, area=1020, depth=255
imap> rewrite
imap> balance
imap> refactor
imap> lut_opt
imap> map_fpga
imap> print_stats -t 1
Stats of FPGA: pis=256, pos=129, area=215, depth=75
imap> write_fpga -f adder.fpga.v
```
- batch execution \
The above step-by-step interactive execution can be performed at a time as shown below:
```
./imap -c "read_aiger -f ../../../benchmark/EPFL/arithmetic/adder.aig; print_stats -t 0; rewrite; balance; refactor; lut_opt; map_fpga; print_stats -t 1; write_fpga -f adder.fpga.v"
```
### Activated your python APIs
After running the "Compilation" step, the python library will generated in the "build/cli" path and named with "imap.python--x86_64-linux-gnu.so", for example, if your python version is 3.7, then is 37.
It is necessary to run the EngineIMAP with the generated python library.
```
1. cd /imap/ai_infra
2. rm lib/imap.cpython--x86_64-linux-gnu.so
3. cp /imap/build/cli/imap.cpython--x86_64-linux-gnu.so ./lib
```
Then, the EngineIMAP in imap_engine.py will be activated, and you can run with your python:
```
python demo.py
```
**Notes**: You can modify the apis in "cli" folder of imap to let it support your modified algorithms before activating your python APIs.
### **WIP**
- Yosys + imap;
- Sequential circuit;
- ASIC technology mapping;
---
### Contact us
- Peng Cheng Laboratory / iEDA group
- Peking University / Center for Energy-Efficient Computing and Applications
- Shanghai Anlogic Infotech CO., LTD.
If you have any question, please feel free to submit issues, or just send an email to "nlwmode AT gmail DOT com".