diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2012-09-19 17:35:04 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2012-09-19 17:35:04 -0700 |
commit | 480ca14c75e9f8c54ca9b55c39162324aaa1e288 (patch) | |
tree | 446dc0fd3a98d5d60c01f01f5b95e380b002ce34 /src/map/amap/amapRead.c | |
parent | 3af0f719afa368cafbe7c8178d0995819b47be90 (diff) | |
download | abc-480ca14c75e9f8c54ca9b55c39162324aaa1e288.tar.gz abc-480ca14c75e9f8c54ca9b55c39162324aaa1e288.tar.bz2 abc-480ca14c75e9f8c54ca9b55c39162324aaa1e288.zip |
Extending Liberty parser to handle multi-output cells.
Diffstat (limited to 'src/map/amap/amapRead.c')
-rw-r--r-- | src/map/amap/amapRead.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/map/amap/amapRead.c b/src/map/amap/amapRead.c index bf308c08..e8206e31 100644 --- a/src/map/amap/amapRead.c +++ b/src/map/amap/amapRead.c @@ -326,10 +326,10 @@ int Amap_CollectFormulaTokens( Vec_Ptr_t * vTokens, char * pToken, int iPos ) Amap_Lib_t * Amap_ParseTokens( Vec_Ptr_t * vTokens, int fVerbose ) { Amap_Lib_t * p; - Amap_Gat_t * pGate; + Amap_Gat_t * pGate, * pPrev; Amap_Pin_t * pPin; char * pToken; - int nPins, iPos = 0; + int i, nPins, iPos = 0; p = Amap_LibAlloc(); pToken = (char *)Vec_PtrEntry(vTokens, iPos++); do @@ -409,8 +409,21 @@ Amap_Lib_t * Amap_ParseTokens( Vec_Ptr_t * vTokens, int fVerbose ) Vec_PtrPush( p->vGates, pGate ); } pToken = (char *)Vec_PtrEntry(vTokens, iPos++); +//printf( "Finished reading gate %s (%s)\n", pGate->pName, pGate->pOutName ); } while ( strcmp( pToken, ".end" ) ); + + // check if there are gates with identical names + pPrev = NULL; + Amap_LibForEachGate( p, pGate, i ) + { + if ( pPrev && !strcmp(pPrev->pName, pGate->pName) ) + { + pPrev->pTwin = pGate, pGate->pTwin = pPrev; + printf( "Warning: Detected multi-output gate \"%s\".\n", pGate->pName ); + } + pPrev = pGate; + } return p; } |