From d2b735f794575ce0f10f01bba1255cf1dc3b8aaf Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sat, 25 Oct 2008 08:01:00 -0700 Subject: Version abc81025 --- src/aig/ntl/ntlTable.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) (limited to 'src/aig/ntl/ntlTable.c') diff --git a/src/aig/ntl/ntlTable.c b/src/aig/ntl/ntlTable.c index fe58e2f8..208b4491 100644 --- a/src/aig/ntl/ntlTable.c +++ b/src/aig/ntl/ntlTable.c @@ -178,6 +178,27 @@ Ntl_Net_t * Ntl_ModelFindOrCreateNet( Ntl_Mod_t * p, char * pName ) return pEnt; } +/**Function************************************************************* + + Synopsis [Assigns numbers to PIs and POs.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +void Ntl_ModelSetPioNumbers( Ntl_Mod_t * p ) +{ + Ntl_Obj_t * pObj; + int i; + Ntl_ModelForEachPi( p, pObj, i ) + pObj->iTemp = i; + Ntl_ModelForEachPo( p, pObj, i ) + pObj->iTemp = i; +} + /**Function************************************************************* Synopsis [Returns -1, 0, +1 (when it is PI, not found, or PO).] @@ -189,7 +210,7 @@ Ntl_Net_t * Ntl_ModelFindOrCreateNet( Ntl_Mod_t * p, char * pName ) SeeAlso [] ***********************************************************************/ -int Ntl_ModelFindPioNumber( Ntl_Mod_t * p, int fPiOnly, int fPoOnly, char * pName, int * pNumber ) +int Ntl_ModelFindPioNumber_old( Ntl_Mod_t * p, int fPiOnly, int fPoOnly, char * pName, int * pNumber ) { Ntl_Net_t * pNet; Ntl_Obj_t * pObj; @@ -241,6 +262,60 @@ int Ntl_ModelFindPioNumber( Ntl_Mod_t * p, int fPiOnly, int fPoOnly, char * pNam return 0; } +/**Function************************************************************* + + Synopsis [Returns -1, 0, +1 (when it is PI, not found, or PO).] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Ntl_ModelFindPioNumber( Ntl_Mod_t * p, int fPiOnly, int fPoOnly, char * pName, int * pNumber ) +{ + Ntl_Net_t * pNet; + Ntl_Obj_t * pTerm; + *pNumber = -1; + pNet = Ntl_ModelFindNet( p, pName ); + if ( pNet == NULL ) + return 0; + if ( fPiOnly ) + { + pTerm = pNet->pDriver; + if ( pTerm && Ntl_ObjIsPi(pTerm) ) + { + *pNumber = pTerm->iTemp; + return -1; + } + return 0; + } + if ( fPoOnly ) + { + pTerm = pNet->pCopy; + if ( pTerm && Ntl_ObjIsPo(pTerm) ) + { + *pNumber = pTerm->iTemp; + return 1; + } + return 0; + } + pTerm = pNet->pCopy; + if ( pTerm && Ntl_ObjIsPo(pTerm) ) + { + *pNumber = pTerm->iTemp; + return 1; + } + pTerm = pNet->pDriver; + if ( pTerm && Ntl_ObjIsPi(pTerm) ) + { + *pNumber = pTerm->iTemp; + return -1; + } + return 0; +} + /**Function************************************************************* Synopsis [Sets the driver of the net.] -- cgit v1.2.3