ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
cecCore.c
Go to the documentation of this file.
1
20
21#include "cecInt.h"
22
24
25
29
33
46{
47 memset( p, 0, sizeof(Cec_ParSat_t) );
48 p->SolverType = -1; // SAT solver type
49 p->nBTLimit = 100; // conflict limit at a node
50 p->nSatVarMax = 2000; // the max number of SAT variables
51 p->nCallsRecycle = 200; // calls to perform before recycling SAT solver
52 p->fNonChrono = 1; // use non-chronological backtracling (for circuit SAT only)
53 p->fPolarFlip = 1; // flops polarity of variables
54 p->fCheckMiter = 0; // the circuit is the miter
55// p->fFirstStop = 0; // stop on the first sat output
56 p->fLearnCls = 0; // perform clause learning
57 p->fVerbose = 0; // verbose stats
58}
59
72{
73 memset( p, 0, sizeof(Cec_ParSim_t) );
74 p->nWords = 31; // the number of simulation words
75 p->nFrames = 100; // the number of simulation frames
76 p->nRounds = 20; // the max number of simulation rounds
77 p->nNonRefines = 3; // the max number of rounds without refinement
78 p->TimeLimit = 0; // the runtime limit in seconds
79 p->fCheckMiter = 0; // the circuit is the miter
80// p->fFirstStop = 0; // stop on the first sat output
81 p->fDualOut = 0; // miter with separate outputs
82 p->fConstCorr = 0; // consider only constants
83 p->fSeqSimulate = 0; // performs sequential simulation
84 p->fVeryVerbose = 0; // verbose stats
85 p->fVerbose = 0; // verbose stats
86}
87
100{
101 memset( p, 0, sizeof(Cec_ParSmf_t) );
102 p->nWords = 31; // the number of simulation words
103 p->nRounds = 200; // the number of simulation rounds
104 p->nFrames = 200; // the max number of time frames
105 p->nNonRefines = 3; // the max number of rounds without refinement
106 p->nMinOutputs = 0; // the min outputs to accumulate
107 p->nBTLimit = 100; // conflict limit at a node
108 p->TimeLimit = 0; // the runtime limit in seconds
109 p->fDualOut = 0; // miter with separate outputs
110 p->fCheckMiter = 0; // the circuit is the miter
111// p->fFirstStop = 0; // stop on the first sat output
112 p->fVerbose = 0; // verbose stats
113}
114
127{
128 memset( p, 0, sizeof(Cec_ParFra_t) );
129 p->nWords = 15; // the number of simulation words
130 p->nRounds = 15; // the number of simulation rounds
131 p->TimeLimit = 0; // the runtime limit in seconds
132 p->nItersMax = 10; // the maximum number of iterations of SAT sweeping
133 p->nBTLimit = 100; // conflict limit at a node
134 p->nLevelMax = 0; // restriction on the level of nodes to be swept
135 p->nDepthMax = 1; // the depth in terms of steps of speculative reduction
136 p->fRewriting = 0; // enables AIG rewriting
137 p->fCheckMiter = 0; // the circuit is the miter
138// p->fFirstStop = 0; // stop on the first sat output
139 p->fDualOut = 0; // miter with separate outputs
140 p->fColorDiff = 0; // miter with separate outputs
141 p->fSatSweeping = 0; // enable SAT sweeping
142 p->fUseCones = 0; // use cones
143 p->fVeryVerbose = 0; // verbose stats
144 p->fVerbose = 0; // verbose stats
145 p->iOutFail = -1; // the failed output
146}
147
160{
161 memset( p, 0, sizeof(Cec_ParCec_t) );
162 p->nBTLimit = 1000; // conflict limit at a node
163 p->TimeLimit = 0; // the runtime limit in seconds
164// p->fFirstStop = 0; // stop on the first sat output
165 p->fUseSmartCnf = 0; // use smart CNF computation
166 p->fRewriting = 0; // enables AIG rewriting
167 p->fVeryVerbose = 0; // verbose stats
168 p->fVerbose = 0; // verbose stats
169 p->iOutFail = -1; // the number of failed output
170}
171
184{
185 memset( p, 0, sizeof(Cec_ParCor_t) );
186 p->nWords = 15; // the number of simulation words
187 p->nRounds = 15; // the number of simulation rounds
188 p->nFrames = 1; // the number of time frames
189 p->nBTLimit = 100; // conflict limit at a node
190 p->nLevelMax = -1; // (scorr only) the max number of levels
191 p->nStepsMax = -1; // (scorr only) the max number of induction steps
192 p->fLatchCorr = 0; // consider only latch outputs
193 p->fConstCorr = 0; // consider only constants
194 p->fUseRings = 1; // combine classes into rings
195 p->fUseCSat = 1; // use circuit-based solver
196// p->fFirstStop = 0; // stop on the first sat output
197 p->fUseSmartCnf = 0; // use smart CNF computation
198 p->fVeryVerbose = 0; // verbose stats
199 p->fVerbose = 0; // verbose stats
200}
201
214{
215 memset( p, 0, sizeof(Cec_ParChc_t) );
216 p->nWords = 15; // the number of simulation words
217 p->nRounds = 15; // the number of simulation rounds
218 p->nBTLimit = 1000; // conflict limit at a node
219 p->fUseRings = 1; // use rings
220 p->fUseCSat = 0; // use circuit-based solver
221 p->fVeryVerbose = 0; // verbose stats
222 p->fVerbose = 0; // verbose stats
223}
224
236Gia_Man_t * Cec_ManSatSolving( Gia_Man_t * pAig, Cec_ParSat_t * pPars, int f0Proved )
237{
238 Gia_Man_t * pNew;
239 Cec_ManPat_t * pPat;
240 pPat = Cec_ManPatStart();
241 if ( pPars->SolverType == -1 )
242 Cec_ManSatSolve( pPat, pAig, pPars, NULL, NULL, NULL, f0Proved );
243 else
244 CecG_ManSatSolve( pPat, pAig, pPars, f0Proved );
245// pNew = Gia_ManDupDfsSkip( pAig );
246 pNew = Gia_ManCleanup( pAig );
247 Cec_ManPatStop( pPat );
248 pNew->vSeqModelVec = pAig->vSeqModelVec;
249 pAig->vSeqModelVec = NULL;
250 return pNew;
251}
252
265{
266 Cec_ManSim_t * pSim;
267 int RetValue = 0;
268 abctime clkTotal = Abc_Clock();
269 pSim = Cec_ManSimStart( pAig, pPars );
270 if ( (pAig->pReprs == NULL && (RetValue = Cec_ManSimClassesPrepare( pSim, -1 ))) ||
271 (RetValue == 0 && (RetValue = Cec_ManSimClassesRefine( pSim ))) )
272 Abc_Print( 1, "The number of failed outputs of the miter = %6d. (Words = %4d. Frames = %4d.)\n",
273 pSim->nOuts, pPars->nWords, pPars->nFrames );
274 if ( pPars->fVerbose )
275 Abc_PrintTime( 1, "Time", Abc_Clock() - clkTotal );
276 Cec_ManSimStop( pSim );
277 return RetValue;
278}
279
292{
293 int r, nLitsOld, nLitsNew, nCountNoRef = 0, fStop = 0;
294 Gia_ManRandom( 1 );
295 if ( pPars->fSeqSimulate )
296 Abc_Print( 1, "Performing rounds of random simulation of %d frames with %d words.\n",
297 pPars->nRounds, pPars->nFrames, pPars->nWords );
298 nLitsOld = Gia_ManEquivCountLits( pAig );
299 for ( r = 0; r < pPars->nRounds; r++ )
300 {
301 if ( Cec_ManSimulationOne( pAig, pPars ) )
302 {
303 fStop = 1;
304 break;
305 }
306 // decide when to stop
307 nLitsNew = Gia_ManEquivCountLits( pAig );
308 if ( nLitsOld == 0 || nLitsOld > nLitsNew )
309 {
310 nLitsOld = nLitsNew;
311 nCountNoRef = 0;
312 }
313 else if ( ++nCountNoRef == pPars->nNonRefines )
314 {
315 r++;
316 break;
317 }
318 assert( nLitsOld == nLitsNew );
319 }
320// if ( pPars->fVerbose )
321 if ( r == pPars->nRounds || fStop )
322 Abc_Print( 1, "Random simulation is stopped after %d rounds.\n", r );
323 else
324 Abc_Print( 1, "Random simulation saturated after %d rounds.\n", r );
325 if ( pPars->fCheckMiter )
326 {
327 int nNonConsts = Cec_ManCountNonConstOutputs( pAig );
328 if ( nNonConsts )
329 Abc_Print( 1, "The number of POs that are not const-0 candidates = %d.\n", nNonConsts );
330 }
331}
332
344Gia_Man_t * Cec_ManSatSweeping( Gia_Man_t * pAig, Cec_ParFra_t * pPars, int fSilent )
345{
346 int fOutputResult = 0;
347 Cec_ParSat_t ParsSat, * pParsSat = &ParsSat;
348 Cec_ParSim_t ParsSim, * pParsSim = &ParsSim;
349 Gia_Man_t * pIni, * pSrm, * pTemp;
350 Cec_ManFra_t * p;
351 Cec_ManSim_t * pSim;
352 Cec_ManPat_t * pPat;
353 int i, fTimeOut = 0, nMatches = 0;
354 abctime clk, clk2, clkTotal = Abc_Clock();
355 if ( pPars->fVerbose )
356 printf( "Simulating %d words for %d rounds. SAT solving with %d conflicts.\n", pPars->nWords, pPars->nRounds, pPars->nBTLimit );
357
358 // duplicate AIG and transfer equivalence classes
359 Gia_ManRandom( 1 );
360 pIni = Gia_ManDup(pAig);
361 pIni->pReprs = pAig->pReprs; pAig->pReprs = NULL;
362 pIni->pNexts = pAig->pNexts; pAig->pNexts = NULL;
363 if ( pPars->fUseOrigIds )
364 {
365 Gia_ManOrigIdsInit( pIni );
366 Vec_IntFreeP( &pAig->vIdsEquiv );
367 pAig->vIdsEquiv = Vec_IntAlloc( 1000 );
368 }
369 if ( pAig->vSimsPi )
370 {
371 pIni->vSimsPi = Vec_WrdDup(pAig->vSimsPi);
372 pIni->nSimWords = pAig->nSimWords;
373 }
374
375 // prepare the managers
376 // SAT sweeping
377 p = Cec_ManFraStart( pIni, pPars );
378 if ( pPars->fDualOut )
379 pPars->fColorDiff = 1;
380 // simulation
381 Cec_ManSimSetDefaultParams( pParsSim );
382 pParsSim->nWords = Abc_MaxInt(2*pAig->nSimWords, pPars->nWords);
383 pParsSim->nFrames = pPars->nRounds;
384 pParsSim->fCheckMiter = pPars->fCheckMiter;
385 pParsSim->fDualOut = pPars->fDualOut;
386 pParsSim->fVerbose = pPars->fVerbose;
387 pSim = Cec_ManSimStart( pIni, pParsSim );
388 // SAT solving
389 Cec_ManSatSetDefaultParams( pParsSat );
390 pParsSat->nBTLimit = pPars->nBTLimit;
391 pParsSat->fVerbose = pPars->fVeryVerbose;
392 // simulation patterns
393 pPat = Cec_ManPatStart();
394 //pPat->fVerbose = pPars->fVeryVerbose;
395
396 // start equivalence classes
397clk = Abc_Clock();
398 if ( p->pAig->pReprs == NULL )
399 {
400 if ( Cec_ManSimClassesPrepare(pSim, -1) || (!p->pAig->nSimWords && Cec_ManSimClassesRefine(pSim)) )
401 {
402 Gia_ManStop( p->pAig );
403 p->pAig = NULL;
404 goto finalize;
405 }
406 }
407p->timeSim += Abc_Clock() - clk;
408 // perform solving
409 for ( i = 1; i <= pPars->nItersMax; i++ )
410 {
411 clk2 = Abc_Clock();
412 nMatches = 0;
413 if ( pPars->fDualOut )
414 {
415 nMatches = Gia_ManEquivSetColors( p->pAig, pPars->fVeryVerbose );
416// p->pAig->pIso = Cec_ManDetectIsomorphism( p->pAig );
417// Gia_ManEquivTransform( p->pAig, 1 );
418 }
419 pSrm = Cec_ManFraSpecReduction( p );
420
421// Gia_AigerWrite( pSrm, "gia_srm.aig", 0, 0, 0 );
422
423 if ( pPars->fVeryVerbose )
424 Gia_ManPrintStats( pSrm, NULL );
425 if ( Gia_ManCoNum(pSrm) == 0 )
426 {
427 Gia_ManStop( pSrm );
428 if ( p->pPars->fVerbose )
429 Abc_Print( 1, "Considered all available candidate equivalences.\n" );
430 if ( pPars->fDualOut && Gia_ManAndNum(p->pAig) > 0 )
431 {
432 if ( pPars->fColorDiff )
433 {
434 if ( p->pPars->fVerbose )
435 Abc_Print( 1, "Switching into reduced mode.\n" );
436 pPars->fColorDiff = 0;
437 }
438 else
439 {
440 if ( p->pPars->fVerbose )
441 Abc_Print( 1, "Switching into normal mode.\n" );
442 pPars->fDualOut = 0;
443 }
444 continue;
445 }
446 break;
447 }
448clk = Abc_Clock();
449 if ( pPars->fRunCSat )
450 Cec_ManSatSolveCSat( pPat, pSrm, pParsSat );
451 else
452 Cec_ManSatSolve( pPat, pSrm, pParsSat, p->pAig->vIdsOrig, p->vXorNodes, pAig->vIdsEquiv, 0 );
453p->timeSat += Abc_Clock() - clk;
454 if ( Cec_ManFraClassesUpdate( p, pSim, pPat, pSrm ) )
455 {
456 Gia_ManStop( pSrm );
457 Gia_ManStop( p->pAig );
458 p->pAig = NULL;
459 goto finalize;
460 }
461 Gia_ManStop( pSrm );
462
463 // update the manager
464 pSim->pAig = p->pAig = Gia_ManEquivReduceAndRemap( pTemp = p->pAig, 0, pParsSim->fDualOut );
465 if ( p->pAig == NULL )
466 {
467 p->pAig = pTemp;
468 break;
469 }
470 Gia_ManStop( pTemp );
471 if ( p->pPars->fVerbose )
472 {
473 Abc_Print( 1, "%3d : P =%7d. D =%7d. F =%6d. M = %7d. And =%8d. ",
474 i, p->nAllProved, p->nAllDisproved, p->nAllFailed, nMatches, Gia_ManAndNum(p->pAig) );
475 Abc_PrintTime( 1, "Time", Abc_Clock() - clk2 );
476 }
477 if ( Gia_ManAndNum(p->pAig) == 0 )
478 {
479 if ( p->pPars->fVerbose )
480 Abc_Print( 1, "Network after reduction is empty.\n" );
481 break;
482 }
483 // check resource limits
484 if ( p->pPars->TimeLimit && (Abc_Clock() - clkTotal)/CLOCKS_PER_SEC >= p->pPars->TimeLimit )
485 {
486 fTimeOut = 1;
487 break;
488 }
489// if ( p->nAllFailed && !p->nAllProved && !p->nAllDisproved )
490 if ( p->nAllFailed > p->nAllProved + p->nAllDisproved )
491 {
492 if ( pParsSat->nBTLimit >= 10001 )
493 break;
494 if ( pPars->fSatSweeping )
495 {
496 if ( p->pPars->fVerbose )
497 Abc_Print( 1, "Exceeded the limit on the number of conflicts (%d).\n", pParsSat->nBTLimit );
498 break;
499 }
500 pParsSat->nBTLimit *= 10;
501 if ( p->pPars->fVerbose )
502 {
503 if ( p->pPars->fVerbose )
504 Abc_Print( 1, "Increasing conflict limit to %d.\n", pParsSat->nBTLimit );
505 if ( fOutputResult )
506 {
507 Gia_AigerWrite( p->pAig, "gia_cec_temp.aig", 0, 0, 0 );
508 Abc_Print( 1,"The result is written into file \"%s\".\n", "gia_cec_temp.aig" );
509 }
510 }
511 }
512 if ( pPars->fDualOut && pPars->fColorDiff && (Gia_ManAndNum(p->pAig) < 100000 || p->nAllProved + p->nAllDisproved < 10) )
513 {
514 if ( p->pPars->fVerbose )
515 Abc_Print( 1, "Switching into reduced mode.\n" );
516 pPars->fColorDiff = 0;
517 }
518// if ( pPars->fDualOut && Gia_ManAndNum(p->pAig) < 20000 )
519 else if ( pPars->fDualOut && (Gia_ManAndNum(p->pAig) < 20000 || p->nAllProved + p->nAllDisproved < 10) )
520 {
521 if ( p->pPars->fVerbose )
522 Abc_Print( 1, "Switching into normal mode.\n" );
523 pPars->fColorDiff = 0;
524 pPars->fDualOut = 0;
525 }
526 }
527finalize:
528 if ( pPars->fVerbose )
529 printf( "Performed %d SAT calls: P = %d D = %d F = %d\n",
530 p->nAllProvedS + p->nAllDisprovedS + p->nAllFailedS, p->nAllProvedS, p->nAllDisprovedS, p->nAllFailedS );
531 if ( p->pPars->fVerbose && p->pAig )
532 {
533 Abc_Print( 1, "NBeg = %d. NEnd = %d. (Gain = %6.2f %%). RBeg = %d. REnd = %d. (Gain = %6.2f %%).\n",
534 Gia_ManAndNum(pAig), Gia_ManAndNum(p->pAig),
535 100.0*(Gia_ManAndNum(pAig)-Gia_ManAndNum(p->pAig))/(Gia_ManAndNum(pAig)?Gia_ManAndNum(pAig):1),
536 Gia_ManRegNum(pAig), Gia_ManRegNum(p->pAig),
537 100.0*(Gia_ManRegNum(pAig)-Gia_ManRegNum(p->pAig))/(Gia_ManRegNum(pAig)?Gia_ManRegNum(pAig):1) );
538 Abc_PrintTimeP( 1, "Sim ", p->timeSim, Abc_Clock() - (int)clkTotal );
539 Abc_PrintTimeP( 1, "Sat ", p->timeSat-pPat->timeTotalSave, Abc_Clock() - (int)clkTotal );
540 Abc_PrintTimeP( 1, "Pat ", p->timePat+pPat->timeTotalSave, Abc_Clock() - (int)clkTotal );
541 Abc_PrintTime( 1, "Time", (int)(Abc_Clock() - clkTotal) );
542 }
543
544 pTemp = p->pAig; p->pAig = NULL;
545 if ( pTemp == NULL && pSim->iOut >= 0 )
546 {
547 if ( !fSilent )
548 Abc_Print( 1, "Disproved at least one output of the miter (zero-based number %d).\n", pSim->iOut );
549 pPars->iOutFail = pSim->iOut;
550 }
551 else if ( pSim->pCexes && !fSilent )
552 Abc_Print( 1, "Disproved %d outputs of the miter.\n", pSim->nOuts );
553 if ( fTimeOut && !fSilent )
554 Abc_Print( 1, "Timed out after %d seconds.\n", (int)((double)Abc_Clock() - clkTotal)/CLOCKS_PER_SEC );
555
556 pAig->pCexComb = pSim->pCexComb; pSim->pCexComb = NULL;
557 Cec_ManSimStop( pSim );
558 Cec_ManPatStop( pPat );
559 Cec_ManFraStop( p );
560 if ( pTemp ) ABC_FREE( pTemp->pReprs );
561 if ( pTemp ) ABC_FREE( pTemp->pNexts );
562 return pTemp;
563}
564
565
569
570
572
ABC_INT64_T abctime
Definition abc_global.h:332
#define ABC_FREE(obj)
Definition abc_global.h:267
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
int Cec_ManSimClassesPrepare(Cec_ManSim_t *p, int LevelMax)
Definition cecClass.c:867
int Cec_ManSimClassesRefine(Cec_ManSim_t *p)
Definition cecClass.c:939
void Cec_ManSimulation(Gia_Man_t *pAig, Cec_ParSim_t *pPars)
Definition cecCore.c:291
void Cec_ManCorSetDefaultParams(Cec_ParCor_t *p)
Definition cecCore.c:183
void Cec_ManFraSetDefaultParams(Cec_ParFra_t *p)
Definition cecCore.c:126
void Cec_ManCecSetDefaultParams(Cec_ParCec_t *p)
Definition cecCore.c:159
void Cec_ManSmfSetDefaultParams(Cec_ParSmf_t *p)
Definition cecCore.c:99
ABC_NAMESPACE_IMPL_START void Cec_ManSatSetDefaultParams(Cec_ParSat_t *p)
DECLARATIONS ///.
Definition cecCore.c:45
Gia_Man_t * Cec_ManSatSweeping(Gia_Man_t *pAig, Cec_ParFra_t *pPars, int fSilent)
Definition cecCore.c:344
void Cec_ManSimSetDefaultParams(Cec_ParSim_t *p)
Definition cecCore.c:71
Gia_Man_t * Cec_ManSatSolving(Gia_Man_t *pAig, Cec_ParSat_t *pPars, int f0Proved)
Definition cecCore.c:236
int Cec_ManSimulationOne(Gia_Man_t *pAig, Cec_ParSim_t *pPars)
Definition cecCore.c:264
void Cec_ManChcSetDefaultParams(Cec_ParChc_t *p)
Definition cecCore.c:213
void Cec_ManSatSolveCSat(Cec_ManPat_t *pPat, Gia_Man_t *pAig, Cec_ParSat_t *pPars)
Definition cecSolve.c:809
Gia_Man_t * Cec_ManFraSpecReduction(Cec_ManFra_t *p)
DECLARATIONS ///.
Definition cecSweep.c:45
void Cec_ManSimStop(Cec_ManSim_t *p)
Definition cecMan.c:233
Cec_ManSim_t * Cec_ManSimStart(Gia_Man_t *pAig, Cec_ParSim_t *pPars)
Definition cecMan.c:199
int Cec_ManCountNonConstOutputs(Gia_Man_t *pAig)
Definition cecSeq.c:272
Cec_ManPat_t * Cec_ManPatStart()
Definition cecMan.c:130
struct Cec_ManFra_t_ Cec_ManFra_t
Definition cecInt.h:147
struct Cec_ManSim_t_ Cec_ManSim_t
Definition cecInt.h:113
void Cec_ManFraStop(Cec_ManFra_t *p)
Definition cecMan.c:285
void Cec_ManPatStop(Cec_ManPat_t *p)
Definition cecMan.c:178
void CecG_ManSatSolve(Cec_ManPat_t *pPat, Gia_Man_t *pAig, Cec_ParSat_t *pPars, int f0Proved)
Definition cecSolveG.c:562
typedefABC_NAMESPACE_HEADER_START struct Cec_ManPat_t_ Cec_ManPat_t
INCLUDES ///.
Definition cecInt.h:49
void Cec_ManSatSolve(Cec_ManPat_t *pPat, Gia_Man_t *pAig, Cec_ParSat_t *pPars, Vec_Int_t *vIdsOrig, Vec_Int_t *vMiterPairs, Vec_Int_t *vEquivPairs, int f0Proved)
Definition cecSolve.c:699
int Cec_ManFraClassesUpdate(Cec_ManFra_t *p, Cec_ManSim_t *pSim, Cec_ManPat_t *pPat, Gia_Man_t *pNew)
Definition cecSweep.c:188
Cec_ManFra_t * Cec_ManFraStart(Gia_Man_t *pAig, Cec_ParFra_t *pPars)
Definition cecMan.c:263
struct Cec_ParFra_t_ Cec_ParFra_t
Definition cec.h:96
struct Cec_ParCec_t_ Cec_ParCec_t
Definition cec.h:129
typedefABC_NAMESPACE_HEADER_START struct Cec_ParSat_t_ Cec_ParSat_t
INCLUDES ///.
Definition cec.h:43
struct Cec_ParSmf_t_ Cec_ParSmf_t
Definition cec.h:79
struct Cec_ParChc_t_ Cec_ParChc_t
Definition cec.h:175
struct Cec_ParSim_t_ Cec_ParSim_t
Definition cec.h:60
struct Cec_ParCor_t_ Cec_ParCor_t
Definition cec.h:145
Cube * p
Definition exorList.c:222
void Gia_ManStop(Gia_Man_t *p)
Definition giaMan.c:82
Gia_Man_t * Gia_ManDup(Gia_Man_t *p)
Definition giaDup.c:720
int Gia_ManEquivCountLits(Gia_Man_t *p)
Definition giaEquiv.c:450
int Gia_ManEquivSetColors(Gia_Man_t *p, int fVerbose)
Definition giaEquiv.c:1097
struct Gia_Man_t_ Gia_Man_t
Definition gia.h:96
void Gia_ManOrigIdsInit(Gia_Man_t *p)
DECLARATIONS ///.
Definition giaEquiv.c:46
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
Definition giaScl.c:84
void Gia_ManPrintStats(Gia_Man_t *p, Gps_Par_t *pPars)
Definition giaMan.c:495
unsigned Gia_ManRandom(int fReset)
FUNCTION DEFINITIONS ///.
Definition giaUtil.c:49
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact, int fWriteNewLine)
Definition giaAiger.c:1595
Gia_Man_t * Gia_ManEquivReduceAndRemap(Gia_Man_t *p, int fSeq, int fMiterPairs)
Definition giaEquiv.c:1040
Abc_Cex_t * pCexComb
Definition cecInt.h:135
Gia_Man_t * pAig
Definition cecInt.h:117
void ** pCexes
Definition cecInt.h:132
int fDualOut
Definition cec.h:114
int fVeryVerbose
Definition cec.h:120
int fRunCSat
Definition cec.h:117
int fCheckMiter
Definition cec.h:112
int fColorDiff
Definition cec.h:115
int nBTLimit
Definition cec.h:103
int nWords
Definition cec.h:100
int nItersMax
Definition cec.h:102
int nRounds
Definition cec.h:101
int fVerbose
Definition cec.h:121
int iOutFail
Definition cec.h:122
int fSatSweeping
Definition cec.h:116
int fUseOrigIds
Definition cec.h:119
int nNonRefines
Definition cec.h:66
int fVerbose
Definition cec.h:75
int fSeqSimulate
Definition cec.h:71
int nFrames
Definition cec.h:64
int fCheckMiter
Definition cec.h:69
int fDualOut
Definition cec.h:68
int nWords
Definition cec.h:63
int nRounds
Definition cec.h:65
int nSimWords
Definition gia.h:209
Gia_Rpr_t * pReprs
Definition gia.h:126
Vec_Ptr_t * vSeqModelVec
Definition gia.h:151
Vec_Wrd_t * vSimsPi
Definition gia.h:215
int * pNexts
Definition gia.h:127
Abc_Cex_t * pCexComb
Definition gia.h:149
Vec_Int_t * vIdsEquiv
Definition gia.h:190
#define assert(ex)
Definition util_old.h:213
char * memset()