summaryrefslogtreecommitdiffstats
path: root/src/misc/tim/timTrav.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-09-21 22:00:39 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-09-21 22:00:39 -0700
commitfdd043ca341c908bc7dc2ad62fc9974152e4f740 (patch)
tree0ad9767db7e06ed2b41494ef39d8bed57b8464c0 /src/misc/tim/timTrav.c
parentc1f8baafb86cddf08f56a3bdd7329cad68b5413f (diff)
downloadabc-fdd043ca341c908bc7dc2ad62fc9974152e4f740.tar.gz
abc-fdd043ca341c908bc7dc2ad62fc9974152e4f740.tar.bz2
abc-fdd043ca341c908bc7dc2ad62fc9974152e4f740.zip
Upgrading hierarchy timing manager.
Diffstat (limited to 'src/misc/tim/timTrav.c')
-rw-r--r--src/misc/tim/timTrav.c185
1 files changed, 185 insertions, 0 deletions
diff --git a/src/misc/tim/timTrav.c b/src/misc/tim/timTrav.c
new file mode 100644
index 00000000..4c3f64ad
--- /dev/null
+++ b/src/misc/tim/timTrav.c
@@ -0,0 +1,185 @@
+/**CFile****************************************************************
+
+ FileName [timTrav.c]
+
+ SystemName [ABC: Logic synthesis and verification system.]
+
+ PackageName [Hierarchy/timing manager.]
+
+ Synopsis [Manipulation of traversal IDs.]
+
+ Author [Alan Mishchenko]
+
+ Affiliation [UC Berkeley]
+
+ Date [Ver. 1.0. Started - April 28, 2007.]
+
+ Revision [$Id: timTrav.c,v 1.00 2007/04/28 00:00:00 alanmi Exp $]
+
+***********************************************************************/
+
+#include "timInt.h"
+
+ABC_NAMESPACE_IMPL_START
+
+////////////////////////////////////////////////////////////////////////
+/// DECLARATIONS ///
+////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////
+/// FUNCTION DEFINITIONS ///
+////////////////////////////////////////////////////////////////////////
+
+/**Function*************************************************************
+
+ Synopsis [Increments the trav ID of the manager.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Tim_ManIncrementTravId( Tim_Man_t * p )
+{
+ int i;
+ if ( p->nTravIds >= (1<<30)-1 )
+ {
+ p->nTravIds = 0;
+ for ( i = 0; i < p->nCis; i++ )
+ p->pCis[i].TravId = 0;
+ for ( i = 0; i < p->nCos; i++ )
+ p->pCos[i].TravId = 0;
+ }
+ assert( p->nTravIds < (1<<30)-1 );
+ p->nTravIds++;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Label box inputs.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Tim_ManSetCurrentTravIdBoxInputs( Tim_Man_t * p, int iBox )
+{
+ Tim_Box_t * pBox;
+ Tim_Obj_t * pObj;
+ int i;
+ pBox = Tim_ManBox( p, iBox );
+ Tim_ManBoxForEachInput( p, pBox, pObj, i )
+ pObj->TravId = p->nTravIds;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Label box outputs.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Tim_ManSetCurrentTravIdBoxOutputs( Tim_Man_t * p, int iBox )
+{
+ Tim_Box_t * pBox;
+ Tim_Obj_t * pObj;
+ int i;
+ pBox = Tim_ManBox( p, iBox );
+ Tim_ManBoxForEachOutput( p, pBox, pObj, i )
+ pObj->TravId = p->nTravIds;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Label box inputs.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Tim_ManSetPreviousTravIdBoxInputs( Tim_Man_t * p, int iBox )
+{
+ Tim_Box_t * pBox;
+ Tim_Obj_t * pObj;
+ int i;
+ pBox = Tim_ManBox( p, iBox );
+ Tim_ManBoxForEachInput( p, pBox, pObj, i )
+ pObj->TravId = p->nTravIds - 1;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Label box outputs.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Tim_ManSetPreviousTravIdBoxOutputs( Tim_Man_t * p, int iBox )
+{
+ Tim_Box_t * pBox;
+ Tim_Obj_t * pObj;
+ int i;
+ pBox = Tim_ManBox( p, iBox );
+ Tim_ManBoxForEachOutput( p, pBox, pObj, i )
+ pObj->TravId = p->nTravIds - 1;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Updates required time of the CI.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int Tim_ManIsCiTravIdCurrent( Tim_Man_t * p, int iCi )
+{
+ assert( iCi < p->nCis );
+ assert( p->fUseTravId );
+ return p->pCis[iCi].TravId == p->nTravIds;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Updates required time of the CO.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int Tim_ManIsCoTravIdCurrent( Tim_Man_t * p, int iCo )
+{
+ assert( iCo < p->nCos );
+ assert( p->fUseTravId );
+ return p->pCos[iCo].TravId == p->nTravIds;
+}
+
+////////////////////////////////////////////////////////////////////////
+/// END OF FILE ///
+////////////////////////////////////////////////////////////////////////
+
+
+ABC_NAMESPACE_IMPL_END
+