SIMPLE MAGIC: Synthesis and In-memory MaPping of Logic Execution for Memristor Aided loGIC
In order to use SIMPLE-MAGIC, you will need a Linux machine with:
- Python 2.7
- 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
- ABC Synthesis Tool
- The following Python packages (for graphic description of the solution):
- tk
apt-get install python-tk
- matplotlib
apt-get install python-matplotlib
- 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.
- Run:
python simple_main.py
- 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:
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.
- Clock cycle legend.