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
02081dba
Commit
02081dba
authored
Feb 27, 2011
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added generation of counter-examples in &reachm.
parent
2f874d27
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
42 additions
and
8 deletions
+42
-8
src/aig/llb/llb1Core.c
+1
-0
src/aig/llb/llb1Man.c
+37
-8
src/aig/llb/llb1Reach.c
+0
-0
src/aig/llb/llbInt.h
+4
-0
No files found.
src/aig/llb/llb1Core.c
View file @
02081dba
...
...
@@ -208,6 +208,7 @@ int Llb_ManModelCheckGia( Gia_Man_t * pGia, Gia_ParLlb_t * pPars )
RetValue
=
Llb_ManModelCheckAig
(
pAig
,
pPars
,
NULL
,
NULL
);
else
RetValue
=
Llb_ManModelCheckAigWithHints
(
pAig
,
pPars
);
pGia
->
pCexSeq
=
pAig
->
pSeqModel
;
pAig
->
pSeqModel
=
NULL
;
Aig_ManStop
(
pAig
);
return
RetValue
;
}
...
...
src/aig/llb/llb1Man.c
View file @
02081dba
...
...
@@ -47,9 +47,13 @@ void Llb_ManPrepareVarMap( Llb_Man_t * p )
Aig_Obj_t
*
pObjLi
,
*
pObjLo
;
int
i
,
iVarLi
,
iVarLo
;
assert
(
p
->
vNs2Glo
==
NULL
);
assert
(
p
->
vCs2Glo
==
NULL
);
assert
(
p
->
vGlo2Cs
==
NULL
);
assert
(
p
->
vGlo2Ns
==
NULL
);
p
->
vNs2Glo
=
Vec_IntStartFull
(
Vec_IntSize
(
p
->
vVar2Obj
)
);
p
->
vCs2Glo
=
Vec_IntStartFull
(
Vec_IntSize
(
p
->
vVar2Obj
)
);
p
->
vGlo2Cs
=
Vec_IntStartFull
(
Aig_ManRegNum
(
p
->
pAig
)
);
p
->
vGlo2Ns
=
Vec_IntStartFull
(
Aig_ManRegNum
(
p
->
pAig
)
);
Saig_ManForEachLiLo
(
p
->
pAig
,
pObjLi
,
pObjLo
,
i
)
{
iVarLi
=
Vec_IntEntry
(
p
->
vObj2Var
,
Aig_ObjId
(
pObjLi
));
...
...
@@ -57,7 +61,16 @@ void Llb_ManPrepareVarMap( Llb_Man_t * p )
assert
(
iVarLi
>=
0
&&
iVarLi
<
Vec_IntSize
(
p
->
vVar2Obj
)
);
assert
(
iVarLo
>=
0
&&
iVarLo
<
Vec_IntSize
(
p
->
vVar2Obj
)
);
Vec_IntWriteEntry
(
p
->
vNs2Glo
,
iVarLi
,
i
);
Vec_IntWriteEntry
(
p
->
vCs2Glo
,
iVarLo
,
i
);
Vec_IntWriteEntry
(
p
->
vGlo2Cs
,
i
,
iVarLo
);
Vec_IntWriteEntry
(
p
->
vGlo2Ns
,
i
,
iVarLi
);
}
// add mapping of the PIs
Saig_ManForEachPi
(
p
->
pAig
,
pObjLo
,
i
)
{
iVarLo
=
Vec_IntEntry
(
p
->
vObj2Var
,
Aig_ObjId
(
pObjLo
));
Vec_IntWriteEntry
(
p
->
vCs2Glo
,
iVarLo
,
Aig_ManRegNum
(
p
->
pAig
)
+
i
);
Vec_IntWriteEntry
(
p
->
vNs2Glo
,
iVarLo
,
Aig_ManRegNum
(
p
->
pAig
)
+
i
);
}
}
...
...
@@ -117,6 +130,7 @@ void Llb_ManPrepareVarLimits( Llb_Man_t * p )
void
Llb_ManStop
(
Llb_Man_t
*
p
)
{
Llb_Grp_t
*
pGrp
;
DdNode
*
bTemp
;
int
i
;
// Vec_IntFreeP( &p->vMem );
...
...
@@ -128,25 +142,39 @@ void Llb_ManStop( Llb_Man_t * p )
Llb_MtrFree
(
p
->
pMatrix
);
Vec_PtrForEachEntry
(
Llb_Grp_t
*
,
p
->
vGroups
,
pGrp
,
i
)
Llb_ManGroupStop
(
pGrp
);
Vec_PtrFreeP
(
&
p
->
vGroups
);
Vec_IntFreeP
(
&
p
->
vVar2Obj
);
Vec_IntFreeP
(
&
p
->
vObj2Var
);
Vec_IntFreeP
(
&
p
->
vVarBegs
);
Vec_IntFreeP
(
&
p
->
vVarEnds
);
Vec_IntFreeP
(
&
p
->
vNs2Glo
);
Vec_IntFreeP
(
&
p
->
vGlo2Cs
);
// Vec_IntFreeP( &p->vHints );
if
(
p
->
dd
)
{
// printf( "Manager dd\n" );
Extra_StopManager
(
p
->
dd
);
}
if
(
p
->
ddG
)
{
// printf( "Manager ddG\n" );
if
(
p
->
ddG
->
bFunc
)
Cudd_RecursiveDeref
(
p
->
ddG
,
p
->
ddG
->
bFunc
);
Extra_StopManager
(
p
->
ddG
);
}
if
(
p
->
ddR
)
{
// printf( "Manager ddR\n" );
if
(
p
->
ddR
->
bFunc
)
Cudd_RecursiveDeref
(
p
->
ddR
,
p
->
ddR
->
bFunc
);
Vec_PtrForEachEntry
(
DdNode
*
,
p
->
vRings
,
bTemp
,
i
)
Cudd_RecursiveDeref
(
p
->
ddR
,
bTemp
);
Extra_StopManager
(
p
->
ddR
);
}
Aig_ManStop
(
p
->
pAig
);
Vec_PtrFreeP
(
&
p
->
vGroups
);
Vec_IntFreeP
(
&
p
->
vVar2Obj
);
Vec_IntFreeP
(
&
p
->
vObj2Var
);
Vec_IntFreeP
(
&
p
->
vVarBegs
);
Vec_IntFreeP
(
&
p
->
vVarEnds
);
Vec_PtrFreeP
(
&
p
->
vRings
);
Vec_IntFreeP
(
&
p
->
vNs2Glo
);
Vec_IntFreeP
(
&
p
->
vCs2Glo
);
Vec_IntFreeP
(
&
p
->
vGlo2Cs
);
Vec_IntFreeP
(
&
p
->
vGlo2Ns
);
// Vec_IntFreeP( &p->vHints );
ABC_FREE
(
p
);
}
...
...
@@ -172,6 +200,7 @@ Llb_Man_t * Llb_ManStart( Aig_Man_t * pAigGlo, Aig_Man_t * pAig, Gia_ParLlb_t *
p
->
pAig
=
pAig
;
p
->
vVar2Obj
=
Llb_ManMarkPivotNodes
(
p
->
pAig
,
pPars
->
fUsePivots
);
p
->
vObj2Var
=
Vec_IntInvert
(
p
->
vVar2Obj
,
-
1
);
p
->
vRings
=
Vec_PtrAlloc
(
100
);
Llb_ManPrepareVarMap
(
p
);
Llb_ManPrepareGroups
(
p
);
Aig_ManCleanMarkA
(
pAig
);
...
...
src/aig/llb/llb1Reach.c
View file @
02081dba
This diff is collapsed.
Click to expand it.
src/aig/llb/llbInt.h
View file @
02081dba
...
...
@@ -55,16 +55,20 @@ struct Llb_Man_t_
Aig_Man_t
*
pAig
;
// derived AIG manager (created in this package)
DdManager
*
dd
;
// BDD manager
DdManager
*
ddG
;
// BDD manager
DdManager
*
ddR
;
// BDD manager
Vec_Int_t
*
vObj2Var
;
// mapping AIG ObjId into BDD var index
Vec_Int_t
*
vVar2Obj
;
// mapping BDD var index into AIG ObjId
Vec_Ptr_t
*
vGroups
;
// group Id into group pointer
Llb_Mtr_t
*
pMatrix
;
// dependency matrix
// image computation
Vec_Ptr_t
*
vRings
;
// onion rings
Vec_Int_t
*
vVarBegs
;
// the first group where the var appears
Vec_Int_t
*
vVarEnds
;
// the last group where the var appears
// variable mapping
Vec_Int_t
*
vNs2Glo
;
// next state variables into global variables
Vec_Int_t
*
vCs2Glo
;
// next state variables into global variables
Vec_Int_t
*
vGlo2Cs
;
// global variables into current state variables
Vec_Int_t
*
vGlo2Ns
;
// global variables into current state variables
// flow computation
// Vec_Int_t * vMem;
// Vec_Ptr_t * vTops;
...
...
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