summaryrefslogtreecommitdiffstats
path: root/src/misc/tim
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2014-08-25 20:47:11 -0500
committerAlan Mishchenko <alanmi@berkeley.edu>2014-08-25 20:47:11 -0500
commit70a3474849b049c149ac1b5c4ec34dee731859d5 (patch)
tree3d8e209acf91be06821787bacdcdcbcf0a3deccf /src/misc/tim
parent5c30eb10eff1c8f3789dd49260ebf08da84bd804 (diff)
downloadabc-70a3474849b049c149ac1b5c4ec34dee731859d5.tar.gz
abc-70a3474849b049c149ac1b5c4ec34dee731859d5.tar.bz2
abc-70a3474849b049c149ac1b5c4ec34dee731859d5.zip
Improvements to the timing manager.
Diffstat (limited to 'src/misc/tim')
-rw-r--r--src/misc/tim/timMan.c5
-rw-r--r--src/misc/tim/timTime.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/src/misc/tim/timMan.c b/src/misc/tim/timMan.c
index 0900b7ae..93c69146 100644
--- a/src/misc/tim/timMan.c
+++ b/src/misc/tim/timMan.c
@@ -128,7 +128,10 @@ Tim_Man_t * Tim_ManDup( Tim_Man_t * p, int fUnitDelay )
pDelayTableNew[1] = (int)pDelayTable[1];
pDelayTableNew[2] = (int)pDelayTable[2];
for ( k = 0; k < nInputs * nOutputs; k++ )
- pDelayTableNew[3+k] = fUnitDelay ? (float)fUnitDelay : pDelayTable[3+k];
+ if ( pDelayTable[3+k] == -ABC_INFINITY )
+ pDelayTableNew[3+k] = -ABC_INFINITY;
+ else
+ pDelayTableNew[3+k] = fUnitDelay ? (float)fUnitDelay : pDelayTable[3+k];
// assert( (int)pDelayTableNew[0] == Vec_PtrSize(pNew->vDelayTables) );
assert( Vec_PtrEntry(pNew->vDelayTables, i) == NULL );
Vec_PtrWriteEntry( pNew->vDelayTables, i, pDelayTableNew );
diff --git a/src/misc/tim/timTime.c b/src/misc/tim/timTime.c
index 7d3dd082..c766fb7f 100644
--- a/src/misc/tim/timTime.c
+++ b/src/misc/tim/timTime.c
@@ -200,7 +200,8 @@ float Tim_ManGetCiArrival( Tim_Man_t * p, int iCi )
pDelays = pTable + 3 + i * pBox->nInputs;
DelayBest = -TIM_ETERNITY;
Tim_ManBoxForEachInput( p, pBox, pObj, k )
- DelayBest = Abc_MaxInt( DelayBest, pObj->timeArr + pDelays[k] );
+ if ( pDelays[k] != -ABC_INFINITY )
+ DelayBest = Abc_MaxInt( DelayBest, pObj->timeArr + pDelays[k] );
pObjRes->timeArr = DelayBest;
pObjRes->TravId = p->nTravIds;
}
@@ -248,7 +249,8 @@ float Tim_ManGetCoRequired( Tim_Man_t * p, int iCo )
Tim_ManBoxForEachOutput( p, pBox, pObj, k )
{
pDelays = pTable + 3 + k * pBox->nInputs;
- DelayBest = Abc_MinFloat( DelayBest, pObj->timeReq - pDelays[i] );
+ if ( pDelays[k] != -ABC_INFINITY )
+ DelayBest = Abc_MinFloat( DelayBest, pObj->timeReq - pDelays[i] );
}
pObjRes->timeReq = DelayBest;
pObjRes->TravId = p->nTravIds;