Skip to content

COMPACT: Flow-Based Computing on Nanoscale Crossbars with Minimal Semiperimeter and Maximum Dimension

Notifications You must be signed in to change notification settings

profsumitjha/compact

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

COMPACT: Flow-Based Computing on Nanoscale Crossbars with Minimal Semiperimeter

Introduction

Flow-based computing

Flow-based computing is an in-memory computing paradigm on nanoscale memristor crossbars. The memristors are assigned Boolean literals (Boolean variables and their negations), and the Boolean truth values '0' and '1'.

Definition: Given a crossbar design for a Boolean function φ, then the Boolean function φ evaluates to true if and only if there exists a path along low resistive memristors from the input nanowire (bottom most nanowire) to the output nanowire (top most nanowire) when a high input voltage is applied to the input nanowire.

Flow-based computing

Publications

Requirements

Windows
Linux
  • Python 3.6 or higher
  • Optional: CPLEX
MacOS
  • Python 3.6 or higher
  • Optional: CPLEX

Installation

Submodules

Clone this git repository and the required submodules ABC, Z3 and the EPFL benchmarks. For ABC, make sure to clone the submodule from here. Clone the submodules using the following command:

git submodule update --init --recursive
LTspice

(Optional for Windows) Download and install LTspice. Then, configure the path to LTspice in config.py:

lt_spice = "C:\Program Files\LTC\LTspiceXVII\XVIIx64.exe"

Make sure the packages g++, gcc and libreadline-dev are installed for your Linux environment.

sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libreadline-dev
ABC

Compile the ABC tool in the directory abc.

cd abc
make
Z3

Compile the Z3 tool in the directory z3.

cd z3
python3 scripts/mk_make.py --python
cd build
make
sudo make install
CPLEX

By default, CPLEX is the ILP solver. Download and install CPLEX, and make sure CPLEX is installed and the variable cplex_path is set correctly for your OS.

Python packages and dependencies

Use the package manager pip to install the Python dependencies in requirements.txt.

pip3 install -r requirements.txt
LuaLaTeX

Install lualatex.

Usage

In the directory examples, some examples are given on how to use COMPACT from command line.

python3 cli/main.py new_log t481.log | read benchmarks/t481.pla | robdd | compact

Version

COMPACT version 2.0.0.

Contact

Sven Thijssen
University of Central Florida
sven.thijssen (at) knights.ucf.edu
http://sventhijssen.com/

References

License

Copyright 2020-2021 University of Central Florida

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

COMPACT: Flow-Based Computing on Nanoscale Crossbars with Minimal Semiperimeter and Maximum Dimension

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 85.9%
  • C++ 13.8%
  • C 0.3%