diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2011-04-20 23:15:05 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2011-04-20 23:15:05 -0700 |
commit | 2becb24a325aafa659b0608379d5c22f7fffe16b (patch) | |
tree | 4b8ca96527b8db9679d6f23b2110c751b30554c2 /src | |
parent | e2842beaca47941804d1893ac431f00b16c3e684 (diff) | |
download | abc-2becb24a325aafa659b0608379d5c22f7fffe16b.tar.gz abc-2becb24a325aafa659b0608379d5c22f7fffe16b.tar.bz2 abc-2becb24a325aafa659b0608379d5c22f7fffe16b.zip |
Bug fixes having to do with the use of chars.
Diffstat (limited to 'src')
-rw-r--r-- | src/aig/cnf/cnfData.c | 8 | ||||
-rw-r--r-- | src/base/abci/abc.c | 8 | ||||
-rw-r--r-- | src/map/if/ifMap.c | 2 | ||||
-rw-r--r-- | src/map/if/ifTime.c | 31 |
4 files changed, 32 insertions, 17 deletions
diff --git a/src/aig/cnf/cnfData.c b/src/aig/cnf/cnfData.c index e4798688..3d3cdf37 100644 --- a/src/aig/cnf/cnfData.c +++ b/src/aig/cnf/cnfData.c @@ -4548,9 +4548,9 @@ void Cnf_ReadMsops( char ** ppSopSizes, char *** ppSops ) // map chars into their numbers for ( i = 0; i < 256; i++ ) - Map[i] = -1; + Map[i] = (char)(-1); for ( i = 0; i < 81; i++ ) - Map[(int)s_Data3[i]] = i; + Map[(int)s_Data3[i]] = (char)i; // count the number of strings for ( Size = 0; s_Data4[Size] && Size < 100000; Size++ ); @@ -4562,7 +4562,7 @@ void Cnf_ReadMsops( char ** ppSopSizes, char *** ppSops ) for ( i = 0; i < Size; i++ ) for ( k = 0; k < 75; k++ ) if ( s_Data4[i][k] == ' ' ) - pMemory[i*75+k] = -1; + pMemory[i*75+k] = (char)(-1); else pMemory[i*75+k] = Map[(int)s_Data4[i][k]]; @@ -4573,7 +4573,7 @@ void Cnf_ReadMsops( char ** ppSopSizes, char *** ppSops ) pSops[0] = NULL; pPrev = pMemory; for ( k = 0, i = 1; i < 65536; k++ ) - if ( pMemory[k] == -1 ) + if ( pMemory[k] == (char)(-1) ) { pSopSizes[i] = pMemory + k - pPrev; pSops[i++] = pPrev; diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 8cd257af..03fd2854 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -8539,6 +8539,14 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv ) } */ +/* +{ + extern void Ssm_ManExperiment( char * pFileIn, char * pFileOut ); +// Ssm_ManExperiment( "m\\big2.ssim", "m\\big2_.ssim" ); +// Ssm_ManExperiment( "m\\big3.ssim", "m\\big3_.ssim" ); + Ssm_ManExperiment( "m\\tb.ssim", "m\\tb_.ssim" ); +} +*/ return 0; usage: Abc_Print( -2, "usage: test [-CKDN] [-vwh] <file_name>\n" ); diff --git a/src/map/if/ifMap.c b/src/map/if/ifMap.c index 66e59d2f..f5d1356f 100644 --- a/src/map/if/ifMap.c +++ b/src/map/if/ifMap.c @@ -67,7 +67,7 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep If_Set_t * pCutSet; If_Cut_t * pCut0, * pCut1, * pCut; int i, k; - + assert( p->pPars->fSeqMap || !If_ObjIsAnd(pObj->pFanin0) || pObj->pFanin0->pCutSet->nCuts > 1 ); assert( p->pPars->fSeqMap || !If_ObjIsAnd(pObj->pFanin1) || pObj->pFanin1->pCutSet->nCuts > 1 ); diff --git a/src/map/if/ifTime.c b/src/map/if/ifTime.c index bfe0d969..e6cf99d5 100644 --- a/src/map/if/ifTime.c +++ b/src/map/if/ifTime.c @@ -28,6 +28,8 @@ ABC_NAMESPACE_IMPL_START /// DECLARATIONS /// //////////////////////////////////////////////////////////////////////// +#define IF_BIG_CHAR 120 + static void If_CutSortInputPins( If_Man_t * p, If_Cut_t * pCut, int * pPinPerm, float * pPinDelays ); //////////////////////////////////////////////////////////////////////// @@ -307,11 +309,11 @@ int If_CutDelayLeafDepth_rec( Vec_Wrd_t * vAnds, If_And_t And, int iLeaf ) if ( (int)And.Id == iLeaf ) return 0; if ( And.iFan0 == And.iFan1 ) - return -100; + return -IF_BIG_CHAR; Depth0 = If_CutDelayLeafDepth_rec( vAnds, If_WrdToAnd(Vec_WrdEntry(vAnds, And.iFan0)), iLeaf ); Depth1 = If_CutDelayLeafDepth_rec( vAnds, If_WrdToAnd(Vec_WrdEntry(vAnds, And.iFan1)), iLeaf ); Depth = ABC_MAX( Depth0, Depth1 ); - Depth = (Depth == -100) ? -100 : Depth + 1; + Depth = (Depth == -IF_BIG_CHAR) ? -IF_BIG_CHAR : Depth + 1; return Depth; } @@ -330,15 +332,15 @@ int If_CutDelayLeafDepth( Vec_Wrd_t * vAnds, int iLeaf ) { If_And_t Leaf; if ( Vec_WrdSize(vAnds) == 0 ) // const 0 - return -100; + return -IF_BIG_CHAR; if ( Vec_WrdSize(vAnds) == 1 && Vec_WrdEntry(vAnds, 0) == 0 ) // const 1 - return -100; + return -IF_BIG_CHAR; Leaf = If_WrdToAnd(Vec_WrdEntryLast(vAnds)); if ( Leaf.iFan0 == Leaf.iFan1 ) { if ( (int)Leaf.iFan0 == iLeaf ) return 0; - return -100; + return -IF_BIG_CHAR; } return If_CutDelayLeafDepth_rec( vAnds, Leaf, iLeaf ); } @@ -359,7 +361,7 @@ int If_CutDelaySopCost( If_Man_t * p, If_Cut_t * pCut ) { If_And_t Leaf; Vec_Wrd_t * vAnds; - int i;//, Delay; + int i, Delay; // mark cut as a user cut pCut->fUser = 1; vAnds = If_CutDelaySopArray( p, pCut ); @@ -378,8 +380,11 @@ int If_CutDelaySopCost( If_Man_t * p, If_Cut_t * pCut ) pCut->Cost = 1; // get the permutation for ( i = 0; i < (int)pCut->nLeaves; i++ ) - pCut->pPerm[i] = If_CutDelayLeafDepth( vAnds, i ); - Vec_WrdFree( vAnds ); + { + Delay = If_CutDelayLeafDepth( vAnds, i ); + pCut->pPerm[i] = (char)(Delay == -IF_BIG_CHAR ? IF_BIG_CHAR : Delay); + } +// Vec_WrdFree( vAnds ); // verify the delay // Delay = If_CutDelay( p, pCut ); // assert( (int)Leaf.Delay == Delay ); @@ -409,7 +414,7 @@ float If_CutDelay( If_Man_t * p, If_Cut_t * pCut ) If_Obj_t * pLeaf; float Delay, DelayCur; float * pLutDelays; - int i, Shift; + int i, Shift, Pin2PinDelay; assert( p->pPars->fSeqMap || pCut->nLeaves > 1 ); Delay = -IF_FLOAT_LARGE; if ( p->pPars->pLutLib ) @@ -442,7 +447,8 @@ float If_CutDelay( If_Man_t * p, If_Cut_t * pCut ) assert( !p->pPars->fLiftLeaves ); If_CutForEachLeaf( p, pCut, pLeaf, i ) { - DelayCur = If_ObjCutBest(pLeaf)->Delay + (float)(pCut->pPerm ? pCut->pPerm[i] : 1.0); + Pin2PinDelay = pCut->pPerm ? (pCut->pPerm[i] == IF_BIG_CHAR ? -IF_BIG_CHAR : pCut->pPerm[i]) : 1; + DelayCur = If_ObjCutBest(pLeaf)->Delay + (float)Pin2PinDelay; Delay = IF_MAX( Delay, DelayCur ); } } @@ -488,7 +494,7 @@ void If_CutPropagateRequired( If_Man_t * p, If_Cut_t * pCut, float ObjRequired ) If_Obj_t * pLeaf; float * pLutDelays; float Required; - int i; + int i, Pin2PinDelay; assert( !p->pPars->fLiftLeaves ); // compute the pins if ( p->pPars->pLutLib ) @@ -518,7 +524,8 @@ void If_CutPropagateRequired( If_Man_t * p, If_Cut_t * pCut, float ObjRequired ) { If_CutForEachLeaf( p, pCut, pLeaf, i ) { - Required = ObjRequired - (float)(pCut->pPerm ? pCut->pPerm[i] : 1.0); + Pin2PinDelay = pCut->pPerm ? (pCut->pPerm[i] == IF_BIG_CHAR ? -IF_BIG_CHAR : pCut->pPerm[i]) : 1; + Required = ObjRequired - (float)Pin2PinDelay; pLeaf->Required = IF_MIN( pLeaf->Required, Required ); } } |