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
a2535d49
Commit
a2535d49
authored
Oct 05, 2008
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Version abc81005
parent
eb75697f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
130 additions
and
57 deletions
+130
-57
src/aig/fra/fra.h
+5
-0
src/aig/fra/fraSec.c
+48
-25
src/aig/ssw/ssw.h
+2
-0
src/aig/ssw/sswCore.c
+19
-17
src/base/abci/abc.c
+56
-15
No files found.
src/aig/fra/fra.h
View file @
a2535d49
...
@@ -116,10 +116,15 @@ struct Fra_Sec_t_
...
@@ -116,10 +116,15 @@ struct Fra_Sec_t_
int
fTryComb
;
// try CEC call as a preprocessing step
int
fTryComb
;
// try CEC call as a preprocessing step
int
fTryBmc
;
// try BMC call as a preprocessing step
int
fTryBmc
;
// try BMC call as a preprocessing step
int
nFramesMax
;
// the max number of frames used for induction
int
nFramesMax
;
// the max number of frames used for induction
int
nBTLimit
;
// the conflict limit at a node
int
nBTLimitGlobal
;
// the global conflict limit
int
nBddMax
;
// the max number of BDD nodes
int
nBddIterMax
;
// the limit on the number of BDD iterations
int
fPhaseAbstract
;
// enables phase abstraction
int
fPhaseAbstract
;
// enables phase abstraction
int
fRetimeFirst
;
// enables most-forward retiming at the beginning
int
fRetimeFirst
;
// enables most-forward retiming at the beginning
int
fRetimeRegs
;
// enables min-register retiming at the beginning
int
fRetimeRegs
;
// enables min-register retiming at the beginning
int
fFraiging
;
// enables fraiging at the beginning
int
fFraiging
;
// enables fraiging at the beginning
int
fInduction
;
// enable the use of induction
int
fInterpolation
;
// enables interpolation
int
fInterpolation
;
// enables interpolation
int
fReachability
;
// enables BDD based reachability
int
fReachability
;
// enables BDD based reachability
int
fStopOnFirstFail
;
// enables stopping after first output of a miter has failed to prove
int
fStopOnFirstFail
;
// enables stopping after first output of a miter has failed to prove
...
...
src/aig/fra/fraSec.c
View file @
a2535d49
...
@@ -46,23 +46,28 @@
...
@@ -46,23 +46,28 @@
void
Fra_SecSetDefaultParams
(
Fra_Sec_t
*
p
)
void
Fra_SecSetDefaultParams
(
Fra_Sec_t
*
p
)
{
{
memset
(
p
,
0
,
sizeof
(
Fra_Sec_t
)
);
memset
(
p
,
0
,
sizeof
(
Fra_Sec_t
)
);
p
->
fTryComb
=
1
;
// try CEC call as a preprocessing step
p
->
fTryComb
=
1
;
// try CEC call as a preprocessing step
p
->
fTryBmc
=
1
;
// try BMC call as a preprocessing step
p
->
fTryBmc
=
1
;
// try BMC call as a preprocessing step
p
->
nFramesMax
=
4
;
// the max number of frames used for induction
p
->
nFramesMax
=
4
;
// the max number of frames used for induction
p
->
fPhaseAbstract
=
1
;
// enables phase abstraction
p
->
nBTLimit
=
1000
;
// conflict limit at a node during induction
p
->
fRetimeFirst
=
1
;
// enables most-forward retiming at the beginning
p
->
nBTLimitGlobal
=
5000000
;
// global conflict limit during induction
p
->
fRetimeRegs
=
1
;
// enables min-register retiming at the beginning
p
->
nBddMax
=
50000
;
// the limit on the number of BDD nodes
p
->
fFraiging
=
1
;
// enables fraiging at the beginning
p
->
nBddIterMax
=
1000000
;
// the limit on the number of BDD iterations
p
->
fInterpolation
=
1
;
// enables interpolation
p
->
fPhaseAbstract
=
0
;
// enables phase abstraction
p
->
fReachability
=
1
;
// enables BDD based reachability
p
->
fRetimeFirst
=
1
;
// enables most-forward retiming at the beginning
p
->
fStopOnFirstFail
=
1
;
// enables stopping after first output of a miter has failed to prove
p
->
fRetimeRegs
=
1
;
// enables min-register retiming at the beginning
p
->
fUseNewProver
=
0
;
// enables new prover
p
->
fFraiging
=
1
;
// enables fraiging at the beginning
p
->
fSilent
=
0
;
// disables all output
p
->
fInduction
=
1
;
// enables the use of induction (signal correspondence)
p
->
fVerbose
=
0
;
// enables verbose reporting of statistics
p
->
fInterpolation
=
1
;
// enables interpolation
p
->
fVeryVerbose
=
0
;
// enables very verbose reporting
p
->
fReachability
=
1
;
// enables BDD based reachability
p
->
TimeLimit
=
0
;
// enables the timeout
p
->
fStopOnFirstFail
=
1
;
// enables stopping after first output of a miter has failed to prove
p
->
fUseNewProver
=
0
;
// enables new prover
p
->
fSilent
=
0
;
// disables all output
p
->
fVerbose
=
0
;
// enables verbose reporting of statistics
p
->
fVeryVerbose
=
0
;
// enables very verbose reporting
p
->
TimeLimit
=
0
;
// enables the timeout
// internal parameters
// internal parameters
p
->
fReportSolution
=
0
;
// enables specialized format for reporting solution
p
->
fReportSolution
=
0
;
// enables specialized format for reporting solution
}
}
/**Function*************************************************************
/**Function*************************************************************
...
@@ -159,6 +164,7 @@ clk = clock();
...
@@ -159,6 +164,7 @@ clk = clock();
pNew
=
Aig_ManDupOrdered
(
pTemp
=
pNew
);
pNew
=
Aig_ManDupOrdered
(
pTemp
=
pNew
);
// pNew = Aig_ManDupDfs( pTemp = pNew );
// pNew = Aig_ManDupDfs( pTemp = pNew );
Aig_ManStop
(
pTemp
);
Aig_ManStop
(
pTemp
);
/*
if ( RetValue == -1 && pParSec->TimeLimit )
if ( RetValue == -1 && pParSec->TimeLimit )
{
{
TimeLeft = (float)pParSec->TimeLimit - ((float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC));
TimeLeft = (float)pParSec->TimeLimit - ((float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC));
...
@@ -172,7 +178,7 @@ clk = clock();
...
@@ -172,7 +178,7 @@ clk = clock();
goto finish;
goto finish;
}
}
}
}
*/
// pNew = Fra_FraigLatchCorrespondence( pTemp = pNew, 0, 1000, 1, pParSec->fVeryVerbose, &nIter, TimeLeft );
// pNew = Fra_FraigLatchCorrespondence( pTemp = pNew, 0, 1000, 1, pParSec->fVeryVerbose, &nIter, TimeLeft );
//Aig_ManDumpBlif( pNew, "ex.blif", NULL, NULL );
//Aig_ManDumpBlif( pNew, "ex.blif", NULL, NULL );
...
@@ -228,7 +234,7 @@ PRT( "Time", clock() - clkTotal );
...
@@ -228,7 +234,7 @@ PRT( "Time", clock() - clkTotal );
PRT
(
"Time"
,
clock
()
-
clk
);
PRT
(
"Time"
,
clock
()
-
clk
);
}
}
}
}
/*
if ( RetValue == -1 && pParSec->TimeLimit )
if ( RetValue == -1 && pParSec->TimeLimit )
{
{
TimeLeft = (float)pParSec->TimeLimit - ((float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC));
TimeLeft = (float)pParSec->TimeLimit - ((float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC));
...
@@ -242,7 +248,7 @@ PRT( "Time", clock() - clk );
...
@@ -242,7 +248,7 @@ PRT( "Time", clock() - clk );
goto finish;
goto finish;
}
}
}
}
*/
// perform fraiging
// perform fraiging
if
(
pParSec
->
fFraiging
)
if
(
pParSec
->
fFraiging
)
{
{
...
@@ -263,7 +269,7 @@ PRT( "Time", clock() - clk );
...
@@ -263,7 +269,7 @@ PRT( "Time", clock() - clk );
RetValue
=
Fra_FraigMiterStatus
(
pNew
);
RetValue
=
Fra_FraigMiterStatus
(
pNew
);
if
(
RetValue
>=
0
)
if
(
RetValue
>=
0
)
goto
finish
;
goto
finish
;
/*
if ( RetValue == -1 && pParSec->TimeLimit )
if ( RetValue == -1 && pParSec->TimeLimit )
{
{
TimeLeft = (float)pParSec->TimeLimit - ((float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC));
TimeLeft = (float)pParSec->TimeLimit - ((float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC));
...
@@ -277,7 +283,7 @@ PRT( "Time", clock() - clk );
...
@@ -277,7 +283,7 @@ PRT( "Time", clock() - clk );
goto finish;
goto finish;
}
}
}
}
*/
// perform min-area retiming
// perform min-area retiming
if
(
pParSec
->
fRetimeRegs
&&
pNew
->
nRegs
)
if
(
pParSec
->
fRetimeRegs
&&
pNew
->
nRegs
)
{
{
...
@@ -300,9 +306,10 @@ PRT( "Time", clock() - clk );
...
@@ -300,9 +306,10 @@ PRT( "Time", clock() - clk );
// perform seq sweeping while increasing the number of frames
// perform seq sweeping while increasing the number of frames
RetValue
=
Fra_FraigMiterStatus
(
pNew
);
RetValue
=
Fra_FraigMiterStatus
(
pNew
);
if
(
RetValue
==
-
1
)
if
(
RetValue
==
-
1
&&
pParSec
->
fInduction
)
for
(
nFrames
=
1
;
nFrames
<=
pParSec
->
nFramesMax
;
nFrames
*=
2
)
for
(
nFrames
=
1
;
nFrames
<=
pParSec
->
nFramesMax
;
nFrames
*=
2
)
{
{
/*
if ( RetValue == -1 && pParSec->TimeLimit )
if ( RetValue == -1 && pParSec->TimeLimit )
{
{
TimeLeft = (float)pParSec->TimeLimit - ((float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC));
TimeLeft = (float)pParSec->TimeLimit - ((float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC));
...
@@ -316,7 +323,8 @@ PRT( "Time", clock() - clk );
...
@@ -316,7 +323,8 @@ PRT( "Time", clock() - clk );
goto finish;
goto finish;
}
}
}
}
*/
clk
=
clock
();
clk
=
clock
();
pPars
->
nFramesK
=
nFrames
;
pPars
->
nFramesK
=
nFrames
;
pPars
->
TimeLimit
=
TimeLeft
;
pPars
->
TimeLimit
=
TimeLeft
;
...
@@ -324,7 +332,19 @@ clk = clock();
...
@@ -324,7 +332,19 @@ clk = clock();
// pNew = Fra_FraigInduction( pTemp = pNew, pPars );
// pNew = Fra_FraigInduction( pTemp = pNew, pPars );
pPars2
->
nFramesK
=
nFrames
;
pPars2
->
nFramesK
=
nFrames
;
pPars2
->
nBTLimit
=
1000
*
nFrames
;
pPars2
->
nBTLimit
=
pParSec
->
nBTLimit
;
pPars2
->
nBTLimitGlobal
=
pParSec
->
nBTLimitGlobal
;
// pPars2->nBTLimit = 1000 * nFrames;
if
(
RetValue
==
-
1
&&
pPars2
->
nConflicts
>
pPars2
->
nBTLimitGlobal
)
{
if
(
!
pParSec
->
fSilent
)
printf
(
"Global conflict limit (%d) exceeded.
\n
"
,
pPars2
->
nBTLimitGlobal
);
RetValue
=
-
1
;
TimeOut
=
1
;
goto
finish
;
}
Aig_ManSetRegNum
(
pNew
,
pNew
->
nRegs
);
Aig_ManSetRegNum
(
pNew
,
pNew
->
nRegs
);
pNew
=
Ssw_SignalCorrespondence
(
pTemp
=
pNew
,
pPars2
);
pNew
=
Ssw_SignalCorrespondence
(
pTemp
=
pNew
,
pPars2
);
if
(
pNew
==
NULL
)
if
(
pNew
==
NULL
)
...
@@ -334,6 +354,9 @@ clk = clock();
...
@@ -334,6 +354,9 @@ clk = clock();
TimeOut
=
1
;
TimeOut
=
1
;
goto
finish
;
goto
finish
;
}
}
// printf( "Total conflicts = %d.\n", pPars2->nConflicts );
Aig_ManStop
(
pTemp
);
Aig_ManStop
(
pTemp
);
RetValue
=
Fra_FraigMiterStatus
(
pNew
);
RetValue
=
Fra_FraigMiterStatus
(
pNew
);
if
(
pParSec
->
fVerbose
)
if
(
pParSec
->
fVerbose
)
...
@@ -477,7 +500,7 @@ PRT( "Time", clock() - clk );
...
@@ -477,7 +500,7 @@ PRT( "Time", clock() - clk );
extern
int
Aig_ManVerifyUsingBdds
(
Aig_Man_t
*
p
,
int
nBddMax
,
int
nIterMax
,
int
fPartition
,
int
fReorder
,
int
fVerbose
,
int
fSilent
);
extern
int
Aig_ManVerifyUsingBdds
(
Aig_Man_t
*
p
,
int
nBddMax
,
int
nIterMax
,
int
fPartition
,
int
fReorder
,
int
fVerbose
,
int
fSilent
);
pNew
->
nTruePis
=
Aig_ManPiNum
(
pNew
)
-
Aig_ManRegNum
(
pNew
);
pNew
->
nTruePis
=
Aig_ManPiNum
(
pNew
)
-
Aig_ManRegNum
(
pNew
);
pNew
->
nTruePos
=
Aig_ManPoNum
(
pNew
)
-
Aig_ManRegNum
(
pNew
);
pNew
->
nTruePos
=
Aig_ManPoNum
(
pNew
)
-
Aig_ManRegNum
(
pNew
);
RetValue
=
Aig_ManVerifyUsingBdds
(
pNew
,
100000
,
1000
,
1
,
1
,
0
,
pParSec
->
fSilent
);
RetValue
=
Aig_ManVerifyUsingBdds
(
pNew
,
pParSec
->
nBddMax
,
pParSec
->
nBddIterMax
,
1
,
1
,
0
,
pParSec
->
fSilent
);
}
}
finish:
finish:
...
...
src/aig/ssw/ssw.h
View file @
a2535d49
...
@@ -48,6 +48,7 @@ struct Ssw_Pars_t_
...
@@ -48,6 +48,7 @@ struct Ssw_Pars_t_
int
nConstrs
;
// treat the last nConstrs POs as seq constraints
int
nConstrs
;
// treat the last nConstrs POs as seq constraints
int
nMaxLevs
;
// the max number of levels of nodes to consider
int
nMaxLevs
;
// the max number of levels of nodes to consider
int
nBTLimit
;
// conflict limit at a node
int
nBTLimit
;
// conflict limit at a node
int
nBTLimitGlobal
;
// conflict limit for multiple runs
int
nMinDomSize
;
// min clock domain considered for optimization
int
nMinDomSize
;
// min clock domain considered for optimization
int
fPolarFlip
;
// uses polarity adjustment
int
fPolarFlip
;
// uses polarity adjustment
int
fSkipCheck
;
// do not run equivalence check for unaffected cones
int
fSkipCheck
;
// do not run equivalence check for unaffected cones
...
@@ -62,6 +63,7 @@ struct Ssw_Pars_t_
...
@@ -62,6 +63,7 @@ struct Ssw_Pars_t_
int
nRecycleCalls
;
// calls to perform before recycling SAT solver (optimized latch corr only)
int
nRecycleCalls
;
// calls to perform before recycling SAT solver (optimized latch corr only)
// internal parameters
// internal parameters
int
nIters
;
// the number of iterations performed
int
nIters
;
// the number of iterations performed
int
nConflicts
;
// the total number of conflicts performed
};
};
// sequential counter-example
// sequential counter-example
...
...
src/aig/ssw/sswCore.c
View file @
a2535d49
...
@@ -42,25 +42,26 @@
...
@@ -42,25 +42,26 @@
void
Ssw_ManSetDefaultParams
(
Ssw_Pars_t
*
p
)
void
Ssw_ManSetDefaultParams
(
Ssw_Pars_t
*
p
)
{
{
memset
(
p
,
0
,
sizeof
(
Ssw_Pars_t
)
);
memset
(
p
,
0
,
sizeof
(
Ssw_Pars_t
)
);
p
->
nPartSize
=
0
;
// size of the partition
p
->
nPartSize
=
0
;
// size of the partition
p
->
nOverSize
=
0
;
// size of the overlap between partitions
p
->
nOverSize
=
0
;
// size of the overlap between partitions
p
->
nFramesK
=
1
;
// the induction depth
p
->
nFramesK
=
1
;
// the induction depth
p
->
nFramesAddSim
=
0
;
// additional frames to simulate
p
->
nFramesAddSim
=
0
;
// additional frames to simulate
p
->
nConstrs
=
0
;
// treat the last nConstrs POs as seq constraints
p
->
nConstrs
=
0
;
// treat the last nConstrs POs as seq constraints
p
->
nBTLimit
=
1000
;
// conflict limit at a node
p
->
nBTLimit
=
1000
;
// conflict limit at a node
p
->
nMinDomSize
=
100
;
// min clock domain considered for optimization
p
->
nBTLimitGlobal
=
5000000
;
// conflict limit for all runs
p
->
fPolarFlip
=
0
;
// uses polarity adjustment
p
->
nMinDomSize
=
100
;
// min clock domain considered for optimization
p
->
fSkipCheck
=
0
;
// do not run equivalence check for unaffected cones
p
->
fPolarFlip
=
0
;
// uses polarity adjustment
p
->
fLatchCorr
=
0
;
// performs register correspondence
p
->
fSkipCheck
=
0
;
// do not run equivalence check for unaffected cones
p
->
fSemiFormal
=
0
;
// enable semiformal filtering
p
->
fLatchCorr
=
0
;
// performs register correspondence
p
->
fUniqueness
=
0
;
// enable uniqueness constraints
p
->
fSemiFormal
=
0
;
// enable semiformal filtering
p
->
fVerbose
=
0
;
// verbose stats
p
->
fUniqueness
=
0
;
// enable uniqueness constraints
p
->
fVerbose
=
0
;
// verbose stats
// latch correspondence
// latch correspondence
p
->
fLatchCorrOpt
=
0
;
// performs optimized register correspondence
p
->
fLatchCorrOpt
=
0
;
// performs optimized register correspondence
p
->
nSatVarMax
=
1000
;
// the max number of SAT variables
p
->
nSatVarMax
=
1000
;
// the max number of SAT variables
p
->
nRecycleCalls
=
50
;
// calls to perform before recycling SAT solver
p
->
nRecycleCalls
=
50
;
// calls to perform before recycling SAT solver
// return values
// return values
p
->
nIters
=
0
;
// the number of iterations performed
p
->
nIters
=
0
;
// the number of iterations performed
}
}
/**Function*************************************************************
/**Function*************************************************************
...
@@ -152,6 +153,7 @@ clk = clock();
...
@@ -152,6 +153,7 @@ clk = clock();
else
else
{
{
RetValue
=
Ssw_ManSweep
(
p
);
RetValue
=
Ssw_ManSweep
(
p
);
p
->
pPars
->
nConflicts
+=
p
->
pSat
->
stats
.
conflicts
;
if
(
p
->
pPars
->
fVerbose
)
if
(
p
->
pPars
->
fVerbose
)
{
{
printf
(
"%3d : Const = %6d. Cl = %6d. LR = %6d. NR = %6d. U = %3d. F = %2d. "
,
printf
(
"%3d : Const = %6d. Cl = %6d. LR = %6d. NR = %6d. U = %3d. F = %2d. "
,
...
...
src/base/abci/abc.c
View file @
a2535d49
...
@@ -15203,9 +15203,9 @@ int Abc_CommandDProve( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -15203,9 +15203,9 @@ int Abc_CommandDProve( Abc_Frame_t * pAbc, int argc, char ** argv )
// set defaults
// set defaults
Fra_SecSetDefaultParams
(
pSecPar
);
Fra_SecSetDefaultParams
(
pSecPar
);
pSecPar
->
TimeLimit
=
300
;
//
pSecPar->TimeLimit = 300;
Extra_UtilGetoptReset
();
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"cb
TFarmfn
wvh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"cb
FCGBRarmfij
wvh"
)
)
!=
EOF
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -15215,26 +15215,59 @@ int Abc_CommandDProve( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -15215,26 +15215,59 @@ int Abc_CommandDProve( Abc_Frame_t * pAbc, int argc, char ** argv )
case
'b'
:
case
'b'
:
pSecPar
->
fTryBmc
^=
1
;
pSecPar
->
fTryBmc
^=
1
;
break
;
break
;
case
'
T
'
:
case
'
F
'
:
if
(
globalUtilOptind
>=
argc
)
if
(
globalUtilOptind
>=
argc
)
{
{
fprintf
(
pErr
,
"Command line switch
\"
-
T
\"
should be followed by an integer.
\n
"
);
fprintf
(
pErr
,
"Command line switch
\"
-
F
\"
should be followed by an integer.
\n
"
);
goto
usage
;
goto
usage
;
}
}
pSecPar
->
TimeLimit
=
atoi
(
argv
[
globalUtilOptind
]);
pSecPar
->
nFramesMax
=
atoi
(
argv
[
globalUtilOptind
]);
globalUtilOptind
++
;
globalUtilOptind
++
;
if
(
pSecPar
->
TimeLimit
<
0
)
if
(
pSecPar
->
nFramesMax
<
0
)
goto
usage
;
goto
usage
;
break
;
break
;
case
'
F
'
:
case
'
C
'
:
if
(
globalUtilOptind
>=
argc
)
if
(
globalUtilOptind
>=
argc
)
{
{
fprintf
(
pErr
,
"Command line switch
\"
-
F
\"
should be followed by an integer.
\n
"
);
fprintf
(
pErr
,
"Command line switch
\"
-
C
\"
should be followed by an integer.
\n
"
);
goto
usage
;
goto
usage
;
}
}
pSecPar
->
n
FramesMax
=
atoi
(
argv
[
globalUtilOptind
]);
pSecPar
->
n
BTLimit
=
atoi
(
argv
[
globalUtilOptind
]);
globalUtilOptind
++
;
globalUtilOptind
++
;
if
(
pSecPar
->
nFramesMax
<
0
)
if
(
pSecPar
->
nBTLimit
<
0
)
goto
usage
;
break
;
case
'G'
:
if
(
globalUtilOptind
>=
argc
)
{
fprintf
(
pErr
,
"Command line switch
\"
-G
\"
should be followed by an integer.
\n
"
);
goto
usage
;
}
pSecPar
->
nBTLimitGlobal
=
atoi
(
argv
[
globalUtilOptind
]);
globalUtilOptind
++
;
if
(
pSecPar
->
nBTLimitGlobal
<
0
)
goto
usage
;
break
;
case
'B'
:
if
(
globalUtilOptind
>=
argc
)
{
fprintf
(
pErr
,
"Command line switch
\"
-B
\"
should be followed by an integer.
\n
"
);
goto
usage
;
}
pSecPar
->
nBddMax
=
atoi
(
argv
[
globalUtilOptind
]);
globalUtilOptind
++
;
if
(
pSecPar
->
nBddMax
<
0
)
goto
usage
;
break
;
case
'R'
:
if
(
globalUtilOptind
>=
argc
)
{
fprintf
(
pErr
,
"Command line switch
\"
-R
\"
should be followed by an integer.
\n
"
);
goto
usage
;
}
pSecPar
->
nBddIterMax
=
atoi
(
argv
[
globalUtilOptind
]);
globalUtilOptind
++
;
if
(
pSecPar
->
nBddIterMax
<
0
)
goto
usage
;
goto
usage
;
break
;
break
;
case
'a'
:
case
'a'
:
...
@@ -15249,8 +15282,11 @@ int Abc_CommandDProve( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -15249,8 +15282,11 @@ int Abc_CommandDProve( Abc_Frame_t * pAbc, int argc, char ** argv )
case
'f'
:
case
'f'
:
pSecPar
->
fFraiging
^=
1
;
pSecPar
->
fFraiging
^=
1
;
break
;
break
;
case
'n'
:
case
'i'
:
pSecPar
->
fUseNewProver
^=
1
;
pSecPar
->
fInduction
^=
1
;
break
;
case
'j'
:
pSecPar
->
fInterpolation
^=
1
;
break
;
break
;
case
'w'
:
case
'w'
:
pSecPar
->
fVeryVerbose
^=
1
;
pSecPar
->
fVeryVerbose
^=
1
;
...
@@ -15277,17 +15313,22 @@ int Abc_CommandDProve( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -15277,17 +15313,22 @@ int Abc_CommandDProve( Abc_Frame_t * pAbc, int argc, char ** argv )
return
0
;
return
0
;
usage:
usage:
fprintf
(
pErr
,
"usage: dprove [-F
num] [-T num] [-cbarmfn
wvh]
\n
"
);
fprintf
(
pErr
,
"usage: dprove [-F
CGBR num] [-cbarmfij
wvh]
\n
"
);
fprintf
(
pErr
,
"
\t
performs SEC on the sequential miter
\n
"
);
fprintf
(
pErr
,
"
\t
performs SEC on the sequential miter
\n
"
);
fprintf
(
pErr
,
"
\t
-F num : the limit on the depth of induction [default = %d]
\n
"
,
pSecPar
->
nFramesMax
);
fprintf
(
pErr
,
"
\t
-F num : the limit on the depth of induction [default = %d]
\n
"
,
pSecPar
->
nFramesMax
);
fprintf
(
pErr
,
"
\t
-T num : the approximate runtime limit (in seconds) [default = %d]
\n
"
,
pSecPar
->
TimeLimit
);
fprintf
(
pErr
,
"
\t
-C num : the conflict limit at a node during induction [default = %d]
\n
"
,
pSecPar
->
nBTLimit
);
fprintf
(
pErr
,
"
\t
-G num : the global conflict limit during induction [default = %d]
\n
"
,
pSecPar
->
nBTLimitGlobal
);
fprintf
(
pErr
,
"
\t
-B num : the BDD size limit in BDD-based reachablity [default = %d]
\n
"
,
pSecPar
->
nBddMax
);
fprintf
(
pErr
,
"
\t
-R num : the max number of reachability iterations [default = %d]
\n
"
,
pSecPar
->
nBddIterMax
);
fprintf
(
pErr
,
"
\t
-c : toggles using CEC before attempting SEC [default = %s]
\n
"
,
pSecPar
->
fTryComb
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-c : toggles using CEC before attempting SEC [default = %s]
\n
"
,
pSecPar
->
fTryComb
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-b : toggles using BMC before attempting SEC [default = %s]
\n
"
,
pSecPar
->
fTryBmc
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-b : toggles using BMC before attempting SEC [default = %s]
\n
"
,
pSecPar
->
fTryBmc
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-a : toggles the use of phase abstraction [default = %s]
\n
"
,
pSecPar
->
fPhaseAbstract
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-a : toggles the use of phase abstraction [default = %s]
\n
"
,
pSecPar
->
fPhaseAbstract
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-r : toggles forward retiming at the beginning [default = %s]
\n
"
,
pSecPar
->
fRetimeFirst
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-r : toggles forward retiming at the beginning [default = %s]
\n
"
,
pSecPar
->
fRetimeFirst
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-m : toggles min-register retiming [default = %s]
\n
"
,
pSecPar
->
fRetimeRegs
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-m : toggles min-register retiming [default = %s]
\n
"
,
pSecPar
->
fRetimeRegs
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-f : toggles the internal use of fraiging [default = %s]
\n
"
,
pSecPar
->
fFraiging
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-f : toggles the internal use of fraiging [default = %s]
\n
"
,
pSecPar
->
fFraiging
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-n : toggles the use of different induction prover [default = %s]
\n
"
,
pSecPar
->
fUseNewProver
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-i : toggles the use of induction [default = %s]
\n
"
,
pSecPar
->
fInduction
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-j : toggles the use of interpolation [default = %s]
\n
"
,
pSecPar
->
fInterpolation
?
"yes"
:
"no"
);
// fprintf( pErr, "\t-n : toggles the use of different induction prover [default = %s]\n", pSecPar->fUseNewProver? "yes": "no" );
fprintf
(
pErr
,
"
\t
-v : toggles verbose output [default = %s]
\n
"
,
pSecPar
->
fVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-v : toggles verbose output [default = %s]
\n
"
,
pSecPar
->
fVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-w : toggles additional verbose output [default = %s]
\n
"
,
pSecPar
->
fVeryVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-w : toggles additional verbose output [default = %s]
\n
"
,
pSecPar
->
fVeryVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-h : print the command usage
\n
"
);
fprintf
(
pErr
,
"
\t
-h : print the command usage
\n
"
);
...
...
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