summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2022-04-26 17:49:39 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2022-04-26 17:49:39 -0700
commit5999b5a516a2256bcd30007f0cdaf7971118bd46 (patch)
tree291d1c9e33db62fda542aab54b959095b52815fe
parent0fc56e71997b09fef9cc35f2e3423df723e1e9ce (diff)
downloadabc-5999b5a516a2256bcd30007f0cdaf7971118bd46.tar.gz
abc-5999b5a516a2256bcd30007f0cdaf7971118bd46.tar.bz2
abc-5999b5a516a2256bcd30007f0cdaf7971118bd46.zip
Adding switch -c to &cone.
-rw-r--r--src/base/abci/abc.c17
-rw-r--r--src/base/wln/wlnRead.c2
2 files changed, 15 insertions, 4 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c
index 46b2215a..78c4f556 100644
--- a/src/base/abci/abc.c
+++ b/src/base/abci/abc.c
@@ -44051,9 +44051,9 @@ int Abc_CommandAbc9Cone( Abc_Frame_t * pAbc, int argc, char ** argv )
{
Gia_Man_t * pTemp;
Vec_Int_t * vPos;
- int c, iOutNum = -1, nOutRange = 1, iPartNum = -1, nLevelMax = 0, nTimeWindow = 0, fUseAllCis = 0, fExtractAll = 0, fVerbose = 0;
+ int c, nRegs = 0, iOutNum = -1, nOutRange = 1, iPartNum = -1, nLevelMax = 0, nTimeWindow = 0, fUseAllCis = 0, fExtractAll = 0, fComb = 0, fVerbose = 0;
Extra_UtilGetoptReset();
- while ( ( c = Extra_UtilGetopt( argc, argv, "ORPLWaevh" ) ) != EOF )
+ while ( ( c = Extra_UtilGetopt( argc, argv, "ORPLWaecvh" ) ) != EOF )
{
switch ( c )
{
@@ -44118,6 +44118,9 @@ int Abc_CommandAbc9Cone( Abc_Frame_t * pAbc, int argc, char ** argv )
case 'e':
fExtractAll ^= 1;
break;
+ case 'c':
+ fComb ^= 1;
+ break;
case 'v':
fVerbose ^= 1;
break;
@@ -44181,20 +44184,27 @@ int Abc_CommandAbc9Cone( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_FrameUpdateGia( pAbc, pTemp );
return 0;
}
+ nRegs = Gia_ManRegNum( pAbc->pGia );
+ if ( fComb )
+ Gia_ManSetRegNum( pAbc->pGia, 0 );
if ( iOutNum < 0 || iOutNum + nOutRange > Gia_ManPoNum(pAbc->pGia) )
{
Abc_Print( -1, "Abc_CommandAbc9Cone(): Range of outputs to extract is incorrect.\n" );
+ if ( fComb )
+ Gia_ManSetRegNum( pAbc->pGia, nRegs );
return 1;
}
vPos = Vec_IntStartRange( iOutNum, nOutRange );
pTemp = Gia_ManDupCones( pAbc->pGia, Vec_IntArray(vPos), nOutRange, !fUseAllCis );
+ if ( fComb )
+ Gia_ManSetRegNum( pAbc->pGia, nRegs );
Vec_IntFree( vPos );
if ( pTemp )
Abc_FrameUpdateGia( pAbc, pTemp );
return 0;
usage:
- Abc_Print( -2, "usage: &cone [-ORPLW num] [-aevh]\n" );
+ Abc_Print( -2, "usage: &cone [-ORPLW num] [-aecvh]\n" );
Abc_Print( -2, "\t extracting multi-output sequential logic cones\n" );
Abc_Print( -2, "\t-O num : the index of first PO to extract [default = %d]\n", iOutNum );
Abc_Print( -2, "\t-R num : (optional) the number of outputs to extract [default = %d]\n", nOutRange );
@@ -44203,6 +44213,7 @@ usage:
Abc_Print( -2, "\t-W num : (optional) extract cones falling into this window [default = %d]\n", nTimeWindow );
Abc_Print( -2, "\t-a : toggle keeping all CIs or structral support only [default = %s]\n", fUseAllCis? "all": "structural" );
Abc_Print( -2, "\t-e : toggle writing all outputs into individual files [default = %s]\n", fExtractAll? "yes": "no" );
+ Abc_Print( -2, "\t-c : toggle performing cone extraction combinationally [default = %s]\n", fComb? "yes": "no" );
Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
Abc_Print( -2, "\t-h : print the command usage\n");
return 1;
diff --git a/src/base/wln/wlnRead.c b/src/base/wln/wlnRead.c
index cd868185..276683aa 100644
--- a/src/base/wln/wlnRead.c
+++ b/src/base/wln/wlnRead.c
@@ -2776,7 +2776,7 @@ void Wln_LibGraftOne( Rtl_Lib_t * p, char ** pModules, int nModules, int fInv, i
{
int iNtk1 = Rtl_LibFindModule(p, iName1);
int iNtk2 = Rtl_LibFindModule(p, iName2);
- Rtl_Ntk_t * pNtk1 = Rtl_LibNtk( p, iNtk1 );
+ //Rtl_Ntk_t * pNtk1 = Rtl_LibNtk( p, iNtk1 );
Rtl_Ntk_t * pNtk2 = Rtl_LibNtk( p, iNtk2 );
pNtk2->iCopy = iNtk1;
}