diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-03-05 13:13:15 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-03-05 13:13:15 -0800 |
commit | 4ff5203f4c8b341eb717b742bf1af51f64f31ccd (patch) | |
tree | d3e814bd980de2c87db542d7e0929fded9db25b8 /src/map/if/ifUtil.c | |
parent | 0c9337f6276f8a56960f697b7361c978e3e50a41 (diff) | |
download | abc-4ff5203f4c8b341eb717b742bf1af51f64f31ccd.tar.gz abc-4ff5203f4c8b341eb717b742bf1af51f64f31ccd.tar.bz2 abc-4ff5203f4c8b341eb717b742bf1af51f64f31ccd.zip |
Improvements to the hierarchy/timing manager.
Diffstat (limited to 'src/map/if/ifUtil.c')
-rw-r--r-- | src/map/if/ifUtil.c | 14 |
1 files changed, 9 insertions, 5 deletions
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 { |