summaryrefslogtreecommitdiffstats
path: root/src/opt
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2019-04-18 12:13:47 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2019-04-18 12:13:47 -0700
commitdbaa6a58f880f4c19d00a4dd5992322a0e2c4a72 (patch)
tree2717e431ca54d79cf0383d7dc3f91b07977e828b /src/opt
parent3709744c60696c5e3f4cc123939921ce8107fe04 (diff)
downloadabc-dbaa6a58f880f4c19d00a4dd5992322a0e2c4a72.tar.gz
abc-dbaa6a58f880f4c19d00a4dd5992322a0e2c4a72.tar.bz2
abc-dbaa6a58f880f4c19d00a4dd5992322a0e2c4a72.zip
Enabling dumping of the library of minimum circuits (file support).
Diffstat (limited to 'src/opt')
-rw-r--r--src/opt/dau/dauNpn.c35
-rw-r--r--src/opt/dau/dauNpn2.c18
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;
}