diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2017-01-01 20:48:21 +0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2017-01-01 20:48:21 +0700 |
commit | d948f7259a61a8eec0fdc94882b530e2d7f0ba12 (patch) | |
tree | 48f96229ada2b9396649c2496dab0f3c0a49a6c0 /src/opt/sbd/sbdCut2.c | |
parent | 26eb3f3684e4478d6839d7d0a92ac67003c06b20 (diff) | |
download | abc-d948f7259a61a8eec0fdc94882b530e2d7f0ba12.tar.gz abc-d948f7259a61a8eec0fdc94882b530e2d7f0ba12.tar.bz2 abc-d948f7259a61a8eec0fdc94882b530e2d7f0ba12.zip |
Updates to delay optimization project.
Diffstat (limited to 'src/opt/sbd/sbdCut2.c')
-rw-r--r-- | src/opt/sbd/sbdCut2.c | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/src/opt/sbd/sbdCut2.c b/src/opt/sbd/sbdCut2.c index 9422e439..b4a8be74 100644 --- a/src/opt/sbd/sbdCut2.c +++ b/src/opt/sbd/sbdCut2.c @@ -336,36 +336,6 @@ int Sbd_ManCutServerFirst( Sbd_Srv_t * p, int iObj, int * pLeaves ) return Vec_IntSize(p->vCut); } -#if 0 - // recompute the cut - Vec_IntClear( p->vCut ); - Gia_ManIncrementTravId( p->pGia ); - RetValue = Sbd_ManCutCollect_rec( p->pGia, p->vMirrors, iObj, LevStop-1, p->vLutLevs, p->vCut ); - if ( RetValue == 0 ) // cannot build delay-improving cut - return -1; - // check if the current cut is good - Vec_IntSort( p->vCut, 0 ); -/* - Sbd_ManCutReload( p->vMirrors, p->vLutLevs, LevStop, p->vCut, p->vCutTop, p->vCutBot ); - if ( Vec_IntSize(p->vCut) <= p->nCutSize && Vec_IntSize(p->vCutTop) <= p->nLutSize-1 ) - { - //printf( "%d ", Vec_IntSize(p->vCut) ); - memcpy( pLeaves, Vec_IntArray(p->vCut), sizeof(int) * Vec_IntSize(p->vCut) ); - return Vec_IntSize(p->vCut); - } -*/ - // try to expand the cut - Sbd_ManCutExpand( p->pGia, p->vMirrors, p->vLutLevs, p->vCut ); - Sbd_ManCutReload( p->vMirrors, p->vLutLevs, LevStop, p->vCut, p->vCutTop, p->vCutBot ); - if ( Vec_IntSize(p->vCut) <= p->nCutSize && Vec_IntSize(p->vCutTop) <= p->nLutSize-1 ) - { - //printf( "2=(%d,%d) ", Vec_IntSize(p->vCutTop), Vec_IntSize(p->vCutBot) ); - //printf( "%d ", Vec_IntSize(p->vCut) ); - memcpy( pLeaves, Vec_IntArray(p->vCut), sizeof(int) * Vec_IntSize(p->vCut) ); - return Vec_IntSize(p->vCut); - } -#endif - // try to reduce the topmost Vec_IntClear( p->vCut0 ); Vec_IntAppend( p->vCut0, p->vCut ); @@ -420,6 +390,35 @@ int Sbd_ManCutServerFirst( Sbd_Srv_t * p, int iObj, int * pLeaves ) } } } + + // recompute the cut + Vec_IntClear( p->vCut ); + Gia_ManIncrementTravId( p->pGia ); + RetValue = Sbd_ManCutCollect_rec( p->pGia, p->vMirrors, iObj, LevStop-1, p->vLutLevs, p->vCut ); + if ( RetValue == 0 ) // cannot build delay-improving cut + return -1; + // check if the current cut is good + Vec_IntSort( p->vCut, 0 ); +/* + Sbd_ManCutReload( p->vMirrors, p->vLutLevs, LevStop, p->vCut, p->vCutTop, p->vCutBot ); + if ( Vec_IntSize(p->vCut) <= p->nCutSize && Vec_IntSize(p->vCutTop) <= p->nLutSize-1 ) + { + //printf( "%d ", Vec_IntSize(p->vCut) ); + memcpy( pLeaves, Vec_IntArray(p->vCut), sizeof(int) * Vec_IntSize(p->vCut) ); + return Vec_IntSize(p->vCut); + } +*/ + // try to expand the cut + Sbd_ManCutExpand( p->pGia, p->vMirrors, p->vLutLevs, p->vCut ); + Sbd_ManCutReload( p->vMirrors, p->vLutLevs, LevStop, p->vCut, p->vCutTop, p->vCutBot ); + if ( Vec_IntSize(p->vCut) <= p->nCutSize && Vec_IntSize(p->vCutTop) <= p->nLutSize-1 ) + { + //printf( "2=(%d,%d) ", Vec_IntSize(p->vCutTop), Vec_IntSize(p->vCutBot) ); + //printf( "%d ", Vec_IntSize(p->vCut) ); + memcpy( pLeaves, Vec_IntArray(p->vCut), sizeof(int) * Vec_IntSize(p->vCut) ); + return Vec_IntSize(p->vCut); + } + return -1; } |