Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
abc
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
abc
Commits
4d1bc4a2
Commit
4d1bc4a2
authored
Jun 22, 2015
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Version abc90809
committer: Baruch Sterin <baruchs@gmail.com>
parent
b288bac6
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
55 additions
and
22 deletions
+55
-22
src/aig/cec/cecCorr.c
+5
-4
src/aig/dar/darScript.c
+8
-0
src/base/abci/abc.c
+6
-2
src/opt/mfs/mfs.h
+1
-0
src/opt/mfs/mfsCore.c
+4
-2
src/opt/mfs/mfsDiv.c
+1
-1
src/opt/mfs/mfsInt.h
+1
-1
src/opt/mfs/mfsMan.c
+2
-2
src/opt/mfs/mfsResub.c
+27
-10
No files found.
src/aig/cec/cecCorr.c
View file @
4d1bc4a2
...
@@ -1007,20 +1007,21 @@ void Cec_ManPrintFlopEquivs( Gia_Man_t * p )
...
@@ -1007,20 +1007,21 @@ void Cec_ManPrintFlopEquivs( Gia_Man_t * p )
Gia_ManForEachRo
(
p
,
pObj
,
i
)
Gia_ManForEachRo
(
p
,
pObj
,
i
)
{
{
if
(
Gia_ObjIsConst
(
p
,
Gia_ObjId
(
p
,
pObj
))
)
if
(
Gia_ObjIsConst
(
p
,
Gia_ObjId
(
p
,
pObj
))
)
printf
(
"
Flop
\"
%s
\"
is equivalent to constant 0
.
\n
"
,
Vec_PtrEntry
(
p
->
vNamesIn
,
Gia_ObjCioId
(
pObj
))
);
printf
(
"
Original flop %s is proved equivalent to constant
.
\n
"
,
Vec_PtrEntry
(
p
->
vNamesIn
,
Gia_ObjCioId
(
pObj
))
);
else
if
(
(
pRepr
=
Gia_ObjReprObj
(
p
,
Gia_ObjId
(
p
,
pObj
)))
)
else
if
(
(
pRepr
=
Gia_ObjReprObj
(
p
,
Gia_ObjId
(
p
,
pObj
)))
)
{
{
if
(
Gia_ObjIsCi
(
pRepr
)
)
if
(
Gia_ObjIsCi
(
pRepr
)
)
printf
(
"
Flop
\"
%s
\"
is equivalent to flop
\"
%s
\"
.
\n
"
,
printf
(
"
Original flop %s is proved equivalent to flop %s.
\n
"
,
Vec_PtrEntry
(
p
->
vNamesIn
,
Gia_ObjCioId
(
pObj
)
),
Vec_PtrEntry
(
p
->
vNamesIn
,
Gia_ObjCioId
(
pObj
)
),
Vec_PtrEntry
(
p
->
vNamesIn
,
Gia_ObjCioId
(
pRepr
)
)
);
Vec_PtrEntry
(
p
->
vNamesIn
,
Gia_ObjCioId
(
pRepr
)
)
);
else
else
printf
(
"
Flop
\"
%s
\"
is equivalent to internal node %d.
\n
"
,
printf
(
"
Original flop %s is proved equivalent to internal node %d.
\n
"
,
Vec_PtrEntry
(
p
->
vNamesIn
,
Gia_ObjCioId
(
pObj
)
),
Gia_ObjId
(
p
,
pRepr
)
);
Vec_PtrEntry
(
p
->
vNamesIn
,
Gia_ObjCioId
(
pObj
)
),
Gia_ObjId
(
p
,
pRepr
)
);
}
}
}
}
}
}
/**Function*************************************************************
/**Function*************************************************************
Synopsis [Top-level procedure for register correspondence.]
Synopsis [Top-level procedure for register correspondence.]
...
...
src/aig/dar/darScript.c
View file @
4d1bc4a2
...
@@ -261,7 +261,11 @@ Aig_Man_t * Dar_ManCompress2( Aig_Man_t * pAig, int fBalance, int fUpdateLevel,
...
@@ -261,7 +261,11 @@ Aig_Man_t * Dar_ManCompress2( Aig_Man_t * pAig, int fBalance, int fUpdateLevel,
}
}
*/
*/
// rewrite
// rewrite
// Dar_ManRewrite( pAig, pParsRwr );
pParsRwr
->
fUpdateLevel
=
0
;
// disable level update
Dar_ManRewrite
(
pAig
,
pParsRwr
);
Dar_ManRewrite
(
pAig
,
pParsRwr
);
pParsRwr
->
fUpdateLevel
=
fUpdateLevel
;
// reenable level update if needed
pAig
=
Aig_ManDupDfs
(
pTemp
=
pAig
);
pAig
=
Aig_ManDupDfs
(
pTemp
=
pAig
);
Aig_ManStop
(
pTemp
);
Aig_ManStop
(
pTemp
);
if
(
fVerbose
)
Aig_ManPrintStats
(
pAig
);
if
(
fVerbose
)
Aig_ManPrintStats
(
pAig
);
...
@@ -601,7 +605,11 @@ Aig_Man_t * Dar_NewCompress2( Aig_Man_t * pAig, int fBalance, int fUpdateLevel,
...
@@ -601,7 +605,11 @@ Aig_Man_t * Dar_NewCompress2( Aig_Man_t * pAig, int fBalance, int fUpdateLevel,
if
(
!
fLightSynth
)
if
(
!
fLightSynth
)
{
{
// rewrite
// rewrite
//Dar_ManRewrite( pAig, pParsRwr );
pParsRwr
->
fUpdateLevel
=
0
;
// disable level update
Dar_ManRewrite
(
pAig
,
pParsRwr
);
Dar_ManRewrite
(
pAig
,
pParsRwr
);
pParsRwr
->
fUpdateLevel
=
fUpdateLevel
;
// reenable level update if needed
pAig
=
Aig_ManDupDfs
(
pTemp
=
pAig
);
pAig
=
Aig_ManDupDfs
(
pTemp
=
pAig
);
Aig_ManStop
(
pTemp
);
Aig_ManStop
(
pTemp
);
if
(
fVerbose
)
Aig_ManPrintStats
(
pAig
);
if
(
fVerbose
)
Aig_ManPrintStats
(
pAig
);
...
...
src/base/abci/abc.c
View file @
4d1bc4a2
...
@@ -3980,7 +3980,7 @@ int Abc_CommandMfs( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -3980,7 +3980,7 @@ int Abc_CommandMfs( Abc_Frame_t * pAbc, int argc, char ** argv )
// set defaults
// set defaults
Abc_NtkMfsParsDefault
(
pPars
);
Abc_NtkMfsParsDefault
(
pPars
);
Extra_UtilGetoptReset
();
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"WFDMLCraestpvwh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"WFDMLCraestp
g
vwh"
)
)
!=
EOF
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -4068,6 +4068,9 @@ int Abc_CommandMfs( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -4068,6 +4068,9 @@ int Abc_CommandMfs( Abc_Frame_t * pAbc, int argc, char ** argv )
case
'p'
:
case
'p'
:
pPars
->
fPower
^=
1
;
pPars
->
fPower
^=
1
;
break
;
break
;
case
'g'
:
pPars
->
fGiaSat
^=
1
;
break
;
case
'v'
:
case
'v'
:
pPars
->
fVerbose
^=
1
;
pPars
->
fVerbose
^=
1
;
break
;
break
;
...
@@ -4101,7 +4104,7 @@ int Abc_CommandMfs( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -4101,7 +4104,7 @@ int Abc_CommandMfs( Abc_Frame_t * pAbc, int argc, char ** argv )
return
0
;
return
0
;
usage:
usage:
fprintf
(
pErr
,
"usage: mfs [-WFDMLC <num>] [-raestpvh]
\n
"
);
fprintf
(
pErr
,
"usage: mfs [-WFDMLC <num>] [-raestp
g
vh]
\n
"
);
fprintf
(
pErr
,
"
\t
performs don't-care-based optimization of logic networks
\n
"
);
fprintf
(
pErr
,
"
\t
performs don't-care-based optimization of logic networks
\n
"
);
fprintf
(
pErr
,
"
\t
-W <num> : the number of levels in the TFO cone (0 <= num) [default = %d]
\n
"
,
pPars
->
nWinTfoLevs
);
fprintf
(
pErr
,
"
\t
-W <num> : the number of levels in the TFO cone (0 <= num) [default = %d]
\n
"
,
pPars
->
nWinTfoLevs
);
fprintf
(
pErr
,
"
\t
-F <num> : the max number of fanouts to skip (1 <= num) [default = %d]
\n
"
,
pPars
->
nFanoutsMax
);
fprintf
(
pErr
,
"
\t
-F <num> : the max number of fanouts to skip (1 <= num) [default = %d]
\n
"
,
pPars
->
nFanoutsMax
);
...
@@ -4115,6 +4118,7 @@ usage:
...
@@ -4115,6 +4118,7 @@ usage:
fprintf
(
pErr
,
"
\t
-s : toggle evaluation of edge swapping [default = %s]
\n
"
,
pPars
->
fSwapEdge
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-s : toggle evaluation of edge swapping [default = %s]
\n
"
,
pPars
->
fSwapEdge
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-t : toggle using artificial one-hotness conditions [default = %s]
\n
"
,
pPars
->
fOneHotness
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-t : toggle using artificial one-hotness conditions [default = %s]
\n
"
,
pPars
->
fOneHotness
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-p : toggle power-aware optimization [default = %s]
\n
"
,
pPars
->
fPower
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-p : toggle power-aware optimization [default = %s]
\n
"
,
pPars
->
fPower
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-g : toggle using new SAT solver [default = %s]
\n
"
,
pPars
->
fGiaSat
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-v : toggle printing optimization summary [default = %s]
\n
"
,
pPars
->
fVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-v : toggle printing optimization summary [default = %s]
\n
"
,
pPars
->
fVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-w : toggle printing detailed stats for each node [default = %s]
\n
"
,
pPars
->
fVeryVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-w : toggle printing detailed stats for each node [default = %s]
\n
"
,
pPars
->
fVeryVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-h : print the command usage
\n
"
);
fprintf
(
pErr
,
"
\t
-h : print the command usage
\n
"
);
...
...
src/opt/mfs/mfs.h
View file @
4d1bc4a2
...
@@ -55,6 +55,7 @@ struct Mfs_Par_t_
...
@@ -55,6 +55,7 @@ struct Mfs_Par_t_
int
fOneHotness
;
// adds one-hotness conditions
int
fOneHotness
;
// adds one-hotness conditions
int
fDelay
;
// performs optimization for delay
int
fDelay
;
// performs optimization for delay
int
fPower
;
// performs power-aware optimization
int
fPower
;
// performs power-aware optimization
int
fGiaSat
;
// use new SAT solver
int
fVerbose
;
// enable basic stats
int
fVerbose
;
// enable basic stats
int
fVeryVerbose
;
// enable detailed stats
int
fVeryVerbose
;
// enable detailed stats
};
};
...
...
src/opt/mfs/mfsCore.c
View file @
4d1bc4a2
...
@@ -266,7 +266,8 @@ clk = clock();
...
@@ -266,7 +266,8 @@ clk = clock();
return
1
;
return
1
;
}
}
clk
=
clock
();
clk
=
clock
();
// Abc_NtkMfsConstructGia( p );
if
(
p
->
pPars
->
fGiaSat
)
Abc_NtkMfsConstructGia
(
p
);
p
->
timeGia
+=
clock
()
-
clk
;
p
->
timeGia
+=
clock
()
-
clk
;
// solve the SAT problem
// solve the SAT problem
if
(
p
->
pPars
->
fPower
)
if
(
p
->
pPars
->
fPower
)
...
@@ -280,7 +281,8 @@ p->timeGia += clock() - clk;
...
@@ -280,7 +281,8 @@ p->timeGia += clock() - clk;
Abc_NtkMfsResubNode2
(
p
,
pNode
);
Abc_NtkMfsResubNode2
(
p
,
pNode
);
}
}
p
->
timeSat
+=
clock
()
-
clk
;
p
->
timeSat
+=
clock
()
-
clk
;
// Abc_NtkMfsDeconstructGia( p );
if
(
p
->
pPars
->
fGiaSat
)
Abc_NtkMfsDeconstructGia
(
p
);
return
1
;
return
1
;
}
}
...
...
src/opt/mfs/mfsDiv.c
View file @
4d1bc4a2
...
@@ -255,7 +255,7 @@ Vec_Ptr_t * Abc_MfsComputeDivisors( Mfs_Man_t * p, Abc_Obj_t * pNode, int nLevDi
...
@@ -255,7 +255,7 @@ Vec_Ptr_t * Abc_MfsComputeDivisors( Mfs_Man_t * p, Abc_Obj_t * pNode, int nLevDi
// skip nodes with large level
// skip nodes with large level
if
(
(
int
)
pFanout
->
Level
>
nLevDivMax
)
if
(
(
int
)
pFanout
->
Level
>
nLevDivMax
)
continue
;
continue
;
// skip nodes whose fanins are not divisors
// skip nodes whose fanins are not divisors
-- here we skip more than we need to skip!!! (revise later) August 7, 2009
Abc_ObjForEachFanin
(
pFanout
,
pFanin
,
m
)
Abc_ObjForEachFanin
(
pFanout
,
pFanin
,
m
)
if
(
!
Abc_NodeIsTravIdPrevious
(
pFanin
)
)
if
(
!
Abc_NodeIsTravIdPrevious
(
pFanin
)
)
break
;
break
;
...
...
src/opt/mfs/mfsInt.h
View file @
4d1bc4a2
...
@@ -68,7 +68,7 @@ struct Mfs_Man_t_
...
@@ -68,7 +68,7 @@ struct Mfs_Man_t_
int
nSatCexes
;
int
nSatCexes
;
// intermediate AIG data
// intermediate AIG data
Gia_Man_t
*
pGia
;
// replica of the AIG in the new package
Gia_Man_t
*
pGia
;
// replica of the AIG in the new package
Gia_Obj_t
**
pSat2Gia
;
// mapping of PO SAT var into internal GIA nodes
//
Gia_Obj_t ** pSat2Gia; // mapping of PO SAT var into internal GIA nodes
Tas_Man_t
*
pTas
;
// the SAT solver
Tas_Man_t
*
pTas
;
// the SAT solver
Vec_Int_t
*
vCex
;
// the counter-example
Vec_Int_t
*
vCex
;
// the counter-example
Vec_Ptr_t
*
vGiaLits
;
// literals given as assumptions
Vec_Ptr_t
*
vGiaLits
;
// literals given as assumptions
...
...
src/opt/mfs/mfsMan.c
View file @
4d1bc4a2
...
@@ -136,10 +136,10 @@ void Mfs_ManPrint( Mfs_Man_t * p )
...
@@ -136,10 +136,10 @@ void Mfs_ManPrint( Mfs_Man_t * p )
p
->
TotalSwitchingBeg
-
p
->
TotalSwitchingEnd
,
p
->
TotalSwitchingBeg
-
p
->
TotalSwitchingEnd
,
100
.
0
*
(
p
->
TotalSwitchingBeg
-
p
->
TotalSwitchingEnd
)
/
p
->
TotalSwitchingBeg
);
100
.
0
*
(
p
->
TotalSwitchingBeg
-
p
->
TotalSwitchingEnd
)
/
p
->
TotalSwitchingBeg
);
printf
(
"
\n
"
);
printf
(
"
\n
"
);
#if 0
//
#if 0
printf
(
"Nodes = %d. Try = %d. Resub = %d. Div = %d. SAT calls = %d. Timeouts = %d.
\n
"
,
printf
(
"Nodes = %d. Try = %d. Resub = %d. Div = %d. SAT calls = %d. Timeouts = %d.
\n
"
,
Abc_NtkNodeNum
(
p
->
pNtk
),
p
->
nNodesTried
,
p
->
nNodesResub
,
p
->
nTotalDivs
,
p
->
nSatCalls
,
p
->
nTimeOuts
);
Abc_NtkNodeNum
(
p
->
pNtk
),
p
->
nNodesTried
,
p
->
nNodesResub
,
p
->
nTotalDivs
,
p
->
nSatCalls
,
p
->
nTimeOuts
);
#endif
//
#endif
if
(
p
->
pPars
->
fSwapEdge
)
if
(
p
->
pPars
->
fSwapEdge
)
printf
(
"Swappable edges = %d. Total edges = %d. Ratio = %5.2f.
\n
"
,
printf
(
"Swappable edges = %d. Total edges = %d. Ratio = %5.2f.
\n
"
,
p
->
nNodesResub
,
Abc_NtkGetTotalFanins
(
p
->
pNtk
),
1
.
00
*
p
->
nNodesResub
/
Abc_NtkGetTotalFanins
(
p
->
pNtk
)
);
p
->
nNodesResub
,
Abc_NtkGetTotalFanins
(
p
->
pNtk
),
1
.
00
*
p
->
nNodesResub
/
Abc_NtkGetTotalFanins
(
p
->
pNtk
)
);
...
...
src/opt/mfs/mfsResub.c
View file @
4d1bc4a2
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
/// FUNCTION DEFINITIONS ///
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/**Function*************************************************************
/**Function*************************************************************
Synopsis [Updates the network after resubstitution.]
Synopsis [Updates the network after resubstitution.]
...
@@ -97,27 +97,41 @@ void Abc_NtkMfsPrintResubStats( Mfs_Man_t * p )
...
@@ -97,27 +97,41 @@ void Abc_NtkMfsPrintResubStats( Mfs_Man_t * p )
***********************************************************************/
***********************************************************************/
int
Abc_NtkMfsTryResubOnce
(
Mfs_Man_t
*
p
,
int
*
pCands
,
int
nCands
)
int
Abc_NtkMfsTryResubOnce
(
Mfs_Man_t
*
p
,
int
*
pCands
,
int
nCands
)
{
{
int
fVeryVerbose
=
0
;
unsigned
*
pData
;
unsigned
*
pData
;
int
RetValue
,
iVar
,
i
;
int
RetValue
,
RetValue2
=
-
1
,
iVar
,
i
,
clk
=
clock
();
// int clk = clock(), RetValue2 = Abc_NtkMfsTryResubOnceGia( p, pCands, nCands );
//p->timeGia += clock() - clk;
if
(
p
->
pPars
->
fGiaSat
)
{
RetValue2
=
Abc_NtkMfsTryResubOnceGia
(
p
,
pCands
,
nCands
);
p
->
timeGia
+=
clock
()
-
clk
;
return
RetValue2
;
}
p
->
nSatCalls
++
;
p
->
nSatCalls
++
;
RetValue
=
sat_solver_solve
(
p
->
pSat
,
pCands
,
pCands
+
nCands
,
(
ABC_INT64_T
)
p
->
pPars
->
nBTLimit
,
(
ABC_INT64_T
)
0
,
(
ABC_INT64_T
)
0
,
(
ABC_INT64_T
)
0
);
RetValue
=
sat_solver_solve
(
p
->
pSat
,
pCands
,
pCands
+
nCands
,
(
ABC_INT64_T
)
p
->
pPars
->
nBTLimit
,
(
ABC_INT64_T
)
0
,
(
ABC_INT64_T
)
0
,
(
ABC_INT64_T
)
0
);
//
assert( RetValue == l_False || RetValue == l_True );
assert
(
RetValue
==
l_False
||
RetValue
==
l_True
);
//
if ( RetValue != l_Undef && RetValue2 != -1 )
if
(
RetValue
!=
l_Undef
&&
RetValue2
!=
-
1
)
//
{
{
//
assert( (RetValue == l_False) == (RetValue2 == 1) );
assert
(
(
RetValue
==
l_False
)
==
(
RetValue2
==
1
)
);
//
}
}
if
(
RetValue
==
l_False
)
if
(
RetValue
==
l_False
)
{
if
(
fVeryVerbose
)
printf
(
"U "
);
return
1
;
return
1
;
}
if
(
RetValue
!=
l_True
)
if
(
RetValue
!=
l_True
)
{
{
if
(
fVeryVerbose
)
printf
(
"T "
);
p
->
nTimeOuts
++
;
p
->
nTimeOuts
++
;
return
-
1
;
return
-
1
;
}
}
if
(
fVeryVerbose
)
printf
(
"S "
);
p
->
nSatCexes
++
;
p
->
nSatCexes
++
;
// store the counter-example
// store the counter-example
Vec_IntForEachEntry
(
p
->
vProjVars
,
iVar
,
i
)
Vec_IntForEachEntry
(
p
->
vProjVars
,
iVar
,
i
)
...
@@ -131,6 +145,7 @@ int Abc_NtkMfsTryResubOnce( Mfs_Man_t * p, int * pCands, int nCands )
...
@@ -131,6 +145,7 @@ int Abc_NtkMfsTryResubOnce( Mfs_Man_t * p, int * pCands, int nCands )
}
}
p
->
nCexes
++
;
p
->
nCexes
++
;
return
0
;
return
0
;
}
}
/**Function*************************************************************
/**Function*************************************************************
...
@@ -146,7 +161,7 @@ int Abc_NtkMfsTryResubOnce( Mfs_Man_t * p, int * pCands, int nCands )
...
@@ -146,7 +161,7 @@ int Abc_NtkMfsTryResubOnce( Mfs_Man_t * p, int * pCands, int nCands )
***********************************************************************/
***********************************************************************/
int
Abc_NtkMfsSolveSatResub
(
Mfs_Man_t
*
p
,
Abc_Obj_t
*
pNode
,
int
iFanin
,
int
fOnlyRemove
,
int
fSkipUpdate
)
int
Abc_NtkMfsSolveSatResub
(
Mfs_Man_t
*
p
,
Abc_Obj_t
*
pNode
,
int
iFanin
,
int
fOnlyRemove
,
int
fSkipUpdate
)
{
{
int
fVeryVerbose
=
p
->
pPars
->
fVeryVerbose
&&
Vec_PtrSize
(
p
->
vDivs
)
<
80
;
int
fVeryVerbose
=
p
->
pPars
->
fVeryVerbose
&&
Vec_PtrSize
(
p
->
vDivs
)
<
80
;
// || pNode->Id == 556;
unsigned
*
pData
;
unsigned
*
pData
;
int
pCands
[
MFS_FANIN_MAX
];
int
pCands
[
MFS_FANIN_MAX
];
int
RetValue
,
iVar
,
i
,
nCands
,
nWords
,
w
,
clk
;
int
RetValue
,
iVar
,
i
,
nCands
,
nWords
,
w
,
clk
;
...
@@ -533,6 +548,7 @@ int Abc_NtkMfsResubNode( Mfs_Man_t * p, Abc_Obj_t * pNode )
...
@@ -533,6 +548,7 @@ int Abc_NtkMfsResubNode( Mfs_Man_t * p, Abc_Obj_t * pNode )
}
}
if
(
Abc_ObjFaninNum
(
pNode
)
==
p
->
nFaninMax
)
if
(
Abc_ObjFaninNum
(
pNode
)
==
p
->
nFaninMax
)
return
0
;
return
0
;
/*
// try replacing area critical fanins while adding two new fanins
// try replacing area critical fanins while adding two new fanins
Abc_ObjForEachFanin( pNode, pFanin, i )
Abc_ObjForEachFanin( pNode, pFanin, i )
if ( !Abc_ObjIsCi(pFanin) && Abc_ObjFanoutNum(pFanin) == 1 )
if ( !Abc_ObjIsCi(pFanin) && Abc_ObjFanoutNum(pFanin) == 1 )
...
@@ -540,6 +556,7 @@ int Abc_NtkMfsResubNode( Mfs_Man_t * p, Abc_Obj_t * pNode )
...
@@ -540,6 +556,7 @@ int Abc_NtkMfsResubNode( Mfs_Man_t * p, Abc_Obj_t * pNode )
if ( Abc_NtkMfsSolveSatResub2( p, pNode, i, -1 ) )
if ( Abc_NtkMfsSolveSatResub2( p, pNode, i, -1 ) )
return 1;
return 1;
}
}
*/
return
0
;
return
0
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment