Compare commits

...
This repository has been archived on 2026-01-16. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.

1 commit

Author SHA1 Message Date
Jerry James
7f3d1db6ef Superseded by yosyshq-abc 2023-08-09 14:25:07 -06:00
15 changed files with 1 additions and 793 deletions

2
.gitignore vendored
View file

@ -1,2 +0,0 @@
/*.zip
/abc-*.tar.gz

View file

@ -1,14 +0,0 @@
# abc
[ABC](https://people.eecs.berkeley.edu/~alanmi/abc/abc.htm) is a growing
software system for synthesis and verification of binary sequential logic
circuits appearing in synchronous hardware designs. ABC combines scalable
logic optimization based on And-Inverter Graphs (AIGs), optimal-delay
DAG-based technology mapping for look-up tables and standard cells, and
innovative algorithms for sequential synthesis and verification.
ABC provides an experimental implementation of these algorithms and a
programming environment for building similar applications. Future development will
focus on improving the algorithms and making most of the packages stand-alone.
This will allow the user to customize ABC for their needs as if it were a toolbox
rather than a complete tool.

View file

@ -1,26 +0,0 @@
--- CMakeLists.txt.orig 2019-12-17 15:57:46.000000000 -0700
+++ CMakeLists.txt 2019-12-18 09:13:25.779458679 -0700
@@ -53,7 +53,7 @@ execute_process(
make
${ABC_READLINE_FLAGS}
${ABC_USE_NAMESPACE_FLAGS}
- ARCHFLAGS_EXE=${CMAKE_CURRENT_BINARY_DIR}/abc_arch_flags_program.exe
+ ABC_USE_STDINT_H=1
ABC_MAKE_NO_DEPS=1
CC=${CMAKE_C_COMPILER}
CXX=${CMAKE_CXX_COMPILER}
@@ -94,6 +94,8 @@ list(REMOVE_ITEM ABC_SRC ${ABC_MAIN_SRC}
add_library(libabc EXCLUDE_FROM_ALL ${ABC_SRC})
abc_properties(libabc PUBLIC)
set_property(TARGET libabc PROPERTY OUTPUT_NAME abc)
+set_property(TARGET libabc PROPERTY VERSION "0.0.0")
+set_property(TARGET libabc PROPERTY SOVERSION 0)
add_executable(abc ${ABC_MAIN_SRC})
target_link_libraries(abc PRIVATE libabc)
@@ -103,3 +105,5 @@ add_library(libabc-pic EXCLUDE_FROM_ALL
abc_properties(libabc-pic PUBLIC)
set_property(TARGET libabc-pic PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET libabc-pic PROPERTY OUTPUT_NAME abc-pic)
+set_property(TARGET libabc-pic PROPERTY VERSION "0.0.0")
+set_property(TARGET libabc-pic PROPERTY SOVERSION 0)

View file

@ -1,124 +0,0 @@
--- Makefile.orig 2019-05-30 20:27:31.000000000 -0600
+++ Makefile 2019-06-04 09:40:32.212192338 -0600
@@ -20,7 +20,7 @@ MODULES := \
src/map/mapper src/map/mio src/map/super src/map/if \
src/map/amap src/map/cov src/map/scl src/map/mpm \
src/misc/extra src/misc/mvc src/misc/st src/misc/util src/misc/nm \
- src/misc/vec src/misc/hash src/misc/tim src/misc/bzlib src/misc/zlib \
+ src/misc/vec src/misc/hash src/misc/tim \
src/misc/mem src/misc/bar src/misc/bbl src/misc/parse \
src/opt/cut src/opt/fxu src/opt/fxch src/opt/rwr src/opt/mfs src/opt/sim \
src/opt/ret src/opt/fret src/opt/res src/opt/lpk src/opt/nwk src/opt/rwt \
@@ -42,6 +42,7 @@ $(ARCHFLAGS_EXE) : arch_flags.c
$(CC) arch_flags.c -o $(ARCHFLAGS_EXE)
INCLUDES += -I$(ABCSRC)/src
+LIBS=-lbz2 -lz
# Use C99 stdint.h header for platform-dependent types
ifdef ABC_USE_STDINT_H
--- src/base/io/ioReadAiger.c.orig 2019-05-30 20:27:31.000000000 -0600
+++ src/base/io/ioReadAiger.c 2019-06-04 09:40:32.231192003 -0600
@@ -26,8 +26,8 @@
#include <string.h>
#include <assert.h>
-#include "misc/bzlib/bzlib.h"
-#include "misc/zlib/zlib.h"
+#include <bzlib.h>
+#include <zlib.h>
#include "ioAbc.h"
ABC_NAMESPACE_IMPL_START
--- src/base/io/ioReadBlifMv.c.orig 2019-05-30 20:27:31.000000000 -0600
+++ src/base/io/ioReadBlifMv.c 2019-06-04 09:40:32.232191985 -0600
@@ -18,8 +18,8 @@
***********************************************************************/
-#include "misc/zlib/zlib.h"
-#include "misc/bzlib/bzlib.h"
+#include <zlib.h>
+#include <bzlib.h>
#include "base/abc/abc.h"
#include "misc/vec/vecPtr.h"
#include "ioAbc.h"
--- src/base/io/ioWriteAiger.c.orig 2019-05-30 20:27:31.000000000 -0600
+++ src/base/io/ioWriteAiger.c 2019-06-04 09:40:32.233191967 -0600
@@ -26,8 +26,8 @@
#include <string.h>
#include <assert.h>
-#include "misc/bzlib/bzlib.h"
-#include "misc/zlib/zlib.h"
+#include <bzlib.h>
+#include <zlib.h>
#include "ioAbc.h"
--- src/sat/bsat2/MainSat.cpp.orig 2019-05-30 20:27:31.000000000 -0600
+++ src/sat/bsat2/MainSat.cpp 2019-06-04 09:40:32.234191950 -0600
@@ -21,7 +21,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR
#include <errno.h>
#include <signal.h>
-#include "misc/zlib/zlib.h"
+#include <zlib.h>
#include "System.h"
#include "ParseUtils.h"
--- src/sat/bsat2/MainSimp.cpp.orig 2019-05-30 20:27:31.000000000 -0600
+++ src/sat/bsat2/MainSimp.cpp 2019-06-04 09:40:32.234191950 -0600
@@ -21,7 +21,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR
#include <errno.h>
#include <signal.h>
-#include "misc/zlib/zlib.h"
+#include <zlib.h>
#ifndef _WIN32
#include <sys/resource.h>
--- src/sat/bsat2/ParseUtils.h.orig 2019-05-30 20:27:31.000000000 -0600
+++ src/sat/bsat2/ParseUtils.h 2019-06-04 09:40:32.235191932 -0600
@@ -24,7 +24,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR
#include <stdlib.h>
#include <stdio.h>
-#include "misc/zlib/zlib.h"
+#include <zlib.h>
namespace Minisat {
--- src/sat/cnf/cnfMan.c.orig 2019-05-30 20:27:31.000000000 -0600
+++ src/sat/cnf/cnfMan.c 2019-06-04 09:40:32.235191932 -0600
@@ -21,7 +21,7 @@
#include "cnf.h"
#include "sat/bsat/satSolver.h"
#include "sat/bsat/satSolver2.h"
-#include "misc/zlib/zlib.h"
+#include <zlib.h>
ABC_NAMESPACE_IMPL_START
--- src/sat/glucose/ParseUtils.h.orig 2019-05-30 20:27:31.000000000 -0600
+++ src/sat/glucose/ParseUtils.h 2019-06-04 09:40:32.236191914 -0600
@@ -25,7 +25,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR
#include <stdio.h>
#include <math.h>
-#include "misc/zlib/zlib.h"
+#include <zlib.h>
ABC_NAMESPACE_CXX_HEADER_START
--- src/sat/glucose2/ParseUtils.h.orig
+++ src/sat/glucose2/ParseUtils.h
@@ -25,7 +25,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR
#include <stdio.h>
#include <math.h>
-#include "misc/zlib/zlib.h"
+#include <zlib.h>
ABC_NAMESPACE_CXX_HEADER_START

View file

@ -1,120 +0,0 @@
--- src/base/abci/abc.c.orig 2023-07-08 11:18:18.000000000 -0600
+++ src/base/abci/abc.c 2023-07-14 11:14:10.263628991 -0600
@@ -23905,7 +23905,7 @@ int Abc_CommandSymFun( Abc_Frame_t * pAb
printf( "%s\n", pTruth );
// read the truth table to be the current network in ABC
pCommand = ABC_CALLOC( char, strlen(pTruth) + 100 );
- sprintf( pCommand, "read_truth %s", pTruth );
+ snprintf( pCommand, strlen(pTruth) + 100, "read_truth %s", pTruth );
Cmd_CommandExecute( pAbc, pCommand );
ABC_FREE( pCommand );
ABC_FREE( pTruth );
@@ -45189,7 +45189,7 @@ int Abc_CommandAbc9Cone( Abc_Frame_t * p
Gia_ManForEachPo( pAbc->pGia, pObj, i )
{
Gia_Man_t * pOne = Gia_ManDupDfsCone( pAbc->pGia, pObj );
- sprintf( Buffer, "%s_%0*d.aig", Extra_FileNameGeneric(pAbc->pGia->pSpec), nDigits, i );
+ snprintf( Buffer, 1000, "%s_%0*d.aig", Extra_FileNameGeneric(pAbc->pGia->pSpec), nDigits, i );
Gia_AigerWrite( pOne, Buffer, 0, 0, 0 );
Gia_ManStop( pOne );
}
--- src/base/io/ioReadBlifMv.c.orig 2023-07-14 11:12:54.591767465 -0600
+++ src/base/io/ioReadBlifMv.c 2023-07-14 11:13:13.259486615 -0600
@@ -1627,7 +1627,7 @@ static int Io_MvParseLineMv( Io_MvMod_t
***********************************************************************/
static int Io_MvWriteValues( Abc_Obj_t * pNode, Vec_Str_t * vFunc )
{
- char Buffer[10];
+ char Buffer[12];
Abc_Obj_t * pFanin;
int i;
// add the fanin number of values
--- src/base/wlc/wlcNtk.c.orig 2023-07-08 11:18:18.000000000 -0600
+++ src/base/wlc/wlcNtk.c 2023-07-14 10:51:19.721294579 -0600
@@ -1300,7 +1300,7 @@ void Wlc_NtkShortNames( Wlc_Ntk_t * p )
{
if ( Wlc_ObjIsPo(pObj) )
continue;
- sprintf( pBuffer, "%s%0*d", "fi", nDigits, i - Wlc_NtkPoNum(p) );
+ snprintf( pBuffer, 1000, "%s%0*d", "fi", nDigits, i - Wlc_NtkPoNum(p) );
NameId = Abc_NamStrFindOrAdd( p->pManName, pBuffer, &fFound );
Wlc_ObjSetNameId( p, Wlc_ObjId(p, pObj), NameId );
}
@@ -1308,21 +1308,21 @@ void Wlc_NtkShortNames( Wlc_Ntk_t * p )
{
if ( Wlc_ObjIsPi(pObj) )
continue;
- sprintf( pBuffer, "%s%0*d", "fo", nDigits, i - Wlc_NtkPiNum(p) );
+ snprintf( pBuffer, 1000, "%s%0*d", "fo", nDigits, i - Wlc_NtkPiNum(p) );
NameId = Abc_NamStrFindOrAdd( p->pManName, pBuffer, &fFound );
Wlc_ObjSetNameId( p, Wlc_ObjId(p, pObj), NameId );
}
nDigits = Abc_Base10Log( Wlc_NtkPoNum(p) );
Wlc_NtkForEachPo( p, pObj, i )
{
- sprintf( pBuffer, "%s%0*d", "po", nDigits, i );
+ snprintf( pBuffer, 1000, "%s%0*d", "po", nDigits, i );
NameId = Abc_NamStrFindOrAdd( p->pManName, pBuffer, &fFound );
Wlc_ObjSetNameId( p, Wlc_ObjId(p, pObj), NameId );
}
nDigits = Abc_Base10Log( Wlc_NtkPiNum(p) );
Wlc_NtkForEachPi( p, pObj, i )
{
- sprintf( pBuffer, "%s%0*d", "pi", nDigits, i );
+ snprintf( pBuffer, 1000, "%s%0*d", "pi", nDigits, i );
NameId = Abc_NamStrFindOrAdd( p->pManName, pBuffer, &fFound );
Wlc_ObjSetNameId( p, Wlc_ObjId(p, pObj), NameId );
}
@@ -1331,7 +1331,7 @@ void Wlc_NtkShortNames( Wlc_Ntk_t * p )
{
if ( Wlc_ObjIsCi(pObj) || Wlc_ObjIsCo(pObj) )
continue;
- sprintf( pBuffer, "%s%0*d", "n", nDigits, i );
+ snprintf( pBuffer, 1000, "%s%0*d", "n", nDigits, i );
NameId = Abc_NamStrFindOrAdd( p->pManName, pBuffer, &fFound );
Wlc_ObjSetNameId( p, Wlc_ObjId(p, pObj), NameId );
}
--- src/map/mio/mioUtils.c.orig 2023-07-08 11:18:18.000000000 -0600
+++ src/map/mio/mioUtils.c 2023-07-14 10:47:26.983819441 -0600
@@ -1716,7 +1716,7 @@ void Mio_LibraryShortNames( Mio_Library_
Mio_LibraryForEachGate( pLib, pGate )
{
ABC_FREE( pGate->pName );
- sprintf( Buffer, "g%0*d", nDigits, ++c );
+ snprintf( Buffer, 10000, "g%0*d", nDigits, ++c );
pGate->pName = Abc_UtilStrsav( Buffer );
// update formula
Mio_LibraryShortFormula( pGate, pGate->pForm, Buffer );
--- src/map/scl/sclLibUtil.c.orig 2023-07-08 11:18:18.000000000 -0600
+++ src/map/scl/sclLibUtil.c 2023-07-14 10:47:26.983819441 -0600
@@ -205,7 +205,7 @@ void Abc_SclShortNames( SC_Lib * p )
SC_RingForEachCell( pClass, pCell, k )
{
ABC_FREE( pCell->pName );
- sprintf( Buffer, "g%0*d_%0*d", nDigits, i, nDigits2, k );
+ snprintf( Buffer, 10000, "g%0*d_%0*d", nDigits, i, nDigits2, k );
pCell->pName = Abc_UtilStrsav( Buffer );
// formula
SC_CellForEachPinOut( pCell, pPin, n )
--- src/opt/dau/dauMerge.c.orig 2023-07-08 11:18:18.000000000 -0600
+++ src/opt/dau/dauMerge.c 2023-07-14 10:47:26.983819441 -0600
@@ -715,7 +715,7 @@ Dau_DsdMergeStorePrintDefs( pS );
// create new function
// assert( nVarsTotal <= 6 );
- sprintf( pS->pOutput, "(%s%s)", pDsd0, pDsd1 );
+ snprintf( pS->pOutput, DAU_MAX_STR, "(%s%s)", pDsd0, pDsd1 );
pTruth = Dau_DsdToTruth( pS->pOutput, nVarsTotal );
Status = Dau_DsdDecompose( pTruth, nVarsTotal, 0, 1, pS->pOutput );
//printf( "%d ", Status );
--- src/proof/fra/fraCore.c.orig 2023-07-08 11:18:18.000000000 -0600
+++ src/proof/fra/fraCore.c 2023-07-14 10:47:26.983819441 -0600
@@ -163,7 +163,7 @@ static inline void Fra_FraigNodeSpeculat
// create manager with the logic for these two nodes
pTemp = Aig_ManExtractMiter( p->pManFraig, pObjFraig, pObjReprFraig );
// dump the logic into a file
- sprintf( FileName, "aig\\%03d.blif", ++Counter );
+ snprintf( FileName, 20U, "aig\\%03d.blif", ++Counter );
Aig_ManDumpBlif( pTemp, FileName, NULL, NULL );
printf( "Speculation cone with %d nodes was written into file \"%s\".\n", Aig_ManNodeNum(pTemp), FileName );
// clean up

View file

@ -1,11 +0,0 @@
--- src/aig/gia/gia.h.orig 2023-07-14 10:53:06.361679474 -0600
+++ src/aig/gia/gia.h 2023-07-14 10:54:12.069684316 -0600
@@ -1142,7 +1142,7 @@ static inline int Gia_ObjCellId(
#define Gia_ManForEachLutReverse( p, i ) \
for ( i = Gia_ManObjNum(p) - 1; i > 0; i-- ) if ( !Gia_ObjIsLut(p, i) ) {} else
#define Gia_LutForEachFanin( p, i, iFan, k ) \
- for ( k = 0; k < Gia_ObjLutSize(p,i) && ((iFan = Gia_ObjLutFanins(p,i)[k]),1); k++ )
+ for ( k = 0; k < Gia_ObjLutSize(p,i) && ((iFan = Gia_ObjLutFanins(p,i)[k]),1); k++ ) if (iFan >= 0)
#define Gia_LutForEachFaninIndex( p, i, iFan, k, Index ) \
for ( k = 0; k < Gia_ObjLutSize(p,i) && (Index = Vec_IntEntry(p->vMapping, i)+1+k) && ((iFan = Vec_IntEntry(p->vMapping, Index)),1); k++ )
#define Gia_LutForEachFaninObj( p, i, pFanin, k ) \

View file

@ -1,20 +0,0 @@
--- src/sat/glucose/Glucose.cpp.orig 2019-05-30 20:27:31.000000000 -0600
+++ src/sat/glucose/Glucose.cpp 2019-06-04 09:41:02.469658200 -0600
@@ -33,6 +33,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR
#include "sat/glucose/Solver.h"
#include "sat/glucose/Constants.h"
#include "sat/glucose/System.h"
+#include "misc/util/abc_global.h"
ABC_NAMESPACE_IMPL_START
--- src/sat/glucose2/Glucose2.cpp.orig
+++ src/sat/glucose2/Glucose2.cpp
@@ -34,6 +34,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR
#include "sat/glucose2/Solver.h"
#include "sat/glucose2/CGlucose.h"
+#include "misc/util/abc_global.h"
ABC_NAMESPACE_IMPL_START

View file

@ -1,11 +0,0 @@
--- src/base/exor/exorUtil.c.orig 2022-10-19 06:05:56.000000000 -0600
+++ src/base/exor/exorUtil.c 2022-11-16 11:40:26.252322689 -0700
@@ -189,7 +189,7 @@ int WriteResultIntoFile( char * pFileNam
pFile = fopen( pFileName, "w" );
if ( pFile == NULL )
{
- fprintf( pFile, "\n\nCannot open the output file\n" );
+ fprintf( stderr, "\n\nCannot open the output file\n" );
return 1;
}

View file

@ -1,22 +0,0 @@
--- Makefile.orig 2019-06-04 09:40:32.212192338 -0600
+++ Makefile 2019-06-04 09:40:51.291855524 -0600
@@ -55,7 +55,7 @@ ARCHFLAGS := $(ARCHFLAGS)
OPTFLAGS ?= -g -O
-CFLAGS += -Wall -Wno-unused-function -Wno-write-strings -Wno-sign-compare $(ARCHFLAGS)
+CFLAGS += -Wno-unused-function $(OPTFLAGS) $(ARCHFLAGS) -Isrc
ifneq ($(findstring arm,$(shell uname -m)),)
CFLAGS += -DABC_MEMALIGN=4
endif
@@ -221,7 +221,9 @@ lib$(PROG).a: $(LIBOBJ)
lib$(PROG).so: $(LIBOBJ)
@echo "$(MSG_PREFIX)\`\` Linking:" $(notdir $@)
- $(VERBOSE)$(CXX) -shared -o $@ $^ $(LIBS)
+ $(VERBOSE)$(CXX) -shared -Wl,-h,lib$(PROG).so.0 -o lib$(PROG).so.0.0.0 $^ $(LIBS)
+ $(VERBOSE)ln -s lib$(PROG).so.0.0.0 lib$(PROG).so.0
+ $(VERBOSE)ln -s lib$(PROG).so.0 $@
docs:
@echo "$(MSG_PREFIX)\`\` Building documentation." $(notdir $@)

View file

@ -1,11 +0,0 @@
--- src/base/io/ioWritePla.c.orig 2022-10-19 06:05:56.000000000 -0600
+++ src/base/io/ioWritePla.c 2022-11-21 11:18:23.452898568 -0700
@@ -174,7 +174,7 @@ int Io_WritePla( Abc_Ntk_t * pNtk, char
FILE * pFile;
assert( Abc_NtkIsSopNetlist(pNtk) );
- assert( Abc_NtkLevel(pNtk) == 1 );
+ assert( Abc_NtkLevel(pNtk) <= 1 );
pFile = fopen( pFileName, "w" );
if ( pFile == NULL )

View file

@ -1,22 +0,0 @@
From 1de4eafb0da0639199bd97f2fa98471e76327a6b Mon Sep 17 00:00:00 2001
From: Miodrag Milanovic <mmicko@gmail.com>
Date: Tue, 6 Jun 2023 13:59:30 +0200
Subject: [PATCH] fix segfault
---
src/base/io/ioWriteVerilog.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git src/base/io/ioWriteVerilog.c src/base/io/ioWriteVerilog.c
index 48b15b559..3d9f8fa38 100644
--- src/base/io/ioWriteVerilog.c
+++ src/base/io/ioWriteVerilog.c
@@ -561,7 +561,7 @@ void Io_WriteVerilogObjects( FILE * pFile, Abc_Ntk_t * pNtk, int fOnlyAnds )
vLevels = Vec_VecAlloc( 10 );
Abc_NtkForEachNode( pNtk, pObj, i )
{
- if ( Abc_ObjFaninNum(pObj) == 1 || Abc_ObjIsCo(Abc_ObjFanout0(Abc_ObjFanout0(pObj))) )
+ if ( Abc_ObjFaninNum(pObj) == 1 && Abc_ObjIsCo(Abc_ObjFanout0(Abc_ObjFanout0(pObj))) )
{
int iLit = Abc_Var2Lit( Abc_ObjId( Abc_ObjFanin0(Abc_ObjFanin0(pObj)) ), Abc_NodeIsInv(pObj) );
int iObj = Vec_IntEntry( vMap, iLit );

102
abc.1
View file

@ -1,102 +0,0 @@
.TH "ABC" "1" "@VERSION@" "ABC" "User Commands"
.SH "NAME"
abc \- sequential logic synthesis and formal verification
.SH "SYNOPSIS"
.B abc
[\fIOPTIONS\fP] \fIFILE\fP
.SH "DESCRIPTION"
.PP
ABC is a growing software system for synthesis and verification of binary
sequential logic circuits appearing in synchronous hardware designs. ABC
combines scalable logic optimization based on And-Inverter Graphs (AIGs),
optimal-delay DAG-based technology mapping for look-up tables and standard
cells, and innovative algorithms for sequential synthesis and verification.
.PP
ABC provides an experimental implementation of these algorithms and a
programming environment for building similar applications. Future development
will focus on improving the algorithms and making most of the packages
stand-alone. This will allow the user to customize ABC for their needs as if
it were a toolbox rather than a complete tool.
.SH "OPTIONS"
.TP
\fB\-c\fP \fICMD\fP
Execute commands \fICMD\fP.
.TP
\fB\-q\fP \fICMD\fP
Execute commands \fICMD\fP quietly.
.TP
\fB\-C\fP \fICMD\fP
Execute commands \fICMD\fP, then continue in interactive mode.
.TP
\fB\-Q\fP \fICMD\fP
Execute commands \fICMD\fP quietly, then continue in interactive mode.
.TP
\fB\-F\fP \fISCRIPT\fP
Execute commands from script file \fISCRIPT\fP and echo commands.
.TP
\fB\-f\fP \fISCRIPT\fP
Execute commands from script file \fISCRIPT\fP.
.TP
\fB\-h\fP
Print command usage.
.TP
\fB\-o\fP \fIFILE\fP
Store the result in \fIFILE\fP.
.TP
\fB\-s\fP
Do not read any initialization file.
.TP
\fB\-t\fP \fITYPE\fP
Specify the input type, one of \fIblif_mv\fP, \fIblif_mvs\fP, \fIblif\fP, or
\fInone\fP. The default is \fIblif_mv\fP.
.TP
\fB\-T\fP \fITYPE\fP
Specify the output type, one of \fIblif_mv\fP, \fIblif_mvs\fP, \fIblif\fP, or
\fInone\fP. The default is \fIblif_mv\fP.
.TP
\fB\-x\fP
Equivalent to \fI-t none -T none\fP.
.TP
\fB\-b\fP
Run in bridge mode.
.SH "INTRODUCTION"
.PP
Data structures and algorithms at the heart of a software system determine its
capabilities in processing data and its efficiency as a programming
environment for building new applications. Extensive experience of developing
and using SIS, VIS, and MVSIS, makes it clear that these systems do not
provide a flexible programming environment to implement recent innovations,
such as integration of technology mapping and retiming. Specifically, the SIS
environment is outdated and rather inefficient when handling large circuits.
VIS, designed as a formal verification tool for multi-valued specifications,
does not provide enough flexibility for binary synthesis. MVSIS was developed
and extensively used by us in the recent years for implementing new synthesis
algorithms for both multi-valued and binary networks. Finally, we became
convinced that (a) the basic data structures and algorithms of MVSIS can be
made considerably simpler and easier to use by assuming binary networks, and
(b) a central place in the new system should be given to a new data structure,
AIGs (multi-level logic networks composed of two-input ANDs and inverters),
which promises improvements in quality and runtime of synthesis and
verification.
.PP
This understanding motivates us to redevelop the core packages of MVSIS
resulting in a new programming environment named ABC. As the name suggests,
the primary goal is to keep data structures simple and flexible for a wide
range of applications. The “philosophy of ABC” has several basic premises.
One of them is allowing for a variety of functional representations, such as
BDDs and SOPs, to solve specialized tasks, while defaulting to AIGs for the
mainstream network manipulation. Representing logic using AIGs leads to a
remarkable uniformity in computation and efficient interfacing with CNF-based
SAT solvers for handing Boolean reasoning problems. Another fundamental
premise of ABC is the synergy between synthesis and verification using
efficient SAT-based Boolean reasoning on the AIG for combinational and
sequential equivalence checking.
.PP
The goal of the ABC project is to provide a public-domain implementation of
the state-of-the-art combinational and sequential synthesis algorithms and, at
the same time, create an open-source environment, in which such applications
can be developed and compared. The current version of ABC can
optimize/map/retime industrial gate-level designs with 100K gates and 10K
sequential elements for optimal delay and heuristically minimized area in
about one minute of CPU time on a modern computer. The runtime of the
combinational synthesis, mapping, and verification is typically faster.

307
abc.spec
View file

@ -1,307 +0,0 @@
# Upstream doesn't make releases. We have to check the code out of git.
%global gittag e61194bbed8c2ba8aac1f2720ebe513a571ee664
%global shorttag %(cut -b -7 <<< %{gittag})
%global gitdate 20230708
# WARNING: When updating to a newer snapshot, because upstream doesn't do
# shared library versioning, run abipkgdiff (from libabigail) against the
# old and new binary and debuginfo packages to detect abi changes that would
# require bumping the shared library version, e.g.,
# abipkgdiff --d1 abc-libs-debuginfo-<old>.rpm \
# --d1 abc-debuginfo-<old>.rpm \
# --d2 abc-libs-debuginfo-<new>.rpm \
# --d2 abc-debuginfo-<new>.rpm \
# --devel1 abc-devel-<old>.rpm \
# --devel2 abc-devel-<new>.rpm \
# abc-libs-<old>.rpm abc-libs-<new>.rpm
# If the shared library version is bumped, remember to rebuild dependent
# packages, finding them using e.g.
# repoquery --whatrequires abc-libs
# This should be done for each branch in which abc-libs will be updated.
Name: abc
Version: 1.01
Release: 40.git%{gitdate}%{?dist}
Summary: Sequential logic synthesis and formal verification
# The ABC code itself is MIT-Modern-Variant.
# The bundled CUDD code is BSD-3-Clause.
# The bundled glucose code is MIT.
# The bundled minisat code is MIT.
# The bundled satoko code is BSD-2-Clause
License: MIT-Modern-Variant AND MIT AND BSD-2-Clause AND BSD-3-Clause
URL: https://people.eecs.berkeley.edu/~alanmi/abc/abc.htm
Source0: https://github.com/berkeley-abc/abc/archive/%{gittag}/%{name}-%{shorttag}.tar.gz
# Man page created by Jerry James using upstream text; hence, it is covered by
# the same copyright and license as the code.
Source1: %{name}.1
# Fedora-specific patch: do not use the bundled libraries
Patch0: %{name}-bundlelib.patch
# Fedora-specific patch: build a shared library instead of a static library
Patch1: %{name}-sharedlib.patch
# Fix a minor header issue
Patch2: %{name}-header.patch
# Set an soname on the library
Patch3: %{name}-build.patch
# Fix sprintf calls that can overflow their buffers
Patch4: %{name}-format.patch
# Fix an out-of-bounds array access in the gia code
# https://github.com/berkeley-abc/abc/pull/89
Patch5: %{name}-gia.patch
# Do not pass NULL to fprintf
# https://github.com/berkeley-abc/abc/pull/194
Patch6: %{name}-null-fprintf.patch
# Weaken an overzealous assert
# https://bitbucket.org/alanmi/abc/issue/27/assertion-failure-in-write_pla-command
Patch7: %{name}-weaken-assert.patch
# yosys aiger segfault (yosyshq downstream commit):
Patch8: abc-yosys-segfault.patch
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: make
BuildRequires: pkgconfig(bzip2)
BuildRequires: pkgconfig(readline)
BuildRequires: pkgconfig(zlib)
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%description
ABC is a growing software system for synthesis and verification of
binary sequential logic circuits appearing in synchronous hardware
designs. ABC combines scalable logic optimization based on And-Inverter
Graphs (AIGs), optimal-delay DAG-based technology mapping for look-up
tables and standard cells, and innovative algorithms for sequential
synthesis and verification.
ABC provides an experimental implementation of these algorithms and a
programming environment for building similar applications. Future
development will focus on improving the algorithms and making most of
the packages stand-alone. This will allow the user to customize ABC for
their needs as if it were a toolbox rather than a complete tool.
%package libs
Summary: Library for sequential synthesis and verification
# ABC includes a bundled and modified version of CUDD 2.4.2. The CUDD package
# is no longer available from Fedora since the disappearance of the upstream
# web site (and the last released version was 3.0.0).
Provides: bundled(cudd) = 2.4.2
# ABC includes a bundled and modified version of glucose (which version?)
Provides: bundled(glucose)
# ABC includes a bundled and modified version of minisat (which version?).
Provides: bundled(minisat2)
# ABC includes a bundled and modified version of satoko (which version?).
Provides: bundled(satoko)
%description libs
This package contains the core functionality of ABC as a shared library.
%package devel
Summary: Headers and libraries for developing with ABC
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%description devel
Headers and libraries for developing applications that use ABC.
%prep
%autosetup -p0 -n %{name}-%{gittag}
# Do not use the bundled bzip2 or zlib libraries
rm -fr lib src/misc/{bzlib,zlib}
# Set the version number in the man page
sed 's/@VERSION@/%{version} (%{gitdate})/' %{SOURCE1} > %{name}.1
touch -r %{SOURCE1} %{name}.1
# Do not override Fedora optimization flags
sed -i 's/ -O//' Makefile
%build
export CFLAGS='%{build_cflags} -DNDEBUG'
export CXXFLAGS='%{build_cxxflags} -DNDEBUG'
%ifarch s390x
CFLAGS="$CFLAGS -DEPD_BIG_ENDIAN"
CXXFLAGS="$CXXFLAGS -DEPD_BIG_ENDIAN"
%endif
export ABC_MAKE_VERBOSE=1
export ABC_USE_STDINT_H=1
%cmake -DCMAKE_SKIP_RPATH:BOOL=YES -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES
%cmake_build
%install
# %%cmake_install does not install anything. Install by hand.
# Install the binary
cd %{_vpath_builddir}
mkdir -p %{buildroot}%{_bindir}
install -p -m 0755 %{name} %{buildroot}%{_bindir}
# Install the library
mkdir -p %{buildroot}%{_libdir}
cp -pd lib%{name}.so* %{buildroot}%{_libdir}
cd -
# Install the header files
cd src
mkdir -p %{buildroot}%{_includedir}/%{name}
tar -cf - $(find -O3 . -name \*.h) | \
(cd %{buildroot}%{_includedir}/%{name}; tar -xf -)
cd -
# Install the man page
mkdir -p %{buildroot}%{_mandir}/man1
install -p -m 0644 %{name}.1 %{buildroot}%{_mandir}/man1
%files
%doc README.md readmeaig
%{_bindir}/%{name}
%{_mandir}/man1/%{name}*
%files libs
%license copyright.txt
%{_libdir}/lib%{name}.so.0*
%files devel
%{_includedir}/%{name}/
%{_libdir}/lib%{name}.so
%changelog
* Sun Jul 30 2023 Gabriel Somlo <gsomlo@gmail.com> - 1.01-40.git20230708
- Apply patch from yosyshq to fix yosys FTBFS (#2226521)
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-39.git20230708
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jul 14 2023 Jerry James <loganjerry@gmail.com> - 1.01-38.git20230708
- Update to latest git snapshot
- Drop upstreamed patches: overflow, use-after-free
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-37.git20221229
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Jan 17 2023 Jerry James <loganjerry@gmail.com> - 1.01-36.git20221229
- Update to latest git snapshot
- Add -use-after-free, -null-fprintf, and -weaken-assert patches
- Minor spec file cleanups
* Mon Aug 1 2022 Jerry James <loganjerry@gmail.com> - 1.01-35.git20220731
- Update to latest git snapshot
- Convert License field to SPDX
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-34.git20211229
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-33.git20211229
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Jan 17 2022 Jerry James <loganjerry@gmail.com> - 1.01-32.git20211229
- Update to latest git snapshot
- Drop upstreamed -strict-aliasing patch
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-31.git20210328
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Mar 31 2021 Jerry James <loganjerry@gmail.com> - 1.01-30.git20210328
- Update to latest git snapshot
- Add patches: -strict-aliasing, -overflow
- Avoid bogus rpaths
* Mon Jan 25 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-29.git20201126
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Thu Nov 26 2020 Gabriel Somlo <gsomlo@gmail.com> - 1.01-28.git20201126
- Update to latest git snapshot
* Mon Jul 27 2020 Jerry James <loganjerry@gmail.com> - 1.01-27.git20200720
- Update to latest git snapshot
- Add -gia patch to fix crash
- Adapt to cmake changes in Rawhide
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-27.git20200127
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jan 31 2020 Gabriel Somlo <gsomlo@gmail.com> - 1.01-26.git20200127
- Update to latest git snapshot
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-25.git20191217
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Dec 18 2019 Jerry James <loganjerry@gmail.com> - 1.01-24.git20191217
- Update to latest git snapshot
- Add -giaDeep patch to fix build failure
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-23.git20190608
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Wed Jun 12 2019 Jerry James <loganjerry@gmail.com> - 1.01-22.git20190608
- Update to latest git snapshot
- Add -build and -format patches
- Build with cmake
- Enable CUDD support
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.01-21.git20181121
- Rebuild for readline 8.0
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-20.git20181121
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Nov 26 2018 Jerry James <loganjerry@gmail.com> - 1.01-19.git20181121
- Update to latest git snapshot
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-18.git20180708
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jul 10 2018 Jerry James <loganjerry@gmail.com> - 1.01-17.git20180708
- Update to latest git snapshot
* Sat Mar 3 2018 Jerry James <loganjerry@gmail.com> - 1.01-16.hg20180228
- Update to latest mercurial snapshot
- BR gcc-c++ instead of gcc
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-15.hg20180129
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Fri Feb 2 2018 Jerry James <loganjerry@gmail.com> - 1.01-14.hg20180129
- Update to latest mercurial snapshot
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-13.hg20160905
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-12.hg20160905
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-11.hg20160905
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Jan 12 2017 Igor Gnatenko <ignatenko@redhat.com> - 1.01-10.hg20160905
- Rebuild for readline 7.x
* Sat Sep 10 2016 Eric Smith <brouhaha@fedoraproject.org> - 1.01-9.hg20160905
- Update to latest mercurial snapshot
* Fri Feb 5 2016 Jerry James <loganjerry@gmail.com> - 1.01-8.hg20160203
- Update to latest mercurial snapshot
- Drop the python2 subpackage; upstream moved support to a separate project
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-7.hg20150306
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Tue Jun 16 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.01-6.hg20150306
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 1.01-5.hg20150306
- Rebuilt for GCC 5 C++11 ABI change
* Sat Mar 7 2015 Jerry James <loganjerry@gmail.com> - 1.01-4.hg20150306
- Update to latest mercurial snapshot
* Thu Jan 1 2015 Jerry James <loganjerry@gmail.com> - 1.01-3.hg20150101
- Update to latest mercurial snapshot
- Fix installation of header files
* Wed Dec 3 2014 Jerry James <loganjerry@gmail.com> - 1.01-2.hg20141130
- Drop unnecessary jquery Provides
- Fix file permissions
* Mon Dec 1 2014 Jerry James <loganjerry@gmail.com> - 1.01-1.hg20141130
- Initial RPM

1
dead.package Normal file
View file

@ -0,0 +1 @@
Superseded by yosyshq-abc

View file

@ -1 +0,0 @@
SHA512 (abc-e61194b.tar.gz) = cd8b524b90f543ed1f6ecb6597ebedd78b7a6c0c8e65c078d655b213f1752397fdab111be3eb6828c3a758782127d0abe60cfe2729358d3bef8f97b17bfebe90