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
bc39220d
Commit
bc39220d
authored
Jun 18, 2013
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Performance improvements in 'pdr'.
parent
a7339fdb
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
4 deletions
+10
-4
src/proof/pdr/pdrCore.c
+9
-4
src/proof/pdr/pdrInt.h
+1
-0
No files found.
src/proof/pdr/pdrCore.c
View file @
bc39220d
...
...
@@ -136,6 +136,7 @@ int Pdr_ManPushClauses( Pdr_Man_t * p )
int
i
,
j
,
k
,
m
,
RetValue
=
0
,
RetValue2
,
kMax
=
Vec_PtrSize
(
p
->
vSolvers
)
-
1
;
int
Counter
=
0
;
abctime
clk
=
Abc_Clock
();
assert
(
p
->
iUseFrame
>
0
);
Vec_VecForEachLevelStartStop
(
p
->
vClauses
,
vArrayK
,
k
,
1
,
kMax
)
{
Vec_PtrSort
(
vArrayK
,
(
int
(
*
)(
void
))
Pdr_SetCompare
);
...
...
@@ -427,7 +428,7 @@ int Pdr_ManBlockCube( Pdr_Man_t * p, Pdr_Set_t * pCube )
abctime
clk
;
p
->
nBlocks
++
;
// create first proof obligation
assert
(
p
->
pQueue
==
NULL
);
//
assert( p->pQueue == NULL );
pThis
=
Pdr_OblStart
(
kMax
,
Prio
--
,
pCube
,
NULL
);
// consume ref
Pdr_QueuePush
(
p
,
pThis
);
// try to solve it recursively
...
...
@@ -437,6 +438,8 @@ int Pdr_ManBlockCube( Pdr_Man_t * p, Pdr_Set_t * pCube )
pThis
=
Pdr_QueueHead
(
p
);
if
(
pThis
->
iFrame
==
0
)
return
0
;
// SAT
if
(
pThis
->
iFrame
>
kMax
)
// finished this level
return
1
;
if
(
p
->
nQueLim
&&
p
->
nQueCur
>=
p
->
nQueLim
)
{
p
->
nQueLim
=
p
->
nQueLim
*
3
/
2
;
...
...
@@ -446,6 +449,7 @@ int Pdr_ManBlockCube( Pdr_Man_t * p, Pdr_Set_t * pCube )
pThis
=
Pdr_QueuePop
(
p
);
assert
(
pThis
->
iFrame
>
0
);
assert
(
!
Pdr_SetIsInit
(
pThis
->
pState
,
-
1
)
);
p
->
iUseFrame
=
Abc_MinInt
(
p
->
iUseFrame
,
pThis
->
iFrame
);
clk
=
Abc_Clock
();
if
(
Pdr_ManCheckContainment
(
p
,
pThis
->
iFrame
,
pThis
->
pState
)
)
...
...
@@ -458,7 +462,7 @@ int Pdr_ManBlockCube( Pdr_Man_t * p, Pdr_Set_t * pCube )
// check if the cube is already contained
RetValue
=
Pdr_ManCheckCubeCs
(
p
,
pThis
->
iFrame
,
pThis
->
pState
);
if
(
RetValue
==
-
1
)
//
cube is blocked by clauses in this frame
if
(
RetValue
==
-
1
)
//
resource limit is reached
{
Pdr_OblDeref
(
pThis
);
return
-
1
;
...
...
@@ -472,7 +476,7 @@ int Pdr_ManBlockCube( Pdr_Man_t * p, Pdr_Set_t * pCube )
// check if the cube holds with relative induction
pCubeMin
=
NULL
;
RetValue
=
Pdr_ManGeneralize
(
p
,
pThis
->
iFrame
-
1
,
pThis
->
pState
,
&
pPred
,
&
pCubeMin
);
if
(
RetValue
==
-
1
)
if
(
RetValue
==
-
1
)
// resource limit is reached
{
Pdr_OblDeref
(
pThis
);
return
-
1
;
...
...
@@ -511,7 +515,7 @@ int Pdr_ManBlockCube( Pdr_Man_t * p, Pdr_Set_t * pCube )
for
(
i
=
1
;
i
<=
k
;
i
++
)
Pdr_ManSolverAddClause
(
p
,
i
,
pCubeMin
);
// schedule proof obligation
if
(
k
<
kMax
&&
!
p
->
pPars
->
fShortest
)
if
(
!
p
->
pPars
->
fShortest
)
{
pThis
->
iFrame
=
k
+
1
;
pThis
->
prio
=
Prio
--
;
...
...
@@ -574,6 +578,7 @@ int Pdr_ManSolveInt( Pdr_Man_t * p )
{
p
->
nFrames
=
k
;
assert
(
k
==
Vec_PtrSize
(
p
->
vSolvers
)
-
1
);
p
->
iUseFrame
=
ABC_INFINITY
;
Saig_ManForEachPo
(
p
->
pAig
,
pObj
,
p
->
iOutCur
)
{
// skip disproved outputs
...
...
src/proof/pdr/pdrInt.h
View file @
bc39220d
...
...
@@ -83,6 +83,7 @@ struct Pdr_Man_t_
Pdr_Obl_t
*
pQueue
;
// proof obligations
int
*
pOrder
;
// ordering of the lits
Vec_Int_t
*
vActVars
;
// the counter of activation variables
int
iUseFrame
;
// the first used frame
// internal use
Vec_Int_t
*
vPrio
;
// priority flops
Vec_Int_t
*
vLits
;
// array of literals
...
...
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