56 return p->vRegClasses ? Vec_IntSize(
p->vRegClasses) : 0;
76 int i, nDoms, Count = 0;
77 if (
p->vRegClasses == NULL )
79 nDoms = Vec_IntFindMax(
p->vRegClasses);
80 assert( Vec_IntCountEntry(
p->vRegClasses, 0) == 0 );
81 for ( i = 1; i <= nDoms; i++ )
82 if ( Vec_IntCountEntry(
p->vRegClasses, i) > 0 )
118 for ( i = 0; i < Gia_ManCiNum(
p); i++ )
119 if ( !Gia_ObjIsCi( Gia_ManObj(
p, nOffset+i) ) )
121 nOffset = 1 + Gia_ManCiNum(
p) + Gia_ManAndNum(
p);
122 for ( i = 0; i < Gia_ManCoNum(
p); i++ )
123 if ( !Gia_ObjIsCo( Gia_ManObj(
p, nOffset+i) ) )
146 pNew->
pName = Abc_UtilStrsav(
p->pName );
147 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
148 Gia_ManConst0(
p)->Value = 0;
152 pObj->
Value = Gia_ManAppendCi(pNew);
160 int nPis = nCIs - Gia_ManRegNum(
p);
161 assert( nAll == Gia_ManCiNum(
p) );
164 for ( i = 0; i < nPis; i++ )
165 Gia_ManCi(
p, i)->Value = Gia_ManAppendCi(pNew);
167 for ( i = nCIs; i < nAll; i++ )
168 Gia_ManCi(
p, i)->Value = Gia_ManAppendCi(pNew);
170 for ( i = nCIs - Gia_ManRegNum(
p); i < nCIs; i++ )
171 Gia_ManCi(
p, i)->Value = Gia_ManAppendCi(pNew);
172 printf(
"Warning: Shuffled CI order to be correct sequential AIG.\n" );
176 if ( Gia_ObjIsBuf(pObj) )
177 pObj->
Value = Gia_ManAppendBuf( pNew, Gia_ObjFanin0Copy(pObj) );
178 else if ( fHashMapping )
181 pObj->
Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
184 pObj->
Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
207 int i, nCIs, nAll, nPis;
213 pNew->
pName = Abc_UtilStrsav(
p->pName );
214 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
215 Gia_ManConst0(
p)->Value = 0;
221 nPis = nCIs - Gia_ManRegNum(
p);
222 assert( nAll == Gia_ManCiNum(
p) );
225 for ( i = 0; i < nPis; i++ )
226 Gia_ManCi(
p, i)->Value = Gia_ManAppendCi(pNew);
228 for ( i = nAll - Gia_ManRegNum(
p); i < nAll; i++ )
229 Gia_ManCi(
p, i)->Value = Gia_ManAppendCi(pNew);
231 for ( i = nPis; i < nAll - Gia_ManRegNum(
p); i++ )
232 Gia_ManCi(
p, i)->Value = Gia_ManAppendCi(pNew);
233 printf(
"Warning: Unshuffled CI order to be correct AIG with boxes.\n" );
236 pObj->
Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
238 pObj->
Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
260 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
262 Gia_ObjSetTravIdCurrent(
p, pObj);
263 if ( Gia_ObjIsCi(pObj) )
265 p->iData2 = Gia_ObjCioId(pObj);
268 assert( Gia_ObjIsAnd(pObj) );
269 if ( Gia_ObjIsBuf(pObj) )
273 Vec_IntPush( vNodes, Gia_ObjId(
p, pObj) );
276 if ( Gia_ObjSibl(
p, Gia_ObjId(
p, pObj)) )
283 Vec_IntPush( vNodes, Gia_ObjId(
p, pObj) );
291 int i, k, curCi, curCo;
292 assert( pManTime != NULL );
297 vNodes = Vec_IntAlloc( Gia_ManObjNum(
p) );
299 Vec_IntPush( vNodes, 0 );
300 Gia_ObjSetTravIdCurrent(
p, Gia_ManConst0(
p) );
304 pObj = Gia_ManCi(
p, i );
305 Vec_IntPush( vNodes, Gia_ObjId(
p, pObj) );
306 Gia_ObjSetTravIdCurrent(
p, pObj );
307 assert( Gia_ObjId(
p, pObj) == i+1 );
317 pObj = Gia_ManCo(
p, curCo + k );
320 int iCiNum =
p->iData2;
322 printf(
"The command has to terminate. Boxes are not in a topological order.\n" );
323 printf(
"The following information may help debugging (numbers are 0-based):\n" );
324 printf(
"Input %d of BoxA %d (1stCI = %d; 1stCO = %d) has TFI with CI %d,\n",
326 printf(
"which corresponds to output %d of BoxB %d (1stCI = %d; 1stCO = %d).\n",
329 printf(
"In a correct topological order, BoxB should precede BoxA.\n" );
330 Vec_IntFree( vNodes );
338 pObj = Gia_ManCo(
p, curCo + k );
339 Vec_IntPush( vNodes, Gia_ObjId(
p, pObj) );
345 pObj = Gia_ManCi(
p, curCi + k );
346 Vec_IntPush( vNodes, Gia_ObjId(
p, pObj) );
347 Gia_ObjSetTravIdCurrent(
p, pObj );
354 pObj = Gia_ManCo(
p, i );
360 pObj = Gia_ManCo(
p, i );
361 Vec_IntPush( vNodes, Gia_ObjId(
p, pObj) );
365 assert( curCi == Gia_ManCiNum(
p) );
366 assert( curCo == Gia_ManCoNum(
p) );
390 if ( vNodes == NULL )
394 pNew->
pName = Abc_UtilStrsav(
p->pName );
395 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
396 if ( Gia_ManHasChoices(
p) )
400 if ( Gia_ObjIsBuf(pObj) )
401 pObj->
Value = Gia_ManAppendBuf( pNew, Gia_ObjFanin0Copy(pObj) );
402 else if ( Gia_ObjIsAnd(pObj) )
404 pObj->
Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
405 if ( Gia_ObjSibl(
p, Gia_ObjId(
p, pObj)) )
406 pNew->
pSibls[Abc_Lit2Var(pObj->
Value)] = Abc_Lit2Var(Gia_ObjSiblObj(
p, Gia_ObjId(
p, pObj))->Value);
408 else if ( Gia_ObjIsCi(pObj) )
409 pObj->
Value = Gia_ManAppendCi( pNew );
410 else if ( Gia_ObjIsCo(pObj) )
411 pObj->
Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
412 else if ( Gia_ObjIsConst0(pObj) )
417 Vec_IntFree( vNodes );
439 iPrev = Gia_ObjValue(pObj);
442 pObjGia = Gia_ManObj( pGia, Abc_Lit2Var(iPrev) );
443 if ( pObjGia->
Value == ~0 )
444 Gia_ObjSetValue( pObj, pObjGia->
Value );
446 Gia_ObjSetValue( pObj, Abc_LitNotCond(pObjGia->
Value, Abc_LitIsCompl(iPrev)) );
463 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
465 Gia_ObjSetTravIdCurrent(
p, pObj);
466 if ( Gia_ObjIsCi(pObj) )
468 assert( Gia_ObjIsAnd(pObj) );
469 if ( Gia_ObjSibl(
p, Gia_ObjId(
p, pObj)) )
475 Gia_ObjSetAndLevel(
p, pObj );
480 int nAnd2Delay =
p->nAnd2Delay ?
p->nAnd2Delay : 1;
483 int i, k, j, curCi, curCo, LevelMax;
484 assert( Gia_ManRegNum(
p) == 0 );
485 assert( Gia_ManBufNum(
p) == 0 );
488 Gia_ObjSetLevel(
p, Gia_ManConst0(
p), 0 );
490 Gia_ObjSetTravIdCurrent(
p, Gia_ManConst0(
p) );
493 pObj = Gia_ManCi(
p, i );
495 Gia_ObjSetTravIdCurrent(
p, pObj );
506 for ( k = 0; k < nBoxInputs; k++ )
508 pObj = Gia_ManCo(
p, curCo + k );
511 printf(
"Boxes are not in a topological order. Switching to level computation without boxes.\n" );
515 Gia_ObjSetCoLevel(
p, pObj );
518 for ( k = 0; k < nBoxOutputs; k++ )
520 pObj = Gia_ManCi(
p, curCi + k );
521 Gia_ObjSetTravIdCurrent(
p, pObj );
524 assert( nBoxInputs == (
int)pDelayTable[1] );
525 for ( j = 0; j < nBoxInputs && (pObjIn = Gia_ManCo(
p, curCo + j)); j++ )
526 if ( (
int)pDelayTable[3+k*nBoxInputs+j] != -
ABC_INFINITY )
527 LevelMax = Abc_MaxInt( LevelMax, Gia_ObjLevel(
p, pObjIn) + ((
int)pDelayTable[3+k*nBoxInputs+j] / nAnd2Delay) );
529 Gia_ObjSetLevel(
p, pObj, LevelMax );
532 curCi += nBoxOutputs;
538 pObj = Gia_ManCo(
p, i );
540 Gia_ObjSetCoLevel(
p, pObj );
541 p->nLevels = Abc_MaxInt(
p->nLevels, Gia_ObjLevel(
p, pObj) );
545 assert( curCi == Gia_ManCiNum(
p) );
546 assert( curCo == Gia_ManCoNum(
p) );
564 int iObj, k, iFan, Level = 0;
565 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
567 Gia_ObjSetTravIdCurrent(
p, pObj);
568 if ( Gia_ObjIsCi(pObj) )
570 assert( Gia_ObjIsAnd(pObj) );
571 iObj = Gia_ObjId(
p, pObj );
576 Level = Abc_MaxInt( Level, Gia_ObjLevelId(
p, iFan) );
578 Gia_ObjSetLevelId(
p, iObj, Level + 1 );
586 int i, k, j, curCi, curCo, LevelMax;
587 assert( Gia_ManRegNum(
p) == 0 );
588 if ( pManTime == NULL )
592 Gia_ObjSetLevel(
p, Gia_ManConst0(
p), 0 );
594 Gia_ObjSetTravIdCurrent(
p, Gia_ManConst0(
p) );
597 pObj = Gia_ManCi(
p, i );
599 Gia_ObjSetLevel(
p, pObj, 0 );
600 Gia_ObjSetTravIdCurrent(
p, pObj );
611 for ( k = 0; k < nBoxInputs; k++ )
613 pObj = Gia_ManCo(
p, curCo + k );
616 printf(
"Boxes are not in a topological order. Switching to level computation without boxes.\n" );
620 Gia_ObjSetCoLevel(
p, pObj );
623 for ( k = 0; k < nBoxOutputs; k++ )
625 pObj = Gia_ManCi(
p, curCi + k );
626 Gia_ObjSetTravIdCurrent(
p, pObj );
629 assert( nBoxInputs == (
int)pDelayTable[1] );
630 for ( j = 0; j < nBoxInputs && (pObjIn = Gia_ManCo(
p, curCo + j)); j++ )
631 if ( (
int)pDelayTable[3+k*nBoxInputs+j] != -
ABC_INFINITY )
633 LevelMax = Abc_MaxInt( LevelMax, Gia_ObjLevel(
p, pObjIn) + 1 );
635 Gia_ObjSetLevel(
p, pObj, LevelMax );
638 curCi += nBoxOutputs;
644 pObj = Gia_ManCo(
p, i );
646 Gia_ObjSetCoLevel(
p, pObj );
647 p->nLevels = Abc_MaxInt(
p->nLevels, Gia_ObjLevel(
p, pObj) );
651 assert( curCi == Gia_ManCiNum(
p) );
652 assert( curCo == Gia_ManCoNum(
p) );
671 assert( pManTime != NULL );
678 assert( pManTime != NULL );
698 Vec_Int_t * vOutPres = Vec_IntAlloc( 100 );
705 Vec_IntPush( vOutPres, Vec_IntEntry(vBoxPres, i) );
708 assert( curPo == Gia_ManCoNum(
p) );
710 Vec_IntFree( vOutPres );
718 Vec_Int_t * vOutsLeft = Vec_IntAlloc( 100 );
719 int i, k, iBox, iOutFirst;
726 Vec_IntPush( vOutsLeft, iOutFirst + k );
729 Vec_IntFree( vOutsLeft );
750 pNew->
pName = Abc_UtilStrsav(
p->pName );
751 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
752 Gia_ManConst0(
p)->Value = 0;
755 pObj->
Value = Gia_ManAppendCi( pNew );
757 if ( i >= Gia_ManCiNum(
p) - nItems )
758 pObj->
Value = Gia_ManAppendCi( pNew );
760 if ( i >= iInsert && i < Gia_ManCiNum(
p) - nItems )
761 pObj->
Value = Gia_ManAppendCi( pNew );
764 if ( Gia_ObjIsCi(pObj) )
766 if ( Gia_ObjIsAnd(pObj) )
767 pObj->
Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
768 else if ( Gia_ObjIsCo(pObj) )
769 pObj->
Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
789 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
791 Gia_ObjSetTravIdCurrent(
p, pObj);
792 assert( Gia_ObjIsAnd(pObj) );
793 if ( Gia_ObjSibl(
p, Gia_ObjId(
p, pObj)) )
799 if ( Gia_ObjSibl(
p, Gia_ObjId(
p, pObj)) )
800 pNew->
pSibls[Abc_Lit2Var(pObj->
Value)] = Abc_Lit2Var(Gia_ObjSiblObj(
p, Gia_ObjId(
p, pObj))->Value);
808 int i, k, curCi, curCo, nBBins = 0, nBBouts = 0, nNewPis = 0;
809 assert( !fSeq ||
p->vRegClasses );
813 pNew->
pName = Abc_UtilStrsav(
p->pName );
814 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
815 if ( Gia_ManHasChoices(
p) )
820 Gia_ManConst0(
p)->Value = 0;
822 Gia_ObjSetTravIdCurrent(
p, Gia_ManConst0(
p) );
825 pObj = Gia_ManCi(
p, i );
826 pObj->
Value = Gia_ManAppendCi(pNew);
827 Gia_ObjSetTravIdCurrent(
p, pObj );
836 Gia_ObjSetTravIdCurrent( pBoxes, Gia_ManConst0(pBoxes) );
837 Gia_ManConst0(pBoxes)->Value = 0;
842 int fSkip = (vBoxPres != NULL && !Vec_IntEntry(vBoxPres, i));
845 pObj = Gia_ManCo(
p, curCo + k );
847 pObj->
Value = fSkip ? -1 : Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
852 pObj = Gia_ManCi(
p, curCi + k );
853 pObj->
Value = fSkip ? 0 : Gia_ManAppendCi(pNew);
854 Gia_ObjSetTravIdCurrent(
p, pObj );
864 pObj = Gia_ManCo(
p, curCo + k );
867 pObjBox = Gia_ManCi( pBoxes, k );
868 pObjBox->
Value = Gia_ObjFanin0Copy(pObj);
869 Gia_ObjSetTravIdCurrent( pBoxes, pObjBox );
874 pObjBox = Gia_ManCo( pBoxes, curCi -
Tim_ManPiNum(pManTime) + k );
877 pObj = Gia_ManCi(
p, curCi + k );
878 pObj->
Value = Gia_ObjFanin0Copy(pObjBox);
879 Gia_ObjSetTravIdCurrent(
p, pObj );
889 pObj = Gia_ManCo(
p, i );
891 pObj->
Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
895 assert( curCi == Gia_ManCiNum(
p) );
896 assert( curCo == Gia_ManCoNum(
p) );
897 Gia_ManSetRegNum( pNew, (fSeq &&
p->vRegClasses) ? Vec_IntSize(
p->vRegClasses) : Gia_ManRegNum(
p) );
920 if ( fSeq &&
p->vRegInits && Vec_IntSum(
p->vRegInits) )
922 char * pInit =
ABC_ALLOC(
char, Vec_IntSize(
p->vRegInits) + 1 );
925 assert( Vec_IntSize(
p->vRegInits) == Gia_ManRegNum(pNew) );
928 if ( Vec_IntEntry(
p->vRegInits, i) == 0 )
930 else if ( Vec_IntEntry(
p->vRegInits, i) == 1 )
958 Gia_Man_t * pSpec, * pGia0, * pGia1, * pMiter;
960 if ( pFileSpec == NULL && pGia->
pSpec == NULL )
962 printf(
"Spec file is not given. Use standard flow.\n" );
967 printf(
"Design has no box logic. Use standard flow.\n" );
975 printf(
"Spec has no box logic. Use standard flow.\n" );
993 printf(
"Spec has less boxes than the design. Cannot proceed.\n" );
1000 if ( vBoxPres == NULL )
1002 printf(
"Boxes of spec and design cannot be aligned. Cannot proceed.\n" );
1016 Vec_IntFreeP( &vBoxPres );
1020 char pFileName0[1000], pFileName1[1000];
1022 sprintf( pFileName0,
"%s_spec.aig", pNameGeneric );
1023 sprintf( pFileName1,
"%s_impl.aig", pNameGeneric );
1027 printf(
"Dumped two parts of the miter into files \"%s\" and \"%s\".\n", pFileName0, pFileName1 );
1032 pMiter =
Gia_ManMiter( pGia0, pGia1, 0, 0, 1, 0, fVerbose );
1050 pMiter =
Gia_ManMiter( pGia0, pGia1, 0, 1, 0, 0, fVerbose );
1060 Abc_Print( 1,
"Verification failed for at least one output (%d).\n", pPars->
iOutFail );
#define ABC_ALLOC(type, num)
#define ABC_INFINITY
MACRO DEFINITIONS ///.
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_ManStop(Aig_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Cec_ManCecSetDefaultParams(Cec_ParCec_t *p)
struct Cec_ParCec_t_ Cec_ParCec_t
int Cec_ManVerify(Gia_Man_t *p, Cec_ParCec_t *pPars)
MACRO DEFINITIONS ///.
void Fra_SecSetDefaultParams(Fra_Sec_t *p)
DECLARATIONS ///.
struct Fra_Sec_t_ Fra_Sec_t
int Fra_FraigSec(Aig_Man_t *p, Fra_Sec_t *pParSec, Aig_Man_t **ppResult)
Aig_Man_t * Gia_ManToAig(Gia_Man_t *p, int fChoices)
int Gia_ManNonRegBoxNum(Gia_Man_t *p)
int Gia_ManRegBoxNum(Gia_Man_t *p)
int Gia_ManIsNormalized(Gia_Man_t *p)
void * Gia_ManUpdateTimMan(Gia_Man_t *p, Vec_Int_t *vBoxPres)
int Gia_ManBoxCiNum(Gia_Man_t *p)
Gia_Man_t * Gia_ManDupUnshuffleInputs(Gia_Man_t *p)
int Gia_ManLevelWithBoxes(Gia_Man_t *p)
int Gia_ManLevelWithBoxes_rec(Gia_Man_t *p, Gia_Obj_t *pObj)
int Gia_ManIsSeqWithBoxes(Gia_Man_t *p)
ABC_NAMESPACE_IMPL_START int Gia_ManBoxNum(Gia_Man_t *p)
DECLARATIONS ///.
Gia_Man_t * Gia_ManDupMoveLast(Gia_Man_t *p, int iInsert, int nItems)
void * Gia_ManUpdateTimMan2(Gia_Man_t *p, Vec_Int_t *vBoxesLeft, int nTermsDiff)
Gia_Man_t * Gia_ManDupCollapse(Gia_Man_t *p, Gia_Man_t *pBoxes, Vec_Int_t *vBoxPres, int fSeq)
int Gia_ManLutLevelWithBoxes_rec(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManDupCollapse_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Gia_Man_t *pNew)
int Gia_ManVerifyWithBoxes(Gia_Man_t *pGia, int nBTLimit, int nTimeLim, int fSeq, int fDumpFiles, int fVerbose, char *pFileSpec)
int Gia_ManLutLevelWithBoxes(Gia_Man_t *p)
void Gia_ManCleanupRemap(Gia_Man_t *p, Gia_Man_t *pGia)
Gia_Man_t * Gia_ManDupNormalize(Gia_Man_t *p, int fHashMapping)
int Gia_ManClockDomainNum(Gia_Man_t *p)
int Gia_ManOrderWithBoxes_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vNodes)
Gia_Man_t * Gia_ManUpdateExtraAig2(void *pTime, Gia_Man_t *p, Vec_Int_t *vBoxesLeft)
Gia_Man_t * Gia_ManUpdateExtraAig(void *pTime, Gia_Man_t *p, Vec_Int_t *vBoxPres)
Vec_Int_t * Gia_ManOrderWithBoxes(Gia_Man_t *p)
int Gia_ManBlackBoxNum(Gia_Man_t *p)
Gia_Man_t * Gia_ManDupUnnormalize(Gia_Man_t *p)
int Gia_ManBoxCoNum(Gia_Man_t *p)
void Gia_ManStop(Gia_Man_t *p)
Gia_Man_t * Gia_ManDup(Gia_Man_t *p)
#define Gia_ManForEachRo(p, pObj, i)
#define Gia_ManForEachAnd(p, pObj, i)
int Gia_ManLutLevel(Gia_Man_t *p, int **ppLevels)
Gia_Man_t * Gia_AigerRead(char *pFileName, int fGiaSimple, int fSkipStrash, int fCheck)
void Gia_ManSetRegNum(Gia_Man_t *p, int nRegs)
void Gia_ManHashAlloc(Gia_Man_t *p)
void Gia_ManDupRemapEquiv(Gia_Man_t *pNew, Gia_Man_t *p)
Gia_Man_t * Gia_ManStart(int nObjsMax)
FUNCTION DEFINITIONS ///.
int Gia_ManBoxNum(Gia_Man_t *p)
DECLARATIONS ///.
struct Gia_Obj_t_ Gia_Obj_t
#define Gia_LutForEachFanin(p, i, iFan, k)
void Gia_ManFillValue(Gia_Man_t *p)
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachObj1(p, pObj, i)
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
void Gia_ManCleanLevels(Gia_Man_t *p, int Size)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
Gia_Man_t * Gia_ManDupSelectedOutputs(Gia_Man_t *p, Vec_Int_t *vOutsLeft)
void Gia_ManIncrementTravId(Gia_Man_t *p)
Gia_Man_t * Gia_ManMiter(Gia_Man_t *pAig0, Gia_Man_t *pAig1, int nInsDup, int fDualOut, int fSeq, int fImplic, int fVerbose)
Gia_Man_t * Gia_ManDupOutputVec(Gia_Man_t *p, Vec_Int_t *vOutPres)
#define Gia_ManForEachCo(p, pObj, i)
#define Gia_ManForEachCi(p, pObj, i)
Gia_Man_t * Gia_ManDupZeroUndc(Gia_Man_t *p, char *pInit, int nNewPis, int fGiaSimple, int fVerbose)
void Gia_ManHashStop(Gia_Man_t *p)
int Gia_ManLevelNum(Gia_Man_t *p)
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact, int fWriteNewLine)
int Tim_ManBoxIsBlack(Tim_Man_t *p, int iBox)
int Tim_ManBoxOutputNum(Tim_Man_t *p, int iBox)
int Tim_ManBlackBoxNum(Tim_Man_t *p)
int Tim_ManBoxNum(Tim_Man_t *p)
int Tim_ManBoxFindFromCiNum(Tim_Man_t *p, int iCiNum)
typedefABC_NAMESPACE_HEADER_START struct Tim_Man_t_ Tim_Man_t
INCLUDES ///.
Vec_Int_t * Tim_ManAlignTwo(Tim_Man_t *pSpec, Tim_Man_t *pImpl)
int Tim_ManCiNum(Tim_Man_t *p)
int Tim_ManPoNum(Tim_Man_t *p)
Tim_Man_t * Tim_ManTrim(Tim_Man_t *p, Vec_Int_t *vBoxPres)
int Tim_ManBoxInputFirst(Tim_Man_t *p, int iBox)
int Tim_ManBoxInputNum(Tim_Man_t *p, int iBox)
Tim_Man_t * Tim_ManReduce(Tim_Man_t *p, Vec_Int_t *vBoxesLeft, int nTermsDiff)
int Tim_ManPiNum(Tim_Man_t *p)
int Tim_ManCoNum(Tim_Man_t *p)
float Tim_ManGetCiArrival(Tim_Man_t *p, int iCi)
float * Tim_ManBoxDelayTable(Tim_Man_t *p, int iBox)
int Tim_ManBoxOutputFirst(Tim_Man_t *p, int iBox)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.