From 4ff5203f4c8b341eb717b742bf1af51f64f31ccd Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Tue, 5 Mar 2013 13:13:15 -0800 Subject: Improvements to the hierarchy/timing manager. --- src/map/if/ifUtil.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/map/if/ifUtil.c') diff --git a/src/map/if/ifUtil.c b/src/map/if/ifUtil.c index b8b03d70..efc6fba3 100644 --- a/src/map/if/ifUtil.c +++ b/src/map/if/ifUtil.c @@ -156,23 +156,27 @@ void If_ManComputeRequired( If_Man_t * p ) if ( p->pManTim == NULL ) { // consider the case when the required times are given - if ( p->pPars->pTimesReq ) + if ( p->pPars->pTimesReq && !p->pPars->fAreaOnly ) { - assert( !p->pPars->fAreaOnly ); // make sure that the required time hold Counter = 0; If_ManForEachCo( p, pObj, i ) { if ( If_ObjArrTime(If_ObjFanin0(pObj)) > p->pPars->pTimesReq[i] + p->fEpsilon ) { + If_ObjFanin0(pObj)->Required = If_ObjArrTime(If_ObjFanin0(pObj)); Counter++; // Abc_Print( 0, "Required times are violated for output %d (arr = %d; req = %d).\n", // i, (int)If_ObjArrTime(If_ObjFanin0(pObj)), (int)p->pPars->pTimesReq[i] ); } - If_ObjFanin0(pObj)->Required = p->pPars->pTimesReq[i]; + else + If_ObjFanin0(pObj)->Required = p->pPars->pTimesReq[i]; + } + if ( Counter && !p->fReqTimeWarn ) + { + Abc_Print( 0, "Required times are exceeded at %d output%s. The earliest arrival times are used.\n", Counter, Counter > 1 ? "s":"" ); + p->fReqTimeWarn = 1; } - if ( Counter ) - Abc_Print( 0, "Required times are violated for %d outputs.\n", Counter ); } else { -- cgit v1.2.3