ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
abcBmc.c File Reference
#include "base/abc/abc.h"
#include "aig/ivy/ivy.h"
Include dependency graph for abcBmc.c:

Go to the source code of this file.

Functions

ABC_NAMESPACE_IMPL_START Ivy_Man_tAbc_NtkIvyBefore (Abc_Ntk_t *pNtk, int fSeq, int fUseDc)
 DECLARATIONS ///.
 
void Abc_NtkBmc (Abc_Ntk_t *pNtk, int nFrames, int fInit, int fVerbose)
 FUNCTION DEFINITIONS ///.
 

Function Documentation

◆ Abc_NtkBmc()

void Abc_NtkBmc ( Abc_Ntk_t * pNtk,
int nFrames,
int fInit,
int fVerbose )

FUNCTION DEFINITIONS ///.

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

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 50 of file abcBmc.c.

51{
52 Ivy_FraigParams_t Params, * pParams = &Params;
53 Ivy_Man_t * pMan, * pFrames, * pFraig;
54 Vec_Ptr_t * vMapping;
55 // convert to IVY manager
56 pMan = Abc_NtkIvyBefore( pNtk, 0, 0 );
57 // generate timeframes
58 pFrames = Ivy_ManFrames( pMan, Abc_NtkLatchNum(pNtk), nFrames, fInit, &vMapping );
59 // fraig the timeframes
60 Ivy_FraigParamsDefault( pParams );
61 pParams->nBTLimitNode = ABC_INFINITY;
62 pParams->fVerbose = 0;
63 pParams->fProve = 0;
64 pFraig = Ivy_FraigPerform( pFrames, pParams );
65printf( "Frames have %6d nodes. ", Ivy_ManNodeNum(pFrames) );
66printf( "Fraig has %6d nodes.\n", Ivy_ManNodeNum(pFraig) );
67 // report the classes
68// if ( fVerbose )
69// Abc_NtkBmcReport( pMan, pFrames, pFraig, vMapping, nFrames );
70 // free stuff
71 Vec_PtrFree( vMapping );
72 Ivy_ManStop( pFraig );
73 Ivy_ManStop( pFrames );
74 Ivy_ManStop( pMan );
75}
ABC_NAMESPACE_IMPL_START Ivy_Man_t * Abc_NtkIvyBefore(Abc_Ntk_t *pNtk, int fSeq, int fUseDc)
DECLARATIONS ///.
Definition abcIvy.c:88
#define ABC_INFINITY
MACRO DEFINITIONS ///.
Definition abc_global.h:250
Ivy_Man_t * Ivy_FraigPerform(Ivy_Man_t *pManAig, Ivy_FraigParams_t *pParams)
Definition ivyFraig.c:451
typedefABC_NAMESPACE_HEADER_START struct Ivy_Man_t_ Ivy_Man_t
INCLUDES ///.
Definition ivy.h:46
void Ivy_FraigParamsDefault(Ivy_FraigParams_t *pParams)
FUNCTION DEFINITIONS ///.
Definition ivyFraig.c:225
struct Ivy_FraigParams_t_ Ivy_FraigParams_t
Definition ivy.h:49
void Ivy_ManStop(Ivy_Man_t *p)
Definition ivyMan.c:238
Ivy_Man_t * Ivy_ManFrames(Ivy_Man_t *pMan, int nLatches, int nFrames, int fInit, Vec_Ptr_t **pvMapping)
Definition ivyMan.c:172
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_NtkIvyBefore()

ABC_NAMESPACE_IMPL_START Ivy_Man_t * Abc_NtkIvyBefore ( Abc_Ntk_t * pNtk,
int fSeq,
int fUseDc )
extern

DECLARATIONS ///.

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

FileName [abcBmc.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Network and node package.]

Synopsis [Performs bounded model check.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

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

Revision [

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

]

DECLARATIONS ///.

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

Synopsis [Prepares the IVY package.]

Description []

SideEffects []

SeeAlso []

Definition at line 88 of file abcIvy.c.

89{
90 Ivy_Man_t * pMan;
91//timeRetime = Abc_Clock();
92 assert( !Abc_NtkIsNetlist(pNtk) );
93 if ( Abc_NtkIsBddLogic(pNtk) )
94 {
95 if ( !Abc_NtkBddToSop(pNtk, -1, ABC_INFINITY, 1) )
96 {
97 printf( "Abc_NtkIvyBefore(): Converting to SOPs has failed.\n" );
98 return NULL;
99 }
100 }
101 if ( fSeq && Abc_NtkCountSelfFeedLatches(pNtk) )
102 {
103 printf( "Warning: The network has %d self-feeding latches.\n", Abc_NtkCountSelfFeedLatches(pNtk) );
104// return NULL;
105 }
106 // print warning about choice nodes
107 if ( Abc_NtkGetChoiceNum( pNtk ) )
108 printf( "Warning: The choice nodes in the initial AIG are removed by strashing.\n" );
109 // convert to the AIG manager
110 pMan = Abc_NtkToIvy( pNtk );
111 if ( !Ivy_ManCheck( pMan ) )
112 {
113 printf( "AIG check has failed.\n" );
114 Ivy_ManStop( pMan );
115 return NULL;
116 }
117// Ivy_ManPrintStats( pMan );
118 if ( fSeq )
119 {
120 int nLatches = Abc_NtkLatchNum(pNtk);
121 Vec_Int_t * vInit = Abc_NtkCollectLatchValuesIvy( pNtk, fUseDc );
122 Ivy_ManMakeSeq( pMan, nLatches, vInit->pArray );
123 Vec_IntFree( vInit );
124// Ivy_ManPrintStats( pMan );
125 }
126//timeRetime = Abc_Clock() - timeRetime;
127 return pMan;
128}
ABC_DLL int Abc_NtkCountSelfFeedLatches(Abc_Ntk_t *pNtk)
Definition abcLatch.c:92
ABC_DLL int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
Definition abcUtil.c:463
ABC_DLL int Abc_NtkBddToSop(Abc_Ntk_t *pNtk, int fMode, int nCubeLimit, int fCubeSort)
Definition abcFunc.c:866
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
int Ivy_ManCheck(Ivy_Man_t *p)
DECLARATIONS ///.
Definition ivyCheck.c:45
void Ivy_ManMakeSeq(Ivy_Man_t *p, int nLatches, int *pInits)
Definition ivyMan.c:482
#define assert(ex)
Definition util_old.h:213
Here is the call graph for this function:
Here is the caller graph for this function: