ABC
ABC: System for Sequential Logic Synthesis and Formal Verification.
Table of contents
About ABC
ABC is a program from the Berkeley Logic Synthesis and Verification Group at UC Berkeley. It combines logic synthesis (optimisation and technology mapping of combinational and sequential circuits) with formal verification (equivalence checking, model checking) in one interactive, scriptable command-line tool. ABC is used as a back end by many EDA flows, most notably Yosys, which calls it for logic optimisation and mapping to LUTs or standard cells. Having a standalone abc binary is handy for running it directly on BLIF/AIGER files or debugging a flow.
- Upstream project: berkeley-abc/abc
- License: permissive UC Berkeley license (see the upstream repository for the exact terms)
This is an unofficial repackaging. ABC is developed by the Berkeley Logic Synthesis Group. Bugs in ABC itself should be reported upstream; packaging problems belong in this repository’s issue tracker.
How to download
ABC follows a rolling release model. There is one release tag, abc-appimage, and every build overwrites the previous assets. Files are named:
abc-<arch>.AppImage
abc-<arch>.AppImage.sha256
where <arch> is x86_64 or aarch64. There is no version number in the filename. The release notes state the upstream commit the binary was built from.
x86_64
wget https://github.com/MrAbhi19/open-eda-appimage/releases/download/abc-appimage/abc-x86_64.AppImage
chmod +x abc-x86_64.AppImage
echo "quit" | ./abc-x86_64.AppImage
aarch64 (ARM64)
wget https://github.com/MrAbhi19/open-eda-appimage/releases/download/abc-appimage/abc-aarch64.AppImage
chmod +x abc-aarch64.AppImage
echo "quit" | ./abc-aarch64.AppImage
Run ./abc-x86_64.AppImage with no input to start the interactive ABC shell.
Verify the download
Download the .sha256 file from the same release into the same directory, then:
sha256sum -c abc-x86_64.AppImage.sha256
Because the release is rolling, always download the AppImage and its checksum at the same time.
Requirements
- Linux x86_64 or aarch64
- glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+, Fedora 36+, or equivalent)
- FUSE 2 for direct execution (
libfuse2on Debian/Ubuntu,fuse2on Fedora). Without FUSE, run with--appimage-extract-and-run.
How it is built
Everything happens in the build-abc-appimage.yml workflow on GitHub-hosted runners. No step is performed by hand.
Triggers
| Trigger | Details |
|---|---|
| Schedule | Cron 0 6 1,11,21 * *: 06:00 UTC on the 1st, 11th and 21st of each month (roughly every 10 days) |
| Manual | workflow_dispatch |
Each run builds from the latest upstream commit, so the release tracks upstream’s default branch.
Build matrix
Each architecture is built natively (no cross-compilation, no emulation):
| Architecture | Runner |
|---|---|
| x86_64 | ubuntu-22.04 |
| aarch64 | ubuntu-22.04-arm |
fail-fast is disabled, so one architecture failing doesn’t cancel the other. Ubuntu 22.04 is used deliberately: it ships glibc 2.35, which sets the minimum glibc for the resulting AppImage. The job timeout is 45 minutes.
Step by step
1. Install build dependencies
sudo apt-get update
sudo apt-get install -y \
git make gcc g++ \
libreadline-dev zlib1g-dev \
wget curl file desktop-file-utils \
python3-pil libfuse2
python3-pil is used only to generate the placeholder icon. libfuse2 lets the runner execute AppImages (linuxdeploy and the final test).
2. Clone the upstream source
git clone --depth 1 https://github.com/berkeley-abc/abc.git abc-src
The shallow clone takes the latest commit. The full hash is recorded and written into the release notes, so every binary can be traced back to an exact upstream commit.
3. Build
cd abc-src
make -j"$(nproc)"
test -f abc
file abc
ldd abc
ABC uses its own Makefile, so there is no CMake step and no custom flags: the upstream defaults are used, which build with readline and pthreads support (hence libreadline-dev and zlib1g-dev). The resulting abc executable is a single binary; ldd output is logged for reference.
4. Install into an AppDir
mkdir -p AppDir/usr/bin
cp abc-src/abc AppDir/usr/bin/
chmod +x AppDir/usr/bin/abc
5. Create the desktop entry and icon
An abc.desktop file is written to AppDir/usr/share/applications/:
[Desktop Entry]
Name=ABC
Exec=abc
Icon=abc
Type=Application
Categories=Development;Electronics;
Terminal=true
Comment=ABC Logic Synthesis and Formal Verification
AppImages require an icon, so a plain 256×256 RGBA PNG (solid blue, 30,80,180) is generated with Pillow and saved to AppDir/usr/share/icons/hicolor/256x256/apps/abc.png.
6. Package with linuxdeploy
| Tool | Version |
|---|---|
| linuxdeploy | continuous (latest rolling build, per-architecture AppImage) |
| AppImage output | linuxdeploy’s built-in appimage output, bundled with that linuxdeploy build |
| Compression | zstd (OUTPUT_APPIMAGE_COMP=zstd) |
linuxdeploy is downloaded from https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-<arch>.AppImage, where <arch> is x86_64 or aarch64.
export OUTPUT_APPIMAGE_COMP=zstd
./linuxdeploy-<arch>.AppImage \
--appdir AppDir \
--executable AppDir/usr/bin/abc \
--desktop-file AppDir/usr/share/applications/abc.desktop \
--icon-file AppDir/usr/share/icons/hicolor/256x256/apps/abc.png \
--output appimage
linuxdeploy inspects abc, copies its shared libraries (readline, terminal libraries, and so on) into AppDir/usr/lib, then produces a single squashfs-based AppImage. The output is renamed to abc-<arch>.AppImage, and the workflow fails if no AppImage was produced.
7. Verify the AppImage contents
The AppImage is extracted (--appimage-extract) and checked:
- No broken symlinks in
usr/lib(find ... -xtype l). Any broken link fails the build. - No missing shared libraries:
lddon the bundled binary must not reportnot found.
8. Smoke test
chmod +x abc-<arch>.AppImage
echo "quit" | ./abc-<arch>.AppImage 2>&1 | tee smoke.log
grep -qi "UC Berkeley" smoke.log
grep -qi "ABC" smoke.log
The test starts ABC, feeds it quit, and checks that the startup banner appears.
9. Checksum
sha256sum abc-<arch>.AppImage > abc-<arch>.AppImage.sha256
10. Publish
- The AppImage and its
.sha256are uploaded as a workflow artifact, kept for 14 days. - They are attached to the rolling GitHub Release tagged
abc-appimagewithsoftprops/action-gh-release, withoverwrite_filesenabled so each run replaces the previous assets. - The release is not marked as “Latest”, so it doesn’t displace the tool-version releases (such as Yosys) on the repository’s front page.
Build summary
| Item | Value |
|---|---|
| Source | Latest commit of berkeley-abc/abc (shallow clone) |
| Build system | Upstream make (readline + pthreads) |
| Compiler | gcc / g++ |
| Runners | ubuntu-22.04, ubuntu-22.04-arm |
| Bundler | linuxdeploy continuous |
| AppImage compression | zstd |
| Extra checks | Broken-symlink scan, ldd missing-library check |
| Minimum glibc | 2.35 |
| Schedule | 1st, 11th, 21st of each month, 06:00 UTC |
| Release tag | abc-appimage (rolling) |
| Artifacts | abc-<arch>.AppImage + .sha256 |