mirror of https://github.com/YosysHQ/abc.git
Making GENLIB parser skip LATCHes.
This commit is contained in:
parent
7fa9de2da4
commit
7e805e5c9a
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue