00001
00021 #include "io.h"
00022
00026
00027 extern Abc_Lib_t * Ver_ParseFile( char * pFileName, Abc_Lib_t * pGateLib, int fCheck, int fUseMemMan );
00028
00032
00044 Abc_Ntk_t * Io_ReadVerilog( char * pFileName, int fCheck )
00045 {
00046 Abc_Ntk_t * pNtk;
00047 Abc_Lib_t * pDesign;
00048 int RetValue;
00049
00050
00051 pDesign = Ver_ParseFile( pFileName, NULL, fCheck, 1 );
00052 if ( pDesign == NULL )
00053 return NULL;
00054
00055
00056 RetValue = Abc_LibFindTopLevelModels( pDesign );
00057 pNtk = Vec_PtrEntry( pDesign->vTops, 0 );
00058 if ( RetValue > 1 )
00059 printf( "Warning: The design has %d root-level modules. The first one (%s) will be used.\n",
00060 Vec_PtrSize(pDesign->vTops), pNtk->pName );
00061
00062
00063 pNtk->pDesign = pDesign;
00064 pDesign->pManFunc = NULL;
00065
00066
00067 assert( Vec_PtrSize(pDesign->vModules) > 0 );
00068 if ( Vec_PtrSize(pDesign->vModules) == 1 )
00069 {
00070
00071 Abc_LibFree( pDesign, pNtk );
00072 pNtk->pDesign = NULL;
00073 pNtk->pSpec = Extra_UtilStrsav( pFileName );
00074 }
00075 else
00076 {
00077
00078 Abc_NtkIsAcyclicHierarchy( pNtk );
00079 }
00080
00081
00082 return pNtk;
00083 }
00084
00088
00089
00090