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
b733b813
Commit
b733b813
authored
Oct 25, 2012
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added switch '-q' to 'scorr' and '&scorr' to quit when PO is not a candidate constant.
parent
37107a3b
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
45 additions
and
4 deletions
+45
-4
src/base/abci/abc.c
+12
-4
src/proof/cec/cec.h
+1
-0
src/proof/cec/cecCorr.c
+13
-0
src/proof/ssw/ssw.h
+1
-0
src/proof/ssw/sswCore.c
+18
-0
No files found.
src/base/abci/abc.c
View file @
b733b813
...
@@ -16009,7 +16009,7 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -16009,7 +16009,7 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv )
// set defaults
// set defaults
Ssw_ManSetDefaultParams
(
pPars
);
Ssw_ManSetDefaultParams
(
pPars
);
Extra_UtilGetoptReset
();
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"PQFCLSIVMNcmplkofdsevwh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"PQFCLSIVMNcmplkofdse
q
vwh"
)
)
!=
EOF
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -16153,6 +16153,9 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -16153,6 +16153,9 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv )
case
'e'
:
case
'e'
:
pPars
->
fEquivDump
^=
1
;
pPars
->
fEquivDump
^=
1
;
break
;
break
;
case
'q'
:
pPars
->
fStopWhenGone
^=
1
;
break
;
case
'v'
:
case
'v'
:
pPars
->
fVerbose
^=
1
;
pPars
->
fVerbose
^=
1
;
break
;
break
;
...
@@ -16219,7 +16222,7 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -16219,7 +16222,7 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv )
return
0
;
return
0
;
usage:
usage:
Abc_Print
(
-
2
,
"usage: scorr [-PQFCLSIVMN <num>] [-cmplkodsevwh]
\n
"
);
Abc_Print
(
-
2
,
"usage: scorr [-PQFCLSIVMN <num>] [-cmplkodse
q
vwh]
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs sequential sweep using K-step induction
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs sequential sweep using K-step induction
\n
"
);
Abc_Print
(
-
2
,
"
\t
-P num : max partition size (0 = no partitioning) [default = %d]
\n
"
,
pPars
->
nPartSize
);
Abc_Print
(
-
2
,
"
\t
-P num : max partition size (0 = no partitioning) [default = %d]
\n
"
,
pPars
->
nPartSize
);
Abc_Print
(
-
2
,
"
\t
-Q num : partition overlap (0 = no overlap) [default = %d]
\n
"
,
pPars
->
nOverSize
);
Abc_Print
(
-
2
,
"
\t
-Q num : partition overlap (0 = no overlap) [default = %d]
\n
"
,
pPars
->
nOverSize
);
...
@@ -16242,6 +16245,7 @@ usage:
...
@@ -16242,6 +16245,7 @@ usage:
Abc_Print
(
-
2
,
"
\t
-d : toggle dynamic addition of constraints [default = %s]
\n
"
,
pPars
->
fDynamic
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-d : toggle dynamic addition of constraints [default = %s]
\n
"
,
pPars
->
fDynamic
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-s : toggle local simulation in the cone of influence [default = %s]
\n
"
,
pPars
->
fLocalSim
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-s : toggle local simulation in the cone of influence [default = %s]
\n
"
,
pPars
->
fLocalSim
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-e : toggle dumping disproved internal equivalences [default = %s]
\n
"
,
pPars
->
fEquivDump
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-e : toggle dumping disproved internal equivalences [default = %s]
\n
"
,
pPars
->
fEquivDump
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-q : toggle quitting when PO is not a constant candidate [default = %s]
\n
"
,
pPars
->
fStopWhenGone
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-w : toggle printout of flop equivalences [default = %s]
\n
"
,
pPars
->
fFlopVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-w : toggle printout of flop equivalences [default = %s]
\n
"
,
pPars
->
fFlopVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggle verbose output [default = %s]
\n
"
,
pPars
->
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggle verbose output [default = %s]
\n
"
,
pPars
->
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-h : print the command usage
\n
"
);
Abc_Print
(
-
2
,
"
\t
-h : print the command usage
\n
"
);
...
@@ -25108,7 +25112,7 @@ int Abc_CommandAbc9Scorr( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -25108,7 +25112,7 @@ int Abc_CommandAbc9Scorr( Abc_Frame_t * pAbc, int argc, char ** argv )
int
c
;
int
c
;
Cec_ManCorSetDefaultParams
(
pPars
);
Cec_ManCorSetDefaultParams
(
pPars
);
Extra_UtilGetoptReset
();
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"FCPkrecwvh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"FCPkrec
q
wvh"
)
)
!=
EOF
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -25157,6 +25161,9 @@ int Abc_CommandAbc9Scorr( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -25157,6 +25161,9 @@ int Abc_CommandAbc9Scorr( Abc_Frame_t * pAbc, int argc, char ** argv )
case
'c'
:
case
'c'
:
pPars
->
fUseCSat
^=
1
;
pPars
->
fUseCSat
^=
1
;
break
;
break
;
case
'q'
:
pPars
->
fStopWhenGone
^=
1
;
break
;
case
'w'
:
case
'w'
:
pPars
->
fVerboseFlops
^=
1
;
pPars
->
fVerboseFlops
^=
1
;
break
;
break
;
...
@@ -25182,7 +25189,7 @@ int Abc_CommandAbc9Scorr( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -25182,7 +25189,7 @@ int Abc_CommandAbc9Scorr( Abc_Frame_t * pAbc, int argc, char ** argv )
return
0
;
return
0
;
usage:
usage:
Abc_Print
(
-
2
,
"usage: &scorr [-FCP num] [-krecwvh]
\n
"
);
Abc_Print
(
-
2
,
"usage: &scorr [-FCP num] [-krec
q
wvh]
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs signal correpondence computation
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs signal correpondence computation
\n
"
);
Abc_Print
(
-
2
,
"
\t
-C num : the max number of conflicts at a node [default = %d]
\n
"
,
pPars
->
nBTLimit
);
Abc_Print
(
-
2
,
"
\t
-C num : the max number of conflicts at a node [default = %d]
\n
"
,
pPars
->
nBTLimit
);
Abc_Print
(
-
2
,
"
\t
-F num : the number of timeframes in inductive case [default = %d]
\n
"
,
pPars
->
nFrames
);
Abc_Print
(
-
2
,
"
\t
-F num : the number of timeframes in inductive case [default = %d]
\n
"
,
pPars
->
nFrames
);
...
@@ -25191,6 +25198,7 @@ usage:
...
@@ -25191,6 +25198,7 @@ usage:
Abc_Print
(
-
2
,
"
\t
-r : toggle using implication rings during refinement [default = %s]
\n
"
,
pPars
->
fUseRings
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-r : toggle using implication rings during refinement [default = %s]
\n
"
,
pPars
->
fUseRings
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-e : toggle using equivalences as choices [default = %s]
\n
"
,
pPars
->
fMakeChoices
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-e : toggle using equivalences as choices [default = %s]
\n
"
,
pPars
->
fMakeChoices
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-c : toggle using circuit-based SAT solver [default = %s]
\n
"
,
pPars
->
fUseCSat
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-c : toggle using circuit-based SAT solver [default = %s]
\n
"
,
pPars
->
fUseCSat
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-q : toggle quitting when PO is not a constant candidate [default = %s]
\n
"
,
pPars
->
fStopWhenGone
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-w : toggle printing verbose info about equivalent flops [default = %s]
\n
"
,
pPars
->
fVerboseFlops
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-w : toggle printing verbose info about equivalent flops [default = %s]
\n
"
,
pPars
->
fVerboseFlops
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggle printing verbose information [default = %s]
\n
"
,
pPars
->
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggle printing verbose information [default = %s]
\n
"
,
pPars
->
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-h : print the command usage
\n
"
);
Abc_Print
(
-
2
,
"
\t
-h : print the command usage
\n
"
);
...
...
src/proof/cec/cec.h
View file @
b733b813
...
@@ -144,6 +144,7 @@ struct Cec_ParCor_t_
...
@@ -144,6 +144,7 @@ struct Cec_ParCor_t_
int
fUseCSat
;
// use circuit-based solver
int
fUseCSat
;
// use circuit-based solver
// int fFirstStop; // stop on the first sat output
// int fFirstStop; // stop on the first sat output
int
fUseSmartCnf
;
// use smart CNF computation
int
fUseSmartCnf
;
// use smart CNF computation
int
fStopWhenGone
;
// quit when PO is not a candidate constant
int
fVerboseFlops
;
// verbose stats
int
fVerboseFlops
;
// verbose stats
int
fVeryVerbose
;
// verbose stats
int
fVeryVerbose
;
// verbose stats
int
fVerbose
;
// verbose stats
int
fVerbose
;
// verbose stats
...
...
src/proof/cec/cecCorr.c
View file @
b733b813
...
@@ -753,6 +753,7 @@ void Cec_ManRefinedClassPrintStats( Gia_Man_t * p, Vec_Str_t * vStatus, int iIte
...
@@ -753,6 +753,7 @@ void Cec_ManRefinedClassPrintStats( Gia_Man_t * p, Vec_Str_t * vStatus, int iIte
nFail
++
;
nFail
++
;
}
}
Abc_Print
(
1
,
"p =%6d d =%6d f =%6d "
,
nProve
,
nDispr
,
nFail
);
Abc_Print
(
1
,
"p =%6d d =%6d f =%6d "
,
nProve
,
nDispr
,
nFail
);
Abc_Print
(
1
,
"%c "
,
Gia_ObjIsConst
(
p
,
Gia_ObjFaninId0p
(
p
,
Gia_ManPo
(
p
,
0
))
)
?
'+'
:
'-'
);
Abc_PrintTime
(
1
,
"T"
,
Time
);
Abc_PrintTime
(
1
,
"T"
,
Time
);
}
}
...
@@ -950,6 +951,14 @@ int Cec_ManLSCorrespondenceClasses( Gia_Man_t * pAig, Cec_ParCor_t * pPars )
...
@@ -950,6 +951,14 @@ int Cec_ManLSCorrespondenceClasses( Gia_Man_t * pAig, Cec_ParCor_t * pPars )
//Gia_ManEquivPrintClasses( pAig, 1, 0 );
//Gia_ManEquivPrintClasses( pAig, 1, 0 );
if
(
pPars
->
pFunc
)
if
(
pPars
->
pFunc
)
((
int
(
*
)(
void
*
))
pPars
->
pFunc
)(
pPars
->
pData
);
((
int
(
*
)(
void
*
))
pPars
->
pFunc
)(
pPars
->
pData
);
// quit if const is no longer there
if
(
pPars
->
fStopWhenGone
&&
Gia_ManPoNum
(
pAig
)
==
1
&&
!
Gia_ObjIsConst
(
pAig
,
Gia_ObjFaninId0p
(
pAig
,
Gia_ManPo
(
pAig
,
0
))
)
)
{
printf
(
"Iterative refinement is stopped after iteration %d
\n
"
,
r
);
printf
(
"because the property output is no longer a candidate constant.
\n
"
);
Cec_ManSimStop
(
pSim
);
return
0
;
}
}
}
if
(
pPars
->
fVerbose
)
if
(
pPars
->
fVerbose
)
Cec_ManRefinedClassPrintStats
(
pAig
,
NULL
,
r
+
1
,
clock
()
-
clk
);
Cec_ManRefinedClassPrintStats
(
pAig
,
NULL
,
r
+
1
,
clock
()
-
clk
);
...
@@ -1071,7 +1080,11 @@ Gia_Man_t * Cec_ManLSCorrespondence( Gia_Man_t * pAig, Cec_ParCor_t * pPars )
...
@@ -1071,7 +1080,11 @@ Gia_Man_t * Cec_ManLSCorrespondence( Gia_Man_t * pAig, Cec_ParCor_t * pPars )
ABC_FREE
(
pAig
->
pReprs
);
ABC_FREE
(
pAig
->
pReprs
);
ABC_FREE
(
pAig
->
pNexts
);
ABC_FREE
(
pAig
->
pNexts
);
if
(
pPars
->
nPrefix
==
0
)
if
(
pPars
->
nPrefix
==
0
)
{
RetValue
=
Cec_ManLSCorrespondenceClasses
(
pAig
,
pPars
);
RetValue
=
Cec_ManLSCorrespondenceClasses
(
pAig
,
pPars
);
if
(
RetValue
==
0
)
return
Gia_ManDup
(
pAig
);
}
else
else
{
{
// compute the cycles AIG
// compute the cycles AIG
...
...
src/proof/ssw/ssw.h
View file @
b733b813
...
@@ -70,6 +70,7 @@ struct Ssw_Pars_t_
...
@@ -70,6 +70,7 @@ struct Ssw_Pars_t_
int
fVerbose
;
// verbose stats
int
fVerbose
;
// verbose stats
int
fFlopVerbose
;
// verbose printout of redundant flops
int
fFlopVerbose
;
// verbose printout of redundant flops
int
fEquivDump
;
// enables dumping equivalences
int
fEquivDump
;
// enables dumping equivalences
int
fStopWhenGone
;
// stop when PO output is not a candidate constant
// optimized latch correspondence
// optimized latch correspondence
int
fLatchCorrOpt
;
// perform register correspondence (optimized)
int
fLatchCorrOpt
;
// perform register correspondence (optimized)
int
nSatVarMax
;
// max number of SAT vars before recycling SAT solver (optimized latch corr only)
int
nSatVarMax
;
// max number of SAT vars before recycling SAT solver (optimized latch corr only)
...
...
src/proof/ssw/sswCore.c
View file @
b733b813
...
@@ -346,6 +346,24 @@ clk = clock();
...
@@ -346,6 +346,24 @@ clk = clock();
}
}
// if ( p->pPars->fDynamic && p->nSatCallsSat-nSatCallsSat < 100 )
// if ( p->pPars->fDynamic && p->nSatCallsSat-nSatCallsSat < 100 )
// p->pPars->nBTLimit = 10000;
// p->pPars->nBTLimit = 10000;
if
(
p
->
pPars
->
fStopWhenGone
&&
Saig_ManPoNum
(
p
->
pAig
)
==
1
&&
!
Ssw_ObjIsConst1Cand
(
p
->
pAig
,
Aig_ObjFanin0
(
Aig_ManCo
(
p
->
pAig
,
0
)))
)
{
printf
(
"Iterative refinement is stopped after iteration %d
\n
"
,
nIter
);
printf
(
"because the property output is no longer a candidate constant.
\n
"
);
// prepare to quite
p
->
nLitsEnd
=
p
->
nLitsBeg
;
p
->
nNodesEnd
=
p
->
nNodesBeg
;
p
->
nRegsEnd
=
p
->
nRegsBeg
;
// cleanup
Ssw_SatStop
(
p
->
pMSat
);
p
->
pMSat
=
NULL
;
Ssw_ManCleanup
(
p
);
// cleanup
Aig_ManSetPhase
(
p
->
pAig
);
Aig_ManCleanMarkB
(
p
->
pAig
);
return
Aig_ManDupSimple
(
p
->
pAig
);
}
}
}
nSatProof
=
p
->
nSatProof
;
nSatProof
=
p
->
nSatProof
;
nSatCallsSat
=
p
->
nSatCallsSat
;
nSatCallsSat
=
p
->
nSatCallsSat
;
...
...
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