diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/map/amap/amapRead.c | 4 | ||||
| -rw-r--r-- | src/map/mio/mio.c | 5 | ||||
| -rw-r--r-- | src/map/mio/mioInt.h | 1 | ||||
| -rw-r--r-- | src/map/mio/mioRead.c | 25 | 
4 files changed, 34 insertions, 1 deletions
diff --git a/src/map/amap/amapRead.c b/src/map/amap/amapRead.c index 1031ee84..471438d5 100644 --- a/src/map/amap/amapRead.c +++ b/src/map/amap/amapRead.c @@ -183,6 +183,10 @@ Vec_Ptr_t * Amap_DeriveTokens( char * pBuffer )      {          Vec_PtrPush( vTokens, pToken );          pToken = strtok( NULL, " =\t\r\n" ); +        // skip latches +        if ( pToken && strcmp( pToken, "LATCH" ) == 0 ) +            while ( pToken && strcmp( pToken, "GATE" ) != 0 ) +                pToken = strtok( NULL, " =\t\r\n" );      }      return vTokens;  } diff --git a/src/map/mio/mio.c b/src/map/mio/mio.c index 30ad63e9..1f410705 100644 --- a/src/map/mio/mio.c +++ b/src/map/mio/mio.c @@ -446,6 +446,11 @@ int Mio_CommandPrintLibrary( Abc_Frame_t * pAbc, int argc, char **argv )                  goto usage;          }      } +    if ( Abc_FrameReadLibGen() == NULL ) +    { +        printf( "Library is not available.\n" ); +        return 1; +    }      FileName = argv[globalUtilOptind];      if ( argc == globalUtilOptind + 1 )      { diff --git a/src/map/mio/mioInt.h b/src/map/mio/mioInt.h index 02f081fa..59bd6ba6 100644 --- a/src/map/mio/mioInt.h +++ b/src/map/mio/mioInt.h @@ -41,6 +41,7 @@ ABC_NAMESPACE_HEADER_START  ////////////////////////////////////////////////////////////////////////  #define    MIO_STRING_GATE       "GATE" +#define    MIO_STRING_LATCH      "LATCH"  #define    MIO_STRING_PIN        "PIN"  #define    MIO_STRING_NONINV     "NONINV"  #define    MIO_STRING_INV        "INV" 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;  | 
