Coder Social home page Coder Social logo

danielg / abc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yosyshq/abc

0.0 1.0 0.0 43.75 MB

ABC: System for Sequential Logic Synthesis and Formal Verification

License: Other

CMake 0.01% Makefile 0.15% C 97.23% Shell 0.01% C++ 2.24% HTML 0.37% Perl 0.01%

abc's Introduction

Build Status Build status

ABC: System for Sequential Logic Synthesis and Formal Verification

ABC is always changing but the current snapshot is believed to be stable.

Compiling:

To compile ABC as a binary, download and unzip the code, then type make. To compile ABC as a static library, type make libabc.a.

When ABC is used as a static library, two additional procedures, Abc_Start() and Abc_Stop(), are provided for starting and quitting the ABC framework in the calling application. A simple demo program (file src/demo.c) shows how to create a stand-alone program performing DAG-aware AIG rewriting, by calling APIs of ABC compiled as a static library.

To build the demo program

  • Copy demo.c and libabc.a to the working directory
  • Run gcc -Wall -g -c demo.c -o demo.o
  • Run g++ -g -o demo demo.o libabc.a -lm -ldl -lreadline -lpthread

To run the demo program, give it a file with the logic network in AIGER or BLIF. For example:

[...] ~/abc> demo i10.aig
i10          : i/o =  257/  224  lat =    0  and =   2396  lev = 37
i10          : i/o =  257/  224  lat =    0  and =   1851  lev = 35
Networks are equivalent.
Reading =   0.00 sec   Rewriting =   0.18 sec   Verification =   0.41 sec

The same can be produced by running the binary in the command-line mode:

[...] ~/abc> ./abc
UC Berkeley, ABC 1.01 (compiled Oct  6 2012 19:05:18)
abc 01> r i10.aig; b; ps; b; rw -l; rw -lz; b; rw -lz; b; ps; cec
i10          : i/o =  257/  224  lat =    0  and =   2396  lev = 37
i10          : i/o =  257/  224  lat =    0  and =   1851  lev = 35
Networks are equivalent.

or in the batch mode:

[...] ~/abc> ./abc -c "r i10.aig; b; ps; b; rw -l; rw -lz; b; rw -lz; b; ps; cec"
ABC command line: "r i10.aig; b; ps; b; rw -l; rw -lz; b; rw -lz; b; ps; cec".
i10          : i/o =  257/  224  lat =    0  and =   2396  lev = 37
i10          : i/o =  257/  224  lat =    0  and =   1851  lev = 35
Networks are equivalent.

Compiling as C or C++

The current version of ABC can be compiled with C compiler or C++ compiler.

  • To compile as C code (default): make sure that CC=gcc and ABC_NAMESPACE is not defined.
  • To compile as C++ code without namespaces: make sure that CC=g++ and ABC_NAMESPACE is not defined.
  • To compile as C++ code with namespaces: make sure that CC=g++ and ABC_NAMESPACE is set to the name of the requested namespace. For example, add -DABC_NAMESPACE=xxx to OPTFLAGS.

Building a shared library

  • Compile the code as position-independent by adding ABC_USE_PIC=1.

  • Build the libabc.so target:

    make ABC_USE_PIC=1 libabc.so

Bug reporting:

Please try to reproduce all the reported bugs and unexpected features using the latest version of ABC available from https://github.com/berkeley-abc/abc

If the bug still persists, please provide the following information:

  1. ABC version (when it was downloaded from GitHub)
  2. Linux distribution and version (32-bit or 64-bit)
  3. The exact command-line and error message when trying to run the tool
  4. The output of the ldd command run on the exeutable (e.g. ldd abc).
  5. Versions of relevant tools or packages used.

Troubleshooting:

  1. If compilation does not start because of the cyclic dependency check, try touching all files as follows: find ./ -type f -exec touch "{}" \;
  2. If compilation fails because readline is missing, install 'readline' library or compile with make ABC_USE_NO_READLINE=1
  3. If compilation fails because pthreads are missing, install 'pthread' library or compile with make ABC_USE_NO_PTHREADS=1
  4. If compilation fails in file "src/base/main/libSupport.c", try the following:
    • Remove "src/base/main/libSupport.c" from "src/base/main/module.make"
    • Comment out calls to Libs_Init() and Libs_End() in "src/base/main/mainInit.c"
  5. On some systems, readline requires adding '-lcurses' to Makefile.

The following comment was added by Krish Sundaresan:

"I found that the code does compile correctly on Solaris if gcc is used (instead of g++ that I was using for some reason). Also readline which is not available by default on most Sol10 systems, needs to be installed. I downloaded the readline-5.2 package from sunfreeware.com and installed it locally. Also modified CFLAGS to add the local include files for readline and LIBS to add the local libreadline.a. Perhaps you can add these steps in the readme to help folks compiling this on Solaris."

The following tutorial is kindly offered by Ana Petkovska from EPFL: https://www.dropbox.com/s/qrl9svlf0ylxy8p/ABC_GettingStarted.pdf

Final remarks:

Unfortunately, there is no comprehensive regression test. Good luck!

This system is maintained by Alan Mishchenko [email protected]. Consider also using ZZ framework developed by Niklas Een: https://bitbucket.org/niklaseen/abc-zz (or https://github.com/berkeley-abc/abc-zz)

abc's People

Contributors

alanminko avatar arcanenibble avatar boschmitt avatar clairexen avatar eddiehung avatar fatsie avatar gpshead avatar grigoraghanyan avatar hriener avatar jamesjer avatar kmurray avatar lj-ucb avatar ljbrooks avatar mgielda avatar mkurc-ant avatar mmicko avatar mohamed avatar msoeken avatar niklaseen avatar sterin avatar vinicallegaro avatar whitequark avatar xobs avatar yshotw avatar zzhou612 avatar

Watchers

 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.