Giter VIP home page Giter VIP logo

bacs's Introduction

BACS: Benchmarks for Approximate Circuit Synthesis (version 1.0)

These benchmarks are released as part of the following accepted publication.

I. Scarabottolo, G. Ansaloni, G. A. Constantinides, L. Pozzi and S. Reda "Approximate Logic Synthesis: A Survey" under-review in Proceedings of the IEEE.

The included benchmarks are

  • x2: small benchmark from LGSynth 91. Metric: Hamming Distance (HD). Approximate design generated using BLASYS.
  • mac: multiply-add arithmetic circuit. Approximate design generated using BLASYS.
  • buttfly: butterfly structure. Metric: Mean Absolute Error (MAE). Approximate design is same as exact.
  • abs_diff: absolute difference arithmetic circuit. Metric: Mean Absolute Error (MAE). Approximate design is generated using Circuit Carving (CC) technique.
  • mult16: 16-bit unsigned multiplier. Metric: Mean Absolute Error (MAE). Approximate design generatered using DRUM.
  • mult8: 8-bit unsigned multiplier. Metric: Mean Absolute Error (MAE). Approximate design generatered using EvoApproxLib.
  • adder32: 32-bit adder. Metric: Mean Absolute Error (MAE). Approximate design generatered manually.
  • fft: 8-point fast fourier transform sequential circuit from ABACUS release. Metric: Mean Square Error (MSE). Approximate design generated using ABACUS.
  • classifier: A support vector machine classifier sequential circuit from ABACUS release. Metric: misclassified labels (%). Approximate design generated using ABACUS.

Each benchmark circuit comes in its own folder with four files:

  • bench/bench.v original design in Verilog
  • bench/bench_test.v testbench for the design in Verilog
  • bench/bench_approx.v an example of an approximate design for the original design
  • bench/bench_qor.py a python function to evaluate QoR results of approximate design against original design

Requirements:

  • iverilog for simulation
  • Python3

Usage: To produce the accurate results for each benchmark:

iverilog bench_test.v bench.v

./a.out > res_accurate

To produce the approximate results for each benchmark:

iverilog bench_test.v bench_approx.v

./a.out > res_approx

To compare the results:

python3 ./bench_qor res_accurate res_approx

regression_test is a test script that sweeps across all benchmarks.

bacs's People

Contributors

sheriefreda avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.