Commit f8e933c7 by Alan Mishchenko

Variable timeframe abstraction.

parent c39fd374
...@@ -203,6 +203,7 @@ struct Gia_ParVta_t_ ...@@ -203,6 +203,7 @@ struct Gia_ParVta_t_
{ {
int nFramesStart; // starting frame int nFramesStart; // starting frame
int nFramesMax; // maximum frames int nFramesMax; // maximum frames
int nFramesOver; // overlap frames
int nConfLimit; // conflict limit int nConfLimit; // conflict limit
int nTimeOut; // timeout in seconds int nTimeOut; // timeout in seconds
int fUseTermVars; // use terminal variables int fUseTermVars; // use terminal variables
......
...@@ -129,12 +129,14 @@ extern void Vga_ManAddClausesOne( Vta_Man_t * p, int iObj, int iFrame ); ...@@ -129,12 +129,14 @@ extern void Vga_ManAddClausesOne( Vta_Man_t * p, int iObj, int iFrame );
***********************************************************************/ ***********************************************************************/
void Gia_VtaSetDefaultParams( Gia_ParVta_t * p ) void Gia_VtaSetDefaultParams( Gia_ParVta_t * p )
{ {
int size = sizeof(Gia_ParVta_t);
memset( p, 0, sizeof(Gia_ParVta_t) ); memset( p, 0, sizeof(Gia_ParVta_t) );
p->nFramesStart = 10; p->nFramesStart = 10; // the number of starting frames
p->nFramesMax = 0; p->nFramesMax = 0; // the max number of frames
p->nConfLimit = 0; // p->nFramesOver = 4; // the number of overlapping frames
p->nTimeOut = 60; p->nConfLimit = 0; // conflict limit
p->fVerbose = 1; p->nTimeOut = 60; // timeout in seconds
p->fVerbose = 1; // verbosity flag
} }
/**Function************************************************************* /**Function*************************************************************
...@@ -601,7 +603,7 @@ Abc_Cex_t * Vta_ManRefineAbstraction( Vta_Man_t * p, int f ) ...@@ -601,7 +603,7 @@ Abc_Cex_t * Vta_ManRefineAbstraction( Vta_Man_t * p, int f )
pThis->Prio = 0; // set highest priority pThis->Prio = 0; // set highest priority
continue; continue;
} }
// collect useful terminals // collect terminals
assert( Gia_ObjIsAnd(pObj) || Gia_ObjIsRo(p->pGia, pObj) ); assert( Gia_ObjIsAnd(pObj) || Gia_ObjIsRo(p->pGia, pObj) );
if ( !pThis->fAdded ) if ( !pThis->fAdded )
{ {
...@@ -683,6 +685,8 @@ Abc_Cex_t * Vta_ManRefineAbstraction( Vta_Man_t * p, int f ) ...@@ -683,6 +685,8 @@ Abc_Cex_t * Vta_ManRefineAbstraction( Vta_Man_t * p, int f )
assert( pThis0 ); assert( pThis0 );
pThis->Prio = pThis0->Prio; pThis->Prio = pThis0->Prio;
} }
else
pThis->Prio = 0;
} }
} }
...@@ -764,13 +768,19 @@ Abc_Cex_t * Vta_ManRefineAbstraction( Vta_Man_t * p, int f ) ...@@ -764,13 +768,19 @@ Abc_Cex_t * Vta_ManRefineAbstraction( Vta_Man_t * p, int f )
// verify // verify
Vta_ManForEachObjVec( p->vOrder, p, pThis, i ) Vta_ManForEachObjVec( p->vOrder, p, pThis, i )
pThis->Value = VTA_VARX; if ( !pThis->fAdded )
pThis->Value = VTA_VARX;
Vta_ManForEachObjVec( vTermsToAdd, p, pThis, i ) Vta_ManForEachObjVec( vTermsToAdd, p, pThis, i )
{
assert( !pThis->fAdded );
pThis->Value = sat_solver2_var_value(p->pSat, Vta_ObjId(p, pThis)) ? VTA_VAR1 : VTA_VAR0; pThis->Value = sat_solver2_var_value(p->pSat, Vta_ObjId(p, pThis)) ? VTA_VAR1 : VTA_VAR0;
}
// simulate // simulate
Vta_ManForEachObjObjVec( vOrder, p, pThis, pObj, i ) Vta_ManForEachObjObjVec( vOrder, p, pThis, pObj, i )
{ {
assert( pThis->fVisit == 0 ); assert( pThis->fVisit == 0 );
if ( !pThis->fAdded )
continue;
if ( Gia_ObjIsAnd(pObj) ) if ( Gia_ObjIsAnd(pObj) )
{ {
pThis0 = Vga_ManFind( p, Gia_ObjFaninId0p(p->pGia, pObj), pThis->iFrame ); pThis0 = Vga_ManFind( p, Gia_ObjFaninId0p(p->pGia, pObj), pThis->iFrame );
......
...@@ -26404,7 +26404,7 @@ usage: ...@@ -26404,7 +26404,7 @@ usage:
***********************************************************************/ ***********************************************************************/
int Abc_CommandAbc9Vta( Abc_Frame_t * pAbc, int argc, char ** argv ) int Abc_CommandAbc9Vta( Abc_Frame_t * pAbc, int argc, char ** argv )
{ {
Gia_ParVta_t Pars, * pPars = &Pars; Gia_ParVta_t Pars, Pars2, * pPars = &Pars;
int c; int c;
Gia_VtaSetDefaultParams( pPars ); Gia_VtaSetDefaultParams( pPars );
Extra_UtilGetoptReset(); Extra_UtilGetoptReset();
......
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