All Projects → ehw-fit → evoapproxlib

ehw-fit / evoapproxlib

Licence: MIT License
Library of approximate arithmetic circuits

Programming Languages

Verilog
626 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to evoapproxlib

scalehls
A scalable High-Level Synthesis framework on MLIR
Stars: ✭ 62 (+169.57%)
Mutual labels:  fpga
DFiant
DFiant: A Dataflow Hardware Descripition Language
Stars: ✭ 21 (-8.7%)
Mutual labels:  fpga
super-miyamoto-sprint
Homebrew game for homebrew FPGA game console
Stars: ✭ 48 (+108.7%)
Mutual labels:  fpga
FPGA CryptoNight V7
FPGA CryptoNight V7 Minner
Stars: ✭ 21 (-8.7%)
Mutual labels:  fpga
chop
Round matrix elements to lower precision in MATLAB
Stars: ✭ 21 (-8.7%)
Mutual labels:  arithmetic
rygar-fpga
A FPGA core for the arcade game, Rygar (1986).
Stars: ✭ 17 (-26.09%)
Mutual labels:  fpga
nthu-route
VLSI EDA Global Router
Stars: ✭ 35 (+52.17%)
Mutual labels:  vlsi-circuits
psi common
Common elements for FPGA Design (FIFOs, RAMs, etc.)
Stars: ✭ 13 (-43.48%)
Mutual labels:  fpga
FPGA-USB-Device
FPGA-based USB-device controller to implement USB-CDC, USB-HID, etc.
Stars: ✭ 29 (+26.09%)
Mutual labels:  fpga
fpga puf
🔑 Technology-agnostic Physical Unclonable Function (PUF) hardware module for any FPGA.
Stars: ✭ 44 (+91.3%)
Mutual labels:  fpga
hwt
VHDL/Verilog/SystemC code generator, simulator API written in python/c++
Stars: ✭ 145 (+530.43%)
Mutual labels:  fpga
Deep-DarkFantasy
Global Dark Mode for ALL apps on ANY platforms.
Stars: ✭ 16 (-30.43%)
Mutual labels:  fpga
dpll
A collection of phase locked loop (PLL) related projects
Stars: ✭ 55 (+139.13%)
Mutual labels:  fpga
PeakRDL-uvm
Generate UVM register model from compiled SystemRDL input
Stars: ✭ 25 (+8.7%)
Mutual labels:  fpga
Speech256
An FPGA implementation of a classic 80ies speech synthesizer. Done for the Retro Challenge 2017/10.
Stars: ✭ 51 (+121.74%)
Mutual labels:  fpga
projf-explore
Project F brings FPGAs to life with exciting open-source designs you can build on.
Stars: ✭ 268 (+1065.22%)
Mutual labels:  fpga
rapcores
Robotic Application Processor
Stars: ✭ 14 (-39.13%)
Mutual labels:  fpga
cariboulite
CaribouLite turns any 40-pin Raspberry-Pi into a Tx/Rx 6GHz SDR
Stars: ✭ 785 (+3313.04%)
Mutual labels:  fpga
intfftk
Fully pipelined Integer Scaled / Unscaled Radix-2 Forward/Inverse Fast Fourier Transform (FFT) IP-core for newest Xilinx FPGAs (Source language - VHDL / Verilog). GNU GPL 3.0.
Stars: ✭ 43 (+86.96%)
Mutual labels:  fpga
VGChips
Video Game custom chips reverse-engineered from silicon
Stars: ✭ 86 (+273.91%)
Mutual labels:  fpga

EvoApproxLib

library of approximate arithmetic circuits

This is a GitHub repository of EvoApproxLib LITE version. The library consists of hardware and software models of approximate circuits that are designed to be easily used in arbitrary application. Web-based GUI and the full version of EvoApproxLib can be found on our websites

Library usage

Reference

This library is licenced under MIT licence. If you use the library in your research, please refer the following paper:

V. Mrazek, R. Hrbacek, Z. Vasicek and L. Sekanina, EvoApprox8b: Library of approximate adders and multipliers for circuit design and benchmarking of approximation methods. Design, Automation & Test in Europe Conference & Exhibition (DATE), 2017, Lausanne, 2017, pp. 258-261. doi: 10.23919/DATE.2017.7926993

@INPROCEEDINGS{evoapprox16,
    author={V. Mrazek and R. Hrbacek and Z. Vasicek and L. Sekanina}, 
    booktitle={Design, Automation Test in Europe Conference Exhibition (DATE), 2017}, 
    title={EvoApprox8b: Library of approximate adders and multipliers for circuit design and benchmarking of approximation methods}, 
    year={2017}, 
    volume={}, 
    number={}, 
    pages={258-261}, 
    doi={10.23919/DATE.2017.7926993}, 
    ISSN={1558-1101}, 
    month={March},}

The library is a collection of circuits published in the following papers:

  • V. Mrazek, Z. Vasicek and R. Hrbacek, "Role of circuit representation in evolutionary design of energy-efficient approximate circuits" in IET Computers & Digital Techniques, vol. 12, no. 4, pp. 139-149, 7 2018. doi: 10.1049/iet-cdt.2017.0188
  • V. Mrazek, R. Hrbacek, Z. Vasicek and L. Sekanina, "EvoApprox8b: Library of approximate adders and multipliers for circuit design and benchmarking of approximation methods". Design, Automation & Test in Europe Conference & Exhibition (DATE), 2017, Lausanne, 2017, pp. 258-261. doi: 10.23919/DATE.2017.7926993
  • V. Mrazek, L. Sekanina, Z. Vasicek "Libraries of Approximate Circuits: Automated Design and Application in CNN Accelerators" IEEE Journal on Emerging and Selected Topics in Circuits and Systems, Vol 10, No 4, 2020
  • V. Mrazek, S. S. Sarwar, L. Sekanina, Z. Vasicek and K. Roy, "Design of power-efficient approximate multipliers for approximate artificial neural networks," 2016 IEEE/ACM International Conference on Computer-Aided Design (ICCAD), Austin, TX, 2016, pp. 1-7. doi: 10.1145/2966986.2967021
  • V. Mrazek, Z. Vasicek, L. Sekanina, H. Jiang and J. Han, "Scalable Construction of Approximate Multipliers With Formally Guaranteed Worst Case Error" in IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 26, no. 11, pp. 2572-2576, Nov. 2018. doi: 10.1109/TVLSI.2018.2856362
  • Z. Vasicek and L. Sekanina, "Evolutionary Approach to Approximate Digital Circuits Design" in IEEE Transactions on Evolutionary Computation, vol. 19, no. 3, pp. 432-444, June 2015. doi: 10.1109/TEVC.2014.2336175

Usage in Python

To use the models from Python, it is possible to generate and compile binary extensions using cython.

  1. Make sure cython is installed
pip install --user cython
  1. Generate cython sources (creates cython directory):
python3 make_cython.py
  1. Compile and install binary extensions (*.so on linux, *.pyd on Windows):
cd cython
python3 setup.py build_ext
python3 setup.py install --user
  1. Finally, the extension can be used in a Python script as follows:
import evoapproxlib as eal

e = 0
for i in range(0, 2**8):
    for j in range(0, 2**8):
        e += abs(eal.add8u_0FP.calc(i, j) - (i+j))

print('MAE calculated', e / (2**(2*8)))
print('MAE from lib', eal.add8u_0FP.MAE)

Each circuit is implemented as single binary module, providing the calc(a, b) function and various paremeters. The evoapproxlib module also contains dictionaries eal.adders and eal.multipliers with references to all circuits, grouped by their data type, for easier iteration:

import evoapproxlib as eal

for name, module in eal.adders['8_unsigned'].items():
    print(name, module.MAE, module.WCE)

for name, module in eal.multiplers['16x16_signed'].items():
    print(name, module.MAE, module.WCE)

Circuits

Adders (unsigned)

Multipliers (unsigned)

Multipliers (MxN, unsigned)

Adders (signed)

Multipliers (signed)

References

The library was mentioned or used in the following research papers:

  • Issa Qiqieh, Rishad Shafik, Ghaith Tarawneh, Danil Sokolov, Shidhartha Das, Alex Yakovlev, "Energy-efficient approximate wallace-tree multiplier using significance-driven logic compression", Signal Processing Systems (SiPS) 2017 IEEE International Workshop on, pp. 1-6, 2017.
  • Michal Wiglasz, Lukas Sekanina, "Evolutionary approximation of gradient orientation module in HOG-based human detection system", Signal and Information Processing (GlobalSIP) 2017 IEEE Global Conference on, pp. 1300-1304, 2017.
  • Marcello Traiola, Arnaud Virazel, Patrick Girard, Mario Barbareschi, Alberto Bosio, "Testing approximate digital circuits: Challenges and opportunities", Test Symposium (LATS) 2018 IEEE 19th Latin-American, pp. 1-6, 2018.
  • Weiqiang Liu, Jiahua Xu, Danye Wang, Chenghua Wang, Paolo Montuschi, Fabrizio Lombardi, "Design and Evaluation of Approximate Logarithmic Multipliers for Low Power Error-Tolerant Applications", Circuits and Systems I: Regular Papers IEEE Transactions on, vol. 65, no. 9, pp. 2856-2868, 2018.
  • Marcello Traiola, Arnaud Virazel, Patrick Girard, Mario Barbareschi, Alberto Bosio, "On the Comparison of Different ATPG Approaches for Approximate Integrated Circuits", Design and Diagnostics of Electronic Circuits & Systems (DDECS) 2018 IEEE 21st International Symposium on, pp. 85-90, 2018.
  • Salim Ullah, Sanjeev Sripadraj Murthy, Akash Kumar, "SMApproxLib: Library of FPGA-based Approximate Multipliers", Design Automation Conference (DAC) 2018 55th ACM/ESDA/IEEE, pp. 1-6, 2018.
  • Vojtech Mrazek, Zdenek Vasicek, Lukas Sekanina, Honglan Jiang, Jie Han, "Scalable Construction of Approximate Multipliers With Formally Guaranteed Worst Case Error", Very Large Scale Integration (VLSI) Systems IEEE Transactions on, vol. 26, no. 11, pp. 2572-2576, 2018.
  • Sayandip De, Jos Huisken, Henk Corporaal, "Designing Energy Efficient Approximate Multipliers for Neural Acceleration", Digital System Design (DSD) 2018 21st Euromicro Conference on, pp. 288-295, 2018.
  • Aly Sultan, Ali H. Hassan, Hassan Mostafa, "A Compact Low-Power Mitchell-Based Error Tolerant Multiplier", CAS (NGCAS) 2018 New Generation of, pp. 130-133, 2018.
  • Vincent Camus, Mattia Cacciotti, Jeremy Schlachter, Christian Enz, "Design of Approximate Circuits by Fabrication of False Timing Paths: The Carry Cut-Back Adder", Emerging and Selected Topics in Circuits and Systems IEEE Journal on, vol. 8, no. 4, pp. 746-757, 2018.
  • S. Geetha, P. Amritvalli, "High Speed Error Tolerant Adder for Multimedia Applications", Journal of Electronic Testing, vol. 33, pp. 675, 2017.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].