abcpapercheck

Research paper based on or related to ABC.

https://github.com/hkustgz-zhang-lab/abcpapercheck

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 11 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, springer.com, ieee.org, acm.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Research paper based on or related to ABC.

Basic Info
  • Host: GitHub
  • Owner: hkustgz-zhang-lab
  • Default Branch: main
  • Size: 430 KB
Statistics
  • Stars: 46
  • Watchers: 2
  • Forks: 7
  • Open Issues: 1
  • Releases: 0
Created about 2 years ago · Last pushed 8 months ago
Metadata Files
Readme Citation

README.md

ABCPaperCheck

Research related to ABC

ABC is a very popular open source Logic Synthesis project, some 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.

General introduction

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. - [CUDD package](https://web.mit.edu/sage/export/tmp/y/usr/share/doc/polybori/cudd/cuddIntro.html)
A manual helps get familiar with CUDD package. - Multi-valued Decision Diagram (MDDs) [Algorithms for discrete function manipulation](https://ieeexplore.ieee.org/document/129849) - [EXTRA library](https://people.eecs.berkeley.edu/~alanmi/research/extra/)
Should be used together with CUDD package. - [Liberty Reference Manual](https://people.eecs.berkeley.edu/~alanmi/publications/other/liberty07_03.pdf), there's probably a new version though, if anyone has a legal reference link, please update. - [Priority Cuts Definition](https://people.eecs.berkeley.edu/~alanmi/publications/2007/iccad07_map.pdf)
Priority cuts are cuts with cost function. - [Factor Cuts Definition](https://people.eecs.berkeley.edu/~alanmi/publications/2006/iccad06_cut.pdf)
There are two ways of generating cuts, [top-down or bottom-up](https://infoscience.epfl.ch/entities/publication/d9ae3daa-9ee9-4902-892d-ba7b3f241bfb). - [Cut Ranking and Pruning: Enabling A General And Efficient FPGA Mapping Solution](https://dl.acm.org/doi/pdf/10.1145/296399.296425) - [Fast Heuristic Minimization of Exclusive-Sums-of-Products](https://people.eecs.berkeley.edu/~alanmi/publications/2001/rm01_heu.pdf)
ESOP minimizer EXORCISM-4, compared with early EXMIN2/MINT/EXORCISM-2/EXORCISM3. - ISOP(Irredundant Sum-of-product computation)
Which is always computed by Minato-Morreale Algorithm, there is one Pseudo code in the [appendix part](https://cecs.uci.edu/~papers/compendium94-03/papers/1998/iccad98/pdffiles/02b_2.pdf), the truth table library in [Kitty](https://github.com/msoeken/kitty/blob/master/include/kitty/isop.hpp) also has an implementation.
Note BDD package seems to have internal interface. (Reference needed).

IO & Util Group

aigaug - Verilog-to-PyG A Framework for Graph Learning and Augmentation on RTL Designs - Logic-level augmentation. - Relevant repository.

&get & &put - ABC has ABC space and ABC9 space, example of using them interchangeably:
read_aiger i10.aig; strash; &get; &b; &st; &put; rewrite; refactor; ps
&r i10.aig; &st; &if -g; &put; balance; rewrite; ps
read_aiger i10.aig; strash; &get; &if -g; &ps

read_aiger - Local Two-Level And-Inverter Graph Minimization without Blowup
This one is referenced in ABC when constructing AIG. - AIGER 1.9 AND Beyond - The AIGER And-Inverter Graph (AIG) Format Version 20071012
This version is much more detailed than the latest one and illustrates the original AIG format and how to parse it. If you are working on a parser, read this carefully, I recommend reading the aiger parser in lorina, which is implemented in regular expression, in ABC, this is done by hard-core char by char shifting.
Prof Armin Biere's repo would help you do the transformation between aig and other format.

read_bench - Read a bench format file

read_blif - Berkeley Logic Interchange Format(BLIF) - BLIF-MV
BLIF-MV format is the extended BLIF format.

read_pla
PLA format is used as the input file format for Espresso, could find the manual here.

read_genlib & print_genlib - genlib format is SIS genlib format
*Note this is not an official source, it would be appreciated if anyone could provide an official source.

read_super - Concepts of supergates can be found in Reference0 and Reference1.

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 - Fast Boolean Matching Based on NPN Classification - Fast Adjustable NPN Classification Using Generalized Symmetries

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 - Parallel Combinational Equivalence Checking
Note that exact -P and -S switch cannot be found here, if anyone has found the exact implementation in the paper, please update.

write_edgelist - Verilog-to-PyG A Framework for Graph Learning and Augmentation on RTL Designs - Graph Extraction.

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

Optimization Group

strash
Structural hashing - One-level strashing: Make sure nodes have different fanins(up to permutation). - Two-level strashing

bdd
Binary decision diagram.
*Note that Reduced Ordered Binary Decision Diagram(ROBDD) is canonical but even with structure hashing, AIG is not canonical, 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 - The Disjunctive Decomposition of Logic Functions
This command implements all the 4 cases in the paper above. - Other Disjoint Support Decomposition reference: - Minato-DeMicheli - Sasao-Matsuura - An approach to disjoint-support decomposition of logic functions
This implementation should be in EXTRA library.

dsec
Sequential Equivalence Checking. - Scalable and Scalably-Verifiable Sequential Synthesis

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.)

&fx - Fast extract from The Testability-Preserving Concurrent Decomposition and Factorization of Boolean Expressions

ftune - FlowTune: End-to-end Automatic Logic Optimization Exploration via Domain-specific Multi-armed Bandit
Note that this command is not in the original ABC, the detail of the implementation is here.

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 available, unofficial source code could be retrieved from the *Traditional Logic synthesis tools** part below.

&iso - A Semi-Canonical Form for Sequential AIGs

orchestrate - DAG-aware Synthesis Orchestration - Greedy local optimization and domain specific optimization with orchestration of rewrite/refactor/resub.

profile - It profiles the gate structure in network, uses reverse engineer, helps when using transparent-boxing strategy and optimizing with don't care. - -a HA and FA: Structural reverse engineering of arithmetic circuits

rewrite/refactor/balance - DAG-Aware AIG Rewriting A Fresh Look at Combinational Logic Synthesis
*Note that based on this thread, you should consider using drw/drf. - For balance, check the original paper about bi-decomposition. - Note that in ABC, balance command have -d and -s option but implemented improperly which leads to same result, in mockturtle, the same algorithm skips these two options.

resub - Scalable Logic Synthesis using a Simple Circuit Structure
*Note that this resub is technology-independent, there is technology-dependent resub in reference, they have similar idea.

resub_unate - Fast resub based on detecting unate divisors - A Simulation-Guided Paradigm for Logic Synthesis and Verification

resub_core - Generic high-effort resub engine based on support selection
- Efficient Computation of ECO Patch Functions

twoexact - SAT-based exact synthesis with side-divisors - SAT Based Exact Synthesis using DAG Topology Families
*Note: The above three commands with commands such as runeco and &genrel can be found in this repo.

&reshape - Control Logic Restructuring for Area Optimization
*Note that although this command is already in ABC, no real implementation is available.

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, dont-care-based two-level minimization performed in ... using ESPRESSO is not needed for AIG."

runeco - Efficient Computation of ECO Patch Functions

satclp - Progressive Generation of Canonical Irredundant Sums of Products Using a SAT Solver

&satlut - SAT-Based Area Recovery in Structural Technology Mapping

&transduction - Randomized Transduction for High-Effort Logic Synthesis

lutmin - Encoding of Boolean functions and its application to LUT cascade synthesis
The paper itself does not mention ABC but in this paper, reference links lutmin here.

lutpack - Fast Boolean Matching for LUT Structures - Boolean Factoring and Decomposition of Logic Networks

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

indcut - Cut-Based Inductive Invariant Computation
You will see why one-hotness is collected in section 3.2, this technique is also used in command such as mfs.

if -S - Mapping into LUT Structures

if -g - Delay Optimization Using SOP Balancing
*Openroad flow use SOP balance in their script (Update 2024.1.2).
Optimize some aig structure rw/rf/b can't optimize.

if -y - Lazy Mans Logic Synthesis
Frequency based method to collect better pattern from design. Can even deal with patterns SOP-balance can not break.

if -u - Busy Mans Synthesis: Combinational Delay Optimization With SAT

Mapper Group

map
There are tons of ideas and tricks inside the mapper, this list will be extended. - Reducing Structural Bias in Technology Mapping - Technology Mapping with Boolean Matching, Supergates and Choices - Logic effort: Designing for speed on the back of an Envelope
Core theory, logic effort. - Gain-Based Technology Mapping for Discrete-Size Cell Libraries
Some gain-based method reference.
This reference is closely related to standard cell library mapping, which has discrete-size in each cell class (which means assumption of continuously sizeable cells does not hold). - Why delay estimation is logarithmic? High-Level Delay Estimation for Technology-Independent logic Equations

if - Combinational and Sequential Mapping with Priority Cuts

&sif - Mapping and Retiming Revisited

smap & sfpga - Integrating Logic Synthesis, Technology Mapping, and Retiming

atmap - A Design of Compressor Trees for LLM Module (IWLS 2025)

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 to apply the algorithm after standard cell mapping.

mfs & mfs2 & &mfs - Scalable Dont-Care-Based Logic Optimization and Resynthesis
Re-sub based resynthesis + don't care based resynthesis - Recommend using &mfs which is believed to be the newest and best version in ABC. (See note 5 on Page 12 of Reference.)

mfs3 - Versatile SAT-based Remapping for Standard Cells
Experiment is performed after amap and &nf -R 1000.
Note: mfs & mfs2 are for *LUT-based FPGAs** while mfs3 is for standard cells.
*Gain-based approach deals with delay information.

NPN

Verification Group

Property Checking & SEC (Sequential Equivalence Checking)

pdr - (2011) Efficient Implementation of Property Directed Reachability
Implements the Property Directed Reachability (PDR/IC3) algorithm, optimized for AIGs, for model checking safety properties.

bmc / &bmc / &bmcs / bmc2 / bmc3 - (1999) Symbolic Model Checking without BDDs
Performs Bounded Model Checking (BMC). ABC offers multiple implementations (bmc, &bmc, &bmcs, bmc2, bmc3) with varying features like static/dynamic unrolling, parallel solver support, etc.

ind - (2000) Checking Safety Properties Using Induction and a SAT-Solver
Performs K-step Induction to verify safety properties using a SAT solver.

int - (2003) Interpolation and SAT-based Model Checking
Uses SAT-based interpolation to perform model checking.

dprove - Enhancing and Integrating Model Checking Engines
Performs Sequential Equivalence Checking (SEC) on a sequential miter, combining techniques like abstraction refinement, speculative reduction.

reach / &reachm / &reachn / &reachp / &reachy - (1992) Symbolic model checking: 10^20 states and beyond (Foundational paper on BDD reachability)
Performs BDD-based reachability analysis for model checking. ABC provides multiple implementations (reach, &reachm, &reachn, &reachp, &reachy) using different BDD techniques and optimizations.

tempor - (2009) Enhanced Verification by Temporal Decomposition
Leverages temporal decomposition techniques to improve efficiency in sequential verification.

indcut - (2008) Cut-Based Inductive Invariant Computation
Uses cut-based methods to compute inductive invariants for model checking.

l2s - (2002) Liveness Checking as Safety Checking (Describes the underlying liveness-to-safety transformation)
Performs a liveness-to-safety transformation, converting the check of a liveness property into a safety property check.

kcs - (2012) A liveness checking algorithm that counts
Implements Claessen-Sorensson's k-Liveness algorithm for checking liveness properties.

LEC & Miter Solving & SAT Solving (Combinational Equivalence & SAT)

cec / &cec - (2006) Improvements to combinational equivalence checking (Discusses techniques used in CEC)
Performs Combinational Equivalence Checking (CEC), comparing two combinational circuits or a combinational miter.

&acec - Equivalence Checking using Gr obner Bases
Performs Combinational Equivalence Checking specialized for arithmetic circuits (e.g., multipliers).

iprove - (2006) Improvements to combinational equivalence checking
A newer engine for Combinational Equivalence Checking (CEC), integrating multiple techniques (rewriting, Fraiging, BDDs, SAT).

fraig / &fraig / dfraig / ifraig - (2003) FRAIGs: A Unifying Representation for Logic Synthesis and Verification
Performs combinational SAT sweeping to build Functionally Reduced And-Inverter Graphs (FRAIGs), a core technique for CEC.

sat / &sat - Chaff: Engineering an Efficient SAT Solver (Pioneering work in modern SAT solvers often used as baseline/inspiration)
Performs SAT solving to check the satisfiability of combinational circuit outputs, commonly used for miter solving. Often integrates solvers like MiniSat internally.

dsat / &dsat - An Extensible SAT-solver (MiniSat) (Describes MiniSat, often used by dsat)
Solves combinational miter SAT problems, often using an embedded MiniSat solver.

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

A brief historical view and corresponding introduction of UCB's synthesis and verification tool set:

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](https://www.cs.cmu.edu/~mheule/15816-f21/slides/practice.pdf) from CMU can give you a brief introduction on the DIMACS format and how to use SAT solver as an interface. I was trying to maintain a collection list of SAT solvers, but I have found that [PySAT](https://github.com/pysathq/pysat) seems to contain all the well-known SAT solvers. There's a detailed [introduction](https://people.eecs.berkeley.edu/~alanmi/courses/2007_290N/papers/intro_een_sat03.pdf) 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

Owner

  • Name: hkustgz-zhang-lab
  • Login: hkustgz-zhang-lab
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this repository, please cite it as below."
authors:
- family-names: "Wang"
  given-names: "Jingren"
title: "ABCPaperCheck"
url: "https://github.com/wjrforcyber/ABCPaperCheck"

GitHub Events

Total
  • Watch event: 4
  • Push event: 1
  • Fork event: 2
Last Year
  • Watch event: 4
  • Push event: 1
  • Fork event: 2