From 7e805e5c9ac3794b469f7bfe21bd933f49689afb Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Fri, 2 Mar 2012 11:48:13 -0800 Subject: Making GENLIB parser skip LATCHes. --- src/map/mio/mioRead.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/map/mio/mioRead.c') diff --git a/src/map/mio/mioRead.c b/src/map/mio/mioRead.c index 283e2acf..d4e7fcd0 100644 --- a/src/map/mio/mioRead.c +++ b/src/map/mio/mioRead.c @@ -186,8 +186,25 @@ int Mio_LibraryReadInternal( Mio_Library_t * pLib, char * pBuffer, int fExtended // read gates one by one pToken = strtok( pBuffer, " \t\r\n" ); - while ( pToken && strcmp( pToken, MIO_STRING_GATE ) == 0 ) + while ( pToken && (strcmp( pToken, MIO_STRING_GATE ) == 0 || strcmp( pToken, MIO_STRING_LATCH ) == 0) ) { + // skip latches + if ( strcmp( pToken, MIO_STRING_LATCH ) == 0 ) + { + while ( pToken && strcmp( pToken, MIO_STRING_GATE ) != 0 && strcmp( pToken, ".end" ) != 0 ) + { + if ( strcmp( pToken, MIO_STRING_LATCH ) == 0 ) + { + pToken = strtok( NULL, " \t\r\n" ); + printf( "Skipping latch \"%s\"...\n", pToken ); + continue; + } + pToken = strtok( NULL, " \t\r\n" ); + } + if ( !(pToken && strcmp( pToken, MIO_STRING_GATE ) == 0) ) + break; + } + // derive the next gate pGate = Mio_LibraryReadGate( &pToken, fExtendedFormat ); if ( pGate == NULL ) @@ -221,6 +238,12 @@ int Mio_LibraryReadInternal( Mio_Library_t * pLib, char * pBuffer, int fExtended if ( fVerbose ) printf( "The number of gates read = %d.\n", nGates ); + if ( nGates == 0 ) + { + printf( "The library contains no gates.\n" ); + return 1; + } + // check what is the last word read if ( pToken && strcmp( pToken, ".end" ) != 0 ) return 1; -- cgit v1.2.3