From 8eb5d1896a82ef9d1d5e0f25bb6f23e29e9e2ada Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sat, 31 Dec 2016 21:46:25 +0700 Subject: Updates to delay optimization project. --- src/opt/sbd/sbdCore.c | 10 ++++++++++ src/opt/sbd/sbdWin.c | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/opt/sbd/sbdCore.c b/src/opt/sbd/sbdCore.c index a48e6489..251a4deb 100644 --- a/src/opt/sbd/sbdCore.c +++ b/src/opt/sbd/sbdCore.c @@ -52,6 +52,7 @@ struct Sbd_Man_t_ abctime timeCnf; abctime timeSat; abctime timeQbf; + abctime timeNew; abctime timeOther; abctime timeTotal; Sbd_Sto_t * pSto; @@ -440,7 +441,10 @@ int Sbd_ManWindow( Sbd_Man_t * p, int Pivot ) Gia_ObjSetTravIdCurrentId(p->pGia, 0); Sbd_ManWindowSim_rec( p, Pivot ); if ( p->pPars->nWinSizeMax && Vec_IntSize(p->vWinObjs) > p->pPars->nWinSizeMax ) + { + p->timeWin += Abc_Clock() - clk; return 0; + } Sbd_ManUpdateOrder( p, Pivot ); assert( Vec_IntSize(p->vDivVars) == Vec_IntSize(p->vDivValues) ); assert( Vec_IntSize(p->vDivVars) < Vec_IntSize(p->vWinObjs) ); @@ -466,7 +470,10 @@ int Sbd_ManWindow( Sbd_Man_t * p, int Pivot ) Vec_IntPush( p->vWinObjs, Abc_Lit2Var(Node) ); } if ( p->pPars->nWinSizeMax && Vec_IntSize(p->vWinObjs) > p->pPars->nWinSizeMax ) + { + p->timeWin += Abc_Clock() - clk; return 0; + } // compute controlability for node if ( Vec_IntSize(p->vTfo) == 0 ) Abc_TtFill( Sbd_ObjSim2(p, Pivot), p->pPars->nWords ); @@ -1855,13 +1862,16 @@ int Sbd_ManImplement2( Sbd_Man_t * p, int Pivot, int nStrs, Sbd_Str_t * pStrs ) assert( Vec_IntSize(p->vLutLevs) == iObjLast ); for ( i = iObjLast; i < Gia_ManObjNum(p->pGia); i++ ) { + assert( i == Vec_IntSize(p->vMirrors) ); Vec_IntPush( p->vMirrors, -1 ); Sbd_StoRefObj( p->pSto, i, i == Gia_ManObjNum(p->pGia)-1 ? Pivot : -1 ); } Sbd_StoDerefObj( p->pSto, Pivot ); for ( i = iObjLast; i < Gia_ManObjNum(p->pGia); i++ ) { + abctime clk = Abc_Clock(); int Delay = Sbd_StoComputeCutsNode( p->pSto, i ); + p->timeCut += Abc_Clock() - clk; assert( i == Vec_IntSize(p->vLutLevs) ); Vec_IntPush( p->vLutLevs, Delay ); Vec_IntPush( p->vObj2Var, 0 ); diff --git a/src/opt/sbd/sbdWin.c b/src/opt/sbd/sbdWin.c index b62332d1..069a4125 100644 --- a/src/opt/sbd/sbdWin.c +++ b/src/opt/sbd/sbdWin.c @@ -360,6 +360,7 @@ void Sbd_ManSolverPrint( Vec_Int_t * vSop ) } Cube[pInds[Abc_Lit2Var(Entry)]] = '1' - (char)Abc_LitIsCompl(Entry); } + Supp = 0; } void Sbd_ManSolveSelect( Gia_Man_t * p, Vec_Int_t * vMirrors, int Pivot, Vec_Int_t * vDivVars, Vec_Int_t * vDivValues, Vec_Int_t * vWinObjs, Vec_Int_t * vObj2Var, Vec_Int_t * vTfo, Vec_Int_t * vRoots ) { @@ -378,6 +379,7 @@ void Sbd_ManSolveSelect( Gia_Man_t * p, Vec_Int_t * vMirrors, int Pivot, Vec_Int word Supp = Sbd_ManSolverSupp( vSop, pInds, &nVars ); //Sbd_ManSolverPrint( vSop ); printf( "SAT with %d vars and %d cubes.\n", nVars, Vec_IntCountEntry(vSop, -1) ); + Supp = 0; } Vec_IntFree( vTemp ); Vec_IntFree( vSop ); -- cgit v1.2.3