Skip to content

wjrforcyber/ABCPaperCheck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 

Repository files navigation

ABCPaperCheck

Research related to ABC

ABC is a very popular opensource Logic Synthesis project, some of the research implemented in ABC or related to ABC is recorded here.

This repo also helps people who want to read ABC code properly, research paper is a good start before accessing plain code.

Most of the paper referenced here can be found at Alan Mishchenko's publication page.

Another EPFL Isils group also has very high quality synthesis research, feel free to add anything interesting to the list.

Command and Research Related

Structure & algorithm

Some structure concept such as K-feasible cuts, priority cuts, MFFC in ABC can be found in following research paper.

IO & Util Group

aigaug

read_aiger

read_bench

read_blif

read_genlib & print_genlib

  • genlib format is SIS genlib format
    *Note this is not an offical source, it would be appreciate if anyone could provide an official source.

read_super

super

  • In ABC this command for constructing supergates only accepts a library in genlib format, if you are using a standard cell library, dump a genlib first.

testnpn

double

  • double can be used to increase the size of the current aig network, and functionally speaking, you could generate larger case more realistic than MtM benchmark. - Reference

&cec

write_edgelist

write_bench

  • This command by default write out the LUT network, if you prefer the traditional gate representation, turn on -l.

Optimization Group

strash
Structure hashing

bdd
Binary decision diagram.
*Note that ROBDD is cananical but even with structure hashing, AIG is not cananical, this is simple but important.

bidec
Bi-decomposition.
Reference: An Algorithm for Bi-Decomposition of Logic Functions (Compared to SIS, better delay result achieved.)

dsd

eliminate

  • Reference: "For example, the operation “eliminate” collapses a node into its fanouts if the worth of a node computed using this metric did not exceed a specified threshold."("this metric" stands for FFLC.)

ftune

fraig

  • FRAIGs: A Unifying Representation for Logic Synthesis and Verification
    Construct aig and make sure it's semi-canonical, the concept semi-canonical can be compared with ROBDD, which is totally canonical.
    *Note that the MVSIS link in the paper is no longer avaiable, unofficial source code could be retrived from the Traditional Logic synthesis tools part below.

orchestrate

profile

rewrite/refactor/balance

resub

&reshape

rr

  • Scalable Logic Synthesis using a Simple Circuit Structure
    The concept of redundancy removal can be found here. The original redundancy removal could still be found in ABC source code but is not registered in the tool, so you can't use it directly, it is marked as absolete.
    *Note: "...Therefore, don’t-care-based two-level minimization performed in ... using ESPRESSO is not needed for AIG."

satclp

lutmin

lutpack

dchoice
*Note: "The command dchoice uses various methods for rewriting the AIG to minimize the number of AIG nodes while not increasing the number of its levels. In particular, dchoice strives for smaller delay by “balancing”, which decreases the number of AIG levels by decomposing “wide-input” AND gates in a balanced way." - Reference

if -S

if -g

if -y

  • Lazy Man’s Logic Synthesis
    Frequency based method to collect better pattern from design. Can even deal with patterns SOP-balance can not break.

if -u

Mapper Group

map
There are tons of ideas and tricks inside the mapper, this list will be extended.

if

&sif

smap & sfpga

Other reference

Post-Mappinng Group

speedup

  • Global Delay Optimization using Structural Choices
    *Note: ABC LUT library format also has examples in this paper. Since all optimization is on AIG as strash is performed after time tracing and critical node marking, so change these two part will help applying the algorithm after standard cell mapping.

mfs & mfs2

mfs3

NPN

Delay target optimization

  • Enabling Exact Delay Synthesis
    Personally really recommend this paper which combines timing information with supergates and optimizes searching using P classes with timing pattern.

Area target optimization

Traditional Logic synthesis tools

  • Old Logic synthesis tools
    Espresso, SIS, MVSIS are here.
    *Note: Some of the algorithm in ABC is directly from SIS and MVSIS.

Benchmarks

Here are some famous benchmarks from research/paper above.

Other repo

Yosys and OpenRoad-flow-scripts are good place to find out discussion about ABC since original ABC repo's issues are not very active.

SAT solver

This repo from CMU can give you a brif introduction on the DIMACS format and how to use SAT solver as an interface.

I was trying to matain a collection list of SAT solvers but I have found that PySAT seems contain all the well-known SAT solvers.

There's a detailed introduction on MiniSAT.

Performance

TODO

Some of the implementation was originally been written into the traditional tools such as MVSIS or SIS.
It's better to check if ABC contains the following.

  • “S&S-based and BDD-based resubstitution algorithms were implemented in the resynthesis package used to improve the quality of standard-cell technology mapping in MVSIS” - Reference

About

Research paper based on or related to ABC.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published