diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..61875b9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +temp/ +build/ +compile_commands.json +out/ +include/bbdd/ +*.csv diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..cd97a4e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "include/bbdd"] + path = include/bbdd + url = https://phabricator.ict.tuwien.ac.at/source/SoC_BBDD_Library.git diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1f30b54 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2025 Oliver Theimer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..8195dfe --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +# 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 +``` diff --git a/include/bbdd b/include/bbdd new file mode 160000 index 0000000..180fb5f --- /dev/null +++ b/include/bbdd @@ -0,0 +1 @@ +Subproject commit 180fb5f785ecbb27d7b94125ab39d238afb7c9e1