Commit 26edc73b by Alan Mishchenko

Bug fix in miter generation.

parent 2c9937e0
...@@ -5420,7 +5420,7 @@ Gia_Man_t * Gia_ManDupBlackBox( Gia_Man_t * p ) ...@@ -5420,7 +5420,7 @@ Gia_Man_t * Gia_ManDupBlackBox( Gia_Man_t * p )
***********************************************************************/ ***********************************************************************/
Gia_Man_t * Gia_ManDupWithCare( Gia_Man_t * p, Gia_Man_t * pCare ) Gia_Man_t * Gia_ManDupWithCare( Gia_Man_t * p, Gia_Man_t * pCare )
{ {
Gia_Man_t * pNew; Gia_Man_t * pNew, * pTemp;
Gia_Obj_t * pObj; Gia_Obj_t * pObj;
int i, iCare = -1; int i, iCare = -1;
assert( Gia_ManCiNum(pCare) == Gia_ManCiNum(p) ); assert( Gia_ManCiNum(pCare) == Gia_ManCiNum(p) );
...@@ -5429,11 +5429,12 @@ Gia_Man_t * Gia_ManDupWithCare( Gia_Man_t * p, Gia_Man_t * pCare ) ...@@ -5429,11 +5429,12 @@ Gia_Man_t * Gia_ManDupWithCare( Gia_Man_t * p, Gia_Man_t * pCare )
assert( Gia_ManRegNum(pCare) == 0 ); assert( Gia_ManRegNum(pCare) == 0 );
pNew = Gia_ManStart( 2*Gia_ManObjNum(p) + Gia_ManObjNum(pCare) ); pNew = Gia_ManStart( 2*Gia_ManObjNum(p) + Gia_ManObjNum(pCare) );
pNew->pName = Abc_UtilStrsavTwo( pNew->pName ? pNew->pName : (char *)"test", (char *)"_care" ); pNew->pName = Abc_UtilStrsavTwo( pNew->pName ? pNew->pName : (char *)"test", (char *)"_care" );
Gia_ManHashAlloc( pNew );
Gia_ManConst0(pCare)->Value = 0; Gia_ManConst0(pCare)->Value = 0;
Gia_ManForEachCi( pCare, pObj, i ) Gia_ManForEachCi( pCare, pObj, i )
pObj->Value = Gia_ManAppendCi( pNew ); pObj->Value = Gia_ManAppendCi( pNew );
Gia_ManForEachAnd( pCare, pObj, i ) Gia_ManForEachAnd( pCare, pObj, i )
pObj->Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) ); pObj->Value = Gia_ManHashAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
Gia_ManForEachCo( pCare, pObj, i ) Gia_ManForEachCo( pCare, pObj, i )
iCare = Gia_ObjFanin0Copy(pObj); iCare = Gia_ObjFanin0Copy(pObj);
Gia_ManConst0(p)->Value = 0; Gia_ManConst0(p)->Value = 0;
...@@ -5441,11 +5442,17 @@ Gia_Man_t * Gia_ManDupWithCare( Gia_Man_t * p, Gia_Man_t * pCare ) ...@@ -5441,11 +5442,17 @@ Gia_Man_t * Gia_ManDupWithCare( Gia_Man_t * p, Gia_Man_t * pCare )
pObj->Value = Gia_ManCi(pCare, i)->Value; pObj->Value = Gia_ManCi(pCare, i)->Value;
Gia_ManForEachAnd( p, pObj, i ) Gia_ManForEachAnd( p, pObj, i )
{ {
pObj->Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) ); pObj->Value = Gia_ManHashAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
pObj->Value = Gia_ManAppendAnd( pNew, iCare, pObj->Value ); pObj->Value = Gia_ManHashAnd( pNew, iCare, pObj->Value );
} }
Gia_ManForEachCo( p, pObj, i ) Gia_ManForEachCo( p, pObj, i )
Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) ); {
pObj->Value = Gia_ObjFanin0Copy(pObj);
pObj->Value = Gia_ManHashAnd( pNew, iCare, pObj->Value );
Gia_ManAppendCo( pNew, pObj->Value );
}
pNew = Gia_ManCleanup( pTemp = pNew );
Gia_ManStop( pTemp );
return pNew; return pNew;
} }
......
...@@ -3673,7 +3673,7 @@ Vec_Str_t * Gia_ManComputeRange( Gia_Man_t * p ) ...@@ -3673,7 +3673,7 @@ Vec_Str_t * Gia_ManComputeRange( Gia_Man_t * p )
Vec_Wrd_t * vSims = Gia_ManSimPatSimOut( p, vSimsPi, 1 ); Vec_Wrd_t * vSims = Gia_ManSimPatSimOut( p, vSimsPi, 1 );
int n, nWords = Vec_WrdSize(vSimsPi) / Gia_ManCiNum(p); int n, nWords = Vec_WrdSize(vSimsPi) / Gia_ManCiNum(p);
int i, nLimit = Gia_ManCiNum(p) < 6 ? 1 << Gia_ManCiNum(p) : 64*nWords; int i, nLimit = Gia_ManCiNum(p) < 6 ? 1 << Gia_ManCiNum(p) : 64*nWords;
Vec_Str_t * vOut = Vec_StrAlloc( nLimit*(Gia_ManCoNum(p) + 3) ); Vec_Str_t * vOut = Vec_StrAlloc( nLimit*(Gia_ManCoNum(p) + 3)+1 );
assert( Vec_WrdSize(vSims) == nWords * Gia_ManCoNum(p) ); assert( Vec_WrdSize(vSims) == nWords * Gia_ManCoNum(p) );
for ( n = 0; n < nLimit; n++ ) for ( n = 0; n < nLimit; n++ )
{ {
......
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