ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
abc.c File Reference
#include "base/abc/abc.h"
#include "base/main/main.h"
#include "base/main/mainInt.h"
#include "proof/fraig/fraig.h"
#include "opt/fxu/fxu.h"
#include "opt/fxch/Fxch.h"
#include "opt/cut/cut.h"
#include "map/fpga/fpga.h"
#include "map/if/if.h"
#include "opt/sim/sim.h"
#include "opt/res/res.h"
#include "opt/lpk/lpk.h"
#include "aig/gia/giaAig.h"
#include "opt/dar/dar.h"
#include "opt/mfs/mfs.h"
#include "proof/fra/fra.h"
#include "aig/saig/saig.h"
#include "proof/int/int.h"
#include "proof/dch/dch.h"
#include "proof/ssw/ssw.h"
#include "opt/cgt/cgt.h"
#include "bool/kit/kit.h"
#include "map/amap/amap.h"
#include "opt/ret/retInt.h"
#include "sat/xsat/xsat.h"
#include "sat/satoko/satoko.h"
#include "sat/cnf/cnf.h"
#include "proof/cec/cec.h"
#include "proof/acec/acec.h"
#include "proof/pdr/pdr.h"
#include "misc/tim/tim.h"
#include "bdd/llb/llb.h"
#include "bdd/bbr/bbr.h"
#include "map/cov/cov.h"
#include "base/cmd/cmd.h"
#include "proof/abs/abs.h"
#include "sat/bmc/bmc.h"
#include "proof/ssc/ssc.h"
#include "opt/sfm/sfm.h"
#include "opt/sbd/sbd.h"
#include "bool/rpo/rpo.h"
#include "map/mpm/mpm.h"
#include "map/mio/mio.h"
#include "opt/fret/fretime.h"
#include "opt/nwk/nwkMerge.h"
#include "base/acb/acbPar.h"
#include "misc/extra/extra.h"
#include "opt/eslim/eSLIM.h"
#include <unistd.h>
#include "abciUnfold2.c"

Go to the source code of this file.

Functions

int Abc_CommandAbcLivenessToSafety (Abc_Frame_t *pAbc, int argc, char **argv)
 
int Abc_CommandAbcLivenessToSafetySim (Abc_Frame_t *pAbc, int argc, char **argv)
 
int Abc_CommandAbcLivenessToSafetyWithLTL (Abc_Frame_t *pAbc, int argc, char **argv)
 
int Abc_CommandCS_kLiveness (Abc_Frame_t *pAbc, int argc, char **argv)
 
int Abc_CommandNChooseK (Abc_Frame_t *pAbc, int argc, char **argv)
 
Aig_Man_tAbc_NtkToDar (Abc_Ntk_t *pNtk, int fExors, int fRegisters)
 
Abc_Ntk_tAbc_NtkFromAigPhase (Aig_Man_t *pMan)
 DECLARATIONS ///.
 
Vec_Ptr_tAbc_NtkCollectCiNames (Abc_Ntk_t *pNtk)
 
Vec_Ptr_tAbc_NtkCollectCoNames (Abc_Ntk_t *pNtk)
 
void Extra_BitMatrixTransposeP (Vec_Wrd_t *vSimsIn, int nWordsIn, Vec_Wrd_t *vSimsOut, int nWordsOut)
 DECLARATIONS ///.
 
void Abc_FrameReplaceCex (Abc_Frame_t *pAbc, Abc_Cex_t **ppCex)
 FUNCTION DEFINITIONS ///.
 
void Abc_FrameReplaceCexVec (Abc_Frame_t *pAbc, Vec_Ptr_t **pvCexVec)
 
void Abc_FrameReplacePoEquivs (Abc_Frame_t *pAbc, Vec_Ptr_t **pvPoEquivs)
 
void Abc_FrameReplacePoStatuses (Abc_Frame_t *pAbc, Vec_Int_t **pvStatuses)
 
Vec_Int_tAbc_FrameDeriveStatusArray (Vec_Ptr_t *vCexes)
 
Vec_Int_tAbc_FrameDeriveStatusArray2 (Vec_Ptr_t *vCexes)
 
void Abc_FrameClearDesign ()
 
void Abc_FrameUpdateGia (Abc_Frame_t *pAbc, Gia_Man_t *pNew)
 
Gia_Man_tAbc_FrameGetGia (Abc_Frame_t *pAbc)
 
void Abc_Init (Abc_Frame_t *pAbc)
 DECLARATIONS ///.
 
void Abc_End (Abc_Frame_t *pAbc)
 
Vec_Int_tVec_IntReadList (char *pStr, char Separ)
 
int Abc_CommandCexMin (Abc_Frame_t *pAbc, int argc, char **argv)
 
int Abc_CommandAbc9PoPart2 (Abc_Frame_t *pAbc, int argc, char **argv)
 
int Abc_CommandAbc9CexCut (Abc_Frame_t *pAbc, int argc, char **argv)
 
int Abc_CommandAbc9CexMerge (Abc_Frame_t *pAbc, int argc, char **argv)
 
int Abc_CommandAbc9CexMin (Abc_Frame_t *pAbc, int argc, char **argv)
 

Variables

Bnd_Man_tpBnd
 DECLARATIONS ///.
 

Function Documentation

◆ Abc_CommandAbc9CexCut()

int Abc_CommandAbc9CexCut ( Abc_Frame_t * pAbc,
int argc,
char ** argv )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 53672 of file abc.c.

53673{
53674 return -1;
53675}

◆ Abc_CommandAbc9CexMerge()

int Abc_CommandAbc9CexMerge ( Abc_Frame_t * pAbc,
int argc,
char ** argv )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 53688 of file abc.c.

53689{
53690 Abc_Cex_t * pCexNew;
53691 int c;
53692 int iFrStart = 0;
53693 int iFrStop = ABC_INFINITY;
53694 int fVerbose = 0;
53696 while ( ( c = Extra_UtilGetopt( argc, argv, "FGvh" ) ) != EOF )
53697 {
53698 switch ( c )
53699 {
53700 case 'F':
53701 if ( globalUtilOptind >= argc )
53702 {
53703 Abc_Print( -1, "Command line switch \"-F\" should be followed by an integer.\n" );
53704 goto usage;
53705 }
53706 iFrStart = atoi(argv[globalUtilOptind]);
53708 if ( iFrStart < 0 )
53709 goto usage;
53710 break;
53711 case 'G':
53712 if ( globalUtilOptind >= argc )
53713 {
53714 Abc_Print( -1, "Command line switch \"-G\" should be followed by an integer.\n" );
53715 goto usage;
53716 }
53717 iFrStop = atoi(argv[globalUtilOptind]);
53719 if ( iFrStop < 0 )
53720 goto usage;
53721 break;
53722 case 'v':
53723 fVerbose ^= 1;
53724 break;
53725 case 'h':
53726 goto usage;
53727 default:
53728 Abc_Print( -2, "Unknown switch.\n");
53729 goto usage;
53730 }
53731 }
53732
53733 if ( pAbc->pCex == NULL )
53734 {
53735 Abc_Print( 1, "There is no current cex.\n");
53736 return 0;
53737 }
53738 if ( pAbc->pCex2 == NULL )
53739 {
53740 Abc_Print( 1, "There is no saved cex.\n");
53741 return 0;
53742 }
53743 if ( iFrStop - iFrStart < pAbc->pCex->iFrame )
53744 {
53745 Abc_Print( 1, "Current CEX does not allow to shorten the saved CEX.\n");
53746 return 0;
53747 }
53748 pCexNew = Abc_CexMerge( pAbc->pCex2, pAbc->pCex, iFrStart, iFrStop );
53749 if ( pCexNew == NULL )
53750 {
53751 Abc_Print( 1, "Merging CEXes has failed.\n");
53752 return 0;
53753 }
53754 // replace the saved CEX
53755 ABC_FREE( pAbc->pCex2 );
53756 pAbc->pCex2 = pCexNew;
53757 return 0;
53758
53759usage:
53760 Abc_Print( -2, "usage: &cexmerge [-FG num] [-vh]\n" );
53761 Abc_Print( -2, "\t merges the current CEX into the saved one\n" );
53762 Abc_Print( -2, "\t and sets the resulting CEX as the saved one\n" );
53763 Abc_Print( -2, "\t-F num : 0-based number of the starting frame [default = %d]\n", iFrStart );
53764 Abc_Print( -2, "\t-G num : 0-based number of the ending frame [default = %d]\n", iFrStop );
53765 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
53766 Abc_Print( -2, "\t-h : print the command usage\n");
53767 return 1;
53768}
#define ABC_INFINITY
MACRO DEFINITIONS ///.
Definition abc_global.h:250
#define ABC_FREE(obj)
Definition abc_global.h:267
int globalUtilOptind
int Extra_UtilGetopt(int argc, char *argv[], const char *optstring)
ABC_DLL void Extra_UtilGetoptReset()
usage()
Definition main.c:626
Abc_Cex_t * Abc_CexMerge(Abc_Cex_t *pCex, Abc_Cex_t *pPart, int iFrBeg, int iFrEnd)
Definition utilCex.c:197
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
Definition utilCex.h:39
Here is the call graph for this function:

◆ Abc_CommandAbc9CexMin()

int Abc_CommandAbc9CexMin ( Abc_Frame_t * pAbc,
int argc,
char ** argv )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 53781 of file abc.c.

53782{
53783 extern Abc_Cex_t * Gia_ManCexMin( Gia_Man_t * p, Abc_Cex_t * pCex, int iFrameStart, int nRealPis, int fJustMax, int fUseAll, int fVerbose );
53784 Abc_Cex_t * pCexNew;
53785 int iFrameStart = 0;
53786 int nRealPis = -1;
53787 int fJustMax = 1;
53788 int fUseAll = 0;
53789 int c, fVerbose = 0;
53791 while ( ( c = Extra_UtilGetopt( argc, argv, "FNjavh" ) ) != EOF )
53792 {
53793 switch ( c )
53794 {
53795 case 'F':
53796 if ( globalUtilOptind >= argc )
53797 {
53798 Abc_Print( -1, "Command line switch \"-F\" should be followed by an integer.\n" );
53799 goto usage;
53800 }
53801 iFrameStart = atoi(argv[globalUtilOptind]);
53803 if ( iFrameStart < 0 )
53804 goto usage;
53805 break;
53806 case 'N':
53807 if ( globalUtilOptind >= argc )
53808 {
53809 Abc_Print( -1, "Command line switch \"-N\" should be followed by an integer.\n" );
53810 goto usage;
53811 }
53812 nRealPis = atoi(argv[globalUtilOptind]);
53814 if ( nRealPis < 0 )
53815 goto usage;
53816 break;
53817 case 'j':
53818 fJustMax ^= 1;
53819 break;
53820 case 'a':
53821 fUseAll ^= 1;
53822 break;
53823 case 'v':
53824 fVerbose ^= 1;
53825 break;
53826 case 'h':
53827 goto usage;
53828 default:
53829 goto usage;
53830 }
53831 }
53832 if ( pAbc->pGia == NULL )
53833 {
53834 Abc_Print( -1, "Abc_CommandAbc9CexMin(): There is no AIG.\n" );
53835 return 1;
53836 }
53837 if ( Gia_ManRegNum(pAbc->pGia) == 0 )
53838 {
53839 Abc_Print( -1, "Abc_CommandAbc9CexMin(): The network is combinational.\n" );
53840 return 0;
53841 }
53842 if ( pAbc->pCex == NULL )
53843 {
53844 Abc_Print( -1, "Abc_CommandAbc9CexMin(): There is no counter-example.\n" );
53845 return 1;
53846 }
53847 pCexNew = Gia_ManCexMin( pAbc->pGia, pAbc->pCex, iFrameStart, nRealPis, fJustMax, fUseAll, fVerbose );
53848 if ( pCexNew )
53849 Abc_FrameReplaceCex( pAbc, &pCexNew );
53850 return 0;
53851
53852usage:
53853 Abc_Print( -2, "usage: &cexmin [-FN num] [-javh]\n" );
53854 Abc_Print( -2, "\t minimizes a deep counter-example\n" );
53855 Abc_Print( -2, "\t-F num : starting timeframe for minimization [default = %d]\n", iFrameStart );
53856 Abc_Print( -2, "\t-N num : the number of real primary inputs [default = %d]\n", nRealPis );
53857 Abc_Print( -2, "\t-j : toggle computing all justifying assignments [default = %s]\n", fJustMax? "yes": "no" );
53858 Abc_Print( -2, "\t-a : toggle using all terminal objects [default = %s]\n", fUseAll? "yes": "no" );
53859 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
53860 Abc_Print( -2, "\t-h : print the command usage\n");
53861 return 1;
53862}
void Abc_FrameReplaceCex(Abc_Frame_t *pAbc, Abc_Cex_t **ppCex)
FUNCTION DEFINITIONS ///.
Definition abc.c:679
Abc_Cex_t * Gia_ManCexMin(Gia_Man_t *p, Abc_Cex_t *pCex, int iFrameStart, int nRealPis, int fJustMax, int fUseAll, int fVerbose)
Definition bmcCexMin2.c:317
Cube * p
Definition exorList.c:222
struct Gia_Man_t_ Gia_Man_t
Definition gia.h:96
Here is the call graph for this function:

◆ Abc_CommandAbc9PoPart2()

int Abc_CommandAbc9PoPart2 ( Abc_Frame_t * pAbc,
int argc,
char ** argv )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 49428 of file abc.c.

49429{
49430 extern Gia_Man_t * Gia_ManFindPoPartition2( Gia_Man_t * p, int iStartNum, int nDelta, int nOutsMin, int nOutsMax, int fSetLargest, int fVerbose, Vec_Ptr_t ** pvPosEquivs );
49431 Gia_Man_t * pTemp = NULL;
49432 Vec_Ptr_t * vPosEquivs = NULL;
49433 int c, iStartNum = 0, nDelta = 10, nOutsMin = 100, nOutsMax = 1000, fSetLargest = 0, fVerbose = 0;
49435 while ( ( c = Extra_UtilGetopt( argc, argv, "SDLUmvh" ) ) != EOF )
49436 {
49437 switch ( c )
49438 {
49439 case 'S':
49440 if ( globalUtilOptind >= argc )
49441 {
49442 Abc_Print( -1, "Command line switch \"-S\" should be followed by an integer.\n" );
49443 goto usage;
49444 }
49445 iStartNum = atoi(argv[globalUtilOptind]);
49447 if ( iStartNum < 0 )
49448 goto usage;
49449 break;
49450 case 'D':
49451 if ( globalUtilOptind >= argc )
49452 {
49453 Abc_Print( -1, "Command line switch \"-D\" should be followed by an integer.\n" );
49454 goto usage;
49455 }
49456 nDelta = atoi(argv[globalUtilOptind]);
49458 if ( nDelta < 0 )
49459 goto usage;
49460 break;
49461 case 'L':
49462 if ( globalUtilOptind >= argc )
49463 {
49464 Abc_Print( -1, "Command line switch \"-L\" should be followed by an integer.\n" );
49465 goto usage;
49466 }
49467 nOutsMin = atoi(argv[globalUtilOptind]);
49469 if ( nOutsMin < 0 )
49470 goto usage;
49471 break;
49472 case 'U':
49473 if ( globalUtilOptind >= argc )
49474 {
49475 Abc_Print( -1, "Command line switch \"-U\" should be followed by an integer.\n" );
49476 goto usage;
49477 }
49478 nOutsMax = atoi(argv[globalUtilOptind]);
49480 if ( nOutsMax < 0 )
49481 goto usage;
49482 break;
49483 case 'm':
49484 fSetLargest ^= 1;
49485 break;
49486 case 'v':
49487 fVerbose ^= 1;
49488 break;
49489 case 'h':
49490 goto usage;
49491 default:
49492 goto usage;
49493 }
49494 }
49495 if ( pAbc->pGia == NULL )
49496 {
49497 Abc_Print( -1, "Abc_CommandAbc9PoPart(): There is no AIG.\n" );
49498 return 1;
49499 }
49500 pTemp = Gia_ManFindPoPartition2( pAbc->pGia, iStartNum, nDelta, nOutsMin, nOutsMax, fSetLargest, fVerbose, &vPosEquivs );
49501 if ( pTemp )
49502 Abc_FrameUpdateGia( pAbc, pTemp );
49503 Abc_FrameReplacePoEquivs( pAbc, &vPosEquivs );
49504 return 0;
49505
49506usage:
49507 Abc_Print( -2, "usage: &popart2 [-SDLU num] [-mvh]\n" );
49508 Abc_Print( -2, "\t extracting multi-output sequential logic cones\n" );
49509 Abc_Print( -2, "\t-S num : the index of the PO to start the cluster [default = %d]\n", iStartNum );
49510 Abc_Print( -2, "\t-D num : the max increase in flop count after adding one PO [default = %d]\n", nDelta );
49511 Abc_Print( -2, "\t-L num : the minimum number of POs in a cluster [default = %d]\n", nOutsMin );
49512 Abc_Print( -2, "\t-U num : the maximum number of POs in a cluster [default = %d]\n", nOutsMax );
49513 Abc_Print( -2, "\t-m : toggle selecting the largest cluster [default = %s]\n", fSetLargest? "yes": "no" );
49514 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
49515 Abc_Print( -2, "\t-h : print the command usage\n");
49516 return 1;
49517}
void Abc_FrameUpdateGia(Abc_Frame_t *pAbc, Gia_Man_t *pNew)
Definition abc.c:824
void Abc_FrameReplacePoEquivs(Abc_Frame_t *pAbc, Vec_Ptr_t **pvPoEquivs)
Definition abc.c:726
Gia_Man_t * Gia_ManFindPoPartition2(Gia_Man_t *p, int iStartNum, int nDelta, int nOutsMin, int nOutsMax, int fSetLargest, int fVerbose, Vec_Ptr_t **pvPosEquivs)
Definition giaCone.c:538
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
Here is the call graph for this function:

◆ Abc_CommandAbcLivenessToSafety()

int Abc_CommandAbcLivenessToSafety ( Abc_Frame_t * pAbc,
int argc,
char ** argv )
extern

Definition at line 1254 of file liveness.c.

1255{
1256 FILE * pOut, * pErr;
1257 Abc_Ntk_t * pNtk, * pNtkTemp, *pNtkNew, *pNtkOld;
1258 Aig_Man_t * pAig, *pAigNew = NULL;
1259 int c;
1260 Vec_Ptr_t * vLive, * vFair, *vAssertSafety, *vAssumeSafety;
1261 int directive = -1;
1262
1263 pNtk = Abc_FrameReadNtk(pAbc);
1264 pOut = Abc_FrameReadOut(pAbc);
1265 pErr = Abc_FrameReadErr(pAbc);
1266
1267 if( argc == 1 )
1268 {
1269 assert( directive == -1 );
1270 directive = FULL_BIERE_MODE;
1271 }
1272 else
1273 {
1275 while ( ( c = Extra_UtilGetopt( argc, argv, "1slh" ) ) != EOF )
1276 {
1277 switch( c )
1278 {
1279 case '1':
1280 if( directive == -1 )
1281 directive = FULL_BIERE_ONE_LOOP_MODE;
1282 else
1283 {
1285 if( directive == IGNORE_LIVENESS_KEEP_SAFETY_MODE )
1287 else
1289 }
1290 break;
1291 case 's':
1292 if( directive == -1 )
1294 else
1295 {
1296 if( directive != FULL_BIERE_ONE_LOOP_MODE )
1297 goto usage;
1298 assert(directive == FULL_BIERE_ONE_LOOP_MODE);
1300 }
1301 break;
1302 case 'l':
1303 if( directive == -1 )
1305 else
1306 {
1307 if( directive != FULL_BIERE_ONE_LOOP_MODE )
1308 goto usage;
1309 assert(directive == FULL_BIERE_ONE_LOOP_MODE);
1311 }
1312 break;
1313 case 'h':
1314 goto usage;
1315 default:
1316 goto usage;
1317 }
1318 }
1319 }
1320
1321 if ( pNtk == NULL )
1322 {
1323 fprintf( pErr, "Empty network.\n" );
1324 return 1;
1325 }
1326 if( !Abc_NtkIsStrash( pNtk ) )
1327 {
1328 printf("The input network was not strashed, strashing....\n");
1329 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
1330 pNtkOld = pNtkTemp;
1331 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
1332 vLive = populateLivenessVector( pNtk, pAig );
1333 vFair = populateFairnessVector( pNtk, pAig );
1334 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
1335 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
1336 }
1337 else
1338 {
1339 pAig = Abc_NtkToDar( pNtk, 0, 1 );
1340 pNtkOld = pNtk;
1341 vLive = populateLivenessVector( pNtk, pAig );
1342 vFair = populateFairnessVector( pNtk, pAig );
1343 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
1344 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
1345 }
1346
1347 switch( directive )
1348 {
1349 case FULL_BIERE_MODE:
1350 //if( Vec_PtrSize(vLive) == 0 && Vec_PtrSize(vAssertSafety) == 0 )
1351 //{
1352 // printf("Input circuit has NO safety and NO liveness property, original network is not disturbed\n");
1353 // return 1;
1354 //}
1355 //else
1356 //{
1357 pAigNew = LivenessToSafetyTransformation( FULL_BIERE_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
1358 if( Aig_ManRegNum(pAigNew) != 0 )
1359 printf("A new circuit is produced with\n\t2 POs - one for safety and one for liveness.\n\tone additional input is added (due to Biere's nondeterminism)\n\tshadow flops are not created if the original circuit is combinational\n\tnon-property POs are suppressed\n");
1360 break;
1361 //}
1363 //if( Vec_PtrSize(vLive) == 0 && Vec_PtrSize(vAssertSafety) == 0 )
1364 //{
1365 // printf("Input circuit has NO safety and NO liveness property, original network is not disturbed\n");
1366 // return 1;
1367 //}
1368 //else
1369 //{
1370 pAigNew = LivenessToSafetyTransformationOneStepLoop( FULL_BIERE_ONE_LOOP_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
1371 if( Aig_ManRegNum(pAigNew) != 0 )
1372 printf("A new circuit is produced with\n\t2 POs - one for safety and one for liveness.\n\tone additional input is added (due to Biere's nondeterminism)\n\tshadow flops are not created\n\tnon-property POs are suppressed\n");
1373 break;
1374 //}
1376 //if( Vec_PtrSize(vAssertSafety) == 0 )
1377 //{
1378 // printf("Input circuit has NO safety property, original network is not disturbed\n");
1379 // return 1;
1380 //}
1381 //else
1382 //{
1383 pAigNew = LivenessToSafetyTransformation( IGNORE_LIVENESS_KEEP_SAFETY_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
1384 if( Aig_ManRegNum(pAigNew) != 0 )
1385 printf("A new circuit is produced with\n\t1 PO - only for safety property; liveness properties are ignored, if any.\n\tno additional input is added (due to Biere's nondeterminism)\n\tshadow flops are not created\n\tnon-property POs are suppressed\n");
1386 break;
1387 //}
1389 //if( Vec_PtrSize(vLive) == 0 )
1390 //{
1391 // printf("Input circuit has NO liveness property, original network is not disturbed\n");
1392 // return 1;
1393 //}
1394 //else
1395 //{
1396 pAigNew = LivenessToSafetyTransformation( IGNORE_SAFETY_KEEP_LIVENESS_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
1397 if( Aig_ManRegNum(pAigNew) != 0 )
1398 printf("A new circuit is produced with\n\t1 PO - only for liveness property; safety properties are ignored, if any.\n\tone additional input is added (due to Biere's nondeterminism)\n\tshadow flops are not created if the original circuit is combinational\n\tnon-property POs are suppressed\n");
1399 break;
1400 //}
1402 //if( Vec_PtrSize(vLive) == 0 )
1403 //{
1404 // printf("Input circuit has NO liveness property, original network is not disturbed\n");
1405 // return 1;
1406 //}
1407 //else
1408 //{
1409 pAigNew = LivenessToSafetyTransformationOneStepLoop( IGNORE_SAFETY_KEEP_LIVENESS_ONE_LOOP_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
1410 if( Aig_ManRegNum(pAigNew) != 0 )
1411 printf("New circuit is produced ignoring safety outputs!\nOnly liveness and fairness outputs are considered.\nShadow registers are not created\n");
1412 break;
1413 //}
1414 }
1415
1416#if 0
1417 if( argc == 1 )
1418 {
1419 pAigNew = LivenessToSafetyTransformation( FULL_BIERE_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
1420 if( Aig_ManRegNum(pAigNew) != 0 )
1421 printf("New circuit is produced considering all safety, liveness and fairness outputs.\nBiere's logic is created\n");
1422 }
1423 else
1424 {
1426 c = Extra_UtilGetopt( argc, argv, "1lsh" );
1427 if( c == '1' )
1428 {
1429 if ( pNtk == NULL )
1430 {
1431 fprintf( pErr, "Empty network.\n" );
1432 return 1;
1433 }
1434 if( !Abc_NtkIsStrash( pNtk ) )
1435 {
1436 printf("The input network was not strashed, strashing....\n");
1437 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
1438 pNtkOld = pNtkTemp;
1439 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
1440 vLive = populateLivenessVector( pNtk, pAig );
1441 vFair = populateFairnessVector( pNtk, pAig );
1442 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
1443 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
1444 }
1445 else
1446 {
1447 pAig = Abc_NtkToDar( pNtk, 0, 1 );
1448 pNtkOld = pNtk;
1449 vLive = populateLivenessVector( pNtk, pAig );
1450 vFair = populateFairnessVector( pNtk, pAig );
1451 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
1452 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
1453 }
1454 pAigNew = LivenessToSafetyTransformationOneStepLoop( pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
1455 }
1456 else if( c == 'l' )
1457 {
1458 if ( pNtk == NULL )
1459 {
1460 fprintf( pErr, "Empty network.\n" );
1461 return 1;
1462 }
1463 if( !Abc_NtkIsStrash( pNtk ) )
1464 {
1465 printf("The input network was not strashed, strashing....\n");
1466 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
1467 pNtkOld = pNtkTemp;
1468 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
1469 vLive = populateLivenessVector( pNtk, pAig );
1470 vFair = populateFairnessVector( pNtk, pAig );
1471 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
1472 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
1473 }
1474 else
1475 {
1476 pAig = Abc_NtkToDar( pNtk, 0, 1 );
1477 pNtkOld = pNtk;
1478 vLive = populateLivenessVector( pNtk, pAig );
1479 vFair = populateFairnessVector( pNtk, pAig );
1480 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
1481 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
1482 }
1483 pAigNew = LivenessToSafetyTransformation( IGNORE_LIVENESS_KEEP_SAFETY_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
1484 if( Aig_ManRegNum(pAigNew) != 0 )
1485 printf("New circuit is produced ignoring liveness outputs!\nOnly safety outputs are kept.\nBiere's logic is not created\n");
1486 }
1487 else if( c == 's' )
1488 {
1489 if ( pNtk == NULL )
1490 {
1491 fprintf( pErr, "Empty network.\n" );
1492 return 1;
1493 }
1494
1495 if( !Abc_NtkIsStrash( pNtk ) )
1496 {
1497 printf("The input network was not strashed, strashing....\n");
1498 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
1499 pNtkOld = pNtkTemp;
1500 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
1501 vLive = populateLivenessVector( pNtk, pAig );
1502 vFair = populateFairnessVector( pNtk, pAig );
1503 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
1504 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
1505 }
1506 else
1507 {
1508 pAig = Abc_NtkToDar( pNtk, 0, 1 );
1509 pNtkOld = pNtk;
1510 vLive = populateLivenessVector( pNtk, pAig );
1511 vFair = populateFairnessVector( pNtk, pAig );
1512 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
1513 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
1514 }
1515 pAigNew = LivenessToSafetyTransformation( IGNORE_SAFETY_KEEP_LIVENESS_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
1516 if( Aig_ManRegNum(pAigNew) != 0 )
1517 printf("New circuit is produced ignoring safety outputs!\nOnly liveness and fairness outputs are considered.\nBiere's logic is created\n");
1518 }
1519 else if( c == 'h' )
1520 goto usage;
1521 else
1522 goto usage;
1523 }
1524#endif
1525
1526#if 0
1527 Aig_ManPrintStats( pAigNew );
1528 printf("\nDetail statistics*************************************\n");
1529 printf("Number of true primary inputs = %d\n", Saig_ManPiNum( pAigNew ));
1530 printf("Number of true primary outputs = %d\n", Saig_ManPoNum( pAigNew ));
1531 printf("Number of true latch outputs = %d\n", Saig_ManCiNum( pAigNew ) - Saig_ManPiNum( pAigNew ));
1532 printf("Number of true latch inputs = %d\n", Saig_ManCoNum( pAigNew ) - Saig_ManPoNum( pAigNew ));
1533 printf("Numer of registers = %d\n", Saig_ManRegNum( pAigNew ) );
1534 printf("\n*******************************************************\n");
1535#endif
1536
1537 pNtkNew = Abc_NtkFromAigPhase( pAigNew );
1538 pNtkNew->pName = Abc_UtilStrsav( pAigNew->pName );
1539
1540 if ( !Abc_NtkCheck( pNtkNew ) )
1541 fprintf( stdout, "Abc_NtkCreateCone(): Network check has failed.\n" );
1542
1544 Abc_FrameSetCurrentNetwork( pAbc, pNtkNew );
1545
1546#if 0
1547#ifndef DUPLICATE_CKT_DEBUG
1548 Saig_ManForEachPi( pAigNew, pObj, i )
1549 assert( strcmp( (char *)Vec_PtrEntry(vecPiNames, i), retrieveTruePiName( pNtk, pAig, pAigNew, pObj ) ) == 0 );
1550 //printf("Name of %d-th Pi = %s, %s\n", i, retrieveTruePiName( pNtk, pAig, pAigNew, pObj ), (char *)Vec_PtrEntry(vecPiNames, i) );
1551
1552 Saig_ManForEachLo( pAigNew, pObj, i )
1553 assert( strcmp( (char *)Vec_PtrEntry(vecLoNames, i), retrieveLOName( pNtk, pAig, pAigNew, pObj, vLive, vFair ) ) == 0 );
1554#endif
1555#endif
1556
1557 return 0;
1558
1559usage:
1560 fprintf( stdout, "usage: l2s [-1lsh]\n" );
1561 fprintf( stdout, "\t performs Armin Biere's live-to-safe transformation\n" );
1562 fprintf( stdout, "\t-1 : no shadow logic, presume all loops are self loops\n");
1563 fprintf( stdout, "\t-l : ignore liveness and fairness outputs\n");
1564 fprintf( stdout, "\t-s : ignore safety assertions and assumptions\n");
1565 fprintf( stdout, "\t-h : print command usage\n");
1566 return 1;
1567}
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcCheck.c:64
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
Definition abcStrash.c:265
void Aig_ManPrintStats(Aig_Man_t *p)
Definition aigMan.c:379
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Definition aig.h:50
ABC_DLL Abc_Ntk_t * Abc_FrameReadNtk(Abc_Frame_t *p)
Definition mainFrame.c:327
ABC_DLL FILE * Abc_FrameReadErr(Abc_Frame_t *p)
Definition mainFrame.c:375
ABC_DLL FILE * Abc_FrameReadOut(Abc_Frame_t *p)
Definition mainFrame.c:359
ABC_DLL void Abc_FrameSetCurrentNetwork(Abc_Frame_t *p, Abc_Ntk_t *pNet)
Definition mainFrame.c:441
Vec_Ptr_t * vecLoNames
Definition liveness.c:219
#define IGNORE_LIVENESS_KEEP_SAFETY_MODE
Definition liveness.c:35
Vec_Ptr_t * vecPiNames
Definition liveness.c:218
#define FULL_BIERE_ONE_LOOP_MODE
Definition liveness.c:38
Aig_Man_t * LivenessToSafetyTransformation(int mode, Abc_Ntk_t *pNtk, Aig_Man_t *p, Vec_Ptr_t *vLive, Vec_Ptr_t *vFair, Vec_Ptr_t *vAssertSafety, Vec_Ptr_t *vAssumeSafety)
Definition liveness.c:244
Vec_Ptr_t * populateFairnessVector(Abc_Ntk_t *pNtk, Aig_Man_t *pAig)
Definition liveness.c:1161
Vec_Ptr_t * populateSafetyAssertionVector(Abc_Ntk_t *pNtk, Aig_Man_t *pAig)
Definition liveness.c:1179
char * retrieveTruePiName(Abc_Ntk_t *pNtkOld, Aig_Man_t *pAigOld, Aig_Man_t *pAigNew, Aig_Obj_t *pObjPivot)
Definition liveness.c:115
char * retrieveLOName(Abc_Ntk_t *pNtkOld, Aig_Man_t *pAigOld, Aig_Man_t *pAigNew, Aig_Obj_t *pObjPivot, Vec_Ptr_t *vLive, Vec_Ptr_t *vFair)
Definition liveness.c:137
Aig_Man_t * Abc_NtkToDar(Abc_Ntk_t *pNtk, int fExors, int fRegisters)
DECLARATIONS ///.
Definition abcDar.c:237
Aig_Man_t * LivenessToSafetyTransformationOneStepLoop(int mode, Abc_Ntk_t *pNtk, Aig_Man_t *p, Vec_Ptr_t *vLive, Vec_Ptr_t *vFair, Vec_Ptr_t *vAssertSafety, Vec_Ptr_t *vAssumeSafety)
Definition liveness.c:843
#define IGNORE_SAFETY_KEEP_LIVENESS_ONE_LOOP_MODE
Definition liveness.c:37
void updateNewNetworkNameManager(Abc_Ntk_t *pNtk, Aig_Man_t *pAig, Vec_Ptr_t *vPiNames, Vec_Ptr_t *vLoNames)
Definition liveness.c:1215
#define FULL_BIERE_MODE
Definition liveness.c:34
Abc_Ntk_t * Abc_NtkFromAigPhase(Aig_Man_t *pMan)
DECLARATIONS ///.
Definition abcDar.c:595
#define IGNORE_SAFETY_KEEP_LIVENESS_MODE
Definition liveness.c:36
Vec_Ptr_t * populateLivenessVector(Abc_Ntk_t *pNtk, Aig_Man_t *pAig)
Definition liveness.c:1143
Vec_Ptr_t * populateSafetyAssumptionVector(Abc_Ntk_t *pNtk, Aig_Man_t *pAig)
Definition liveness.c:1197
#define Saig_ManForEachLo(p, pObj, i)
Definition saig.h:96
#define Saig_ManForEachPi(p, pObj, i)
Definition saig.h:91
char * pName
Definition abc.h:158
#define assert(ex)
Definition util_old.h:213
int strcmp()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_CommandAbcLivenessToSafetySim()

int Abc_CommandAbcLivenessToSafetySim ( Abc_Frame_t * pAbc,
int argc,
char ** argv )
extern

Definition at line 754 of file liveness_sim.c.

755{
756 FILE * pOut, * pErr;
757 Abc_Ntk_t * pNtk, * pNtkTemp, *pNtkNew, *pNtkOld;
758 Aig_Man_t * pAig, *pAigNew;
759 int c;
760 Vec_Ptr_t * vLive, * vFair;
761
762 pNtk = Abc_FrameReadNtk(pAbc);
763 pOut = Abc_FrameReadOut(pAbc);
764 pErr = Abc_FrameReadErr(pAbc);
765
766 if ( pNtk == NULL )
767 {
768 fprintf( pErr, "Empty network.\n" );
769 return 1;
770 }
771
772 if( !Abc_NtkIsStrash( pNtk ) )
773 {
774 printf("\nThe input network was not strashed, strashing....\n");
775 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
776 pNtkOld = pNtkTemp;
777 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
778 vLive = populateLivenessVector( pNtk, pAig );
779 vFair = populateFairnessVector( pNtk, pAig );
780 }
781 else
782 {
783 pAig = Abc_NtkToDar( pNtk, 0, 1 );
784 pNtkOld = pNtk;
785 vLive = populateLivenessVector( pNtk, pAig );
786 vFair = populateFairnessVector( pNtk, pAig );
787 }
788
789#if 0
790 Aig_ManPrintStats( pAig );
791 printf("\nDetail statistics*************************************\n");
792 printf("Number of true primary inputs = %d\n", Saig_ManPiNum( pAig ));
793 printf("Number of true primary outputs = %d\n", Saig_ManPoNum( pAig ));
794 printf("Number of true latch outputs = %d\n", Saig_ManCiNum( pAig ) - Saig_ManPiNum( pAig ));
795 printf("Number of true latch inputs = %d\n", Saig_ManCoNum( pAig ) - Saig_ManPoNum( pAig ));
796 printf("Numer of registers = %d\n", Saig_ManRegNum( pAig ) );
797 printf("\n*******************************************************\n");
798#endif
799
800 c = Extra_UtilGetopt( argc, argv, "1" );
801 if( c == '1' )
802 pAigNew = LivenessToSafetyTransformationOneStepLoopSim( pNtk, pAig, vLive, vFair );
803 else
804 pAigNew = LivenessToSafetyTransformationSim( pNtk, pAig, vLive, vFair );
805
806#if 0
807 Aig_ManPrintStats( pAigNew );
808 printf("\nDetail statistics*************************************\n");
809 printf("Number of true primary inputs = %d\n", Saig_ManPiNum( pAigNew ));
810 printf("Number of true primary outputs = %d\n", Saig_ManPoNum( pAigNew ));
811 printf("Number of true latch outputs = %d\n", Saig_ManCiNum( pAigNew ) - Saig_ManPiNum( pAigNew ));
812 printf("Number of true latch inputs = %d\n", Saig_ManCoNum( pAigNew ) - Saig_ManPoNum( pAigNew ));
813 printf("Numer of registers = %d\n", Saig_ManRegNum( pAigNew ) );
814 printf("\n*******************************************************\n");
815#endif
816
817 pNtkNew = Abc_NtkFromAigPhase( pAigNew );
818
819 if ( !Abc_NtkCheck( pNtkNew ) )
820 fprintf( stdout, "Abc_NtkCreateCone(): Network check has failed.\n" );
821
823 Abc_FrameSetCurrentNetwork( pAbc, pNtkNew );
824
825 //Saig_ManForEachPi( pAigNew, pObj, i )
826 // printf("Name of %d-th Pi = %s\n", i, retrieveTruePiName( pNtk, pAig, pAigNew, pObj ) );
827
828 //Saig_ManForEachLo( pAigNew, pObj, i )
829 // printf("Name of %d-th Lo = %s\n", i, retrieveLOName( pNtk, pAig, pAigNew, pObj, vLive, vFair ) );
830
831 //printVecPtrOfString( vecPiNames );
832 //printVecPtrOfString( vecLoNames );
833
834#if 0
835#ifndef DUPLICATE_CKT_DEBUG
836 Saig_ManForEachPi( pAigNew, pObj, i )
837 assert( strcmp( (char *)Vec_PtrEntry(vecPiNames, i), retrieveTruePiName( pNtk, pAig, pAigNew, pObj ) ) == 0 );
838 //printf("Name of %d-th Pi = %s, %s\n", i, retrieveTruePiName( pNtk, pAig, pAigNew, pObj ), (char *)Vec_PtrEntry(vecPiNames, i) );
839
840 Saig_ManForEachLo( pAigNew, pObj, i )
841 assert( strcmp( (char *)Vec_PtrEntry(vecLoNames, i), retrieveLOName( pNtk, pAig, pAigNew, pObj, vLive, vFair ) ) == 0 );
842#endif
843#endif
844
845 return 0;
846
847}
Aig_Man_t * Abc_NtkToDar(Abc_Ntk_t *pNtk, int fExors, int fRegisters)
DECLARATIONS ///.
Definition abcDar.c:237
Abc_Ntk_t * Abc_NtkFromAigPhase(Aig_Man_t *pMan)
DECLARATIONS ///.
Definition abcDar.c:595
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_CommandAbcLivenessToSafetyWithLTL()

int Abc_CommandAbcLivenessToSafetyWithLTL ( Abc_Frame_t * pAbc,
int argc,
char ** argv )
extern

Definition at line 2268 of file liveness.c.

2269{
2270 FILE * pOut, * pErr;
2271 Abc_Ntk_t * pNtk, * pNtkTemp, *pNtkNew, *pNtkOld;
2272 Aig_Man_t * pAig, *pAigNew = NULL;
2273 int c;
2274 Vec_Ptr_t * vLive, * vFair, *vAssertSafety, *vAssumeSafety;
2275 int directive = -1;
2276// char *ltfFormulaString = NULL;
2277 int numOfLtlPropOutput;//, LTL_FLAG = 0;
2278 Vec_Ptr_t *ltlBuffer;
2279
2280 pNtk = Abc_FrameReadNtk(pAbc);
2281 pOut = Abc_FrameReadOut(pAbc);
2282 pErr = Abc_FrameReadErr(pAbc);
2283
2284 if( argc == 1 )
2285 {
2286 assert( directive == -1 );
2287 directive = FULL_BIERE_MODE;
2288 }
2289 else
2290 {
2292 while ( ( c = Extra_UtilGetopt( argc, argv, "1slhf" ) ) != EOF )
2293 {
2294 switch( c )
2295 {
2296 case '1':
2297 if( directive == -1 )
2298 directive = FULL_BIERE_ONE_LOOP_MODE;
2299 else
2300 {
2302 if( directive == IGNORE_LIVENESS_KEEP_SAFETY_MODE )
2304 else
2306 }
2307 break;
2308 case 's':
2309 if( directive == -1 )
2311 else
2312 {
2313 if( directive != FULL_BIERE_ONE_LOOP_MODE )
2314 goto usage;
2315 assert(directive == FULL_BIERE_ONE_LOOP_MODE);
2317 }
2318 break;
2319 case 'l':
2320 if( directive == -1 )
2322 else
2323 {
2324 if( directive != FULL_BIERE_ONE_LOOP_MODE )
2325 goto usage;
2326 assert(directive == FULL_BIERE_ONE_LOOP_MODE);
2328 }
2329 break;
2330 case 'f':
2331 //assert( argc >= 3 );
2332 //vecLtlFormula = Vec_PtrAlloc( argc - 2 );
2333 //if( argc >= 3 )
2334 //{
2335 // for( t=3; t<=argc; t++ )
2336 // {
2337 // printf("argv[%d] = %s\n", t-1, argv[t-1]);
2338 // Vec_PtrPush( vecLtlFormula, argv[t-1] );
2339 // }
2340 //}
2341 //printf("argv[argc] = %s\n", argv[argc-1]);
2342 //ltfFormulaString = argv[2];
2343
2344 //LTL_FLAG = 1;
2345 printf("\nILLEGAL FLAG: aborting....\n");
2346 exit(0);
2347 break;
2348 case 'h':
2349 goto usage;
2350 default:
2351 goto usage;
2352 }
2353 }
2354 }
2355
2356 if ( pNtk == NULL )
2357 {
2358 fprintf( pErr, "Empty network.\n" );
2359 return 1;
2360 }
2361 if( !Abc_NtkIsStrash( pNtk ) )
2362 {
2363 printf("The input network was not strashed, strashing....\n");
2364 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
2365 pNtkOld = pNtkTemp;
2366 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
2367 vLive = populateLivenessVector( pNtk, pAig );
2368 vFair = populateFairnessVector( pNtk, pAig );
2369 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
2370 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
2371 }
2372 else
2373 {
2374 pAig = Abc_NtkToDar( pNtk, 0, 1 );
2375 pNtkOld = pNtk;
2376 vLive = populateLivenessVector( pNtk, pAig );
2377 vFair = populateFairnessVector( pNtk, pAig );
2378 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
2379 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
2380 }
2381
2382 if( pAbc->vLTLProperties_global != NULL )
2383 ltlBuffer = pAbc->vLTLProperties_global;
2384 else
2385 ltlBuffer = NULL;
2386
2387 switch( directive )
2388 {
2389 case FULL_BIERE_MODE:
2390 pAigNew = LivenessToSafetyTransformationWithLTL( FULL_BIERE_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety, &numOfLtlPropOutput, ltlBuffer );
2391 if( Aig_ManRegNum(pAigNew) != 0 )
2392 printf("A new circuit is produced with\n\t%d POs - one for safety and %d for liveness.\n\tone additional input is added (due to Biere's nondeterminism)\n\tshadow flops are not created if the original circuit is combinational\n\tnon-property POs are suppressed\n", numOfLtlPropOutput+1, numOfLtlPropOutput);
2393 break;
2394
2396 pAigNew = LivenessToSafetyTransformationOneStepLoop( FULL_BIERE_ONE_LOOP_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
2397 if( Aig_ManRegNum(pAigNew) != 0 )
2398 printf("A new circuit is produced with\n\t2 POs - one for safety and one for liveness.\n\tone additional input is added (due to Biere's nondeterminism)\n\tshadow flops are not created\n\tnon-property POs are suppressed\n");
2399 break;
2400
2402 pAigNew = LivenessToSafetyTransformationWithLTL( IGNORE_LIVENESS_KEEP_SAFETY_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety, &numOfLtlPropOutput, ltlBuffer );
2403 assert( numOfLtlPropOutput == 0 );
2404 if( Aig_ManRegNum(pAigNew) != 0 )
2405 printf("A new circuit is produced with\n\t1 PO - only for safety property; liveness properties are ignored, if any.\n\tno additional input is added (due to Biere's nondeterminism)\n\tshadow flops are not created\n\tnon-property POs are suppressed\n");
2406 break;
2407
2409 pAigNew = LivenessToSafetyTransformationWithLTL( IGNORE_SAFETY_KEEP_LIVENESS_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety, &numOfLtlPropOutput, ltlBuffer );
2410 if( Aig_ManRegNum(pAigNew) != 0 )
2411 printf("A new circuit is produced with\n\t%d PO - only for liveness property; safety properties are ignored, if any.\n\tone additional input is added (due to Biere's nondeterminism)\n\tshadow flops are not created if the original circuit is combinational\n\tnon-property POs are suppressed\n", numOfLtlPropOutput);
2412 break;
2413
2415 pAigNew = LivenessToSafetyTransformationOneStepLoop( IGNORE_SAFETY_KEEP_LIVENESS_ONE_LOOP_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
2416 if( Aig_ManRegNum(pAigNew) != 0 )
2417 printf("New circuit is produced ignoring safety outputs!\nOnly liveness and fairness outputs are considered.\nShadow registers are not created\n");
2418 break;
2419 }
2420
2421#if 0
2422 if( argc == 1 )
2423 {
2424 pAigNew = LivenessToSafetyTransformation( FULL_BIERE_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
2425 if( Aig_ManRegNum(pAigNew) != 0 )
2426 printf("New circuit is produced considering all safety, liveness and fairness outputs.\nBiere's logic is created\n");
2427 }
2428 else
2429 {
2431 c = Extra_UtilGetopt( argc, argv, "1lsh" );
2432 if( c == '1' )
2433 {
2434 if ( pNtk == NULL )
2435 {
2436 fprintf( pErr, "Empty network.\n" );
2437 return 1;
2438 }
2439 if( !Abc_NtkIsStrash( pNtk ) )
2440 {
2441 printf("The input network was not strashed, strashing....\n");
2442 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
2443 pNtkOld = pNtkTemp;
2444 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
2445 vLive = populateLivenessVector( pNtk, pAig );
2446 vFair = populateFairnessVector( pNtk, pAig );
2447 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
2448 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
2449 }
2450 else
2451 {
2452 pAig = Abc_NtkToDar( pNtk, 0, 1 );
2453 pNtkOld = pNtk;
2454 vLive = populateLivenessVector( pNtk, pAig );
2455 vFair = populateFairnessVector( pNtk, pAig );
2456 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
2457 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
2458 }
2459 pAigNew = LivenessToSafetyTransformationOneStepLoop( pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
2460 }
2461 else if( c == 'l' )
2462 {
2463 if ( pNtk == NULL )
2464 {
2465 fprintf( pErr, "Empty network.\n" );
2466 return 1;
2467 }
2468 if( !Abc_NtkIsStrash( pNtk ) )
2469 {
2470 printf("The input network was not strashed, strashing....\n");
2471 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
2472 pNtkOld = pNtkTemp;
2473 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
2474 vLive = populateLivenessVector( pNtk, pAig );
2475 vFair = populateFairnessVector( pNtk, pAig );
2476 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
2477 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
2478 }
2479 else
2480 {
2481 pAig = Abc_NtkToDar( pNtk, 0, 1 );
2482 pNtkOld = pNtk;
2483 vLive = populateLivenessVector( pNtk, pAig );
2484 vFair = populateFairnessVector( pNtk, pAig );
2485 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
2486 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
2487 }
2488 pAigNew = LivenessToSafetyTransformation( IGNORE_LIVENESS_KEEP_SAFETY_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
2489 if( Aig_ManRegNum(pAigNew) != 0 )
2490 printf("New circuit is produced ignoring liveness outputs!\nOnly safety outputs are kept.\nBiere's logic is not created\n");
2491 }
2492 else if( c == 's' )
2493 {
2494 if ( pNtk == NULL )
2495 {
2496 fprintf( pErr, "Empty network.\n" );
2497 return 1;
2498 }
2499
2500 if( !Abc_NtkIsStrash( pNtk ) )
2501 {
2502 printf("The input network was not strashed, strashing....\n");
2503 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
2504 pNtkOld = pNtkTemp;
2505 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
2506 vLive = populateLivenessVector( pNtk, pAig );
2507 vFair = populateFairnessVector( pNtk, pAig );
2508 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
2509 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
2510 }
2511 else
2512 {
2513 pAig = Abc_NtkToDar( pNtk, 0, 1 );
2514 pNtkOld = pNtk;
2515 vLive = populateLivenessVector( pNtk, pAig );
2516 vFair = populateFairnessVector( pNtk, pAig );
2517 vAssertSafety = populateSafetyAssertionVector( pNtk, pAig );
2518 vAssumeSafety = populateSafetyAssumptionVector( pNtk, pAig );
2519 }
2520 pAigNew = LivenessToSafetyTransformation( IGNORE_SAFETY_KEEP_LIVENESS_MODE, pNtk, pAig, vLive, vFair, vAssertSafety, vAssumeSafety );
2521 if( Aig_ManRegNum(pAigNew) != 0 )
2522 printf("New circuit is produced ignoring safety outputs!\nOnly liveness and fairness outputs are considered.\nBiere's logic is created\n");
2523 }
2524 else if( c == 'h' )
2525 goto usage;
2526 else
2527 goto usage;
2528 }
2529#endif
2530
2531#if 0
2532 Aig_ManPrintStats( pAigNew );
2533 printf("\nDetail statistics*************************************\n");
2534 printf("Number of true primary inputs = %d\n", Saig_ManPiNum( pAigNew ));
2535 printf("Number of true primary outputs = %d\n", Saig_ManPoNum( pAigNew ));
2536 printf("Number of true latch outputs = %d\n", Saig_ManCiNum( pAigNew ) - Saig_ManPiNum( pAigNew ));
2537 printf("Number of true latch inputs = %d\n", Saig_ManCoNum( pAigNew ) - Saig_ManPoNum( pAigNew ));
2538 printf("Numer of registers = %d\n", Saig_ManRegNum( pAigNew ) );
2539 printf("\n*******************************************************\n");
2540#endif
2541
2542 pNtkNew = Abc_NtkFromAigPhase( pAigNew );
2543 pNtkNew->pName = Abc_UtilStrsav( pAigNew->pName );
2544
2545 if ( !Abc_NtkCheck( pNtkNew ) )
2546 fprintf( stdout, "Abc_NtkCreateCone(): Network check has failed.\n" );
2547
2549 Abc_FrameSetCurrentNetwork( pAbc, pNtkNew );
2550
2551#if 0
2552#ifndef DUPLICATE_CKT_DEBUG
2553 Saig_ManForEachPi( pAigNew, pObj, i )
2554 assert( strcmp( (char *)Vec_PtrEntry(vecPiNames, i), retrieveTruePiName( pNtk, pAig, pAigNew, pObj ) ) == 0 );
2555 //printf("Name of %d-th Pi = %s, %s\n", i, retrieveTruePiName( pNtk, pAig, pAigNew, pObj ), (char *)Vec_PtrEntry(vecPiNames, i) );
2556
2557 Saig_ManForEachLo( pAigNew, pObj, i )
2558 assert( strcmp( (char *)Vec_PtrEntry(vecLoNames, i), retrieveLOName( pNtk, pAig, pAigNew, pObj, vLive, vFair ) ) == 0 );
2559#endif
2560#endif
2561
2562 return 0;
2563
2564usage:
2565 fprintf( stdout, "usage: l3s [-1lsh]\n" );
2566 fprintf( stdout, "\t performs Armin Biere's live-to-safe transformation\n" );
2567 fprintf( stdout, "\t-1 : no shadow logic, presume all loops are self loops\n");
2568 fprintf( stdout, "\t-l : ignore liveness and fairness outputs\n");
2569 fprintf( stdout, "\t-s : ignore safety assertions and assumptions\n");
2570 fprintf( stdout, "\t-h : print command usage\n");
2571 return 1;
2572}
Aig_Man_t * LivenessToSafetyTransformationWithLTL(int mode, Abc_Ntk_t *pNtk, Aig_Man_t *p, Vec_Ptr_t *vLive, Vec_Ptr_t *vFair, Vec_Ptr_t *vAssertSafety, Vec_Ptr_t *vAssumeSafety, int *numLtlProcessed, Vec_Ptr_t *ltlBuffer)
Definition liveness.c:1798
VOID_HACK exit()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_CommandCexMin()

int Abc_CommandCexMin ( Abc_Frame_t * pAbc,
int argc,
char ** argv )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 32479 of file abc.c.

32480{
32481 Abc_Ntk_t * pNtk;
32482 Abc_Cex_t * vCexNew = NULL;
32483 int c;
32484 int nConfLimit = 1000;
32485 int nRounds = 1;
32486 int fVerbose = 0;
32488 while ( ( c = Extra_UtilGetopt( argc, argv, "CRvh" ) ) != EOF )
32489 {
32490 switch ( c )
32491 {
32492 case 'C':
32493 if ( globalUtilOptind >= argc )
32494 {
32495 Abc_Print( -1, "Command line switch \"-C\" should be followed by an integer.\n" );
32496 goto usage;
32497 }
32498 nConfLimit = atoi(argv[globalUtilOptind]);
32500 if ( nConfLimit < 0 )
32501 goto usage;
32502 break;
32503 case 'R':
32504 if ( globalUtilOptind >= argc )
32505 {
32506 Abc_Print( -1, "Command line switch \"-R\" should be followed by an integer.\n" );
32507 goto usage;
32508 }
32509 nRounds = atoi(argv[globalUtilOptind]);
32511 if ( nRounds < 0 )
32512 goto usage;
32513 break;
32514 case 'v':
32515 fVerbose ^= 1;
32516 break;
32517 case 'h':
32518 goto usage;
32519 default:
32520 Abc_Print( -2, "Unknown switch.\n");
32521 goto usage;
32522 }
32523 }
32524
32525 if ( pAbc->pCex == NULL )
32526 {
32527 Abc_Print( 1, "There is no current cex.\n");
32528 return 0;
32529 }
32530
32531 // check the main AIG
32532 pNtk = Abc_FrameReadNtk(pAbc);
32533 if ( pNtk == NULL )
32534 Abc_Print( 1, "Main AIG: There is no current network.\n");
32535 else if ( !Abc_NtkIsStrash(pNtk) )
32536 Abc_Print( 1, "Main AIG: The current network is not an AIG.\n");
32537 else if ( Abc_NtkPiNum(pNtk) != pAbc->pCex->nPis )
32538 Abc_Print( 1, "Main AIG: The number of PIs (%d) is different from cex (%d).\n", Abc_NtkPiNum(pNtk), pAbc->pCex->nPis );
32539// else if ( Abc_NtkLatchNum(pNtk) != pAbc->pCex->nRegs )
32540// Abc_Print( 1, "Main AIG: The number of registers (%d) is different from cex (%d).\n", Abc_NtkLatchNum(pNtk), pAbc->pCex->nRegs );
32541// else if ( Abc_NtkPoNum(pNtk) <= pAbc->pCex->iPo )
32542// Abc_Print( 1, "Main AIG: The number of POs (%d) is less than the PO index in cex (%d).\n", Abc_NtkPoNum(pNtk), pAbc->pCex->iPo );
32543 else
32544 {
32545 Aig_Man_t * pAig = Abc_NtkToDar( pNtk, 0, 1 );
32546 Gia_Man_t * pGia = Gia_ManFromAigSimple( pAig );
32547// if ( !Gia_ManVerifyCex( pGia, pAbc->pCex, 0 ) )
32548 int iPoOld = pAbc->pCex->iPo;
32549 pAbc->pCex->iPo = Gia_ManFindFailedPoCex( pGia, pAbc->pCex, 0 );
32550 Gia_ManStop( pGia );
32551 if ( pAbc->pCex->iPo == -1 )
32552 {
32553 pAbc->pCex->iPo = iPoOld;
32554 Abc_Print( -1, "Main AIG: The cex does not fail any outputs.\n" );
32555 return 0;
32556 }
32557 else if ( iPoOld != pAbc->pCex->iPo )
32558 Abc_Print( 0, "Main AIG: The cex refined PO %d instead of PO %d.\n", pAbc->pCex->iPo, iPoOld );
32559 // perform minimization
32560 vCexNew = Saig_ManCexMinPerform( pAig, pAbc->pCex );
32561 Aig_ManStop( pAig );
32562 Abc_CexFree( vCexNew );
32563// Abc_FrameReplaceCex( pAbc, &vCexNew );
32564
32565// Abc_Print( 1,"Implementation of this command is not finished.\n" );
32566 }
32567 return 0;
32568
32569usage:
32570 Abc_Print( -2, "usage: cexmin [-CR num] [-vh]\n" );
32571 Abc_Print( -2, "\t reduces the length of the counter-example\n" );
32572 Abc_Print( -2, "\t-C num : the maximum number of conflicts [default = %d]\n", nConfLimit );
32573 Abc_Print( -2, "\t-R num : the number of minimization rounds [default = %d]\n", nRounds );
32574 Abc_Print( -2, "\t-v : toggle printing optimization summary [default = %s]\n", fVerbose? "yes": "no" );
32575 Abc_Print( -2, "\t-h : print the command usage\n");
32576 return 1;
32577}
Aig_Man_t * Abc_NtkToDar(Abc_Ntk_t *pNtk, int fExors, int fRegisters)
Definition abcDar.c:237
void Aig_ManStop(Aig_Man_t *p)
Definition aigMan.c:187
Abc_Cex_t * Saig_ManCexMinPerform(Aig_Man_t *pAig, Abc_Cex_t *pCex)
Definition bmcCexMin1.c:547
Gia_Man_t * Gia_ManFromAigSimple(Aig_Man_t *p)
Definition giaAig.c:212
void Gia_ManStop(Gia_Man_t *p)
Definition giaMan.c:82
int Gia_ManFindFailedPoCex(Gia_Man_t *pAig, Abc_Cex_t *p, int nOutputs)
Definition giaCex.c:91
void Abc_CexFree(Abc_Cex_t *p)
Definition utilCex.c:382
Here is the call graph for this function:

◆ Abc_CommandCS_kLiveness()

int Abc_CommandCS_kLiveness ( Abc_Frame_t * pAbc,
int argc,
char ** argv )
extern

Definition at line 525 of file kliveness.c.

526{
527 Abc_Ntk_t * pNtk, * pNtkTemp;
528 Aig_Man_t * pAig, *pAigCS, *pAigCSNew;
529 int absorberCount;
530 int absorberLimit = 500;
531 int RetValue;
532 int liveIndex_0 = -1, liveIndex_k = -1;
533 int fVerbose = 1;
534 int directive = -1;
535 int c;
536 int safetyInvariantPO = -1;
537 abctime beginTime, endTime;
538 double time_spent;
539 Vec_Ptr_t *vMasterBarrierDisjuncts = NULL;
540 Aig_Man_t *pWorkingAig;
541 //FILE *fp;
542
543 pNtk = Abc_FrameReadNtk(pAbc);
544
545 //fp = fopen("propFile.txt", "r");
546 //if( fp )
547 // getVecOfVecFairness(fp);
548 //exit(0);
549
550 /*************************************************
551 Extraction of Command Line Argument
552 *************************************************/
553 if( argc == 1 )
554 {
555 assert( directive == -1 );
556 directive = SIMPLE_kCS;
557 }
558 else
559 {
561 while ( ( c = Extra_UtilGetopt( argc, argv, "cmCgh" ) ) != EOF )
562 {
563 switch( c )
564 {
565 case 'c':
566 directive = kCS_WITH_SAFETY_INVARIANTS;
567 break;
568 case 'm':
570 break;
571 case 'C':
573 break;
574 case 'g':
576 break;
577 case 'h':
578 goto usage;
579 break;
580 default:
581 goto usage;
582 }
583 }
584 }
585 /*************************************************
586 Extraction of Command Line Argument Ends
587 *************************************************/
588
589 if( !Abc_NtkIsStrash( pNtk ) )
590 {
591 printf("The input network was not strashed, strashing....\n");
592 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
593 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
594 }
595 else
596 {
597 pAig = Abc_NtkToDar( pNtk, 0, 1 );
598 pNtkTemp = pNtk;
599 }
600
601 if( directive == kCS_WITH_SAFETY_INVARIANTS )
602 {
603 safetyInvariantPO = collectSafetyInvariantPOIndex(pNtkTemp);
604 assert( safetyInvariantPO != -1 );
605 }
606
608 {
609 beginTime = Abc_Clock();
610 vMasterBarrierDisjuncts = findDisjunctiveMonotoneSignals( pNtk );
611 endTime = Abc_Clock();
612 time_spent = (double)(endTime - beginTime)/CLOCKS_PER_SEC;
613 printf("pre-processing time = %f\n",time_spent);
614 return 0;
615 }
616
618 {
619 safetyInvariantPO = collectSafetyInvariantPOIndex(pNtkTemp);
620 assert( safetyInvariantPO != -1 );
621
622 beginTime = Abc_Clock();
623 vMasterBarrierDisjuncts = findDisjunctiveMonotoneSignals( pNtk );
624 endTime = Abc_Clock();
625 time_spent = (double)(endTime - beginTime)/CLOCKS_PER_SEC;
626 printf("pre-processing time = %f\n",time_spent);
627
628 assert( vMasterBarrierDisjuncts != NULL );
629 assert( Vec_PtrSize(vMasterBarrierDisjuncts) > 0 );
630 }
631
633 {
634 safetyInvariantPO = collectSafetyInvariantPOIndex(pNtkTemp);
635 assert( safetyInvariantPO != -1 );
636
637 beginTime = Abc_Clock();
638 vMasterBarrierDisjuncts = collectUserGivenDisjunctiveMonotoneSignals( pNtk );
639 endTime = Abc_Clock();
640 time_spent = (double)(endTime - beginTime)/CLOCKS_PER_SEC;
641 printf("pre-processing time = %f\n",time_spent);
642
643 assert( vMasterBarrierDisjuncts != NULL );
644 assert( Vec_PtrSize(vMasterBarrierDisjuncts) > 0 );
645 }
646
648 {
649 assert( vMasterBarrierDisjuncts != NULL );
650 pWorkingAig = generateWorkingAigWithDSC( pAig, pNtk, &liveIndex_0, vMasterBarrierDisjuncts );
651 pAigCS = introduceAbsorberLogic(pWorkingAig, &liveIndex_0, &liveIndex_k, 0);
652 }
653 else
654 {
655 pWorkingAig = generateWorkingAig( pAig, pNtk, &liveIndex_0 );
656 pAigCS = introduceAbsorberLogic(pWorkingAig, &liveIndex_0, &liveIndex_k, 0);
657 }
658
659 Aig_ManStop(pWorkingAig);
660
661 for( absorberCount=1; absorberCount<absorberLimit; absorberCount++ )
662 {
663 //printf( "\nindex of the liveness output = %d\n", liveIndex_k );
664 RetValue = flipConePdr( pAigCS, directive, liveIndex_k, safetyInvariantPO, absorberCount );
665
666 if ( RetValue == 1 )
667 {
668 Abc_Print( 1, "k = %d, Property proved\n", absorberCount );
669 break;
670 }
671 else if ( RetValue == 0 )
672 {
673 if( fVerbose )
674 {
675 Abc_Print( 1, "k = %d, Property DISPROVED\n", absorberCount );
676 }
677 }
678 else if ( RetValue == -1 )
679 {
680 Abc_Print( 1, "Property UNDECIDED with k = %d.\n", absorberCount );
681 }
682 else
683 assert( 0 );
684
685 pAigCSNew = introduceAbsorberLogic(pAigCS, &liveIndex_0, &liveIndex_k, absorberCount);
686 Aig_ManStop(pAigCS);
687 pAigCS = pAigCSNew;
688 }
689
690 Aig_ManStop(pAigCS);
691 Aig_ManStop(pAig);
692
694 {
695 deallocateMasterBarrierDisjunctInt(vMasterBarrierDisjuncts);
696 }
697 else
698 {
699 //if(vMasterBarrierDisjuncts)
700 // Vec_PtrFree(vMasterBarrierDisjuncts);
701 //deallocateMasterBarrierDisjunctVecPtrVecInt(vMasterBarrierDisjuncts);
702 deallocateMasterBarrierDisjunctInt(vMasterBarrierDisjuncts);
703 }
704 return 0;
705
706 usage:
707 fprintf( stdout, "usage: kcs [-cmgCh]\n" );
708 fprintf( stdout, "\timplements Claessen-Sorensson's k-Liveness algorithm\n" );
709 fprintf( stdout, "\t-c : verification with constraints, looks for POs prefixed with csSafetyInvar_\n");
710 fprintf( stdout, "\t-m : discovers monotone signals\n");
711 fprintf( stdout, "\t-g : verification with user-supplied barriers, looks for POs prefixed with csLevel1Stabil_\n");
712 fprintf( stdout, "\t-C : verification with discovered monotone signals\n");
713 fprintf( stdout, "\t-h : print usage\n");
714 return 1;
715
716}
ABC_INT64_T abctime
Definition abc_global.h:332
Aig_Man_t * generateWorkingAig(Aig_Man_t *pAig, Abc_Ntk_t *pNtk, int *pIndex0Live)
int collectSafetyInvariantPOIndex(Abc_Ntk_t *pNtk)
Definition kliveness.c:425
#define SIMPLE_kCS
Definition kliveness.c:57
ABC_NAMESPACE_IMPL_START Aig_Man_t * Abc_NtkToDar(Abc_Ntk_t *pNtk, int fExors, int fRegisters)
DECLARATIONS ///.
Definition abcDar.c:237
int flipConePdr(Aig_Man_t *pAig, int directive, int targetCSPropertyIndex, int safetyInvariantPOIndex, int absorberCount)
Definition kliveness.c:341
#define kCS_WITH_SAFETY_AND_USER_GIVEN_DCS_INVARIANTS
Definition kliveness.c:61
Vec_Ptr_t * findDisjunctiveMonotoneSignals(Abc_Ntk_t *pNtk)
Vec_Ptr_t * collectUserGivenDisjunctiveMonotoneSignals(Abc_Ntk_t *pNtk)
Definition kliveness.c:439
#define kCS_WITH_SAFETY_AND_DCS_INVARIANTS
Definition kliveness.c:60
Aig_Man_t * introduceAbsorberLogic(Aig_Man_t *pAig, int *pLiveIndex_0, int *pLiveIndex_k, int nonFirstIteration)
Definition kliveness.c:175
#define kCS_WITH_DISCOVER_MONOTONE_SIGNALS
Definition kliveness.c:59
Aig_Man_t * generateWorkingAigWithDSC(Aig_Man_t *pAig, Abc_Ntk_t *pNtk, int *pIndex0Live, Vec_Ptr_t *vMasterBarriers)
#define kCS_WITH_SAFETY_INVARIANTS
Definition kliveness.c:58
void deallocateMasterBarrierDisjunctInt(Vec_Ptr_t *vMasterBarrierDisjunctsArg)
Definition kliveness.c:463
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_CommandNChooseK()

int Abc_CommandNChooseK ( Abc_Frame_t * pAbc,
int argc,
char ** argv )
extern

Definition at line 718 of file kliveness.c.

719{
720 Abc_Ntk_t * pNtk, * pNtkTemp, *pNtkCombStabil;
721 Aig_Man_t * pAig, *pAigCombStabil;
722 int directive = -1;
723 int c;
724 int parameterizedCombK;
725
726 pNtk = Abc_FrameReadNtk(pAbc);
727
728
729 /*************************************************
730 Extraction of Command Line Argument
731 *************************************************/
732 if( argc == 1 )
733 {
734 assert( directive == -1 );
735 directive = SIMPLE_kCS;
736 }
737 else
738 {
740 while ( ( c = Extra_UtilGetopt( argc, argv, "cmCgh" ) ) != EOF )
741 {
742 switch( c )
743 {
744 case 'c':
745 directive = kCS_WITH_SAFETY_INVARIANTS;
746 break;
747 case 'm':
749 break;
750 case 'C':
752 break;
753 case 'g':
755 break;
756 case 'h':
757 goto usage;
758 break;
759 default:
760 goto usage;
761 }
762 }
763 }
764 /*************************************************
765 Extraction of Command Line Argument Ends
766 *************************************************/
767
768 if( !Abc_NtkIsStrash( pNtk ) )
769 {
770 printf("The input network was not strashed, strashing....\n");
771 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
772 pAig = Abc_NtkToDar( pNtkTemp, 0, 1 );
773 }
774 else
775 {
776 pAig = Abc_NtkToDar( pNtk, 0, 1 );
777 pNtkTemp = pNtk;
778 }
779
780/**********************Code for generation of nCk outputs**/
781 //combCount = countCombination(1000, 3);
782 //pAigCombStabil = generateDisjunctiveTester( pNtk, pAig, 7, 2 );
783 printf("Enter parameterizedCombK = " );
784 if( scanf("%d", &parameterizedCombK) != 1 )
785 {
786 printf("\nFailed to read integer!\n");
787 return 0;
788 }
789 printf("\n");
790
791 pAigCombStabil = generateGeneralDisjunctiveTester( pNtk, pAig, parameterizedCombK );
792 Aig_ManPrintStats(pAigCombStabil);
793 pNtkCombStabil = Abc_NtkFromAigPhase( pAigCombStabil );
794 pNtkCombStabil->pName = Abc_UtilStrsav( pAigCombStabil->pName );
795 if ( !Abc_NtkCheck( pNtkCombStabil ) )
796 fprintf( stdout, "Abc_NtkCreateCone(): Network check has failed.\n" );
797 Abc_FrameSetCurrentNetwork( pAbc, pNtkCombStabil );
798
799 Aig_ManStop( pAigCombStabil );
800 Aig_ManStop( pAig );
801
802 return 1;
803 //printf("\ncombCount = %d\n", combCount);
804 //exit(0);
805/**********************************************************/
806
807 usage:
808 fprintf( stdout, "usage: nck [-cmgCh]\n" );
809 fprintf( stdout, "\tgenerates combinatorial signals for stabilization\n" );
810 fprintf( stdout, "\t-h : print usage\n");
811 return 1;
812
813}
Aig_Man_t * generateGeneralDisjunctiveTester(Abc_Ntk_t *pNtk, Aig_Man_t *pAig, int combK)
Abc_Ntk_t * Abc_NtkFromAigPhase(Aig_Man_t *pMan)
DECLARATIONS ///.
Definition abcDar.c:595
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_End()

void Abc_End ( Abc_Frame_t * pAbc)

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 1504 of file abc.c.

1505{
1508 Cnf_ManFree();
1509 {
1510 extern int Abc_NtkCompareAndSaveBest( Abc_Ntk_t * pNtk );
1512 }
1513 {
1514 extern void Dar_LibStop();
1515 Dar_LibStop();
1516 }
1517 {
1518 extern void Aig_RManQuit();
1519 Aig_RManQuit();
1520 }
1521 {
1522 extern void Npn_ManClean();
1523 Npn_ManClean();
1524 }
1525 {
1526 extern void Sdm_ManQuit();
1527 Sdm_ManQuit();
1528 }
1530 Gia_ManStopP( &pAbc->pGia );
1531 Gia_ManStopP( &pAbc->pGia2 );
1532 Gia_ManStopP( &pAbc->pGiaBest );
1533 Gia_ManStopP( &pAbc->pGiaBest2 );
1534 Gia_ManStopP( &pAbc->pGiaSaved );
1535 if ( Abc_NtkRecIsRunning3() )
1537}
void Npn_ManClean()
Definition abcNpnSave.c:649
int Abc_NtkCompareAndSaveBest(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcPrint.c:69
void Abc_FrameClearDesign()
Definition abc.c:809
ABC_DLL void Abc_NtkRecStop3()
Definition abcRec3.c:1421
ABC_DLL int Abc_NtkRecIsRunning3()
Definition abcRec3.c:1395
ABC_DLL void Abc_NtkFraigStoreClean()
Definition abcFraig.c:766
typedefABC_NAMESPACE_HEADER_START struct Abc_Frame_t_ Abc_Frame_t
INCLUDES ///.
Definition abcapis.h:38
ABC_DLL Abc_Frame_t * Abc_FrameGetGlobalFrame()
Definition mainFrame.c:643
void Aig_RManQuit()
Definition aigCanon.c:283
void Cnf_ManFree()
Definition cnfCore.c:58
void Dar_LibStop()
Definition darLib.c:615
void Sdm_ManQuit()
void Gia_ManStopP(Gia_Man_t **p)
Definition giaMan.c:224
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_FrameClearDesign()

void Abc_FrameClearDesign ( )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 809 of file abc.c.

810{
811}
Here is the caller graph for this function:

◆ Abc_FrameDeriveStatusArray()

Vec_Int_t * Abc_FrameDeriveStatusArray ( Vec_Ptr_t * vCexes)

Function*************************************************************

Synopsis [Derives array of statuses from the array of CEXes.]

Description []

SideEffects []

SeeAlso []

Definition at line 764 of file abc.c.

765{
766 Vec_Int_t * vStatuses;
767 Abc_Cex_t * pCex;
768 int i;
769 if ( vCexes == NULL )
770 return NULL;
771 vStatuses = Vec_IntAlloc( Vec_PtrSize(vCexes) );
772 Vec_IntFill( vStatuses, Vec_PtrSize(vCexes), -1 ); // assume UNDEC
773 Vec_PtrForEachEntry( Abc_Cex_t *, vCexes, pCex, i )
774 if ( pCex != NULL )
775 Vec_IntWriteEntry( vStatuses, i, 0 ); // set this output as SAT
776 return vStatuses;
777}
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition vecPtr.h:55

◆ Abc_FrameDeriveStatusArray2()

Vec_Int_t * Abc_FrameDeriveStatusArray2 ( Vec_Ptr_t * vCexes)

Definition at line 778 of file abc.c.

779{
780 Vec_Int_t * vStatuses;
781 Abc_Cex_t * pCex;
782 int i;
783 if ( vCexes == NULL )
784 return NULL;
785 vStatuses = Vec_IntAlloc( Vec_PtrSize(vCexes) );
786 Vec_IntFill( vStatuses, Vec_PtrSize(vCexes), -1 ); // assume UNDEC
787 Vec_PtrForEachEntry( Abc_Cex_t *, vCexes, pCex, i )
788 if ( pCex == (Abc_Cex_t *)(ABC_PTRINT_T)1 )
789 {
790 Vec_IntWriteEntry( vStatuses, i, 1 ); // set this output as UNSAT
791 Vec_PtrWriteEntry( vCexes, i, NULL );
792 }
793 else if ( pCex != NULL )
794 Vec_IntWriteEntry( vStatuses, i, 0 ); // set this output as SAT
795 return vStatuses;
796}

◆ Abc_FrameGetGia()

Gia_Man_t * Abc_FrameGetGia ( Abc_Frame_t * pAbc)

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 869 of file abc.c.

870{
871 Gia_Man_t * pGia;
872 if ( pAbc->pGia2 )
873 Gia_ManStop( pAbc->pGia2 );
874 pAbc->pGia2 = NULL;
875 pGia = pAbc->pGia;
876 pAbc->pGia = NULL;
877 return pGia;
878}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_FrameReplaceCex()

void Abc_FrameReplaceCex ( Abc_Frame_t * pAbc,
Abc_Cex_t ** ppCex )

FUNCTION DEFINITIONS ///.

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 679 of file abc.c.

680{
681 // update CEX
682 ABC_FREE( pAbc->pCex );
683 pAbc->pCex = *ppCex;
684 *ppCex = NULL;
685 // remove CEX vector
686 if ( pAbc->vCexVec )
687 {
688 Vec_PtrFreeFree( pAbc->vCexVec );
689 pAbc->vCexVec = NULL;
690 }
691}
Here is the caller graph for this function:

◆ Abc_FrameReplaceCexVec()

void Abc_FrameReplaceCexVec ( Abc_Frame_t * pAbc,
Vec_Ptr_t ** pvCexVec )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 704 of file abc.c.

705{
706 // update CEX vector
707 if ( pAbc->vCexVec )
708 Vec_PtrFreeFree( pAbc->vCexVec );
709 pAbc->vCexVec = *pvCexVec;
710 *pvCexVec = NULL;
711 // remove CEX
712 ABC_FREE( pAbc->pCex );
713}
Here is the caller graph for this function:

◆ Abc_FrameReplacePoEquivs()

void Abc_FrameReplacePoEquivs ( Abc_Frame_t * pAbc,
Vec_Ptr_t ** pvPoEquivs )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 726 of file abc.c.

727{
728 if ( pAbc->vPoEquivs )
729 Vec_VecFree( (Vec_Vec_t *)pAbc->vPoEquivs );
730 pAbc->vPoEquivs = *pvPoEquivs;
731 *pvPoEquivs = NULL;
732}
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
Definition vecVec.h:42
Here is the caller graph for this function:

◆ Abc_FrameReplacePoStatuses()

void Abc_FrameReplacePoStatuses ( Abc_Frame_t * pAbc,
Vec_Int_t ** pvStatuses )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 745 of file abc.c.

746{
747 if ( pAbc->vStatuses )
748 Vec_IntFree( pAbc->vStatuses );
749 pAbc->vStatuses = *pvStatuses;
750 *pvStatuses = NULL;
751}

◆ Abc_FrameUpdateGia()

void Abc_FrameUpdateGia ( Abc_Frame_t * pAbc,
Gia_Man_t * pNew )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 824 of file abc.c.

825{
826 if ( pNew == NULL )
827 {
828 Abc_Print( -1, "Abc_FrameUpdateGia(): Transformation has failed.\n" );
829 return;
830 }
831 if ( Gia_ManPoNum(pNew) == 0 )
832 Abc_Print( 0, "The current GIA has no primary outputs. Some commands may not work correctly.\n" );
833 if ( pNew == pAbc->pGia )
834 return;
835 // transfer names
836 if (!pNew->vNamesIn && pAbc->pGia && pAbc->pGia->vNamesIn && Gia_ManCiNum(pNew) == Vec_PtrSize(pAbc->pGia->vNamesIn))
837 {
838 pNew->vNamesIn = pAbc->pGia->vNamesIn;
839 pAbc->pGia->vNamesIn = NULL;
840 }
841 if (!pNew->vNamesOut && pAbc->pGia && pAbc->pGia->vNamesOut && Gia_ManCoNum(pNew) == Vec_PtrSize(pAbc->pGia->vNamesOut))
842 {
843 pNew->vNamesOut = pAbc->pGia->vNamesOut;
844 pAbc->pGia->vNamesOut = NULL;
845 }
846 if (!pNew->vNamesNode && pAbc->pGia && pAbc->pGia->vNamesNode && Gia_ManObjNum(pNew) == Vec_PtrSize(pAbc->pGia->vNamesNode))
847 {
848 pNew->vNamesNode = pAbc->pGia->vNamesNode;
849 pAbc->pGia->vNamesNode = NULL;
850 }
851 // update
852 if ( pAbc->pGia2 )
853 Gia_ManStop( pAbc->pGia2 );
854 pAbc->pGia2 = pAbc->pGia;
855 pAbc->pGia = pNew;
856}
Vec_Ptr_t * vNamesIn
Definition gia.h:181
Vec_Ptr_t * vNamesOut
Definition gia.h:182
Vec_Ptr_t * vNamesNode
Definition gia.h:183
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_Init()

void Abc_Init ( Abc_Frame_t * pAbc)

DECLARATIONS ///.

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 892 of file abc.c.

893{
894 Cmd_CommandAdd( pAbc, "Printing", "ps", Abc_CommandPrintStats, 0 );
895 Cmd_CommandAdd( pAbc, "Printing", "print_stats", Abc_CommandPrintStats, 0 );
896 Cmd_CommandAdd( pAbc, "Printing", "print_exdc", Abc_CommandPrintExdc, 0 );
897 Cmd_CommandAdd( pAbc, "Printing", "print_io", Abc_CommandPrintIo, 0 );
898 Cmd_CommandAdd( pAbc, "Printing", "print_latch", Abc_CommandPrintLatch, 0 );
899 Cmd_CommandAdd( pAbc, "Printing", "pfan", Abc_CommandPrintFanio, 0 );
900 Cmd_CommandAdd( pAbc, "Printing", "print_fanio", Abc_CommandPrintFanio, 0 );
901 Cmd_CommandAdd( pAbc, "Printing", "print_mffc", Abc_CommandPrintMffc, 0 );
902 Cmd_CommandAdd( pAbc, "Printing", "pf", Abc_CommandPrintFactor, 0 );
903 Cmd_CommandAdd( pAbc, "Printing", "print_factor", Abc_CommandPrintFactor, 0 );
904 Cmd_CommandAdd( pAbc, "Printing", "print_level", Abc_CommandPrintLevel, 0 );
905 Cmd_CommandAdd( pAbc, "Printing", "psu", Abc_CommandPrintSupport, 0 );
906 Cmd_CommandAdd( pAbc, "Printing", "print_supp", Abc_CommandPrintSupport, 0 );
907#ifdef ABC_USE_CUDD
908 Cmd_CommandAdd( pAbc, "Printing", "print_mint", Abc_CommandPrintMint, 0 );
909#endif
910 Cmd_CommandAdd( pAbc, "Printing", "print_symm", Abc_CommandPrintSymms, 0 );
911 Cmd_CommandAdd( pAbc, "Printing", "print_unate", Abc_CommandPrintUnate, 0 );
912 Cmd_CommandAdd( pAbc, "Printing", "print_auto", Abc_CommandPrintAuto, 0 );
913 Cmd_CommandAdd( pAbc, "Printing", "print_kmap", Abc_CommandPrintKMap, 0 );
914 Cmd_CommandAdd( pAbc, "Printing", "pg", Abc_CommandPrintGates, 0 );
915 Cmd_CommandAdd( pAbc, "Printing", "print_gates", Abc_CommandPrintGates, 0 );
916 Cmd_CommandAdd( pAbc, "Printing", "print_sharing", Abc_CommandPrintSharing, 0 );
917 Cmd_CommandAdd( pAbc, "Printing", "print_xcut", Abc_CommandPrintXCut, 0 );
918 Cmd_CommandAdd( pAbc, "Printing", "print_dsd", Abc_CommandPrintDsd, 0 );
919 Cmd_CommandAdd( pAbc, "Printing", "print_cone", Abc_CommandPrintCone, 0 );
920 Cmd_CommandAdd( pAbc, "Printing", "print_miter", Abc_CommandPrintMiter, 0 );
921 Cmd_CommandAdd( pAbc, "Printing", "print_status", Abc_CommandPrintStatus, 0 );
922 Cmd_CommandAdd( pAbc, "Printing", "print_delay", Abc_CommandPrintDelay, 0 );
923
924 Cmd_CommandAdd( pAbc, "Printing", "show", Abc_CommandShow, 0 );
925 Cmd_CommandAdd( pAbc, "Printing", "show_bdd", Abc_CommandShowBdd, 0 );
926 Cmd_CommandAdd( pAbc, "Printing", "show_cut", Abc_CommandShowCut, 0 );
927
928 Cmd_CommandAdd( pAbc, "Synthesis", "clp", Abc_CommandCollapse, 1 );
929 Cmd_CommandAdd( pAbc, "Synthesis", "collapse", Abc_CommandCollapse, 1 );
930 Cmd_CommandAdd( pAbc, "Synthesis", "satclp", Abc_CommandSatClp, 1 );
931 Cmd_CommandAdd( pAbc, "Synthesis", "st", Abc_CommandStrash, 1 );
932 Cmd_CommandAdd( pAbc, "Synthesis", "strash", Abc_CommandStrash, 1 );
933 Cmd_CommandAdd( pAbc, "Synthesis", "b", Abc_CommandBalance, 1 );
934 Cmd_CommandAdd( pAbc, "Synthesis", "balance", Abc_CommandBalance, 1 );
935 Cmd_CommandAdd( pAbc, "Synthesis", "mux_struct", Abc_CommandMuxStruct, 1 );
936 Cmd_CommandAdd( pAbc, "Synthesis", "multi", Abc_CommandMulti, 1 );
937 Cmd_CommandAdd( pAbc, "Synthesis", "renode", Abc_CommandRenode, 1 );
938 Cmd_CommandAdd( pAbc, "Synthesis", "cleanup", Abc_CommandCleanup, 1 );
939 Cmd_CommandAdd( pAbc, "Synthesis", "sweep", Abc_CommandSweep, 1 );
940 Cmd_CommandAdd( pAbc, "Synthesis", "fx", Abc_CommandFastExtract, 1 );
941 Cmd_CommandAdd( pAbc, "Synthesis", "fxch", Abc_CommandFxch, 1 );
942 Cmd_CommandAdd( pAbc, "Synthesis", "eliminate", Abc_CommandEliminate, 1 );
943 Cmd_CommandAdd( pAbc, "Synthesis", "dsd", Abc_CommandDisjoint, 1 );
944 Cmd_CommandAdd( pAbc, "Synthesis", "sparsify", Abc_CommandSparsify, 1 );
945 Cmd_CommandAdd( pAbc, "Synthesis", "lutpack", Abc_CommandLutpack, 1 );
946 Cmd_CommandAdd( pAbc, "Synthesis", "lutmin", Abc_CommandLutmin, 1 );
947// Cmd_CommandAdd( pAbc, "Synthesis", "imfs", Abc_CommandImfs, 1 );
948 Cmd_CommandAdd( pAbc, "Synthesis", "mfs", Abc_CommandMfs, 1 );
949 Cmd_CommandAdd( pAbc, "Synthesis", "mfs2", Abc_CommandMfs2, 1 );
950 Cmd_CommandAdd( pAbc, "Synthesis", "mfs3", Abc_CommandMfs3, 1 );
951 Cmd_CommandAdd( pAbc, "Synthesis", "mfse", Abc_CommandMfse, 1 );
952 Cmd_CommandAdd( pAbc, "Synthesis", "logicpush", Abc_CommandLogicPush, 1 );
953 Cmd_CommandAdd( pAbc, "Synthesis", "trace", Abc_CommandTrace, 0 );
954 Cmd_CommandAdd( pAbc, "Synthesis", "glitch", Abc_CommandGlitch, 0 );
955 Cmd_CommandAdd( pAbc, "Synthesis", "speedup", Abc_CommandSpeedup, 1 );
956 Cmd_CommandAdd( pAbc, "Synthesis", "powerdown", Abc_CommandPowerdown, 1 );
957 Cmd_CommandAdd( pAbc, "Synthesis", "addbuffs", Abc_CommandAddBuffs, 1 );
958 Cmd_CommandAdd( pAbc, "Synthesis", "merge", Abc_CommandMerge, 1 );
959 Cmd_CommandAdd( pAbc, "Synthesis", "testdec", Abc_CommandTestDec, 0 );
960 Cmd_CommandAdd( pAbc, "Synthesis", "testnpn", Abc_CommandTestNpn, 0 );
961 Cmd_CommandAdd( pAbc, "LogiCS", "testrpo", Abc_CommandTestRPO, 0 );
962 Cmd_CommandAdd( pAbc, "Synthesis", "testtruth", Abc_CommandTestTruth, 0 );
963 Cmd_CommandAdd( pAbc, "Synthesis", "testsupp", Abc_CommandTestSupp, 0 );
964 Cmd_CommandAdd( pAbc, "Synthesis", "testrand", Abc_CommandTestRand, 0 );
965 Cmd_CommandAdd( pAbc, "Synthesis", "runsat", Abc_CommandRunSat, 0 );
966 Cmd_CommandAdd( pAbc, "Synthesis", "runeco", Abc_CommandRunEco, 0 );
967 Cmd_CommandAdd( pAbc, "Synthesis", "rungen", Abc_CommandRunGen, 0 );
968 Cmd_CommandAdd( pAbc, "Synthesis", "runscript", Abc_CommandRunScript, 0 );
969 Cmd_CommandAdd( pAbc, "Synthesis", "xec", Abc_CommandRunTest, 0 );
970
971 Cmd_CommandAdd( pAbc, "Synthesis", "rewrite", Abc_CommandRewrite, 1 );
972 Cmd_CommandAdd( pAbc, "Synthesis", "refactor", Abc_CommandRefactor, 1 );
973// Cmd_CommandAdd( pAbc, "Synthesis", "restructure", Abc_CommandRestructure, 1 );
974 Cmd_CommandAdd( pAbc, "Synthesis", "resub", Abc_CommandResubstitute, 1 );
975 Cmd_CommandAdd( pAbc, "Synthesis", "resub_unate", Abc_CommandResubUnate, 1 );
976 Cmd_CommandAdd( pAbc, "Synthesis", "resub_core", Abc_CommandResubCore, 1 );
977 Cmd_CommandAdd( pAbc, "Synthesis", "resub_check", Abc_CommandResubCheck, 0 );
978// Cmd_CommandAdd( pAbc, "Synthesis", "rr", Abc_CommandRr, 1 );
979 Cmd_CommandAdd( pAbc, "Synthesis", "cascade", Abc_CommandCascade, 1 );
980 Cmd_CommandAdd( pAbc, "Synthesis", "lutcasdec", Abc_CommandLutCasDec, 1 );
981 Cmd_CommandAdd( pAbc, "Synthesis", "lutcas", Abc_CommandLutCas, 1 );
982 Cmd_CommandAdd( pAbc, "Synthesis", "bseval", Abc_CommandBsEval, 0 );
983 Cmd_CommandAdd( pAbc, "Synthesis", "extract", Abc_CommandExtract, 1 );
984 Cmd_CommandAdd( pAbc, "Synthesis", "varmin", Abc_CommandVarMin, 0 );
985 Cmd_CommandAdd( pAbc, "Synthesis", "faultclasses", Abc_CommandFaultClasses, 0 );
986 Cmd_CommandAdd( pAbc, "Synthesis", "exact", Abc_CommandExact, 1 );
987 Cmd_CommandAdd( pAbc, "Synthesis", "orchestrate", Abc_CommandOrchestrate, 1 );
988 Cmd_CommandAdd( pAbc, "Synthesis", "aigaug", Abc_CommandAIGAugmentation, 1 );
989
990 Cmd_CommandAdd( pAbc, "Exact synthesis", "bms_start", Abc_CommandBmsStart, 0 );
991 Cmd_CommandAdd( pAbc, "Exact synthesis", "bms_stop", Abc_CommandBmsStop, 0 );
992 Cmd_CommandAdd( pAbc, "Exact synthesis", "bms_ps", Abc_CommandBmsPs, 0 );
993 Cmd_CommandAdd( pAbc, "Exact synthesis", "majexact", Abc_CommandMajExact, 0 );
994 Cmd_CommandAdd( pAbc, "Exact synthesis", "twoexact", Abc_CommandTwoExact, 0 );
995 Cmd_CommandAdd( pAbc, "Exact synthesis", "lutexact", Abc_CommandLutExact, 0 );
996 Cmd_CommandAdd( pAbc, "Exact synthesis", "allexact", Abc_CommandAllExact, 0 );
997 Cmd_CommandAdd( pAbc, "Exact synthesis", "testexact", Abc_CommandTestExact, 0 );
998 Cmd_CommandAdd( pAbc, "Exact synthesis", "majgen", Abc_CommandMajGen, 0 );
999
1000 Cmd_CommandAdd( pAbc, "Various", "logic", Abc_CommandLogic, 1 );
1001 Cmd_CommandAdd( pAbc, "Various", "comb", Abc_CommandComb, 1 );
1002 Cmd_CommandAdd( pAbc, "Various", "miter", Abc_CommandMiter, 1 );
1003 Cmd_CommandAdd( pAbc, "Various", "miter2", Abc_CommandMiter2, 1 );
1004 Cmd_CommandAdd( pAbc, "Various", "demiter", Abc_CommandDemiter, 1 );
1005 Cmd_CommandAdd( pAbc, "Various", "orpos", Abc_CommandOrPos, 1 );
1006 Cmd_CommandAdd( pAbc, "Various", "andpos", Abc_CommandAndPos, 1 );
1007 Cmd_CommandAdd( pAbc, "Various", "zeropo", Abc_CommandZeroPo, 1 );
1008 Cmd_CommandAdd( pAbc, "Various", "swappos", Abc_CommandSwapPos, 1 );
1009 Cmd_CommandAdd( pAbc, "Various", "removepo", Abc_CommandRemovePo, 1 );
1010 Cmd_CommandAdd( pAbc, "Various", "dropsat", Abc_CommandDropSat, 1 );
1011 Cmd_CommandAdd( pAbc, "Various", "addpi", Abc_CommandAddPi, 1 );
1012 Cmd_CommandAdd( pAbc, "Various", "addflop", Abc_CommandAddFlop, 1 );
1013 Cmd_CommandAdd( pAbc, "Various", "append", Abc_CommandAppend, 1 );
1014 Cmd_CommandAdd( pAbc, "Various", "putontop", Abc_CommandPutOnTop, 1 );
1015 Cmd_CommandAdd( pAbc, "Various", "frames", Abc_CommandFrames, 1 );
1016 Cmd_CommandAdd( pAbc, "Various", "dframes", Abc_CommandDFrames, 1 );
1017 Cmd_CommandAdd( pAbc, "Various", "sop", Abc_CommandSop, 0 );
1018 Cmd_CommandAdd( pAbc, "Various", "bdd", Abc_CommandBdd, 0 );
1019 Cmd_CommandAdd( pAbc, "Various", "aig", Abc_CommandAig, 0 );
1020 Cmd_CommandAdd( pAbc, "Various", "reorder", Abc_CommandReorder, 0 );
1021 Cmd_CommandAdd( pAbc, "Various", "bidec", Abc_CommandBidec, 1 );
1022 Cmd_CommandAdd( pAbc, "Various", "order", Abc_CommandOrder, 0 );
1023 Cmd_CommandAdd( pAbc, "Various", "muxes", Abc_CommandMuxes, 1 );
1024 Cmd_CommandAdd( pAbc, "Various", "cubes", Abc_CommandCubes, 1 );
1025 Cmd_CommandAdd( pAbc, "Various", "expand", Abc_CommandExpand, 1 );
1026 Cmd_CommandAdd( pAbc, "Various", "splitsop", Abc_CommandSplitSop, 1 );
1027 Cmd_CommandAdd( pAbc, "Various", "ext_seq_dcs", Abc_CommandExtSeqDcs, 0 );
1028 Cmd_CommandAdd( pAbc, "Various", "reach", Abc_CommandReach, 0 );
1029 Cmd_CommandAdd( pAbc, "Various", "cone", Abc_CommandCone, 1 );
1030 Cmd_CommandAdd( pAbc, "Various", "node", Abc_CommandNode, 1 );
1031 Cmd_CommandAdd( pAbc, "Various", "range", Abc_CommandRange, 1 );
1032 Cmd_CommandAdd( pAbc, "Various", "cof", Abc_CommandCof, 1 );
1033 Cmd_CommandAdd( pAbc, "Various", "topmost", Abc_CommandTopmost, 1 );
1034 Cmd_CommandAdd( pAbc, "Various", "bottommost", Abc_CommandBottommost, 1 );
1035 Cmd_CommandAdd( pAbc, "Various", "topand", Abc_CommandTopAnd, 1 );
1036 Cmd_CommandAdd( pAbc, "Various", "trim", Abc_CommandTrim, 1 );
1037 Cmd_CommandAdd( pAbc, "Various", "short_names", Abc_CommandShortNames, 0 );
1038 Cmd_CommandAdd( pAbc, "Various", "move_names", Abc_CommandMoveNames, 0 );
1039 Cmd_CommandAdd( pAbc, "Various", "exdc_free", Abc_CommandExdcFree, 1 );
1040 Cmd_CommandAdd( pAbc, "Various", "exdc_get", Abc_CommandExdcGet, 1 );
1041 Cmd_CommandAdd( pAbc, "Various", "exdc_set", Abc_CommandExdcSet, 1 );
1042 Cmd_CommandAdd( pAbc, "Various", "care_set", Abc_CommandCareSet, 1 );
1043 Cmd_CommandAdd( pAbc, "Various", "cut", Abc_CommandCut, 0 );
1044 Cmd_CommandAdd( pAbc, "Various", "espresso", Abc_CommandEspresso, 1 );
1045 Cmd_CommandAdd( pAbc, "Various", "gen", Abc_CommandGen, 0 );
1046 Cmd_CommandAdd( pAbc, "Various", "gentf", Abc_CommandGenTF, 0 );
1047 Cmd_CommandAdd( pAbc, "Various", "genat", Abc_CommandGenAT, 0 );
1048 Cmd_CommandAdd( pAbc, "Various", "genfsm", Abc_CommandGenFsm, 0 );
1049 Cmd_CommandAdd( pAbc, "Various", "cover", Abc_CommandCover, 1 );
1050 Cmd_CommandAdd( pAbc, "Various", "double", Abc_CommandDouble, 1 );
1051 Cmd_CommandAdd( pAbc, "Various", "inter", Abc_CommandInter, 1 );
1052 Cmd_CommandAdd( pAbc, "Various", "bb2wb", Abc_CommandBb2Wb, 0 );
1053 Cmd_CommandAdd( pAbc, "Various", "outdec", Abc_CommandOutdec, 1 );
1054 Cmd_CommandAdd( pAbc, "Various", "nodedup", Abc_CommandNodeDup, 1 );
1055 Cmd_CommandAdd( pAbc, "Various", "wrap", Abc_CommandWrap, 0 );
1056 Cmd_CommandAdd( pAbc, "Various", "testcolor", Abc_CommandTestColor, 0 );
1057 Cmd_CommandAdd( pAbc, "Various", "test", Abc_CommandTest, 0 );
1058// Cmd_CommandAdd( pAbc, "Various", "qbf_solve", Abc_CommandTest, 0 );
1059
1060 Cmd_CommandAdd( pAbc, "Various", "qvar", Abc_CommandQuaVar, 1 );
1061 Cmd_CommandAdd( pAbc, "Various", "qrel", Abc_CommandQuaRel, 1 );
1062 Cmd_CommandAdd( pAbc, "Various", "qreach", Abc_CommandQuaReach, 1 );
1063 Cmd_CommandAdd( pAbc, "Various", "senseinput", Abc_CommandSenseInput, 1 );
1064 Cmd_CommandAdd( pAbc, "Various", "npnload", Abc_CommandNpnLoad, 0 );
1065 Cmd_CommandAdd( pAbc, "Various", "npnsave", Abc_CommandNpnSave, 0 );
1066
1067 Cmd_CommandAdd( pAbc, "Various", "send_aig", Abc_CommandSendAig, 0 );
1068 Cmd_CommandAdd( pAbc, "Various", "send_status", Abc_CommandSendStatus, 0 );
1069
1070 Cmd_CommandAdd( pAbc, "Various", "backup", Abc_CommandBackup, 0 );
1071 Cmd_CommandAdd( pAbc, "Various", "restore", Abc_CommandRestore, 0 );
1072
1073 Cmd_CommandAdd( pAbc, "Various", "minisat", Abc_CommandMinisat, 0 );
1074 Cmd_CommandAdd( pAbc, "Various", "minisimp", Abc_CommandMinisimp, 0 );
1075
1076 Cmd_CommandAdd( pAbc, "New AIG", "istrash", Abc_CommandIStrash, 1 );
1077 Cmd_CommandAdd( pAbc, "New AIG", "icut", Abc_CommandICut, 0 );
1078 Cmd_CommandAdd( pAbc, "New AIG", "irw", Abc_CommandIRewrite, 1 );
1079 Cmd_CommandAdd( pAbc, "New AIG", "drw", Abc_CommandDRewrite, 1 );
1080 Cmd_CommandAdd( pAbc, "New AIG", "drf", Abc_CommandDRefactor, 1 );
1081 Cmd_CommandAdd( pAbc, "New AIG", "dc2", Abc_CommandDc2, 1 );
1082 Cmd_CommandAdd( pAbc, "New AIG", "dchoice", Abc_CommandDChoice, 1 );
1083 Cmd_CommandAdd( pAbc, "New AIG", "dch", Abc_CommandDch, 1 );
1084 Cmd_CommandAdd( pAbc, "New AIG", "drwsat", Abc_CommandDrwsat, 1 );
1085 Cmd_CommandAdd( pAbc, "New AIG", "irws", Abc_CommandIRewriteSeq, 1 );
1086 Cmd_CommandAdd( pAbc, "New AIG", "iresyn", Abc_CommandIResyn, 1 );
1087 Cmd_CommandAdd( pAbc, "New AIG", "isat", Abc_CommandISat, 1 );
1088 Cmd_CommandAdd( pAbc, "New AIG", "ifraig", Abc_CommandIFraig, 1 );
1089 Cmd_CommandAdd( pAbc, "New AIG", "dfraig", Abc_CommandDFraig, 1 );
1090 Cmd_CommandAdd( pAbc, "New AIG", "csweep", Abc_CommandCSweep, 1 );
1091// Cmd_CommandAdd( pAbc, "New AIG", "haig", Abc_CommandHaig, 1 );
1092 Cmd_CommandAdd( pAbc, "New AIG", "qbf", Abc_CommandQbf, 0 );
1093
1094 Cmd_CommandAdd( pAbc, "Fraiging", "fraig", Abc_CommandFraig, 1 );
1095 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_trust", Abc_CommandFraigTrust, 1 );
1096 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_store", Abc_CommandFraigStore, 0 );
1097 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_restore", Abc_CommandFraigRestore, 1 );
1098 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_clean", Abc_CommandFraigClean, 0 );
1099 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_sweep", Abc_CommandFraigSweep, 1 );
1100 Cmd_CommandAdd( pAbc, "Fraiging", "dress", Abc_CommandFraigDress, 1 );
1101 Cmd_CommandAdd( pAbc, "Fraiging", "dump_equiv", Abc_CommandDumpEquiv, 0 );
1102
1103 Cmd_CommandAdd( pAbc, "Choicing", "rec_start3", Abc_CommandRecStart3, 0 );
1104 Cmd_CommandAdd( pAbc, "Choicing", "rec_stop3", Abc_CommandRecStop3, 0 );
1105 Cmd_CommandAdd( pAbc, "Choicing", "rec_ps3", Abc_CommandRecPs3, 0 );
1106 Cmd_CommandAdd( pAbc, "Choicing", "rec_add3", Abc_CommandRecAdd3, 0 );
1107 Cmd_CommandAdd( pAbc, "Choicing", "rec_dump3", Abc_CommandRecDump3, 0 );
1108 Cmd_CommandAdd( pAbc, "Choicing", "rec_merge3", Abc_CommandRecMerge3, 0 );
1109
1110 Cmd_CommandAdd( pAbc, "SC mapping", "map", Abc_CommandMap, 1 );
1111 Cmd_CommandAdd( pAbc, "SC mapping", "amap", Abc_CommandAmap, 1 );
1112 Cmd_CommandAdd( pAbc, "SC mapping", "phase_map", Abc_CommandPhaseMap, 1 );
1113 Cmd_CommandAdd( pAbc, "SC mapping", "stochmap", Abc_CommandStochMap, 1 );
1114 Cmd_CommandAdd( pAbc, "SC mapping", "unmap", Abc_CommandUnmap, 1 );
1115 Cmd_CommandAdd( pAbc, "SC mapping", "attach", Abc_CommandAttach, 1 );
1116 Cmd_CommandAdd( pAbc, "SC mapping", "superc", Abc_CommandSuperChoice, 1 );
1117 Cmd_CommandAdd( pAbc, "SC mapping", "supercl", Abc_CommandSuperChoiceLut, 1 );
1118 Cmd_CommandAdd( pAbc, "SC mapping", "timescale", Abc_CommandTimeScale, 0 );
1119 Cmd_CommandAdd( pAbc, "SC mapping", "rewire", Abc_CommandRewire, 1 );
1120
1121// Cmd_CommandAdd( pAbc, "FPGA mapping", "fpga", Abc_CommandFpga, 1 );
1122// Cmd_CommandAdd( pAbc, "FPGA mapping", "ffpga", Abc_CommandFpgaFast, 1 );
1123 Cmd_CommandAdd( pAbc, "FPGA mapping", "if", Abc_CommandIf, 1 );
1124 Cmd_CommandAdd( pAbc, "FPGA mapping", "ifif", Abc_CommandIfif, 1 );
1125
1126 Cmd_CommandAdd( pAbc, "DSD manager", "dsd_save", Abc_CommandDsdSave, 0 );
1127 Cmd_CommandAdd( pAbc, "DSD manager", "dsd_load", Abc_CommandDsdLoad, 0 );
1128 Cmd_CommandAdd( pAbc, "DSD manager", "dsd_free", Abc_CommandDsdFree, 0 );
1129 Cmd_CommandAdd( pAbc, "DSD manager", "dsd_ps", Abc_CommandDsdPs, 0 );
1130 Cmd_CommandAdd( pAbc, "DSD manager", "dsd_match", Abc_CommandDsdMatch, 0 );
1131 Cmd_CommandAdd( pAbc, "DSD manager", "dsd_merge", Abc_CommandDsdMerge, 0 );
1132 Cmd_CommandAdd( pAbc, "DSD manager", "dsd_filter", Abc_CommandDsdFilter, 0 );
1133
1134// Cmd_CommandAdd( pAbc, "Sequential", "scut", Abc_CommandScut, 0 );
1135 Cmd_CommandAdd( pAbc, "Sequential", "init", Abc_CommandInit, 1 );
1136 Cmd_CommandAdd( pAbc, "Sequential", "zero", Abc_CommandZero, 1 );
1137 Cmd_CommandAdd( pAbc, "Sequential", "undc", Abc_CommandUndc, 1 );
1138 Cmd_CommandAdd( pAbc, "Sequential", "onehot", Abc_CommandOneHot, 1 );
1139 Cmd_CommandAdd( pAbc, "Sequential", "pipe", Abc_CommandPipe, 1 );
1140 Cmd_CommandAdd( pAbc, "Sequential", "retime", Abc_CommandRetime, 1 );
1141 Cmd_CommandAdd( pAbc, "Sequential", "dretime", Abc_CommandDRetime, 1 );
1142 Cmd_CommandAdd( pAbc, "Sequential", "fretime", Abc_CommandFlowRetime, 1 );
1143 Cmd_CommandAdd( pAbc, "Sequential", "cretime", Abc_CommandCRetime, 1 );
1144// Cmd_CommandAdd( pAbc, "Sequential", "sfpga", Abc_CommandSeqFpga, 1 );
1145// Cmd_CommandAdd( pAbc, "Sequential", "smap", Abc_CommandSeqMap, 1 );
1146 Cmd_CommandAdd( pAbc, "Sequential", "ssweep", Abc_CommandSeqSweep, 1 );
1147 Cmd_CommandAdd( pAbc, "Sequential", "scorr", Abc_CommandSeqSweep2, 1 );
1148 Cmd_CommandAdd( pAbc, "Sequential", "testssw", Abc_CommandTestSeqSweep, 0 );
1149 Cmd_CommandAdd( pAbc, "Sequential", "testscorr", Abc_CommandTestScorr, 0 );
1150 Cmd_CommandAdd( pAbc, "Sequential", "lcorr", Abc_CommandLcorr, 1 );
1151 Cmd_CommandAdd( pAbc, "Sequential", "scleanup", Abc_CommandSeqCleanup, 1 );
1152 Cmd_CommandAdd( pAbc, "Sequential", "cycle", Abc_CommandCycle, 1 );
1153 Cmd_CommandAdd( pAbc, "Sequential", "xsim", Abc_CommandXsim, 0 );
1154 Cmd_CommandAdd( pAbc, "Sequential", "sim", Abc_CommandSim, 0 );
1155 Cmd_CommandAdd( pAbc, "Sequential", "sim3", Abc_CommandSim3, 0 );
1156 Cmd_CommandAdd( pAbc, "Sequential", "phase", Abc_CommandDarPhase, 1 );
1157 Cmd_CommandAdd( pAbc, "Sequential", "synch", Abc_CommandSynch, 1 );
1158 Cmd_CommandAdd( pAbc, "Sequential", "clockgate", Abc_CommandClockGate, 1 );
1159 Cmd_CommandAdd( pAbc, "Sequential", "extwin", Abc_CommandExtWin, 1 );
1160 Cmd_CommandAdd( pAbc, "Sequential", "inswin", Abc_CommandInsWin, 1 );
1161 Cmd_CommandAdd( pAbc, "Sequential", "symfun", Abc_CommandSymFun, 0 );
1162 Cmd_CommandAdd( pAbc, "Sequential", "atmap", Abc_CommandATMap, 0 );
1163 Cmd_CommandAdd( pAbc, "Sequential", "permute", Abc_CommandPermute, 1 );
1164 Cmd_CommandAdd( pAbc, "Sequential", "unpermute", Abc_CommandUnpermute, 1 );
1165 Cmd_CommandAdd( pAbc, "Sequential", "cubeenum", Abc_CommandCubeEnum, 0 );
1166 Cmd_CommandAdd( pAbc, "Sequential", "pathenum", Abc_CommandPathEnum, 0 );
1167 Cmd_CommandAdd( pAbc, "Sequential", "funenum", Abc_CommandFunEnum, 0 );
1168
1169 Cmd_CommandAdd( pAbc, "Verification", "cec", Abc_CommandCec, 0 );
1170 Cmd_CommandAdd( pAbc, "Verification", "dcec", Abc_CommandDCec, 0 );
1171 Cmd_CommandAdd( pAbc, "Verification", "dsec", Abc_CommandDSec, 0 );
1172 Cmd_CommandAdd( pAbc, "Verification", "dprove", Abc_CommandDProve, 0 );
1173 Cmd_CommandAdd( pAbc, "Verification", "absec", Abc_CommandAbSec, 0 );
1174 Cmd_CommandAdd( pAbc, "Verification", "simsec", Abc_CommandSimSec, 0 );
1175 Cmd_CommandAdd( pAbc, "Verification", "match", Abc_CommandMatch, 0 );
1176 Cmd_CommandAdd( pAbc, "Verification", "sat", Abc_CommandSat, 0 );
1177 Cmd_CommandAdd( pAbc, "Verification", "dsat", Abc_CommandDSat, 0 );
1178 Cmd_CommandAdd( pAbc, "Verification", "xsat", Abc_CommandXSat, 0 );
1179 Cmd_CommandAdd( pAbc, "Verification", "satoko", Abc_CommandSatoko, 0 );
1180 Cmd_CommandAdd( pAbc, "Verification", "&satoko", Abc_CommandAbc9Satoko, 0 );
1181 Cmd_CommandAdd( pAbc, "Verification", "&sat3", Abc_CommandAbc9Sat3, 0 );
1182 Cmd_CommandAdd( pAbc, "Verification", "&kissat", Abc_CommandAbc9Kissat, 0 );
1183 Cmd_CommandAdd( pAbc, "Verification", "psat", Abc_CommandPSat, 0 );
1184 Cmd_CommandAdd( pAbc, "Verification", "prove", Abc_CommandProve, 1 );
1185 Cmd_CommandAdd( pAbc, "Verification", "iprove", Abc_CommandIProve, 1 );
1186 Cmd_CommandAdd( pAbc, "Verification", "debug", Abc_CommandDebug, 0 );
1187 Cmd_CommandAdd( pAbc, "Verification", "eco", Abc_CommandEco, 0 );
1188 Cmd_CommandAdd( pAbc, "Verification", "bmc", Abc_CommandBmc, 0 );
1189 Cmd_CommandAdd( pAbc, "Verification", "bmc2", Abc_CommandBmc2, 0 );
1190 Cmd_CommandAdd( pAbc, "Verification", "bmc3", Abc_CommandBmc3, 1 );
1191 Cmd_CommandAdd( pAbc, "Verification", "int", Abc_CommandBmcInter, 1 );
1192 Cmd_CommandAdd( pAbc, "Verification", "indcut", Abc_CommandIndcut, 0 );
1193 Cmd_CommandAdd( pAbc, "Verification", "enlarge", Abc_CommandEnlarge, 1 );
1194 Cmd_CommandAdd( pAbc, "Verification", "tempor", Abc_CommandTempor, 1 );
1195 Cmd_CommandAdd( pAbc, "Verification", "ind", Abc_CommandInduction, 0 );
1196 Cmd_CommandAdd( pAbc, "Verification", "constr", Abc_CommandConstr, 0 );
1197 Cmd_CommandAdd( pAbc, "Verification", "unfold", Abc_CommandUnfold, 1 );
1198 Cmd_CommandAdd( pAbc, "Verification", "fold", Abc_CommandFold, 1 );
1199 Cmd_CommandAdd( pAbc, "Verification", "unfold2", Abc_CommandUnfold2, 1 ); // jlong
1200 Cmd_CommandAdd( pAbc, "Verification", "fold2", Abc_CommandFold2, 1 ); // jlong
1201 Cmd_CommandAdd( pAbc, "Verification", "bm", Abc_CommandBm, 1 );
1202 Cmd_CommandAdd( pAbc, "Verification", "bm2", Abc_CommandBm2, 1 );
1203 Cmd_CommandAdd( pAbc, "Verification", "saucy3", Abc_CommandSaucy, 1 );
1204 Cmd_CommandAdd( pAbc, "Verification", "testcex", Abc_CommandTestCex, 0 );
1205 Cmd_CommandAdd( pAbc, "Verification", "pdr", Abc_CommandPdr, 0 );
1206#ifdef ABC_USE_CUDD
1207 Cmd_CommandAdd( pAbc, "Verification", "reconcile", Abc_CommandReconcile, 1 );
1208#endif
1209 Cmd_CommandAdd( pAbc, "Verification", "cexsave", Abc_CommandCexSave, 0 );
1210 Cmd_CommandAdd( pAbc, "Verification", "cexload", Abc_CommandCexLoad, 0 );
1211 Cmd_CommandAdd( pAbc, "Verification", "cexcut", Abc_CommandCexCut, 0 );
1212 Cmd_CommandAdd( pAbc, "Verification", "cexmerge", Abc_CommandCexMerge, 0 );
1213// Cmd_CommandAdd( pAbc, "Verification", "cexmin", Abc_CommandCexMin, 0 );
1214 Cmd_CommandAdd( pAbc, "Verification", "dualrail", Abc_CommandDualRail, 1 );
1215 Cmd_CommandAdd( pAbc, "Verification", "blockpo", Abc_CommandBlockPo, 1 );
1216 Cmd_CommandAdd( pAbc, "Verification", "iso", Abc_CommandIso, 1 );
1217
1218 Cmd_CommandAdd( pAbc, "Various", "save", Abc_CommandAbcSave, 0 );
1219 Cmd_CommandAdd( pAbc, "Various", "load", Abc_CommandAbcLoad, 0 );
1220
1221 Cmd_CommandAdd( pAbc, "ABC9", "&get", Abc_CommandAbc9Get, 0 );
1222 Cmd_CommandAdd( pAbc, "ABC9", "&put", Abc_CommandAbc9Put, 0 );
1223 Cmd_CommandAdd( pAbc, "ABC9", "&move_names", Abc_CommandAbc9MoveNames, 0 );
1224 Cmd_CommandAdd( pAbc, "ABC9", "&save", Abc_CommandAbc9Save, 0 );
1225 Cmd_CommandAdd( pAbc, "ABC9", "&save2", Abc_CommandAbc9Save2, 0 );
1226 Cmd_CommandAdd( pAbc, "ABC9", "&saveaig", Abc_CommandAbc9SaveAig, 0 );
1227 Cmd_CommandAdd( pAbc, "ABC9", "&load", Abc_CommandAbc9Load, 0 );
1228 Cmd_CommandAdd( pAbc, "ABC9", "&load2", Abc_CommandAbc9Load2, 0 );
1229 Cmd_CommandAdd( pAbc, "ABC9", "&loadaig", Abc_CommandAbc9LoadAig, 0 );
1230 Cmd_CommandAdd( pAbc, "ABC9", "&r", Abc_CommandAbc9Read, 0 );
1231 Cmd_CommandAdd( pAbc, "ABC9", "&read", Abc_CommandAbc9Read, 0 );
1232 Cmd_CommandAdd( pAbc, "ABC9", "&read_blif", Abc_CommandAbc9ReadBlif, 0 );
1233 Cmd_CommandAdd( pAbc, "ABC9", "&read_cblif", Abc_CommandAbc9ReadCBlif, 0 );
1234 Cmd_CommandAdd( pAbc, "ABC9", "&read_stg", Abc_CommandAbc9ReadStg, 0 );
1235 Cmd_CommandAdd( pAbc, "ABC9", "&read_ver", Abc_CommandAbc9ReadVer, 0 );
1236 Cmd_CommandAdd( pAbc, "ABC9", "&write_ver", Abc_CommandAbc9WriteVer, 0 );
1237 Cmd_CommandAdd( pAbc, "ABC9", "&w", Abc_CommandAbc9Write, 0 );
1238 Cmd_CommandAdd( pAbc, "ABC9", "&write", Abc_CommandAbc9Write, 0 );
1239 Cmd_CommandAdd( pAbc, "ABC9", "&wlut", Abc_CommandAbc9WriteLut, 0 );
1240 Cmd_CommandAdd( pAbc, "ABC9", "&ps", Abc_CommandAbc9Ps, 0 );
1241 Cmd_CommandAdd( pAbc, "ABC9", "&pfan", Abc_CommandAbc9PFan, 0 );
1242 Cmd_CommandAdd( pAbc, "ABC9", "&pms", Abc_CommandAbc9Pms, 0 );
1243 Cmd_CommandAdd( pAbc, "ABC9", "&psig", Abc_CommandAbc9PSig, 0 );
1244 Cmd_CommandAdd( pAbc, "ABC9", "&status", Abc_CommandAbc9Status, 0 );
1245 Cmd_CommandAdd( pAbc, "ABC9", "&profile", Abc_CommandAbc9MuxProfile, 0 );
1246 Cmd_CommandAdd( pAbc, "ABC9", "&muxpos", Abc_CommandAbc9MuxPos, 0 );
1247 Cmd_CommandAdd( pAbc, "ABC9", "&muxstr", Abc_CommandAbc9MuxStr, 0 );
1248 Cmd_CommandAdd( pAbc, "ABC9", "&muxdec", Abc_CommandAbc9MuxDec, 0 );
1249 Cmd_CommandAdd( pAbc, "ABC9", "&print_truth", Abc_CommandAbc9PrintTruth, 0 );
1250 Cmd_CommandAdd( pAbc, "ABC9", "&unate", Abc_CommandAbc9Unate, 0 );
1251 Cmd_CommandAdd( pAbc, "ABC9", "&rex2gia", Abc_CommandAbc9Rex2Gia, 0 );
1252 Cmd_CommandAdd( pAbc, "ABC9", "&rexwalk", Abc_CommandAbc9RexWalk, 0 );
1253 Cmd_CommandAdd( pAbc, "ABC9", "&show", Abc_CommandAbc9Show, 0 );
1254 Cmd_CommandAdd( pAbc, "ABC9", "&setregnum", Abc_CommandAbc9SetRegNum, 0 );
1255 Cmd_CommandAdd( pAbc, "ABC9", "&st", Abc_CommandAbc9Strash, 0 );
1256 Cmd_CommandAdd( pAbc, "ABC9", "&topand", Abc_CommandAbc9Topand, 0 );
1257 Cmd_CommandAdd( pAbc, "ABC9", "&add1hot", Abc_CommandAbc9Add1Hot, 0 );
1258 Cmd_CommandAdd( pAbc, "ABC9", "&cof", Abc_CommandAbc9Cof, 0 );
1259 Cmd_CommandAdd( pAbc, "ABC9", "&cofs", Abc_CommandAbc9Cofs, 0 );
1260 Cmd_CommandAdd( pAbc, "ABC9", "&trim", Abc_CommandAbc9Trim, 0 );
1261 Cmd_CommandAdd( pAbc, "ABC9", "&dfs", Abc_CommandAbc9Dfs, 0 );
1262 Cmd_CommandAdd( pAbc, "ABC9", "&sim", Abc_CommandAbc9Sim, 0 );
1263 Cmd_CommandAdd( pAbc, "ABC9", "&sim2", Abc_CommandAbc9Sim2, 0 );
1264 Cmd_CommandAdd( pAbc, "ABC9", "&sim3", Abc_CommandAbc9Sim3, 0 );
1265 Cmd_CommandAdd( pAbc, "ABC9", "&mlgen", Abc_CommandAbc9MLGen, 0 );
1266 Cmd_CommandAdd( pAbc, "ABC9", "&mltest", Abc_CommandAbc9MLTest, 0 );
1267 Cmd_CommandAdd( pAbc, "ABC9", "&iwls21test", Abc_CommandAbc9Iwls21Test, 0 );
1268 Cmd_CommandAdd( pAbc, "ABC9", "&sim_read", Abc_CommandAbc9ReadSim, 0 );
1269 Cmd_CommandAdd( pAbc, "ABC9", "&sim_write", Abc_CommandAbc9WriteSim, 0 );
1270 Cmd_CommandAdd( pAbc, "ABC9", "&sim_print", Abc_CommandAbc9PrintSim, 0 );
1271 Cmd_CommandAdd( pAbc, "ABC9", "&sim_gen", Abc_CommandAbc9GenSim, 0 );
1272 Cmd_CommandAdd( pAbc, "ABC9", "&simrsb", Abc_CommandAbc9SimRsb, 0 );
1273 Cmd_CommandAdd( pAbc, "ABC9", "&resim", Abc_CommandAbc9Resim, 0 );
1274 Cmd_CommandAdd( pAbc, "ABC9", "&speci", Abc_CommandAbc9SpecI, 0 );
1275 Cmd_CommandAdd( pAbc, "ABC9", "&equiv", Abc_CommandAbc9Equiv, 0 );
1276 Cmd_CommandAdd( pAbc, "ABC9", "&equiv2", Abc_CommandAbc9Equiv2, 0 );
1277 Cmd_CommandAdd( pAbc, "ABC9", "&equiv3", Abc_CommandAbc9Equiv3, 0 );
1278 Cmd_CommandAdd( pAbc, "ABC9", "&semi", Abc_CommandAbc9Semi, 0 );
1279 Cmd_CommandAdd( pAbc, "ABC9", "&times", Abc_CommandAbc9Times, 0 );
1280 Cmd_CommandAdd( pAbc, "ABC9", "&frames", Abc_CommandAbc9Frames, 0 );
1281 Cmd_CommandAdd( pAbc, "ABC9", "&retime", Abc_CommandAbc9Retime, 0 );
1282 Cmd_CommandAdd( pAbc, "ABC9", "&enable", Abc_CommandAbc9Enable, 0 );
1283 Cmd_CommandAdd( pAbc, "ABC9", "&dc2", Abc_CommandAbc9Dc2, 0 );
1284 Cmd_CommandAdd( pAbc, "ABC9", "&dsd", Abc_CommandAbc9Dsd, 0 );
1285 Cmd_CommandAdd( pAbc, "ABC9", "&bidec", Abc_CommandAbc9Bidec, 0 );
1286 Cmd_CommandAdd( pAbc, "ABC9", "&shrink", Abc_CommandAbc9Shrink, 0 );
1287 Cmd_CommandAdd( pAbc, "ABC9", "&fx", Abc_CommandAbc9Fx, 0 );
1288 Cmd_CommandAdd( pAbc, "ABC9", "&extract", Abc_CommandAbc9Extract, 0 );
1289 Cmd_CommandAdd( pAbc, "ABC9", "&b", Abc_CommandAbc9Balance, 0 );
1290 Cmd_CommandAdd( pAbc, "ABC9", "&blut", Abc_CommandAbc9BalanceLut, 0 );
1291 Cmd_CommandAdd( pAbc, "ABC9", "&resub", Abc_CommandAbc9Resub, 0 );
1292 Cmd_CommandAdd( pAbc, "ABC9", "&reshape", Abc_CommandAbc9Reshape, 0 );
1293 Cmd_CommandAdd( pAbc, "ABC9", "&syn2", Abc_CommandAbc9Syn2, 0 );
1294 Cmd_CommandAdd( pAbc, "ABC9", "&syn3", Abc_CommandAbc9Syn3, 0 );
1295 Cmd_CommandAdd( pAbc, "ABC9", "&syn4", Abc_CommandAbc9Syn4, 0 );
1296 Cmd_CommandAdd( pAbc, "ABC9", "&synch2", Abc_CommandAbc9Synch2, 0 );
1297 Cmd_CommandAdd( pAbc, "ABC9", "&false", Abc_CommandAbc9False, 0 );
1298 Cmd_CommandAdd( pAbc, "ABC9", "&miter", Abc_CommandAbc9Miter, 0 );
1299 Cmd_CommandAdd( pAbc, "ABC9", "&miter2", Abc_CommandAbc9Miter2, 0 );
1300 Cmd_CommandAdd( pAbc, "ABC9", "&append", Abc_CommandAbc9Append, 0 );
1301 Cmd_CommandAdd( pAbc, "ABC9", "&scl", Abc_CommandAbc9Scl, 0 );
1302 Cmd_CommandAdd( pAbc, "ABC9", "&lcorr", Abc_CommandAbc9Lcorr, 0 );
1303 Cmd_CommandAdd( pAbc, "ABC9", "&scorr", Abc_CommandAbc9Scorr, 0 );
1304 Cmd_CommandAdd( pAbc, "ABC9", "&choice", Abc_CommandAbc9Choice, 0 );
1305 Cmd_CommandAdd( pAbc, "ABC9", "&sat", Abc_CommandAbc9Sat, 0 );
1306 Cmd_CommandAdd( pAbc, "ABC9", "&satenum", Abc_CommandAbc9SatEnum, 0 );
1307 Cmd_CommandAdd( pAbc, "ABC9", "&adv_sim_gen", Abc_CommandAbc9AdvGenSim, 0 );
1308 Cmd_CommandAdd( pAbc, "ABC9", "&fraig", Abc_CommandAbc9Fraig, 0 );
1309 Cmd_CommandAdd( pAbc, "ABC9", "&cfraig", Abc_CommandAbc9CFraig, 0 );
1310 Cmd_CommandAdd( pAbc, "ABC9", "&srm", Abc_CommandAbc9Srm, 0 );
1311 Cmd_CommandAdd( pAbc, "ABC9", "&srm2", Abc_CommandAbc9Srm2, 0 );
1312 Cmd_CommandAdd( pAbc, "ABC9", "&filter", Abc_CommandAbc9Filter, 0 );
1313 Cmd_CommandAdd( pAbc, "ABC9", "&reduce", Abc_CommandAbc9Reduce, 0 );
1314 Cmd_CommandAdd( pAbc, "ABC9", "&equiv_mark", Abc_CommandAbc9EquivMark, 0 );
1315 Cmd_CommandAdd( pAbc, "ABC9", "&equiv_filter", Abc_CommandAbc9EquivFilter, 0 );
1316 Cmd_CommandAdd( pAbc, "ABC9", "&cec", Abc_CommandAbc9Cec, 0 );
1317 Cmd_CommandAdd( pAbc, "ABC9", "&icec", Abc_CommandAbc9ICec, 0 );
1318 Cmd_CommandAdd( pAbc, "ABC9", "&verify", Abc_CommandAbc9Verify, 0 );
1319 Cmd_CommandAdd( pAbc, "ABC9", "&sweep", Abc_CommandAbc9Sweep, 0 );
1320 Cmd_CommandAdd( pAbc, "ABC9", "&force", Abc_CommandAbc9Force, 0 );
1321 Cmd_CommandAdd( pAbc, "ABC9", "&embed", Abc_CommandAbc9Embed, 0 );
1322 Cmd_CommandAdd( pAbc, "ABC9", "&sopb", Abc_CommandAbc9Sopb, 0 );
1323 Cmd_CommandAdd( pAbc, "ABC9", "&dsdb", Abc_CommandAbc9Dsdb, 0 );
1324 Cmd_CommandAdd( pAbc, "ABC9", "&flow", Abc_CommandAbc9Flow, 0 );
1325 Cmd_CommandAdd( pAbc, "ABC9", "&flow2", Abc_CommandAbc9Flow2, 0 );
1326 Cmd_CommandAdd( pAbc, "ABC9", "&flow3", Abc_CommandAbc9Flow3, 0 );
1327 Cmd_CommandAdd( pAbc, "ABC9", "&if", Abc_CommandAbc9If, 0 );
1328 Cmd_CommandAdd( pAbc, "ABC9", "&iff", Abc_CommandAbc9Iff, 0 );
1329 Cmd_CommandAdd( pAbc, "ABC9", "&iiff", Abc_CommandAbc9Iiff, 0 );
1330 Cmd_CommandAdd( pAbc, "ABC9", "&if2", Abc_CommandAbc9If2, 0 );
1331 Cmd_CommandAdd( pAbc, "ABC9", "&sif", Abc_CommandAbc9Sif, 0 );
1332 Cmd_CommandAdd( pAbc, "ABC9", "&jf", Abc_CommandAbc9Jf, 0 );
1333 Cmd_CommandAdd( pAbc, "ABC9", "&kf", Abc_CommandAbc9Kf, 0 );
1334 Cmd_CommandAdd( pAbc, "ABC9", "&lf", Abc_CommandAbc9Lf, 0 );
1335 Cmd_CommandAdd( pAbc, "ABC9", "&mf", Abc_CommandAbc9Mf, 0 );
1336 Cmd_CommandAdd( pAbc, "ABC9", "&nf", Abc_CommandAbc9Nf, 0 );
1337 Cmd_CommandAdd( pAbc, "ABC9", "&of", Abc_CommandAbc9Of, 0 );
1338 Cmd_CommandAdd( pAbc, "ABC9", "&simap", Abc_CommandAbc9Simap, 0 );
1339 Cmd_CommandAdd( pAbc, "ABC9", "&exmap", Abc_CommandAbc9Exmap, 0 );
1340 Cmd_CommandAdd( pAbc, "ABC9", "&pack", Abc_CommandAbc9Pack, 0 );
1341 Cmd_CommandAdd( pAbc, "ABC9", "&edge", Abc_CommandAbc9Edge, 0 );
1342 Cmd_CommandAdd( pAbc, "ABC9", "&satlut", Abc_CommandAbc9SatLut, 0 );
1343 Cmd_CommandAdd( pAbc, "ABC9", "&lnetread", Abc_CommandAbc9LNetRead, 0 );
1344 Cmd_CommandAdd( pAbc, "ABC9", "&lnetsim", Abc_CommandAbc9LNetSim, 0 );
1345 Cmd_CommandAdd( pAbc, "ABC9", "&lneteval", Abc_CommandAbc9LNetEval, 0 );
1346 Cmd_CommandAdd( pAbc, "ABC9", "&lnetopt", Abc_CommandAbc9LNetOpt, 0 );
1347//#ifndef _WIN32
1348 Cmd_CommandAdd( pAbc, "ABC9", "&ttopt", Abc_CommandAbc9Ttopt, 0 );
1349 Cmd_CommandAdd( pAbc, "ABC9", "&transduction", Abc_CommandAbc9Transduction, 0 );
1350 Cmd_CommandAdd( pAbc, "ABC9", "&transtoch" , Abc_CommandAbc9TranStoch, 0 );
1351 Cmd_CommandAdd( pAbc, "ABC9", "&rrr", Abc_CommandAbc9Rrr, 0 );
1352 Cmd_CommandAdd( pAbc, "ABC9", "&rewire" , Abc_CommandAbc9Rewire, 0 );
1353//#endif
1354 Cmd_CommandAdd( pAbc, "ABC9", "&lnetmap", Abc_CommandAbc9LNetMap, 0 );
1355 Cmd_CommandAdd( pAbc, "ABC9", "&unmap", Abc_CommandAbc9Unmap, 0 );
1356 Cmd_CommandAdd( pAbc, "ABC9", "&struct", Abc_CommandAbc9Struct, 0 );
1357 Cmd_CommandAdd( pAbc, "ABC9", "&trace", Abc_CommandAbc9Trace, 0 );
1358 Cmd_CommandAdd( pAbc, "ABC9", "&speedup", Abc_CommandAbc9Speedup, 0 );
1359 Cmd_CommandAdd( pAbc, "ABC9", "&era", Abc_CommandAbc9Era, 0 );
1360 Cmd_CommandAdd( pAbc, "ABC9", "&dch", Abc_CommandAbc9Dch, 0 );
1361 Cmd_CommandAdd( pAbc, "ABC9", "&rpm", Abc_CommandAbc9Rpm, 0 );
1362 Cmd_CommandAdd( pAbc, "ABC9", "&back_reach", Abc_CommandAbc9BackReach, 0 );
1363 Cmd_CommandAdd( pAbc, "ABC9", "&posplit", Abc_CommandAbc9Posplit, 0 );
1364 Cmd_CommandAdd( pAbc, "ABC9", "&permute", Abc_CommandAbc9Permute, 0 );
1365#ifdef ABC_USE_CUDD
1366 Cmd_CommandAdd( pAbc, "ABC9", "&reachm", Abc_CommandAbc9ReachM, 0 );
1367 Cmd_CommandAdd( pAbc, "ABC9", "&reachp", Abc_CommandAbc9ReachP, 0 );
1368 Cmd_CommandAdd( pAbc, "ABC9", "&reachn", Abc_CommandAbc9ReachN, 0 );
1369 Cmd_CommandAdd( pAbc, "ABC9", "&reachy", Abc_CommandAbc9ReachY, 0 );
1370#endif
1371 Cmd_CommandAdd( pAbc, "ABC9", "&undo", Abc_CommandAbc9Undo, 0 );
1372 Cmd_CommandAdd( pAbc, "ABC9", "&mesh", Abc_CommandAbc9Mesh, 0 );
1373 Cmd_CommandAdd( pAbc, "ABC9", "&iso", Abc_CommandAbc9Iso, 0 );
1374 Cmd_CommandAdd( pAbc, "ABC9", "&isonpn", Abc_CommandAbc9IsoNpn, 0 );
1375 Cmd_CommandAdd( pAbc, "ABC9", "&isost", Abc_CommandAbc9IsoSt, 0 );
1376 Cmd_CommandAdd( pAbc, "ABC9", "&store", Abc_CommandAbc9Store, 0 );
1377 Cmd_CommandAdd( pAbc, "ABC9", "&compare", Abc_CommandAbc9Compare, 0 );
1378 Cmd_CommandAdd( pAbc, "ABC9", "&reveng", Abc_CommandAbc9RevEng, 0 );
1379 Cmd_CommandAdd( pAbc, "ABC9", "&uif", Abc_CommandAbc9Uif, 0 );
1380 Cmd_CommandAdd( pAbc, "ABC9", "&cexinfo", Abc_CommandAbc9CexInfo, 0 );
1381 Cmd_CommandAdd( pAbc, "ABC9", "&cycle", Abc_CommandAbc9Cycle, 0 );
1382 Cmd_CommandAdd( pAbc, "ABC9", "&cone", Abc_CommandAbc9Cone, 0 );
1383 Cmd_CommandAdd( pAbc, "ABC9", "&slice", Abc_CommandAbc9Slice, 0 );
1384 Cmd_CommandAdd( pAbc, "ABC9", "&popart", Abc_CommandAbc9PoPart, 0 );
1385 Cmd_CommandAdd( pAbc, "ABC9", "&gprove", Abc_CommandAbc9GroupProve, 0 );
1386 Cmd_CommandAdd( pAbc, "ABC9", "&mprove", Abc_CommandAbc9MultiProve, 0 );
1387 Cmd_CommandAdd( pAbc, "ABC9", "&splitprove", Abc_CommandAbc9SplitProve, 0 );
1388 Cmd_CommandAdd( pAbc, "ABC9", "&sprove", Abc_CommandAbc9SProve, 0 );
1389 Cmd_CommandAdd( pAbc, "ABC9", "&splitsat", Abc_CommandAbc9SplitSat, 0 );
1390 Cmd_CommandAdd( pAbc, "ABC9", "&bmc", Abc_CommandAbc9Bmc, 0 );
1391 Cmd_CommandAdd( pAbc, "ABC9", "&bmcs", Abc_CommandAbc9SBmc, 0 );
1392 Cmd_CommandAdd( pAbc, "ABC9", "&chainbmc", Abc_CommandAbc9ChainBmc, 0 );
1393 Cmd_CommandAdd( pAbc, "ABC9", "&bcore", Abc_CommandAbc9BCore, 0 );
1394 Cmd_CommandAdd( pAbc, "ABC9", "&icheck", Abc_CommandAbc9ICheck, 0 );
1395 Cmd_CommandAdd( pAbc, "ABC9", "&sattest", Abc_CommandAbc9SatTest, 0 );
1396 Cmd_CommandAdd( pAbc, "ABC9", "&fftest", Abc_CommandAbc9FFTest, 0 );
1397 Cmd_CommandAdd( pAbc, "ABC9", "&qbf", Abc_CommandAbc9Qbf, 0 );
1398 Cmd_CommandAdd( pAbc, "ABC9", "&qvar", Abc_CommandAbc9QVar, 0 );
1399 Cmd_CommandAdd( pAbc, "ABC9", "&genqbf", Abc_CommandAbc9GenQbf, 0 );
1400 Cmd_CommandAdd( pAbc, "ABC9", "&homoqbf", Abc_CommandAbc9HomoQbf, 0 );
1401 Cmd_CommandAdd( pAbc, "ABC9", "&satfx", Abc_CommandAbc9SatFx, 0 );
1402 Cmd_CommandAdd( pAbc, "ABC9", "&satclp", Abc_CommandAbc9SatClp, 0 );
1403 Cmd_CommandAdd( pAbc, "ABC9", "&inse", Abc_CommandAbc9Inse, 0 );
1404 Cmd_CommandAdd( pAbc, "ABC9", "&maxi", Abc_CommandAbc9Maxi, 0 );
1405 Cmd_CommandAdd( pAbc, "ABC9", "&bmci", Abc_CommandAbc9Bmci, 0 );
1406 Cmd_CommandAdd( pAbc, "ABC9", "&poxsim", Abc_CommandAbc9PoXsim, 0 );
1407 Cmd_CommandAdd( pAbc, "ABC9", "&demiter", Abc_CommandAbc9Demiter, 0 );
1408 Cmd_CommandAdd( pAbc, "ABC9", "&fadds", Abc_CommandAbc9Fadds, 0 );
1409 Cmd_CommandAdd( pAbc, "ABC9", "&atree", Abc_CommandAbc9ATree, 0 );
1410 Cmd_CommandAdd( pAbc, "ABC9", "&polyn", Abc_CommandAbc9Polyn, 0 );
1411 Cmd_CommandAdd( pAbc, "ABC9", "&acec", Abc_CommandAbc9Acec, 0 );
1412 Cmd_CommandAdd( pAbc, "ABC9", "&anorm", Abc_CommandAbc9Anorm, 0 );
1413 Cmd_CommandAdd( pAbc, "ABC9", "&decla", Abc_CommandAbc9Decla, 0 );
1414 Cmd_CommandAdd( pAbc, "ABC9", "&esop", Abc_CommandAbc9Esop, 0 );
1415 Cmd_CommandAdd( pAbc, "ABC9", "&exorcism", Abc_CommandAbc9Exorcism, 0 );
1416 Cmd_CommandAdd( pAbc, "ABC9", "&mfs", Abc_CommandAbc9Mfs, 0 );
1417 Cmd_CommandAdd( pAbc, "ABC9", "&mfsd", Abc_CommandAbc9Mfsd, 0 );
1418 Cmd_CommandAdd( pAbc, "ABC9", "&deepsyn", Abc_CommandAbc9DeepSyn, 0 );
1419 Cmd_CommandAdd( pAbc, "ABC9", "&randsyn", Abc_CommandAbc9RandSyn, 0 );
1420 Cmd_CommandAdd( pAbc, "ABC9", "&satsyn", Abc_CommandAbc9SatSyn, 0 );
1421 Cmd_CommandAdd( pAbc, "ABC9", "&stochsyn", Abc_CommandAbc9StochSyn, 0 );
1422// Cmd_CommandAdd( pAbc, "ABC9", "&popart2", Abc_CommandAbc9PoPart2, 0 );
1423// Cmd_CommandAdd( pAbc, "ABC9", "&cexcut", Abc_CommandAbc9CexCut, 0 );
1424// Cmd_CommandAdd( pAbc, "ABC9", "&cexmerge", Abc_CommandAbc9CexMerge, 0 );
1425// Cmd_CommandAdd( pAbc, "ABC9", "&cexmin", Abc_CommandAbc9CexMin, 0 );
1426
1427 Cmd_CommandAdd( pAbc, "Abstraction", "&abs_create", Abc_CommandAbc9AbsCreate, 0 );
1428 Cmd_CommandAdd( pAbc, "Abstraction", "&abs_derive", Abc_CommandAbc9AbsDerive, 0 );
1429 Cmd_CommandAdd( pAbc, "Abstraction", "&abs_refine", Abc_CommandAbc9AbsRefine, 0 );
1430 Cmd_CommandAdd( pAbc, "Abstraction", "&gla_derive", Abc_CommandAbc9GlaDerive, 0 );
1431 Cmd_CommandAdd( pAbc, "Abstraction", "&gla_refine", Abc_CommandAbc9GlaRefine, 0 );
1432 Cmd_CommandAdd( pAbc, "Abstraction", "&gla_shrink", Abc_CommandAbc9GlaShrink, 0 );
1433 Cmd_CommandAdd( pAbc, "Abstraction", "&gla", Abc_CommandAbc9Gla, 0 );
1434 Cmd_CommandAdd( pAbc, "Abstraction", "&vta", Abc_CommandAbc9Vta, 0 );
1435 Cmd_CommandAdd( pAbc, "Abstraction", "&vta_gla", Abc_CommandAbc9Vta2Gla, 0 );
1436 Cmd_CommandAdd( pAbc, "Abstraction", "&gla_vta", Abc_CommandAbc9Gla2Vta, 0 );
1437 Cmd_CommandAdd( pAbc, "Abstraction", "&fla_gla", Abc_CommandAbc9Fla2Gla, 0 );
1438 Cmd_CommandAdd( pAbc, "Abstraction", "&gla_fla", Abc_CommandAbc9Gla2Fla, 0 );
1439
1440 Cmd_CommandAdd( pAbc, "Liveness", "l2s", Abc_CommandAbcLivenessToSafety, 0 );
1441 Cmd_CommandAdd( pAbc, "Liveness", "l2ssim", Abc_CommandAbcLivenessToSafetySim, 0 );
1442 Cmd_CommandAdd( pAbc, "Liveness", "l3s", Abc_CommandAbcLivenessToSafetyWithLTL, 0 );
1443 Cmd_CommandAdd( pAbc, "Liveness", "kcs", Abc_CommandCS_kLiveness, 0 );
1444 Cmd_CommandAdd( pAbc, "Liveness", "nck", Abc_CommandNChooseK, 0 );
1445
1446 Cmd_CommandAdd( pAbc, "ABC9", "&gen", Abc_CommandAbc9Gen, 0 );
1447 Cmd_CommandAdd( pAbc, "ABC9", "&cfs", Abc_CommandAbc9Cfs, 0 );
1448 Cmd_CommandAdd( pAbc, "ABC9", "&prodadd", Abc_CommandAbc9ProdAdd, 0 );
1449 Cmd_CommandAdd( pAbc, "ABC9", "&addflop", Abc_CommandAbc9AddFlop, 0 );
1450 Cmd_CommandAdd( pAbc, "ABC9", "&bmiter", Abc_CommandAbc9BMiter, 0 );
1451 Cmd_CommandAdd( pAbc, "ABC9", "&gen_hie", Abc_CommandAbc9GenHie, 0 );
1452 Cmd_CommandAdd( pAbc, "ABC9", "&putontop", Abc_CommandAbc9PutOnTop, 0 );
1453 Cmd_CommandAdd( pAbc, "ABC9", "&brecover", Abc_CommandAbc9BRecover, 0 );
1454 Cmd_CommandAdd( pAbc, "ABC9", "&str_eco", Abc_CommandAbc9StrEco, 0 );
1455 Cmd_CommandAdd( pAbc, "ABC9", "&gencex", Abc_CommandAbc9GenCex, 0 );
1456 Cmd_CommandAdd( pAbc, "ABC9", "&odc", Abc_CommandAbc9Odc, 0 );
1457 Cmd_CommandAdd( pAbc, "ABC9", "&genrel", Abc_CommandAbc9GenRel, 0 );
1458 Cmd_CommandAdd( pAbc, "ABC9", "&genmux", Abc_CommandAbc9GenMux, 0 );
1459 Cmd_CommandAdd( pAbc, "ABC9", "&gencomp", Abc_CommandAbc9GenComp, 0 );
1460 Cmd_CommandAdd( pAbc, "ABC9", "&gensorter", Abc_CommandAbc9GenSorter, 0 );
1461 Cmd_CommandAdd( pAbc, "ABC9", "&genneuron", Abc_CommandAbc9GenNeuron, 0 );
1462 Cmd_CommandAdd( pAbc, "ABC9", "&genadder", Abc_CommandAbc9GenAdder, 0 );
1463 Cmd_CommandAdd( pAbc, "ABC9", "&window", Abc_CommandAbc9Window, 0 );
1464 Cmd_CommandAdd( pAbc, "ABC9", "&funabs", Abc_CommandAbc9FunAbs, 0 );
1465 Cmd_CommandAdd( pAbc, "ABC9", "&dsdinfo", Abc_CommandAbc9DsdInfo, 0 );
1466 Cmd_CommandAdd( pAbc, "ABC9", "&funtrace", Abc_CommandAbc9FunTrace, 0 );
1467 Cmd_CommandAdd( pAbc, "ABC9", "&mulfind", Abc_CommandAbc9MulFind, 0 );
1468 Cmd_CommandAdd( pAbc, "ABC9", "&andcare", Abc_CommandAbc9AndCare, 0 );
1469
1470 Cmd_CommandAdd( pAbc, "ABC9", "&test", Abc_CommandAbc9Test, 0 );
1471
1472 Cmd_CommandAdd( pAbc, "ABC9", "&eslim", Abc_CommandAbc9eSLIM, 0 );
1473 {
1474// extern Mf_ManTruthCount();
1475// Mf_ManTruthCount();
1476 }
1477
1478 {
1479 extern void Dar_LibStart();
1480 Dar_LibStart();
1481 }
1482 {
1483// extern void Dau_DsdTest();
1484// Dau_DsdTest();
1485// extern void If_ManSatTest();
1486// If_ManSatTest();
1487 }
1488
1489// if ( Sdm_ManCanRead() )
1490// Sdm_ManRead();
1491}
int Abc_CommandAbcLivenessToSafety(Abc_Frame_t *pAbc, int argc, char **argv)
Definition liveness.c:1254
int Abc_CommandAbcLivenessToSafetySim(Abc_Frame_t *pAbc, int argc, char **argv)
int Abc_CommandNChooseK(Abc_Frame_t *pAbc, int argc, char **argv)
Definition kliveness.c:718
int Abc_CommandAbcLivenessToSafetyWithLTL(Abc_Frame_t *pAbc, int argc, char **argv)
Definition liveness.c:2268
int Abc_CommandCS_kLiveness(Abc_Frame_t *pAbc, int argc, char **argv)
Definition kliveness.c:525
void Cmd_CommandAdd(Abc_Frame_t *pAbc, const char *sGroup, const char *sName, Cmd_CommandFuncType pFunc, int fChanges)
Definition cmdApi.c:63
void Dar_LibStart()
MACRO DEFINITIONS ///.
Definition darLib.c:593
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Abc_NtkCollectCiNames()

Vec_Ptr_t * Abc_NtkCollectCiNames ( Abc_Ntk_t * pNtk)
extern

Function*************************************************************

Synopsis [Collects CI of the network.]

Description []

SideEffects []

SeeAlso []

Definition at line 1348 of file abcDar.c.

1349{
1350 Abc_Obj_t * pObj;
1351 int i;
1352 Vec_Ptr_t * vNames;
1353 vNames = Vec_PtrAlloc( 100 );
1354 Abc_NtkForEachCi( pNtk, pObj, i )
1355 Vec_PtrPush( vNames, Extra_UtilStrsav(Abc_ObjName(pObj)) );
1356 return vNames;
1357}
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
Definition abcNames.c:49
#define Abc_NtkForEachCi(pNtk, pCi, i)
Definition abc.h:518
char * Extra_UtilStrsav(const char *s)
Here is the call graph for this function:

◆ Abc_NtkCollectCoNames()

Vec_Ptr_t * Abc_NtkCollectCoNames ( Abc_Ntk_t * pNtk)
extern

Function*************************************************************

Synopsis [Collects CO of the network.]

Description []

SideEffects []

SeeAlso []

Definition at line 1370 of file abcDar.c.

1371{
1372 Abc_Obj_t * pObj;
1373 int i;
1374 Vec_Ptr_t * vNames;
1375 vNames = Vec_PtrAlloc( 100 );
1376 Abc_NtkForEachCo( pNtk, pObj, i )
1377 Vec_PtrPush( vNames, Extra_UtilStrsav(Abc_ObjName(pObj)) );
1378 return vNames;
1379}
#define Abc_NtkForEachCo(pNtk, pCo, i)
Definition abc.h:522
Here is the call graph for this function:

◆ Abc_NtkFromAigPhase()

Abc_Ntk_t * Abc_NtkFromAigPhase ( Aig_Man_t * pMan)
extern

DECLARATIONS ///.

Function*************************************************************

Synopsis [Converts the network from the AIG manager into ABC.]

Description [This procedure should be called after seq sweeping, which changes the number of registers.]

SideEffects []

SeeAlso []

Definition at line 595 of file abcDar.c.

596{
597 Vec_Ptr_t * vNodes;
598 Abc_Ntk_t * pNtkNew;
599 Abc_Obj_t * pObjNew;
600 Aig_Obj_t * pObj, * pObjLo, * pObjLi;
601 int i;
602 assert( pMan->nAsserts == 0 );
603 // perform strashing
605 pNtkNew->nConstrs = pMan->nConstrs;
606 pNtkNew->nBarBufs = pMan->nBarBufs;
607 // duplicate the name and the spec
608// pNtkNew->pName = Extra_UtilStrsav(pMan->pName);
609// pNtkNew->pSpec = Extra_UtilStrsav(pMan->pSpec);
610 Aig_ManConst1(pMan)->pData = Abc_AigConst1(pNtkNew);
611 // create PIs
612 Aig_ManForEachPiSeq( pMan, pObj, i )
613 {
614 pObjNew = Abc_NtkCreatePi( pNtkNew );
615// Abc_ObjAssignName( pObjNew, Abc_ObjName(pObjNew), NULL );
616 pObj->pData = pObjNew;
617 }
618 // create POs
619 Aig_ManForEachPoSeq( pMan, pObj, i )
620 {
621 pObjNew = Abc_NtkCreatePo( pNtkNew );
622// Abc_ObjAssignName( pObjNew, Abc_ObjName(pObjNew), NULL );
623 pObj->pData = pObjNew;
624 }
625 assert( Abc_NtkCiNum(pNtkNew) == Aig_ManCiNum(pMan) - Aig_ManRegNum(pMan) );
626 assert( Abc_NtkCoNum(pNtkNew) == Aig_ManCoNum(pMan) - Aig_ManRegNum(pMan) );
627 // create as many latches as there are registers in the manager
628 Aig_ManForEachLiLoSeq( pMan, pObjLi, pObjLo, i )
629 {
630 pObjNew = Abc_NtkCreateLatch( pNtkNew );
631 pObjLi->pData = Abc_NtkCreateBi( pNtkNew );
632 pObjLo->pData = Abc_NtkCreateBo( pNtkNew );
633 Abc_ObjAddFanin( pObjNew, (Abc_Obj_t *)pObjLi->pData );
634 Abc_ObjAddFanin( (Abc_Obj_t *)pObjLo->pData, pObjNew );
635 Abc_LatchSetInit0( pObjNew );
636// Abc_ObjAssignName( (Abc_Obj_t *)pObjLi->pData, Abc_ObjName((Abc_Obj_t *)pObjLi->pData), NULL );
637// Abc_ObjAssignName( (Abc_Obj_t *)pObjLo->pData, Abc_ObjName((Abc_Obj_t *)pObjLo->pData), NULL );
638 }
639 // rebuild the AIG
640 vNodes = Aig_ManDfs( pMan, 1 );
641 Vec_PtrForEachEntry( Aig_Obj_t *, vNodes, pObj, i )
642 if ( Aig_ObjIsBuf(pObj) )
643 pObj->pData = (Abc_Obj_t *)Aig_ObjChild0Copy(pObj);
644 else
645 pObj->pData = Abc_AigAnd( (Abc_Aig_t *)pNtkNew->pManFunc, (Abc_Obj_t *)Aig_ObjChild0Copy(pObj), (Abc_Obj_t *)Aig_ObjChild1Copy(pObj) );
646 Vec_PtrFree( vNodes );
647 // connect the PO nodes
648 Aig_ManForEachCo( pMan, pObj, i )
649 {
650 pObjNew = (Abc_Obj_t *)Aig_ObjChild0Copy(pObj);
651 Abc_ObjAddFanin( Abc_NtkCo(pNtkNew, i), pObjNew );
652 }
653
654 Abc_NtkAddDummyPiNames( pNtkNew );
655 Abc_NtkAddDummyPoNames( pNtkNew );
656 Abc_NtkAddDummyBoxNames( pNtkNew );
657
658 // check the resulting AIG
659 if ( !Abc_NtkCheck( pNtkNew ) )
660 Abc_Print( 1, "Abc_NtkFromAigPhase(): Network check has failed.\n" );
661 return pNtkNew;
662}
ABC_DLL Abc_Ntk_t * Abc_NtkAlloc(Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan)
DECLARATIONS ///.
Definition abcNtk.c:53
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
Definition abcFanio.c:84
ABC_DLL void Abc_NtkAddDummyBoxNames(Abc_Ntk_t *pNtk)
Definition abcNames.c:547
struct Abc_Aig_t_ Abc_Aig_t
Definition abc.h:117
@ ABC_NTK_STRASH
Definition abc.h:58
ABC_DLL void Abc_NtkAddDummyPoNames(Abc_Ntk_t *pNtk)
Definition abcNames.c:521
ABC_DLL Abc_Obj_t * Abc_AigAnd(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
Definition abcAig.c:700
@ ABC_FUNC_AIG
Definition abc.h:67
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
Definition abcAig.c:683
ABC_DLL void Abc_NtkAddDummyPiNames(Abc_Ntk_t *pNtk)
Definition abcNames.c:495
struct Aig_Obj_t_ Aig_Obj_t
Definition aig.h:51
#define Aig_ManForEachPiSeq(p, pObj, i)
SEQUENTIAL ITERATORS ///.
Definition aig.h:438
#define Aig_ManForEachCo(p, pObj, i)
Definition aig.h:398
Vec_Ptr_t * Aig_ManDfs(Aig_Man_t *p, int fNodesOnly)
Definition aigDfs.c:145
#define Aig_ManForEachPoSeq(p, pObj, i)
Definition aig.h:444
#define Aig_ManForEachLiLoSeq(p, pObjLi, pObjLo, k)
Definition aig.h:450
int nBarBufs
Definition abc.h:174
int nConstrs
Definition abc.h:173
void * pManFunc
Definition abc.h:191
void * pData
Definition aig.h:87

◆ Abc_NtkToDar()

Aig_Man_t * Abc_NtkToDar ( Abc_Ntk_t * pNtk,
int fExors,
int fRegisters )
extern

Function*************************************************************

Synopsis [Converts the network from the AIG manager into ABC.]

Description [Assumes that registers are ordered after PIs/POs.]

SideEffects []

SeeAlso []

Definition at line 237 of file abcDar.c.

238{
239 Vec_Ptr_t * vNodes;
240 Aig_Man_t * pMan;
241 Aig_Obj_t * pObjNew;
242 Abc_Obj_t * pObj;
243 int i, nNodes, nDontCares;
244 // make sure the latches follow PIs/POs
245 if ( fRegisters )
246 {
247 assert( Abc_NtkBoxNum(pNtk) == Abc_NtkLatchNum(pNtk) );
248 Abc_NtkForEachCi( pNtk, pObj, i )
249 if ( i < Abc_NtkPiNum(pNtk) )
250 {
251 assert( Abc_ObjIsPi(pObj) );
252 if ( !Abc_ObjIsPi(pObj) )
253 Abc_Print( 1, "Abc_NtkToDar(): Temporary bug: The PI ordering is wrong!\n" );
254 }
255 else
256 assert( Abc_ObjIsBo(pObj) );
257 Abc_NtkForEachCo( pNtk, pObj, i )
258 if ( i < Abc_NtkPoNum(pNtk) )
259 {
260 assert( Abc_ObjIsPo(pObj) );
261 if ( !Abc_ObjIsPo(pObj) )
262 Abc_Print( 1, "Abc_NtkToDar(): Temporary bug: The PO ordering is wrong!\n" );
263 }
264 else
265 assert( Abc_ObjIsBi(pObj) );
266 // print warning about initial values
267 nDontCares = 0;
268 Abc_NtkForEachLatch( pNtk, pObj, i )
269 if ( Abc_LatchIsInitDc(pObj) )
270 {
271 Abc_LatchSetInit0(pObj);
272 nDontCares++;
273 }
274 if ( nDontCares )
275 {
276 Abc_Print( 1, "Warning: %d registers in this network have don't-care init values.\n", nDontCares );
277 Abc_Print( 1, "The don't-care are assumed to be 0. The result may not verify.\n" );
278 Abc_Print( 1, "Use command \"print_latch\" to see the init values of registers.\n" );
279 Abc_Print( 1, "Use command \"zero\" to convert or \"init\" to change the values.\n" );
280 }
281 }
282 // create the manager
283 pMan = Aig_ManStart( Abc_NtkNodeNum(pNtk) + 100 );
284 pMan->fCatchExor = fExors;
285 pMan->nConstrs = pNtk->nConstrs;
286 pMan->nBarBufs = pNtk->nBarBufs;
287 pMan->pName = Extra_UtilStrsav( pNtk->pName );
288 pMan->pSpec = Extra_UtilStrsav( pNtk->pSpec );
289 // transfer the pointers to the basic nodes
290 Abc_AigConst1(pNtk)->pCopy = (Abc_Obj_t *)Aig_ManConst1(pMan);
291 Abc_NtkForEachCi( pNtk, pObj, i )
292 {
293 pObj->pCopy = (Abc_Obj_t *)Aig_ObjCreateCi(pMan);
294 // initialize logic level of the CIs
295 ((Aig_Obj_t *)pObj->pCopy)->Level = pObj->Level;
296 }
297
298 // complement the 1-values registers
299 if ( fRegisters ) {
300 Abc_NtkForEachLatch( pNtk, pObj, i )
301 if ( Abc_LatchIsInit1(pObj) )
302 Abc_ObjFanout0(pObj)->pCopy = Abc_ObjNot(Abc_ObjFanout0(pObj)->pCopy);
303 }
304 // perform the conversion of the internal nodes (assumes DFS ordering)
305// pMan->fAddStrash = 1;
306 vNodes = Abc_NtkDfs( pNtk, 0 );
307 Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
308// Abc_NtkForEachNode( pNtk, pObj, i )
309 {
310 pObj->pCopy = (Abc_Obj_t *)Aig_And( pMan, (Aig_Obj_t *)Abc_ObjChild0Copy(pObj), (Aig_Obj_t *)Abc_ObjChild1Copy(pObj) );
311// Abc_Print( 1, "%d->%d ", pObj->Id, ((Aig_Obj_t *)pObj->pCopy)->Id );
312 }
313 Vec_PtrFree( vNodes );
314 pMan->fAddStrash = 0;
315 // create the POs
316 Abc_NtkForEachCo( pNtk, pObj, i )
317 Aig_ObjCreateCo( pMan, (Aig_Obj_t *)Abc_ObjChild0Copy(pObj) );
318 // complement the 1-valued registers
319 Aig_ManSetRegNum( pMan, Abc_NtkLatchNum(pNtk) );
320 if ( fRegisters )
321 Aig_ManForEachLiSeq( pMan, pObjNew, i )
322 if ( Abc_LatchIsInit1(Abc_ObjFanout0(Abc_NtkCo(pNtk,i))) )
323 pObjNew->pFanin0 = Aig_Not(pObjNew->pFanin0);
324 // remove dangling nodes
325 nNodes = (Abc_NtkGetChoiceNum(pNtk) == 0)? Aig_ManCleanup( pMan ) : 0;
326 if ( !fExors && nNodes )
327 Abc_Print( 1, "Abc_NtkToDar(): Unexpected %d dangling nodes when converting to AIG!\n", nNodes );
328//Aig_ManDumpVerilog( pMan, "test.v" );
329 // save the number of registers
330 if ( fRegisters )
331 {
332 Aig_ManSetRegNum( pMan, Abc_NtkLatchNum(pNtk) );
333 pMan->vFlopNums = Vec_IntStartNatural( pMan->nRegs );
334// pMan->vFlopNums = NULL;
335// pMan->vOnehots = Abc_NtkConverLatchNamesIntoNumbers( pNtk );
336 if ( pNtk->vOnehots )
337 pMan->vOnehots = (Vec_Ptr_t *)Vec_VecDupInt( (Vec_Vec_t *)pNtk->vOnehots );
338 }
339 if ( !Aig_ManCheck( pMan ) )
340 {
341 Abc_Print( 1, "Abc_NtkToDar: AIG check has failed.\n" );
342 Aig_ManStop( pMan );
343 return NULL;
344 }
345 return pMan;
346}
#define Abc_NtkForEachLatch(pNtk, pObj, i)
Definition abc.h:500
ABC_DLL int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
Definition abcUtil.c:463
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
Definition abcDfs.c:82
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
Definition aigMan.c:438
#define Aig_ManForEachLiSeq(p, pObj, i)
Definition aig.h:447
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
Definition aigOper.c:104
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
Definition aigObj.c:66
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
Definition aigMan.c:47
int Aig_ManCleanup(Aig_Man_t *p)
Definition aigMan.c:265
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
Definition aigObj.c:45
ABC_DLL int Aig_ManCheck(Aig_Man_t *p)
FUNCTION DECLARATIONS ///.
Definition aigCheck.c:45
Vec_Ptr_t * vOnehots
Definition abc.h:211
char * pSpec
Definition abc.h:159
Abc_Obj_t * pCopy
Definition abc.h:148
unsigned Level
Definition abc.h:142
Aig_Obj_t * pFanin0
Definition aig.h:75
unsigned Level
Definition aig.h:82
Here is the caller graph for this function:

◆ Extra_BitMatrixTransposeP()

void Extra_BitMatrixTransposeP ( Vec_Wrd_t * vSimsIn,
int nWordsIn,
Vec_Wrd_t * vSimsOut,
int nWordsOut )
extern

DECLARATIONS ///.

CFile****************************************************************

FileName [giaDecs.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Scalable AIG package.]

Synopsis [Calling various decomposition engines.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - June 20, 2005.]

Revision [

Id
giaDecs.c,v 1.00 2005/06/20 00:00:00 alanmi Exp

]

Definition at line 2652 of file extraUtilMisc.c.

2653{
2654 word * pM[64]; int i, y, x;
2655 assert( Vec_WrdSize(vSimsIn) == Vec_WrdSize(vSimsOut) );
2656 assert( Vec_WrdSize(vSimsIn) == 64 * nWordsIn * nWordsOut );
2657 for ( x = 0; x < nWordsOut; x++ )
2658 for ( y = 0; y < nWordsIn; y++ )
2659 {
2660 for ( i = 0; i < 64; i++ )
2661 {
2662 pM[i] = Vec_WrdEntryP( vSimsOut, (64*y+63-i)*nWordsOut + x );
2663 pM[i][0] = Vec_WrdEntry ( vSimsIn, (64*x+63-i)*nWordsIn + y );
2664 }
2665 Extra_Transpose64p( pM );
2666 }
2667}
void Extra_Transpose64p(word *A[64])
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36

◆ Vec_IntReadList()

Vec_Int_t * Vec_IntReadList ( char * pStr,
char Separ )

Definition at line 13445 of file abc.c.

13446{
13447 Vec_Int_t * vRes = Vec_IntAlloc( 10 );
13448 Vec_IntPush( vRes, atoi(pStr) );
13449 for ( int c = 0; c < strlen(pStr); c++ )
13450 if ( pStr[c] == Separ )
13451 Vec_IntPush( vRes, atoi(pStr+c+1) );
13452 return vRes;
13453}
int strlen()
Here is the call graph for this function:

Variable Documentation

◆ pBnd

Bnd_Man_t* pBnd
extern

DECLARATIONS ///.

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

CFile****************************************************************

FileName [giaDup.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Scalable AIG package.]

Synopsis [Duplication procedures.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - June 20, 2005.]

Revision [

Id
giaDup.c,v 1.00 2005/06/20 00:00:00 alanmi Exp

]

Definition at line 61 of file giaBound.c.