summaryrefslogtreecommitdiffstats
path: root/src/opt/dar/darScript.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-07-07 22:37:29 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2013-07-07 22:37:29 -0700
commit07d3351c31c6f76f77c6881cd2fd7294eca091c1 (patch)
tree38ce5b3e527198328688c64aadad0e152971b1e0 /src/opt/dar/darScript.c
parent76875cd18d4bf9bb5437a3cb391c82514151532e (diff)
downloadabc-07d3351c31c6f76f77c6881cd2fd7294eca091c1.tar.gz
abc-07d3351c31c6f76f77c6881cd2fd7294eca091c1.tar.bz2
abc-07d3351c31c6f76f77c6881cd2fd7294eca091c1.zip
Adding timeout to AIG rewriting inside 'int'.
Diffstat (limited to 'src/opt/dar/darScript.c')
-rw-r--r--src/opt/dar/darScript.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/opt/dar/darScript.c b/src/opt/dar/darScript.c
index f1a30a82..f8fa3788 100644
--- a/src/opt/dar/darScript.c
+++ b/src/opt/dar/darScript.c
@@ -72,6 +72,7 @@ Aig_Man_t * Dar_ManRwsat( Aig_Man_t * pAig, int fBalance, int fVerbose )
//alias rwsat "st; rw -l; b -l; rw -l; rf -l"
{
Aig_Man_t * pTemp;
+ abctime Time = pAig->Time2Quit;
Dar_RwrPar_t ParsRwr, * pParsRwr = &ParsRwr;
Dar_RefPar_t ParsRef, * pParsRef = &ParsRef;
@@ -92,41 +93,56 @@ Aig_Man_t * Dar_ManRwsat( Aig_Man_t * pAig, int fBalance, int fVerbose )
// balance
if ( fBalance )
{
+ pAig->Time2Quit = Time;
pAig = Dar_ManBalance( pTemp = pAig, 0 );
Aig_ManStop( pTemp );
if ( fVerbose ) printf( "Balance: " ), Aig_ManPrintStats( pAig );
+ if ( Time && Abc_Clock() > Time )
+ { if ( pAig ) Aig_ManStop( pAig ); return NULL; }
}
//Aig_ManDumpBlif( pAig, "inter.blif", NULL, NULL );
//printf( "3" );
// rewrite
+ pAig->Time2Quit = Time;
Dar_ManRewrite( pAig, pParsRwr );
pAig = Aig_ManDupDfs( pTemp = pAig );
Aig_ManStop( pTemp );
if ( fVerbose ) printf( "Rewrite: " ), Aig_ManPrintStats( pAig );
+ if ( Time && Abc_Clock() > Time )
+ { if ( pAig ) Aig_ManStop( pAig ); return NULL; }
//printf( "4" );
// refactor
+ pAig->Time2Quit = Time;
Dar_ManRefactor( pAig, pParsRef );
pAig = Aig_ManDupDfs( pTemp = pAig );
Aig_ManStop( pTemp );
if ( fVerbose ) printf( "Refactor: " ), Aig_ManPrintStats( pAig );
+ if ( Time && Abc_Clock() > Time )
+ { if ( pAig ) Aig_ManStop( pAig ); return NULL; }
//printf( "5" );
// balance
if ( fBalance )
{
+ pAig->Time2Quit = Time;
pAig = Dar_ManBalance( pTemp = pAig, 0 );
Aig_ManStop( pTemp );
if ( fVerbose ) printf( "Balance: " ), Aig_ManPrintStats( pAig );
+ if ( Time && Abc_Clock() > Time )
+ { if ( pAig ) Aig_ManStop( pAig ); return NULL; }
}
-
+
//printf( "6" );
// rewrite
+ pAig->Time2Quit = Time;
Dar_ManRewrite( pAig, pParsRwr );
pAig = Aig_ManDupDfs( pTemp = pAig );
Aig_ManStop( pTemp );
if ( fVerbose ) printf( "Rewrite: " ), Aig_ManPrintStats( pAig );
+ if ( Time && Abc_Clock() > Time )
+ { if ( pAig ) Aig_ManStop( pAig ); return NULL; }
//printf( "7" );
return pAig;