Skip to content

Commit 6732ce4

Browse files
FeldmeierMichaelmarcelwapre-commit-ci[bot]
authored
✨ Add advanced power encoding (#17)
* ✨Introducing Power Constraints * 💬Added Comments * 🔨Clang-Tidy Work Nr.1 * 🔨Clang-Tidy Work Nr.2 * 🔨Clang-Tidy Work Nr.3 * 🔨Clang-Tidy Work Nr.4 * 🔨Clang-Tidy Work Nr.5 * 🔨Clang-Tidy Work Nr.6 * 🔨Clang-Tidy Work Nr.7 * 🔨Clang-Tidy Work Nr.8 * ✏️Added AI Feedback Nr.1 * 🔨Clang-Tidy Work Nr.9 * 🔨Clang-Tidy Work Nr.10 * ✏️Added AI Feedback Nr.2 * ✏️Added AI Feedback Nr.3 * ✏️Added AI Feedback Nr.4 * ✏️Added AI Feedback Nr.5 * ✏️Fixed Docstrings * ✏️Added AI Feedback Nr.6 * 🔨Clang-Tidy Work Nr.11 * ✏️Added AI Feedback Nr.7 * ✏️Added AI Feedback Nr.8 * ✏️Added AI Feedback Nr.9 * ✏️Added AI Feedback Nr.10 * 🔨Clang-Tidy Work Nr.12 * 🔨Clang-Tidy Work Nr.13 * ✏️Added AI Feedback Nr.11 * ✏️Added AI Feedback Nr.12 * ✏️Added AI Feedback Nr.13 * 🔨Clang-Tidy Work Nr.14 * ✏️Added AI Feedback Nr.14 * ✏️Added AI Feedback Nr.15 * ✏️Added AI Feedback Nr.16 * 👷 Including Review Feedback Nr.1 * 🚨 Fixed Ubuntu Integration Fail Nr.1 * ✏️Added AI Feedback Nr.17 * 👷 Including Review Feedback Nr.2 * ✏️Added AI Feedback Nr.18 * 🔨Clang-Tidy Work Nr.15 * 🔨Clang-Tidy Work Nr.16 * 🎨 Small consistency fixes. * ✏️Added AI Feedback Nr.19 * ✏️Added AI Feedback Nr.20 * ✏️Added AI Feedback Nr.21 * 🔨 Added Cudd Bdd support for Pseudo Boolean CCs -> CNF * 🎨 pre-commit fixes * 🐛 Fixed dublicated List declaration * ✏️ Clang-Tidy Nr.1 * ✏️ Clang-Tidy Nr.2 * ✏️ Clang-Tidy Nr.3 * ✏️ Clang-Tidy Nr.4 * ✏️ Clang-Tidy Nr.5 * ✏️ Clang-Tidy Nr.6 * ✏️ Clang-Tidy Nr.7 * ✏️ Clang-Tidy Nr.8 * ✏️ Clang-Tidy Nr.9 * ✏️ Clang-Tidy Nr.10 * ✏️ Clang-Tidy Nr.11 * ✏️ Clang-Tidy Nr.12 * ✏️ Clang-Tidy Nr.13 * ✏️ Clang-Tidy Nr.14 * ✏️ Clang-Tidy Nr.15 * ✏️ Clang-Tidy Nr.16 * ✏️ Clang-Tidy Nr.17 * ✏️ Clang-Tidy Nr.18 * ✏️ Clang-Tidy Nr.19 * ✏️ Clang-Tidy Nr.20 * 📝 Docstrings+ and Command Usage update * ✏️ Clang-Tidy Nr.21 * ✏️ AI Feedback Nr.1 * ✏️ Clang-Tidy Nr.22 * ✏️ Clang-Tidy Nr.23 * ✏️ AI Feedback Nr.2 * ✏️ Clang-Tidy Nr.24 * ✏️ Updated const declaration * ✏️ Docstring Update * ✏️ AI Feedback Nr.3 * ✏️ AI Feedback Nr.3 * ✏️ Clang-Tidy Nr.25 * ✏️ AI Feedback Nr.4 * ✏️ AI Feedback Nr.5 * ✏️ AI Feedback Nr.6 * ✏️ Clang-Tidy Nr.26 * ✏️ Clang-Tidy Nr.27 * ✏️ Clang-Tidy Nr.28 * ✏️ AI Feedback Nr.7 * ✏️ AI Feedback Nr.8 * ✏️ AI Feedback Nr.9 * ✏️ Obsolete printf removed * 👷 Apply suggestions from Marcel Co-authored-by: Marcel Walter <marcelwalter.mw@gmail.com> Signed-off-by: FeldmeierMichael <102790823+FeldmeierMichael@users.noreply.github.com> * 🚀 Included Marcels feedback * 💸 Hopefully last AI Feedback * 🦖 Apply suggestions from code review Co-authored-by: Marcel Walter <marcelwalter.mw@gmail.com> Signed-off-by: FeldmeierMichael <102790823+FeldmeierMichael@users.noreply.github.com> --------- Signed-off-by: FeldmeierMichael <102790823+FeldmeierMichael@users.noreply.github.com> Co-authored-by: Marcel Walter <marcel.walter@tum.de> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Marcel Walter <marcelwalter.mw@gmail.com>
1 parent 9efe45e commit 6732ce4

3 files changed

Lines changed: 1259 additions & 108 deletions

File tree

init.cpp

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,36 @@
1111
#include "base/main/mainInt.h"
1212
#include "sat/bmc/bmc.h"
1313

14+
1415
extern "C"
1516
{
1617
#include "pexact.h"
1718
}
1819

20+
#include "errno.h"
1921
#include "stdio.h"
2022

2123
namespace
2224
{
2325
const int DECIMAL_BASE = 10;
26+
const int STEPSIZE_75 = 75;
27+
2428

29+
int RunPexact( int searchMode, Bmc_EsPar_t * pPars )
30+
{
31+
int status = 0;
32+
if ( searchMode == 0 )
33+
{
34+
status = PexaManExactPowerSynthesisBasePower( pPars );
35+
} else if ( searchMode == 1 )
36+
{
37+
status = PexaManExactPowerSynthesisBasePowerBDD( pPars );
38+
} else if ( searchMode == 2 )
39+
{
40+
status = PexaManExactPowerSynthesisBasePowerBDDBinary( pPars, STEPSIZE_75 );
41+
}
42+
return status;
43+
}
2544
/**
2645
* @brief Pexact command.
2746
*
@@ -41,11 +60,13 @@ int PexactCommand( Abc_Frame_t * pAbc, int argc, char ** argv )
4160
Bmc_EsParSetDefault( pPars );
4261
Extra_UtilGetoptReset();
4362
Abc_FrameInit( pAbc );
44-
while ( ( c = Extra_UtilGetopt( argc, argv, "I" ) ) != EOF )
63+
int searchMode = 0; // Default search mode
64+
long parsedSearchMode = 0;
65+
while ( ( c = Extra_UtilGetopt( argc, argv, "IM" ) ) != EOF )
4566
{
4667
switch ( c )
4768
{
48-
case 'I':
69+
case 'I': {
4970
if ( globalUtilOptind >= argc )
5071
{
5172
Abc_Print( -1, "Command line switch \"-I\" should be followed by an integer.\n" );
@@ -54,9 +75,28 @@ int PexactCommand( Abc_Frame_t * pAbc, int argc, char ** argv )
5475
pPars->nVars = strtol( argv[globalUtilOptind], &pEnd, DECIMAL_BASE );
5576
globalUtilOptind++;
5677
break;
57-
default:
78+
}
79+
case 'M': {
80+
if ( globalUtilOptind >= argc )
81+
{
82+
Abc_Print( -1, "Command line switch \"-M\" should be followed by an integer.\n" );
83+
goto usage;
84+
}
85+
errno = 0;
86+
parsedSearchMode = strtol( argv[globalUtilOptind], &pEnd, DECIMAL_BASE );
87+
if ( pEnd == argv[globalUtilOptind] || *pEnd != '\0' || errno == ERANGE || parsedSearchMode < 0 || parsedSearchMode > 2 )
88+
{
89+
Abc_Print( -1, "Invalid search mode. Valid values are 0 (queue search), 1 (free search), and 2 (binary search).\n" );
90+
goto usage;
91+
}
92+
searchMode = ( int )parsedSearchMode;
93+
globalUtilOptind++;
94+
break;
95+
}
96+
default: {
5897
goto usage;
5998
}
99+
}
60100
}
61101
if ( argc == globalUtilOptind + 1 )
62102
{
@@ -81,11 +121,12 @@ int PexactCommand( Abc_Frame_t * pAbc, int argc, char ** argv )
81121
Abc_Print( -1, "Function should not have more than 4 inputs.\n" );
82122
return 1;
83123
}
84-
return PexaManExactPowerSynthesisBasePower( pPars );
124+
return RunPexact( searchMode, pPars );
85125
usage:
86-
Abc_Print( -2, "usage: pexact [-I] <hex>\n" );
126+
Abc_Print( -2, "usage: pexact [-I <num>] [-M <num>] <hex>\n" );
87127
Abc_Print( -2, "\t exact synthesis of multi-input function using two-input gates\n" );
88128
Abc_Print( -2, "\t-I <num> : the number of input variables [default = %d]\n", pPars->nVars );
129+
Abc_Print( -2, "\t-M <num> : search space exploration mode 0: queue search; 1: free search; 2: binary search [default = 0]\n" );
89130
return 1;
90131
}
91132
/**

0 commit comments

Comments
 (0)