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
59bc3cb9
Commit
59bc3cb9
authored
Feb 26, 2013
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
User-controlable SAT sweeper.
parent
8e68df2c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
11 deletions
+15
-11
src/aig/gia/gia.h
+3
-3
src/aig/gia/giaSweeper.c
+12
-8
No files found.
src/aig/gia/gia.h
View file @
59bc3cb9
...
@@ -995,16 +995,16 @@ extern Gia_Man_t * Gia_SweeperStart();
...
@@ -995,16 +995,16 @@ extern Gia_Man_t * Gia_SweeperStart();
extern
void
Gia_SweeperStop
(
Gia_Man_t
*
p
);
extern
void
Gia_SweeperStop
(
Gia_Man_t
*
p
);
extern
void
Gia_SweeperSetConflictLimit
(
Gia_Man_t
*
p
,
int
nConfMax
);
extern
void
Gia_SweeperSetConflictLimit
(
Gia_Man_t
*
p
,
int
nConfMax
);
extern
void
Gia_SweeperSetRuntimeLimit
(
Gia_Man_t
*
p
,
int
nSeconds
);
extern
void
Gia_SweeperSetRuntimeLimit
(
Gia_Man_t
*
p
,
int
nSeconds
);
extern
Vec_Int_t
*
Gia_SweeperGetCex
(
Gia_Man_t
*
p
Gia
);
extern
Vec_Int_t
*
Gia_SweeperGetCex
(
Gia_Man_t
*
p
);
extern
int
Gia_SweeperProbeCreate
(
Gia_Man_t
*
p
,
int
iLit
);
extern
int
Gia_SweeperProbeCreate
(
Gia_Man_t
*
p
,
int
iLit
);
extern
int
Gia_SweeperProbeFind
(
Gia_Man_t
*
p
,
int
iLit
);
extern
int
Gia_SweeperProbeFind
(
Gia_Man_t
*
p
,
int
iLit
);
extern
void
Gia_SweeperProbeDeref
(
Gia_Man_t
*
p
,
int
ProbeId
);
extern
void
Gia_SweeperProbeDeref
(
Gia_Man_t
*
p
,
int
ProbeId
);
extern
int
Gia_SweeperProbeLit
(
Gia_Man_t
*
p
,
int
ProbeId
);
extern
int
Gia_SweeperProbeLit
(
Gia_Man_t
*
p
,
int
ProbeId
);
extern
int
Gia_SweeperProbeCheckUnsat
(
Gia_Man_t
*
p
);
extern
int
Gia_SweeperCondPop
(
Gia_Man_t
*
p
);
extern
int
Gia_SweeperCondPop
(
Gia_Man_t
*
p
);
extern
void
Gia_SweeperCondPush
(
Gia_Man_t
*
p
,
int
ProbeId
);
extern
void
Gia_SweeperCondPush
(
Gia_Man_t
*
p
,
int
ProbeId
);
extern
Gia_Man_t
*
Gia_SweeperExtractUserLogic
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vProbeIds
,
Vec_Ptr_t
*
vOutNames
);
extern
int
Gia_SweeperCondCheckUnsat
(
Gia_Man_t
*
p
);
extern
int
Gia_SweeperCheckEquiv
(
Gia_Man_t
*
pGia
,
int
ProbeId1
,
int
ProbeId2
);
extern
int
Gia_SweeperCheckEquiv
(
Gia_Man_t
*
pGia
,
int
ProbeId1
,
int
ProbeId2
);
extern
Gia_Man_t
*
Gia_SweeperExtractUserLogic
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vProbeIds
,
Vec_Ptr_t
*
vOutNames
);
/*=== giaSwitch.c ============================================================*/
/*=== giaSwitch.c ============================================================*/
extern
float
Gia_ManEvaluateSwitching
(
Gia_Man_t
*
p
);
extern
float
Gia_ManEvaluateSwitching
(
Gia_Man_t
*
p
);
extern
float
Gia_ManComputeSwitching
(
Gia_Man_t
*
p
,
int
nFrames
,
int
nPref
,
int
fProbOne
);
extern
float
Gia_ManComputeSwitching
(
Gia_Man_t
*
p
,
int
nFrames
,
int
nPref
,
int
fProbOne
);
...
...
src/aig/gia/giaSweeper.c
View file @
59bc3cb9
...
@@ -181,14 +181,16 @@ void Gia_SweeperStop( Gia_Man_t * pGia )
...
@@ -181,14 +181,16 @@ void Gia_SweeperStop( Gia_Man_t * pGia )
***********************************************************************/
***********************************************************************/
void
Gia_SweeperSetConflictLimit
(
Gia_Man_t
*
p
,
int
nConfMax
)
void
Gia_SweeperSetConflictLimit
(
Gia_Man_t
*
p
,
int
nConfMax
)
{
{
p
->
nConfMax
=
nConfMax
;
Swp_Man_t
*
pSwp
=
(
Swp_Man_t
*
)
p
->
pData
;
pSwp
->
nConfMax
=
nConfMax
;
}
}
void
Gia_SweeperSetRuntimeLimit
(
Gia_Man_t
*
p
,
int
nSeconds
)
void
Gia_SweeperSetRuntimeLimit
(
Gia_Man_t
*
p
,
int
nSeconds
)
{
{
p
->
nTimeOut
=
nSeconds
;
Swp_Man_t
*
pSwp
=
(
Swp_Man_t
*
)
p
->
pData
;
pSwp
->
nTimeOut
=
nSeconds
;
}
}
Vec_Int_t
*
Gia_SweeperGetCex
(
Gia_Man_t
*
p
Gia
)
Vec_Int_t
*
Gia_SweeperGetCex
(
Gia_Man_t
*
p
)
{
{
Swp_Man_t
*
pSwp
=
(
Swp_Man_t
*
)
p
->
pData
;
Swp_Man_t
*
pSwp
=
(
Swp_Man_t
*
)
p
->
pData
;
return
pSwp
->
vCexUser
;
return
pSwp
->
vCexUser
;
...
@@ -242,10 +244,6 @@ int Gia_SweeperProbeLit( Gia_Man_t * p, int ProbeId )
...
@@ -242,10 +244,6 @@ int Gia_SweeperProbeLit( Gia_Man_t * p, int ProbeId )
Swp_Man_t
*
pSwp
=
(
Swp_Man_t
*
)
p
->
pData
;
Swp_Man_t
*
pSwp
=
(
Swp_Man_t
*
)
p
->
pData
;
return
Vec_IntEntry
(
pSwp
->
vProbes
,
ProbeId
);
return
Vec_IntEntry
(
pSwp
->
vProbes
,
ProbeId
);
}
}
// returns 1 if the set of conditions is UNSAT (0 if SAT; -1 if undecided)
int
Gia_SweeperProbeCheckUnsat
(
Gia_Man_t
*
p
)
{
}
/**Function*************************************************************
/**Function*************************************************************
...
@@ -271,6 +269,11 @@ int Gia_SweeperCondPop( Gia_Man_t * p )
...
@@ -271,6 +269,11 @@ int Gia_SweeperCondPop( Gia_Man_t * p )
Vec_IntPop
(
pSwp
->
vCondLits
);
Vec_IntPop
(
pSwp
->
vCondLits
);
return
ProbId
;
return
ProbId
;
}
}
// returns 1 if the set of conditions is UNSAT (0 if SAT; -1 if undecided)
int
Gia_SweeperCondCheckUnsat
(
Gia_Man_t
*
p
)
{
return
0
;
}
/**Function*************************************************************
/**Function*************************************************************
...
@@ -565,6 +568,7 @@ int Gia_SweeperCheckEquiv( Gia_Man_t * pGia, int Probe1, int Probe2 )
...
@@ -565,6 +568,7 @@ int Gia_SweeperCheckEquiv( Gia_Man_t * pGia, int Probe1, int Probe2 )
clock_t
clk
;
clock_t
clk
;
p
->
nSatCalls
++
;
p
->
nSatCalls
++
;
assert
(
p
->
pSat
!=
NULL
);
assert
(
p
->
pSat
!=
NULL
);
p
->
vCexUser
=
NULL
;
// get the literals
// get the literals
iLitOld
=
Gia_SweeperProbeLit
(
pGia
,
Probe1
);
iLitOld
=
Gia_SweeperProbeLit
(
pGia
,
Probe1
);
...
@@ -575,7 +579,7 @@ int Gia_SweeperCheckEquiv( Gia_Man_t * pGia, int Probe1, int Probe2 )
...
@@ -575,7 +579,7 @@ int Gia_SweeperCheckEquiv( Gia_Man_t * pGia, int Probe1, int Probe2 )
// if the literals are opposites, the probes are
// if the literals are opposites, the probes are
if
(
Abc_LitRegular
(
iLitOld
)
==
Abc_LitRegular
(
iLitNew
)
)
if
(
Abc_LitRegular
(
iLitOld
)
==
Abc_LitRegular
(
iLitNew
)
)
{
{
Vec_IntFill
(
p
->
v
SwpCex
,
Gia_ManPiNum
(
pGia
),
0
);
Vec_IntFill
(
p
->
v
CexSwp
,
Gia_ManPiNum
(
pGia
),
0
);
return
0
;
return
0
;
}
}
// order the literals
// order the 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