diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-07-07 22:37:29 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-07-07 22:37:29 -0700 |
commit | 07d3351c31c6f76f77c6881cd2fd7294eca091c1 (patch) | |
tree | 38ce5b3e527198328688c64aadad0e152971b1e0 /src/opt/dar/darScript.c | |
parent | 76875cd18d4bf9bb5437a3cb391c82514151532e (diff) | |
download | abc-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.c | 18 |
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; |