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
d5bbf918
Commit
d5bbf918
authored
Feb 23, 2017
by
Yen-Sheng Ho
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added %pdra -a: run with pdr -nct
parent
f01c63f7
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
42 additions
and
2 deletions
+42
-2
src/base/wlc/wlc.h
+1
-0
src/base/wlc/wlcAbs.c
+8
-0
src/base/wlc/wlcCom.c
+6
-2
src/base/wlc/wlcNtk.c
+1
-0
src/proof/pdr/pdrIncr.c
+26
-0
No files found.
src/base/wlc/wlc.h
View file @
d5bbf918
...
@@ -173,6 +173,7 @@ struct Wlc_Par_t_
...
@@ -173,6 +173,7 @@ struct Wlc_Par_t_
int
fCheckClauses
;
// Check clauses in the reloaded trace
int
fCheckClauses
;
// Check clauses in the reloaded trace
int
fPushClauses
;
// Push clauses in the reloaded trace
int
fPushClauses
;
// Push clauses in the reloaded trace
int
fMFFC
;
// Refine the entire MFFC of a PPI
int
fMFFC
;
// Refine the entire MFFC of a PPI
int
fPdra
;
// Use pdr -nct
int
fVerbose
;
// verbose output
int
fVerbose
;
// verbose output
int
fPdrVerbose
;
// verbose output
int
fPdrVerbose
;
// verbose output
};
};
...
...
src/base/wlc/wlcAbs.c
View file @
d5bbf918
...
@@ -390,6 +390,14 @@ int Wlc_NtkPdrAbs( Wlc_Ntk_t * p, Wlc_Par_t * pPars )
...
@@ -390,6 +390,14 @@ int Wlc_NtkPdrAbs( Wlc_Ntk_t * p, Wlc_Par_t * pPars )
pPdrPars
->
fVerbose
=
pPars
->
fPdrVerbose
;
pPdrPars
->
fVerbose
=
pPars
->
fPdrVerbose
;
pPdrPars
->
fVeryVerbose
=
0
;
pPdrPars
->
fVeryVerbose
=
0
;
if
(
pPars
->
fPdra
)
{
pPdrPars
->
fUseAbs
=
1
;
// use 'pdr -t' (on-the-fly abstraction)
pPdrPars
->
fCtgs
=
1
;
// use 'pdr -nc' (improved generalization)
pPdrPars
->
fSkipDown
=
0
;
// use 'pdr -nc' (improved generalization)
pPdrPars
->
nRestLimit
=
500
;
// reset queue or proof-obligations when it gets larger than this
}
// perform refinement iterations
// perform refinement iterations
for
(
nIters
=
1
;
nIters
<
pPars
->
nIterMax
;
nIters
++
)
for
(
nIters
=
1
;
nIters
<
pPars
->
nIterMax
;
nIters
++
)
{
{
...
...
src/base/wlc/wlcCom.c
View file @
d5bbf918
...
@@ -462,7 +462,7 @@ int Abc_CommandPdrAbs( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -462,7 +462,7 @@ int Abc_CommandPdrAbs( Abc_Frame_t * pAbc, int argc, char ** argv )
int
c
;
int
c
;
Wlc_ManSetDefaultParams
(
pPars
);
Wlc_ManSetDefaultParams
(
pPars
);
Extra_UtilGetoptReset
();
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"AMXFIcpmxvwh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"AMXFI
a
cpmxvwh"
)
)
!=
EOF
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -521,6 +521,9 @@ int Abc_CommandPdrAbs( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -521,6 +521,9 @@ int Abc_CommandPdrAbs( Abc_Frame_t * pAbc, int argc, char ** argv )
if
(
pPars
->
nIterMax
<
0
)
if
(
pPars
->
nIterMax
<
0
)
goto
usage
;
goto
usage
;
break
;
break
;
case
'a'
:
pPars
->
fPdra
^=
1
;
break
;
case
'x'
:
case
'x'
:
pPars
->
fXorOutput
^=
1
;
pPars
->
fXorOutput
^=
1
;
break
;
break
;
...
@@ -553,7 +556,7 @@ int Abc_CommandPdrAbs( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -553,7 +556,7 @@ int Abc_CommandPdrAbs( Abc_Frame_t * pAbc, int argc, char ** argv )
Wlc_NtkPdrAbs
(
pNtk
,
pPars
);
Wlc_NtkPdrAbs
(
pNtk
,
pPars
);
return
0
;
return
0
;
usage:
usage:
Abc_Print
(
-
2
,
"usage: %%pdra [-AMXFI num] [-cpmxvwh]
\n
"
);
Abc_Print
(
-
2
,
"usage: %%pdra [-AMXFI num] [-
a
cpmxvwh]
\n
"
);
Abc_Print
(
-
2
,
"
\t
abstraction for word-level networks
\n
"
);
Abc_Print
(
-
2
,
"
\t
abstraction for word-level networks
\n
"
);
Abc_Print
(
-
2
,
"
\t
-A num : minimum bit-width of an adder/subtractor to abstract [default = %d]
\n
"
,
pPars
->
nBitsAdd
);
Abc_Print
(
-
2
,
"
\t
-A num : minimum bit-width of an adder/subtractor to abstract [default = %d]
\n
"
,
pPars
->
nBitsAdd
);
Abc_Print
(
-
2
,
"
\t
-M num : minimum bit-width of a multiplier to abstract [default = %d]
\n
"
,
pPars
->
nBitsMul
);
Abc_Print
(
-
2
,
"
\t
-M num : minimum bit-width of a multiplier to abstract [default = %d]
\n
"
,
pPars
->
nBitsMul
);
...
@@ -561,6 +564,7 @@ usage:
...
@@ -561,6 +564,7 @@ usage:
Abc_Print
(
-
2
,
"
\t
-F num : minimum bit-width of a flip-flop to abstract [default = %d]
\n
"
,
pPars
->
nBitsFlop
);
Abc_Print
(
-
2
,
"
\t
-F num : minimum bit-width of a flip-flop to abstract [default = %d]
\n
"
,
pPars
->
nBitsFlop
);
Abc_Print
(
-
2
,
"
\t
-I num : maximum number of CEGAR iterations [default = %d]
\n
"
,
pPars
->
nIterMax
);
Abc_Print
(
-
2
,
"
\t
-I num : maximum number of CEGAR iterations [default = %d]
\n
"
,
pPars
->
nIterMax
);
Abc_Print
(
-
2
,
"
\t
-x : toggle XORing outputs of word-level miter [default = %s]
\n
"
,
pPars
->
fXorOutput
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-x : toggle XORing outputs of word-level miter [default = %s]
\n
"
,
pPars
->
fXorOutput
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-a : toggle running pdr with -nct [default = %s]
\n
"
,
pPars
->
fPdra
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-c : toggle checking clauses in the reloaded trace [default = %s]
\n
"
,
pPars
->
fCheckClauses
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-c : toggle checking clauses in the reloaded trace [default = %s]
\n
"
,
pPars
->
fCheckClauses
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-p : toggle pushing clauses in the reloaded trace [default = %s]
\n
"
,
pPars
->
fPushClauses
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-p : toggle pushing clauses in the reloaded trace [default = %s]
\n
"
,
pPars
->
fPushClauses
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-m : toggle refining the whole MFFC of a PPI [default = %s]
\n
"
,
pPars
->
fMFFC
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-m : toggle refining the whole MFFC of a PPI [default = %s]
\n
"
,
pPars
->
fMFFC
?
"yes"
:
"no"
);
...
...
src/base/wlc/wlcNtk.c
View file @
d5bbf918
...
@@ -117,6 +117,7 @@ void Wlc_ManSetDefaultParams( Wlc_Par_t * pPars )
...
@@ -117,6 +117,7 @@ void Wlc_ManSetDefaultParams( Wlc_Par_t * pPars )
pPars
->
fCheckClauses
=
1
;
// Check clauses in the reloaded trace
pPars
->
fCheckClauses
=
1
;
// Check clauses in the reloaded trace
pPars
->
fPushClauses
=
0
;
// Push clauses in the reloaded trace
pPars
->
fPushClauses
=
0
;
// Push clauses in the reloaded trace
pPars
->
fMFFC
=
1
;
// Refine the entire MFFC of a PPI
pPars
->
fMFFC
=
1
;
// Refine the entire MFFC of a PPI
pPars
->
fPdra
=
0
;
// Use pdr -nct
pPars
->
fVerbose
=
0
;
// verbose output`
pPars
->
fVerbose
=
0
;
// verbose output`
pPars
->
fPdrVerbose
=
0
;
// show verbose PDR output
pPars
->
fPdrVerbose
=
0
;
// show verbose PDR output
}
}
...
...
src/proof/pdr/pdrIncr.c
View file @
d5bbf918
...
@@ -190,6 +190,21 @@ sat_solver * IPdr_ManSetSolver( Pdr_Man_t * p, int k, int nTotal )
...
@@ -190,6 +190,21 @@ sat_solver * IPdr_ManSetSolver( Pdr_Man_t * p, int k, int nTotal )
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
int
IPdr_ManRestoreAbsFlops
(
Pdr_Man_t
*
p
)
{
Pdr_Set_t
*
pSet
;
int
i
,
j
,
k
;
Vec_VecForEachEntry
(
Pdr_Set_t
*
,
p
->
vClauses
,
pSet
,
i
,
j
)
{
for
(
k
=
0
;
k
<
pSet
->
nLits
;
k
++
)
{
Vec_IntWriteEntry
(
p
->
vAbsFlops
,
Abc_Lit2Var
(
pSet
->
Lits
[
k
]),
1
);
}
}
return
0
;
}
int
IPdr_ManRestore
(
Pdr_Man_t
*
p
,
Vec_Vec_t
*
vClauses
,
Vec_Int_t
*
vMap
)
int
IPdr_ManRestore
(
Pdr_Man_t
*
p
,
Vec_Vec_t
*
vClauses
,
Vec_Int_t
*
vMap
)
{
{
int
i
;
int
i
;
...
@@ -288,6 +303,17 @@ int IPdr_ManSolveInt( Pdr_Man_t * p, int fCheckClauses, int fPushClauses )
...
@@ -288,6 +303,17 @@ int IPdr_ManSolveInt( Pdr_Man_t * p, int fCheckClauses, int fPushClauses )
return
1
;
return
1
;
}
}
}
}
if
(
p
->
pPars
->
fUseAbs
&&
p
->
vAbsFlops
==
NULL
&&
iFrame
>=
1
)
{
assert
(
p
->
vAbsFlops
==
NULL
);
p
->
vAbsFlops
=
Vec_IntStart
(
Saig_ManRegNum
(
p
->
pAig
)
);
p
->
vMapFf2Ppi
=
Vec_IntStartFull
(
Saig_ManRegNum
(
p
->
pAig
)
);
p
->
vMapPpi2Ff
=
Vec_IntAlloc
(
100
);
IPdr_ManRestoreAbsFlops
(
p
);
}
}
}
while
(
1
)
while
(
1
)
{
{
...
...
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