eSLIM is a tool for circuit minimization that utilizes exact synthesis and the SAT-based local improvement method (SLIM) to locally improve circuits.
The src directory contains the source code of the tool.
The following dependencies must be installed:
To use the QBF-based minimization at least one of the following QBF solvers needs to be installed.
We recommend using the solver QFUN. In addition to installing a solver also the path to the binary needs to be set in utils.py.
To use ABC for inprocessing, the ABC synthesis and verification tool needs to be installed. Additionally, the path to the ABC binary needs to be set in utils.py.
To read and write AIGs (And-Inverter Graph) the AIGER library is used. For checking SAT formulae the SAT solver CaDiCaL is used.
We only provide instructions for building the tool on a LINUX system.
git clone --recursive https://github.com/fxreichl/eSLIM.git eSlim
cd eSlim/src/bindings
mkdir build && cd build
cmake ..
make
To minimize a circuit use reduce.py. To run this script use:
reduce.py <Specification> <Result> <Limit>
Specificationthe circuit to minimize. Given either in the BLIF or in the AIGER format. If the BLIF format is used than the input must be sorted topologically, i.e., gates must be introduced before they are used. Note that not all current best implementations in the EPFL suite are sorted topologically.Resultthe file to which the resulting circuit shall be written. By default, the result is given as a BLIF. By using the options --aig and --aig-out the result can be given in the AIGER format (if the filename has the .aag extension the ASCII AIGER format is used otherwise the binary AIGER format is used).Limitthe available time budget given in seconds.
--gsNumber of inputs of the gates--aigSynthesise an AIG--abcUse ABC for inprocessing--restartsNumber of restarts--syn-modeSpecify if the QBF or the SAT-based approach shall be used--windowsMaximum number of windows and the reference size of the windows--sizeInitial bound for the subcircuits--fixed-sizeDisable fixed bounds--expansionSpecify the expansion strategy