summaryrefslogtreecommitdiffstats
path: root/src/map/scl
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2014-02-13 09:22:25 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2014-02-13 09:22:25 -0800
commitb2840163137f93b9f8692fc2b70c9f96eacbbd16 (patch)
treeab16a33dc81337db2358f518418fb17627256ac0 /src/map/scl
parent61ce18e1ef5cb59f5e038abb06b2b145860ef60d (diff)
downloadabc-b2840163137f93b9f8692fc2b70c9f96eacbbd16.tar.gz
abc-b2840163137f93b9f8692fc2b70c9f96eacbbd16.tar.bz2
abc-b2840163137f93b9f8692fc2b70c9f96eacbbd16.zip
Handling latches in combinational sizing.
Diffstat (limited to 'src/map/scl')
-rw-r--r--src/map/scl/sclSize.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/map/scl/sclSize.c b/src/map/scl/sclSize.c
index aaf94510..f3fac8f6 100644
--- a/src/map/scl/sclSize.c
+++ b/src/map/scl/sclSize.c
@@ -258,7 +258,7 @@ static inline void Abc_SclDeptObj( SC_Man * p, Abc_Obj_t * pObj )
SC_PairClean( Abc_SclObjDept(p, pObj) );
Abc_ObjForEachFanout( pObj, pFanout, i )
{
- if ( Abc_ObjIsCo(pFanout) )
+ if ( Abc_ObjIsCo(pFanout) || Abc_ObjIsLatch(pFanout) )
continue;
pTime = Scl_CellPinTime( Abc_SclObjCell(pFanout), Abc_NodeFindFanin(pFanout, pObj) );
Abc_SclDeptFanin( p, pTime, pFanout, pObj );
@@ -428,6 +428,7 @@ static inline void Abc_SclTimeIncUpdateClean( SC_Man * p )
}
static inline void Abc_SclTimeIncAddNode( SC_Man * p, Abc_Obj_t * pObj )
{
+ assert( !Abc_ObjIsLatch(pObj) );
assert( pObj->fMarkC == 0 );
pObj->fMarkC = 1;
Vec_IntPush( Vec_WecEntry(p->vLevels, Abc_ObjLevel(pObj)), Abc_ObjId(pObj) );
@@ -439,7 +440,7 @@ static inline void Abc_SclTimeIncAddFanins( SC_Man * p, Abc_Obj_t * pObj )
int i;
Abc_ObjForEachFanin( pObj, pFanin, i )
// if ( !pFanin->fMarkC && Abc_ObjIsNode(pFanin) )
- if ( !pFanin->fMarkC )
+ if ( !pFanin->fMarkC && !Abc_ObjIsLatch(pFanin) )
Abc_SclTimeIncAddNode( p, pFanin );
}
static inline void Abc_SclTimeIncAddFanouts( SC_Man * p, Abc_Obj_t * pObj )
@@ -447,7 +448,7 @@ static inline void Abc_SclTimeIncAddFanouts( SC_Man * p, Abc_Obj_t * pObj )
Abc_Obj_t * pFanout;
int i;
Abc_ObjForEachFanout( pObj, pFanout, i )
- if ( !pFanout->fMarkC )
+ if ( !pFanout->fMarkC && !Abc_ObjIsLatch(pFanout) )
Abc_SclTimeIncAddNode( p, pFanout );
}
static inline void Abc_SclTimeIncUpdateArrival( SC_Man * p )