Commit ce6e6551 by Alan Mishchenko

Other improvements to &vta and &gla.

parent 9ebcd9ec
...@@ -212,6 +212,7 @@ struct Gia_ParVta_t_ ...@@ -212,6 +212,7 @@ struct Gia_ParVta_t_
int nRatioMin; // stop when less than this % of object is abstracted int nRatioMin; // stop when less than this % of object is abstracted
int fUseTermVars; // use terminal variables int fUseTermVars; // use terminal variables
int fUseRollback; // use rollback to the starting number of frames int fUseRollback; // use rollback to the starting number of frames
int fPropFanout; // propagate fanout implications
int fDumpVabs; // dumps the abstracted model int fDumpVabs; // dumps the abstracted model
char * pFileVabs; // dumps the abstracted model into this file char * pFileVabs; // dumps the abstracted model into this file
int fVerbose; // verbose flag int fVerbose; // verbose flag
...@@ -698,7 +699,7 @@ extern int Gia_ManCbaPerform( Gia_Man_t * pGia, void * pPars ); ...@@ -698,7 +699,7 @@ extern int Gia_ManCbaPerform( Gia_Man_t * pGia, void * pPars );
extern int Gia_ManGlaCbaPerform( Gia_Man_t * pGia, void * pPars, int fNaiveCnf ); extern int Gia_ManGlaCbaPerform( Gia_Man_t * pGia, void * pPars, int fNaiveCnf );
extern int Gia_ManGlaPbaPerform( Gia_Man_t * pGia, void * pPars, int fNewSolver ); extern int Gia_ManGlaPbaPerform( Gia_Man_t * pGia, void * pPars, int fNewSolver );
/*=== giaAbsGla.c ===========================================================*/ /*=== giaAbsGla.c ===========================================================*/
extern int Gia_GlaPerform( Gia_Man_t * p, Gia_ParVta_t * pPars ); extern int Gia_GlaPerform( Gia_Man_t * p, Gia_ParVta_t * pPars, int fStartVta );
/*=== giaAbsVta.c ===========================================================*/ /*=== giaAbsVta.c ===========================================================*/
extern void Gia_VtaSetDefaultParams( Gia_ParVta_t * p ); extern void Gia_VtaSetDefaultParams( Gia_ParVta_t * p );
extern Vec_Ptr_t * Gia_VtaAbsToFrames( Vec_Int_t * vAbs ); extern Vec_Ptr_t * Gia_VtaAbsToFrames( Vec_Int_t * vAbs );
......
...@@ -126,7 +126,7 @@ static inline int Vta_ObjId( Vta_Man_t * p, Vta_Obj_t * pObj ) { assert ...@@ -126,7 +126,7 @@ static inline int Vta_ObjId( Vta_Man_t * p, Vta_Obj_t * pObj ) { assert
// - the first entry is the number of timeframes (F) // - the first entry is the number of timeframes (F)
// - the next (F+1) entries give the beginning position of each timeframe // - the next (F+1) entries give the beginning position of each timeframe
// - the following entries give the object IDs // - the following entries give the object IDs
// invariant: assert( vec[vec[0]+2] == size(vec) ); // invariant: assert( vec[vec[0]+1] == size(vec) );
extern void Vga_ManAddClausesOne( Vta_Man_t * p, int iObj, int iFrame ); extern void Vga_ManAddClausesOne( Vta_Man_t * p, int iObj, int iFrame );
...@@ -1624,6 +1624,18 @@ int Gia_VtaPerformInt( Gia_Man_t * pAig, Gia_ParVta_t * pPars ) ...@@ -1624,6 +1624,18 @@ int Gia_VtaPerformInt( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
// preconditions // preconditions
assert( Gia_ManPoNum(pAig) == 1 ); assert( Gia_ManPoNum(pAig) == 1 );
assert( pPars->nFramesMax == 0 || pPars->nFramesStart <= pPars->nFramesMax ); assert( pPars->nFramesMax == 0 || pPars->nFramesStart <= pPars->nFramesMax );
/*
// compute intial abstraction
if ( pAig->vObjClasses == NULL )
{
pAig->vObjClasses = Vec_IntAlloc( 5 );
Vec_IntPush( pAig->vObjClasses, 1 );
Vec_IntPush( pAig->vObjClasses, 3 );
Vec_IntPush( pAig->vObjClasses, 4 );
Vec_IntPush( pAig->vObjClasses, Gia_ObjFaninId0p(pAig, Gia_ManPo(pAig, 0)) );
}
*/
// start the manager // start the manager
p = Vga_ManStart( pAig, pPars ); p = Vga_ManStart( pAig, pPars );
p->pSat->fVerbose = p->pPars->fVerbose; p->pSat->fVerbose = p->pPars->fVerbose;
......
...@@ -27382,12 +27382,12 @@ usage: ...@@ -27382,12 +27382,12 @@ usage:
int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv ) int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv )
{ {
Gia_ParVta_t Pars, * pPars = &Pars; Gia_ParVta_t Pars, * pPars = &Pars;
int c; int c, fStartVta = 0;
Gia_VtaSetDefaultParams( pPars ); Gia_VtaSetDefaultParams( pPars );
pPars->nFramesStart = 30; pPars->nFramesStart = 30;
pPars->nLearntMax = 100000; pPars->nLearntMax = 100000;
Extra_UtilGetoptReset(); Extra_UtilGetoptReset();
while ( ( c = Extra_UtilGetopt( argc, argv, "FSPCLTRAtrdvh" ) ) != EOF ) while ( ( c = Extra_UtilGetopt( argc, argv, "FSPCLTRAtrfdavh" ) ) != EOF )
{ {
switch ( c ) switch ( c )
{ {
...@@ -27483,9 +27483,15 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -27483,9 +27483,15 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv )
case 'r': case 'r':
pPars->fUseRollback ^= 1; pPars->fUseRollback ^= 1;
break; break;
case 'f':
pPars->fPropFanout ^= 1;
break;
case 'd': case 'd':
pPars->fDumpVabs ^= 1; pPars->fDumpVabs ^= 1;
break; break;
case 'a':
fStartVta ^= 1;
break;
case 'v': case 'v':
pPars->fVerbose ^= 1; pPars->fVerbose ^= 1;
break; break;
...@@ -27525,14 +27531,14 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -27525,14 +27531,14 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_Print( 1, "The starting frame should be 1 or larger.\n" ); Abc_Print( 1, "The starting frame should be 1 or larger.\n" );
return 0; return 0;
} }
pAbc->Status = Gia_GlaPerform( pAbc->pGia, pPars ); pAbc->Status = Gia_GlaPerform( pAbc->pGia, pPars, fStartVta );
pAbc->nFrames = pPars->iFrame; pAbc->nFrames = pPars->iFrame;
Abc_FrameReplaceCex( pAbc, &pAbc->pGia->pCexSeq ); Abc_FrameReplaceCex( pAbc, &pAbc->pGia->pCexSeq );
return 0; return 0;
usage: usage:
Abc_Print( -2, "usage: &gla [-FSCLTR num] [-A file] [-dvh]\n" ); Abc_Print( -2, "usage: &gla [-FSCLTR num] [-A file] [-fdavh]\n" );
Abc_Print( -2, "\t refines abstracted object map with proof-based abstraction\n" ); Abc_Print( -2, "\t performs gate-level abstraction of a sequential miter\n" );
Abc_Print( -2, "\t-F num : the max number of timeframes to unroll [default = %d]\n", pPars->nFramesMax ); Abc_Print( -2, "\t-F num : the max number of timeframes to unroll [default = %d]\n", pPars->nFramesMax );
Abc_Print( -2, "\t-S num : the starting time frame (0=unused) [default = %d]\n", pPars->nFramesStart ); Abc_Print( -2, "\t-S num : the starting time frame (0=unused) [default = %d]\n", pPars->nFramesStart );
// Abc_Print( -2, "\t-P num : the number of previous frames for UNSAT core [default = %d]\n", pPars->nFramesPast ); // Abc_Print( -2, "\t-P num : the number of previous frames for UNSAT core [default = %d]\n", pPars->nFramesPast );
...@@ -27543,7 +27549,9 @@ usage: ...@@ -27543,7 +27549,9 @@ usage:
Abc_Print( -2, "\t-A file : file name for dumping abstrated model [default = \"glabs.aig\"]\n" ); Abc_Print( -2, "\t-A file : file name for dumping abstrated model [default = \"glabs.aig\"]\n" );
// Abc_Print( -2, "\t-t : toggle using terminal variables [default = %s]\n", pPars->fUseTermVars? "yes": "no" ); // Abc_Print( -2, "\t-t : toggle using terminal variables [default = %s]\n", pPars->fUseTermVars? "yes": "no" );
// Abc_Print( -2, "\t-r : toggle using rollback after the starting frames [default = %s]\n", pPars->fUseRollback? "yes": "no" ); // Abc_Print( -2, "\t-r : toggle using rollback after the starting frames [default = %s]\n", pPars->fUseRollback? "yes": "no" );
Abc_Print( -2, "\t-f : toggle propagating fanout implications [default = %s]\n", pPars->fPropFanout? "yes": "no" );
Abc_Print( -2, "\t-d : toggle dumping abstracted model into a file [default = %s]\n", pPars->fDumpVabs? "yes": "no" ); Abc_Print( -2, "\t-d : toggle dumping abstracted model into a file [default = %s]\n", pPars->fDumpVabs? "yes": "no" );
Abc_Print( -2, "\t-a : toggle using VTA to kick start GLA [default = %s]\n", fStartVta? "yes": "no" );
Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", pPars->fVerbose? "yes": "no" ); Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", pPars->fVerbose? "yes": "no" );
Abc_Print( -2, "\t-h : print the command usage\n"); Abc_Print( -2, "\t-h : print the command usage\n");
return 1; return 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment