mirror of
https://github.com/YosysHQ/abc.git
synced 2026-09-02 02:37:25 +02:00
Version abc80611
This commit is contained in:
+44
-26
@@ -32,6 +32,7 @@
|
||||
#include "mfs.h"
|
||||
#include "mfx.h"
|
||||
#include "fra.h"
|
||||
#include "saig.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// DECLARATIONS ///
|
||||
@@ -15812,23 +15813,29 @@ int Abc_CommandAbc8Write( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
char * pFileName;
|
||||
void * pTemp;
|
||||
int fAig;
|
||||
int fCollapsed;
|
||||
int c;
|
||||
extern void Ioa_WriteBlif( void * p, char * pFileName );
|
||||
extern void * Ntl_ManInsertNtk( void * p, void * pNtk );
|
||||
extern void * Ntl_ManInsertAig( void * p, Aig_Man_t * pAig );
|
||||
extern void * Ntl_ManDup( void * pOld );
|
||||
extern void Ntl_ManFree( void * p );
|
||||
extern Aig_Man_t * Ntl_ManCollapseSeq( void * p );
|
||||
|
||||
// set defaults
|
||||
fAig = 0;
|
||||
fCollapsed = 0;
|
||||
Extra_UtilGetoptReset();
|
||||
while ( ( c = Extra_UtilGetopt( argc, argv, "ah" ) ) != EOF )
|
||||
while ( ( c = Extra_UtilGetopt( argc, argv, "ach" ) ) != EOF )
|
||||
{
|
||||
switch ( c )
|
||||
{
|
||||
case 'a':
|
||||
fAig ^= 1;
|
||||
break;
|
||||
case 'c':
|
||||
fCollapsed ^= 1;
|
||||
break;
|
||||
case 'h':
|
||||
goto usage;
|
||||
default:
|
||||
@@ -15844,21 +15851,30 @@ int Abc_CommandAbc8Write( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
pFileName = argv[globalUtilOptind];
|
||||
if ( fAig )
|
||||
{
|
||||
if ( pAbc->pAbc8Aig != NULL )
|
||||
if ( fCollapsed )
|
||||
{
|
||||
pTemp = Ntl_ManInsertAig( pAbc->pAbc8Ntl, pAbc->pAbc8Aig );
|
||||
if ( pTemp == NULL )
|
||||
{
|
||||
printf( "Abc_CommandAbc8Write(): Inserting AIG has failed.\n" );
|
||||
return 1;
|
||||
}
|
||||
Ioa_WriteBlif( pTemp, pFileName );
|
||||
Ntl_ManFree( pTemp );
|
||||
pTemp = Ntl_ManCollapseSeq( pAbc->pAbc8Ntl );
|
||||
Saig_ManDumpBlif( pTemp, pFileName );
|
||||
Aig_ManStop( pTemp );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "There is no AIG to write.\n" );
|
||||
return 1;
|
||||
if ( pAbc->pAbc8Aig != NULL )
|
||||
{
|
||||
pTemp = Ntl_ManInsertAig( pAbc->pAbc8Ntl, pAbc->pAbc8Aig );
|
||||
if ( pTemp == NULL )
|
||||
{
|
||||
printf( "Abc_CommandAbc8Write(): Inserting AIG has failed.\n" );
|
||||
return 1;
|
||||
}
|
||||
Ioa_WriteBlif( pTemp, pFileName );
|
||||
Ntl_ManFree( pTemp );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "There is no AIG to write.\n" );
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -15884,9 +15900,10 @@ int Abc_CommandAbc8Write( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
return 0;
|
||||
|
||||
usage:
|
||||
fprintf( stdout, "usage: *w [-ah]\n" );
|
||||
fprintf( stdout, "usage: *w [-ach]\n" );
|
||||
fprintf( stdout, "\t write the design with whiteboxes\n" );
|
||||
fprintf( stdout, "\t-a : toggle writing mapped network or AIG [default = %s]\n", fAig? "AIG": "mapped" );
|
||||
fprintf( stdout, "\t-c : toggle writing collapsed sequential AIG [default = %s]\n", fCollapsed? "yes": "no" );
|
||||
fprintf( stdout, "\t-h : print the command usage\n");
|
||||
return 1;
|
||||
}
|
||||
@@ -17810,7 +17827,7 @@ usage:
|
||||
int Abc_CommandAbc8Cec( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
{
|
||||
Aig_Man_t * pAig1, * pAig2;
|
||||
void * pTemp;
|
||||
void * pTemp1, * pTemp2;
|
||||
char ** pArgvNew;
|
||||
int nArgcNew;
|
||||
int c;
|
||||
@@ -17823,6 +17840,7 @@ int Abc_CommandAbc8Cec( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
extern void Ntl_ManFree( void * p );
|
||||
extern void * Ntl_ManInsertNtk( void * p, void * pNtk );
|
||||
|
||||
extern void Ntl_ManPrepareCecMans( void * pMan1, void * pMan2, Aig_Man_t ** ppAig1, Aig_Man_t ** ppAig2 );
|
||||
extern void Ntl_ManPrepareCec( char * pFileName1, char * pFileName2, Aig_Man_t ** ppMan1, Aig_Man_t ** ppMan2 );
|
||||
extern int Fra_FraigCecTop( Aig_Man_t * pMan1, Aig_Man_t * pMan2, int nConfLimit, int nPartSize, int fSmart, int fVerbose );
|
||||
|
||||
@@ -17897,25 +17915,25 @@ int Abc_CommandAbc8Cec( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
printf( "Abc_CommandAbc8Cec(): There is no mapped network to verify.\n" );
|
||||
return 1;
|
||||
}
|
||||
// printf( "Currently *cec works only for two designs given on command line.\n" );
|
||||
|
||||
printf( "Currently *cec works only for two designs given on command line.\n" );
|
||||
/*
|
||||
// derive AIGs
|
||||
pAig1 = Ntl_ManCollapse( pAbc->pAbc8Ntl, 0 );
|
||||
pTemp = Ntl_ManInsertNtk( pAbc->pAbc8Ntl, pAbc->pAbc8Nwk );
|
||||
if ( pTemp == NULL )
|
||||
// insert the mapped network
|
||||
pTemp1 = Ntl_ManDup( pAbc->pAbc8Ntl );
|
||||
pTemp2 = Ntl_ManInsertNtk( pAbc->pAbc8Ntl, pAbc->pAbc8Nwk );
|
||||
if ( pTemp2 == NULL )
|
||||
{
|
||||
Ntl_ManFree( pTemp1 );
|
||||
printf( "Abc_CommandAbc8Cec(): Inserting the design has failed.\n" );
|
||||
return 1;
|
||||
}
|
||||
pAig2 = Ntl_ManCollapse( pTemp, 0 );
|
||||
Ntl_ManFree( pTemp );
|
||||
|
||||
// perform verification
|
||||
Ntl_ManPrepareCecMans( pTemp1, pTemp2, &pAig1, &pAig2 );
|
||||
Ntl_ManFree( pTemp1 );
|
||||
Ntl_ManFree( pTemp2 );
|
||||
if ( !pAig1 || !pAig2 )
|
||||
return 1;
|
||||
Fra_FraigCecTop( pAig1, pAig2, nConfLimit, nPartSize, fSmart, fVerbose );
|
||||
Aig_ManStop( pAig1 );
|
||||
Aig_ManStop( pAig2 );
|
||||
*/
|
||||
return 0;
|
||||
|
||||
usage:
|
||||
@@ -17958,7 +17976,7 @@ int Abc_CommandAbc8DSec( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
|
||||
// set defaults
|
||||
Fra_SecSetDefaultParams( pSecPar );
|
||||
pSecPar->nFramesMax = 2;
|
||||
pSecPar->nFramesMax = 4;
|
||||
pSecPar->fPhaseAbstract = 0;
|
||||
pSecPar->fRetimeFirst = 0;
|
||||
pSecPar->fRetimeRegs = 0;
|
||||
|
||||
@@ -180,7 +180,7 @@ Abc_Ntk_t * Io_ReadBlifMv( char * pFileName, int fBlifMv, int fCheck )
|
||||
{
|
||||
if ( !Abc_NtkCheckRead( pNtk ) )
|
||||
{
|
||||
printf( "Io_ReadBlifMv: The network check has failed for network %s.\n", pNtk->pName );
|
||||
printf( "Io_ReadBlifMv: The network check has failed for model %s.\n", pNtk->pName );
|
||||
Abc_LibFree( pDesign, NULL );
|
||||
return NULL;
|
||||
}
|
||||
@@ -624,11 +624,15 @@ static void Io_MvReadPreparse( Io_MvMan_t * p )
|
||||
fprintf( stdout, "Line %d: Skipping EXDC network.\n", Io_MvGetLine(p, pCur) );
|
||||
break;
|
||||
}
|
||||
else if ( !strncmp(pCur, "attrib", 6) )
|
||||
{}
|
||||
else if ( !strncmp(pCur, "delay", 5) )
|
||||
{}
|
||||
else if ( !strncmp(pCur, "input_arrival", 13) )
|
||||
else if ( !strncmp(pCur, "input_", 6) )
|
||||
{}
|
||||
else if ( !strncmp(pCur, "output_required", 15) )
|
||||
else if ( !strncmp(pCur, "output_", 7) )
|
||||
{}
|
||||
else if ( !strncmp(pCur, "no_merge", 8) )
|
||||
{}
|
||||
else
|
||||
{
|
||||
@@ -747,6 +751,14 @@ static Abc_Lib_t * Io_MvParse( Io_MvMan_t * p )
|
||||
Vec_PtrForEachEntry( pMod->vSubckts, pLine, k )
|
||||
if ( !Io_MvParseLineSubckt( pMod, pLine ) )
|
||||
return NULL;
|
||||
|
||||
// allow for blackboxes without .blackbox line
|
||||
if ( Abc_NtkLatchNum(pMod->pNtk) == 0 && Abc_NtkNodeNum(pMod->pNtk) == 0 )
|
||||
{
|
||||
if ( pMod->pNtk->ntkFunc == ABC_FUNC_SOP )
|
||||
pMod->pNtk->ntkFunc = ABC_FUNC_BLACKBOX;
|
||||
}
|
||||
|
||||
// finalize the network
|
||||
Abc_NtkFinalizeRead( pMod->pNtk );
|
||||
// read the one-hotness lines
|
||||
@@ -824,9 +836,10 @@ static int Io_MvParseLineModel( Io_MvMod_t * p, char * pLine )
|
||||
p->pNtk = Abc_NtkAlloc( ABC_NTK_NETLIST, ABC_FUNC_BLIFMV, 1 );
|
||||
else
|
||||
p->pNtk = Abc_NtkAlloc( ABC_NTK_NETLIST, ABC_FUNC_SOP, 1 );
|
||||
for ( pPivot = pToken = Vec_PtrEntry(vTokens, 1); *pToken; pToken++ )
|
||||
if ( *pToken == '/' || *pToken == '\\' )
|
||||
pPivot = pToken+1;
|
||||
// for ( pPivot = pToken = Vec_PtrEntry(vTokens, 1); *pToken; pToken++ )
|
||||
// if ( *pToken == '/' || *pToken == '\\' )
|
||||
// pPivot = pToken+1;
|
||||
pPivot = pToken = Vec_PtrEntry(vTokens, 1);
|
||||
p->pNtk->pName = Extra_UtilStrsav( pPivot );
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user