C++ logic network library
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
examples
include
lib
test
.clang-format
.gitignore
.travis.yml
CMakeLists.txt
Dockerfile
LICENSE
README.md
appveyor.yml
mockturtle.svg

README.md

Build Status Build status Documentation Status License: MIT

mockturtle

mockturtle is a C++-17 logic network library. It provides several logic network implementations (such as And-inverter graphs, Majority-inverter graphs, and k-LUT networks), and generic algorithms for logic synthesis and logic optimization.

Read the full documentation.

Example

The following code snippet reads an AIG from an Aiger file, enumerates all cuts and prints them for each node.

#include <mockturtle/mockturtle.hpp>
#include <lorina/aiger.hpp>

aig_network aig;
lorina::read_aiger( "file.aig", mockturtle::aiger_reader( aig ) );

const auto cuts = cut_enumeration( aig );
aig.foreach_node( [&]( auto node ) {
  std::cout << cuts.cuts( aig.node_to_index( node ) ) << "\n";
} );

Installation requirements

A modern compiler is required to build mockturtle. We are continously testing with Clang 6.0.1, GCC 7.3.0, and GCC 8.2.0. More information can be found in the documentation.

EPFL logic sythesis libraries

mockturtle is part of the EPFL logic synthesis libraries. The other libraries and several examples on how to use and integrate the libraries can be found in the logic synthesis tool showcase.