diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2019-04-18 12:13:47 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2019-04-18 12:13:47 -0700 |
commit | dbaa6a58f880f4c19d00a4dd5992322a0e2c4a72 (patch) | |
tree | 2717e431ca54d79cf0383d7dc3f91b07977e828b | |
parent | 3709744c60696c5e3f4cc123939921ce8107fe04 (diff) | |
download | abc-dbaa6a58f880f4c19d00a4dd5992322a0e2c4a72.tar.gz abc-dbaa6a58f880f4c19d00a4dd5992322a0e2c4a72.tar.bz2 abc-dbaa6a58f880f4c19d00a4dd5992322a0e2c4a72.zip |
Enabling dumping of the library of minimum circuits (file support).
-rw-r--r-- | src/opt/dau/dauNpn.c | 35 | ||||
-rw-r--r-- | src/opt/dau/dauNpn2.c | 18 |
2 files changed, 25 insertions, 28 deletions
diff --git a/src/opt/dau/dauNpn.c b/src/opt/dau/dauNpn.c index b57ade67..3740eeaf 100644 --- a/src/opt/dau/dauNpn.c +++ b/src/opt/dau/dauNpn.c @@ -29,7 +29,6 @@ ABC_NAMESPACE_IMPL_START /// DECLARATIONS /// //////////////////////////////////////////////////////////////////////// -//#define USE4VARS 1 //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// @@ -46,19 +45,14 @@ ABC_NAMESPACE_IMPL_START SeeAlso [] ***********************************************************************/ -void Dau_TruthEnum() +void Dau_TruthEnum(int nVars) { int fUseTable = 1; abctime clk = Abc_Clock(); -#ifdef USE4VARS - int nVars = 4; - int nSizeW = 1 << 14; - char * pFileName = "tableW14.data"; -#else - int nVars = 5; - int nSizeW = 1 << 30; - char * pFileName = "tableW30.data"; -#endif + int nSizeLog = (1<<nVars) -2; + int nSizeW = 1 << nSizeLog; + char pFileName[20]; + sprintf( pFileName, "tableW%d.data", nSizeLog ); int nPerms = Extra_Factorial( nVars ); int nMints = 1 << nVars; int * pPerm = Extra_PermSchedule( nVars ); @@ -177,20 +171,15 @@ int Dau_AddFunction( word tCur, int nVars, unsigned * pTable, Vec_Int_t * vNpns, } return 0; } -void Dau_NetworkEnum() +void Dau_NetworkEnum(int nVars) { abctime clk = Abc_Clock(); int Limit = 2; int UseTwo = 0; -#ifdef USE4VARS - int nVars = 4; - int nSizeW = 1 << 14; - char * pFileName = "tableW14.data"; -#else - int nVars = 5; - int nSizeW = 1 << 30; - char * pFileName = "tableW30.data"; -#endif + int nSizeLog = (1<<nVars) -2; + int nSizeW = 1 << nSizeLog; + char pFileName[20]; + sprintf( pFileName, "tableW%d.data", nSizeLog ); unsigned * pTable = Dau_ReadFile( pFileName, nSizeW ); Vec_Wec_t * vNpns = Vec_WecStart( 32 ); Vec_Wec_t * vNpns_ = Vec_WecStart( 32 ); @@ -380,8 +369,8 @@ void Dau_NetworkEnum() } void Dau_NetworkEnumTest() { - //Dau_TruthEnum(); - Dau_NetworkEnum(); + //Dau_TruthEnum(3); + Dau_NetworkEnum(4); } diff --git a/src/opt/dau/dauNpn2.c b/src/opt/dau/dauNpn2.c index 7bf5e099..db6958b0 100644 --- a/src/opt/dau/dauNpn2.c +++ b/src/opt/dau/dauNpn2.c @@ -312,6 +312,7 @@ unsigned * Dau_ReadFile2( char * pFileName, int nSizeW ) { abctime clk = Abc_Clock(); FILE * pFile = fopen( pFileName, "rb" ); + if (pFile == NULL) return NULL; unsigned * p = (unsigned *)ABC_CALLOC(word, nSizeW); int RetValue = pFile ? fread( p, sizeof(word), nSizeW, pFile ) : 0; RetValue = 0; @@ -341,12 +342,19 @@ void Dtt_ManRenum( int nVars, unsigned * pTable, int * pnClasses ) } unsigned * Dtt_ManLoadClasses( int nVars, int * pnClasses ) { + extern Dau_TruthEnum(int); + unsigned * pTable = NULL; - if ( nVars == 4 ) - pTable = Dau_ReadFile2( "tableW14.data", 1 << 14 ); - else if ( nVars == 5 ) - pTable = Dau_ReadFile2( "tableW30.data", 1 << 30 ); - else assert( 0 ); + int nSizeLog = (1<<nVars) -2; + int nSizeW = 1 << nSizeLog; + char pFileName[20]; + sprintf( pFileName, "tableW%d.data", nSizeLog ); + pTable = Dau_ReadFile2( pFileName, nSizeW ); + if (pTable == NULL) + { + Dau_TruthEnum(nVars); + pTable = Dau_ReadFile2( pFileName, nSizeW ); + } Dtt_ManRenum( nVars, pTable, pnClasses ); return pTable; } |