SIMPLE MAGIC: Synthesis and In-memory MaPping of Logic Execution for Memristor Aided loGIC
Branch: master
Clone or download
Latest commit ab9bcd4 Apr 15, 2018

README.md

SIMPLE-MAGIC

SIMPLE MAGIC: Synthesis and In-memory MaPping of Logic Execution for Memristor Aided loGIC

Dependencies

In order to use SIMPLE-MAGIC, you will need a Linux machine with:

  1. Python 2.7
  2. Z3: Run the following commands to install it:
git clone --recursive https://github.com/Z3Prover/z3.git
cd z3
python scripts/mk_make.py --python
cd build
make
make install
  1. ABC Synthesis Tool
  2. The following Python packages (for graphic description of the solution):
  • tk
apt-get install python-tk
  • matplotlib
apt-get install python-matplotlib

Manual

  1. Configure: in the file simple_conf.cfg you will find the following content:
[input_output]
input_path=cm138a.blif
; input_format can get one of the values: verilog, blif
input_format=blif
output_path=cm138a_output

[abc]
abc_dir_path=/home/adi/abc/alanmi-abc-eac02745facf

[Z3]
Z3_path=/usr/bin/z3

Change the parameters according to your needs.

  1. Run:
python simple_main.py
  1. Parse: When Z3 finishes running and output_path is created, run:
python convert_gates_2_array.py -f output_path

The memory array will be printed, for example: Alt text

In addition, two images will be created:

  • Graphic description of the logic execution in the memory. The table drawn in this image represents the memory array. Each circle is a gate port (input or output). Inputs are denoted with the letters A-C and outputs are denoted with E. the number following the letter identifies the gate. Each clock cycle is marked with a different color. Alt text
  • Clock cycle legend.

Alt text