# NEM Synthesis Tool Yosys-based synthesis tool with BBDD, BDD, and MUXIG resynthesis passes specialized for NEM technology, developed as part of the Master’s thesis ‘Pass-through logic optimization for NEM technology’. --- ## 📂 Project Structure Below is an overview of the main files and directories: - `synth.sh` - main synthesis bash script, open interactive shell, generates yosys scripts and executes them - `src/` - conversion algorithms and interfaces to yosys - `yosys/` - yosys scipt templates and modules used for the techmap pass - `include/` - Public headers - `bbdd/` - bbdd manipulation package used for the optimization - `mockturtle/` - mockturtle library from the EPFL Logic Synthesis Libraries - `util/` - conversion helper function to convert from the mockturtle cover network type to one of the decision diagram - `lib/` - external libraries used by mockturtle - `benchmarks/` - benchmark circuits for testing and benchmarking purposes - `liberty/` - liberty files used in the techmap pass - `CMakeLists.txt` - Build configuration (CMake project setup) - `README.md` - This file - `LICENSE` - License file --- ## Getting Started ### Installation requirements - CMAKE version >= 3.8 - C++ compiler (tested with g++ version 15.2.1 20250808) - support C++ 17 standard - Buddy BDD library installed in /usr/local/lib - Information on how to install it can be found here https://github.com/jgcoded/BuDDy - Path to the library can also be configured in src/CMakeLists.txt ### Build with CMake - Build examples ```bash git clone https://phabricator.ict.tuwien.ac.at/source/SoC_NEM_Synthesis.git git submodule update --init --recursive mkdir build && cd build cmake .. make ``` - Build the docs ```bash git clone https://phabricator.ict.tuwien.ac.at/source/SoC_NEM_Synthesis.git mkdir build && cd build cmake .. make docs ```