summaryrefslogtreecommitdiffstats
path: root/src/map/if/ifUtil.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-03-05 13:13:15 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2013-03-05 13:13:15 -0800
commit4ff5203f4c8b341eb717b742bf1af51f64f31ccd (patch)
treed3e814bd980de2c87db542d7e0929fded9db25b8 /src/map/if/ifUtil.c
parent0c9337f6276f8a56960f697b7361c978e3e50a41 (diff)
downloadabc-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.c14
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
{