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
d257fce8
Commit
d257fce8
authored
Sep 11, 2012
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added code to collect experimental results.
parent
20bd241e
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
71 additions
and
16 deletions
+71
-16
src/aig/gia/gia.h
+3
-0
src/aig/gia/giaAbs.c
+29
-0
src/aig/gia/giaAbsGla.c
+2
-4
src/aig/gia/giaAbsGla2.c
+36
-12
src/aig/gia/giaAbsVta.c
+1
-0
No files found.
src/aig/gia/gia.h
View file @
d257fce8
...
@@ -237,6 +237,7 @@ struct Gia_ParVta_t_
...
@@ -237,6 +237,7 @@ struct Gia_ParVta_t_
int
fVerbose
;
// verbose flag
int
fVerbose
;
// verbose flag
int
fVeryVerbose
;
// print additional information
int
fVeryVerbose
;
// print additional information
int
iFrame
;
// the number of frames covered
int
iFrame
;
// the number of frames covered
int
iFrameProved
;
// the number of frames proved
int
nFramesNoChange
;
// the number of last frames without changes
int
nFramesNoChange
;
// the number of last frames without changes
};
};
...
@@ -726,6 +727,8 @@ extern Vec_Int_t * Gia_VtaConvertToGla( Gia_Man_t * p, Vec_Int_t * vVta
...
@@ -726,6 +727,8 @@ extern Vec_Int_t * Gia_VtaConvertToGla( Gia_Man_t * p, Vec_Int_t * vVta
extern
Vec_Int_t
*
Gia_VtaConvertFromGla
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vGla
,
int
nFrames
);
extern
Vec_Int_t
*
Gia_VtaConvertFromGla
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vGla
,
int
nFrames
);
extern
Vec_Int_t
*
Gia_FlaConvertToGla
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vFla
);
extern
Vec_Int_t
*
Gia_FlaConvertToGla
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vFla
);
extern
Vec_Int_t
*
Gia_GlaConvertToFla
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vGla
);
extern
Vec_Int_t
*
Gia_GlaConvertToFla
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vGla
);
extern
int
Gia_GlaCountFlops
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vGla
);
extern
int
Gia_GlaCountNodes
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vGla
);
/*=== giaAbsGla.c ===========================================================*/
/*=== giaAbsGla.c ===========================================================*/
extern
int
Gia_GlaPerform
(
Gia_Man_t
*
p
,
Gia_ParVta_t
*
pPars
,
int
fStartVta
);
extern
int
Gia_GlaPerform
(
Gia_Man_t
*
p
,
Gia_ParVta_t
*
pPars
,
int
fStartVta
);
extern
int
Ga2_ManPerform
(
Gia_Man_t
*
p
,
Gia_ParVta_t
*
pPars
);
extern
int
Ga2_ManPerform
(
Gia_Man_t
*
p
,
Gia_ParVta_t
*
pPars
);
...
...
src/aig/gia/giaAbs.c
View file @
d257fce8
...
@@ -707,6 +707,35 @@ void Gia_ManGlaPurify( Gia_Man_t * p, int nPurifyRatio, int fVerbose )
...
@@ -707,6 +707,35 @@ void Gia_ManGlaPurify( Gia_Man_t * p, int nPurifyRatio, int fVerbose )
ABC_FREE
(
pCounts
);
ABC_FREE
(
pCounts
);
}
}
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int
Gia_GlaCountFlops
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vGla
)
{
Gia_Obj_t
*
pObj
;
int
i
,
Count
=
0
;
Gia_ManForEachRo
(
p
,
pObj
,
i
)
if
(
Vec_IntEntry
(
vGla
,
Gia_ObjId
(
p
,
pObj
))
)
Count
++
;
return
Count
;
}
int
Gia_GlaCountNodes
(
Gia_Man_t
*
p
,
Vec_Int_t
*
vGla
)
{
Gia_Obj_t
*
pObj
;
int
i
,
Count
=
0
;
Gia_ManForEachAnd
(
p
,
pObj
,
i
)
if
(
Vec_IntEntry
(
vGla
,
Gia_ObjId
(
p
,
pObj
))
)
Count
++
;
return
Count
;
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
/// END OF FILE ///
...
...
src/aig/gia/giaAbsGla.c
View file @
d257fce8
...
@@ -1537,20 +1537,17 @@ void Gla_ManAbsPrintFrame( Gla_Man_t * p, int nCoreSize, int nFrames, int nConfl
...
@@ -1537,20 +1537,17 @@ void Gla_ManAbsPrintFrame( Gla_Man_t * p, int nCoreSize, int nFrames, int nConfl
}
}
void
Gla_ManReportMemory
(
Gla_Man_t
*
p
)
void
Gla_ManReportMemory
(
Gla_Man_t
*
p
)
{
{
extern
void
Ga2_ManDumpStats
(
Gia_Man_t
*
pGia
,
Gia_ParVta_t
*
pPars
,
sat_solver2
*
pSat
,
int
iFrame
,
int
fUseN
);
Gla_Obj_t
*
pGla
;
Gla_Obj_t
*
pGla
;
// int i;
double
memTot
=
0
;
double
memTot
=
0
;
double
memAig
=
Gia_ManObjNum
(
p
->
pGia
)
*
sizeof
(
Gia_Obj_t
);
double
memAig
=
Gia_ManObjNum
(
p
->
pGia
)
*
sizeof
(
Gia_Obj_t
);
double
memSat
=
sat_solver2_memory
(
p
->
pSat
,
1
);
double
memSat
=
sat_solver2_memory
(
p
->
pSat
,
1
);
double
memPro
=
sat_solver2_memory_proof
(
p
->
pSat
);
double
memPro
=
sat_solver2_memory_proof
(
p
->
pSat
);
double
memMap
=
p
->
nObjs
*
sizeof
(
Gla_Obj_t
)
+
Gia_ManObjNum
(
p
->
pGia
)
*
sizeof
(
int
);
double
memMap
=
p
->
nObjs
*
sizeof
(
Gla_Obj_t
)
+
Gia_ManObjNum
(
p
->
pGia
)
*
sizeof
(
int
);
// double memRef = Gia_ManObjNum(p->pGia) * sizeof(Vec_Int_t);
double
memRef
=
Rnm_ManMemoryUsage
(
p
->
pRnm
);
double
memRef
=
Rnm_ManMemoryUsage
(
p
->
pRnm
);
double
memOth
=
sizeof
(
Gla_Man_t
);
double
memOth
=
sizeof
(
Gla_Man_t
);
for
(
pGla
=
p
->
pObjs
;
pGla
<
p
->
pObjs
+
p
->
nObjs
;
pGla
++
)
for
(
pGla
=
p
->
pObjs
;
pGla
<
p
->
pObjs
+
p
->
nObjs
;
pGla
++
)
memMap
+=
Vec_IntCap
(
&
pGla
->
vFrames
)
*
sizeof
(
int
);
memMap
+=
Vec_IntCap
(
&
pGla
->
vFrames
)
*
sizeof
(
int
);
// for ( i = 0; i < Gia_ManObjNum(p->pGia); i++ )
// memRef += Vec_IntCap(&p->pvRefis[i]) * sizeof(int);
memOth
+=
Vec_IntCap
(
p
->
vAddedNew
)
*
sizeof
(
int
);
memOth
+=
Vec_IntCap
(
p
->
vAddedNew
)
*
sizeof
(
int
);
memOth
+=
Vec_IntCap
(
p
->
vTemp
)
*
sizeof
(
int
);
memOth
+=
Vec_IntCap
(
p
->
vTemp
)
*
sizeof
(
int
);
memOth
+=
Vec_IntCap
(
p
->
vAbs
)
*
sizeof
(
int
);
memOth
+=
Vec_IntCap
(
p
->
vAbs
)
*
sizeof
(
int
);
...
@@ -1562,6 +1559,7 @@ void Gla_ManReportMemory( Gla_Man_t * p )
...
@@ -1562,6 +1559,7 @@ void Gla_ManReportMemory( Gla_Man_t * p )
ABC_PRMP
(
"Memory: Refine "
,
memRef
,
memTot
);
ABC_PRMP
(
"Memory: Refine "
,
memRef
,
memTot
);
ABC_PRMP
(
"Memory: Other "
,
memOth
,
memTot
);
ABC_PRMP
(
"Memory: Other "
,
memOth
,
memTot
);
ABC_PRMP
(
"Memory: TOTAL "
,
memTot
,
memTot
);
ABC_PRMP
(
"Memory: TOTAL "
,
memTot
,
memTot
);
Ga2_ManDumpStats
(
p
->
pGia
,
p
->
pPars
,
p
->
pSat
,
p
->
pPars
->
iFrame
,
1
);
}
}
...
...
src/aig/gia/giaAbsGla2.c
View file @
d257fce8
...
@@ -408,6 +408,29 @@ Ga2_Man_t * Ga2_ManStart( Gia_Man_t * pGia, Gia_ParVta_t * pPars )
...
@@ -408,6 +408,29 @@ Ga2_Man_t * Ga2_ManStart( Gia_Man_t * pGia, Gia_ParVta_t * pPars )
p
->
pTable
=
ABC_CALLOC
(
int
,
6
*
p
->
nTable
);
p
->
pTable
=
ABC_CALLOC
(
int
,
6
*
p
->
nTable
);
return
p
;
return
p
;
}
}
void
Ga2_ManDumpStats
(
Gia_Man_t
*
pGia
,
Gia_ParVta_t
*
pPars
,
sat_solver2
*
pSat
,
int
iFrame
,
int
fUseN
)
{
FILE
*
pFile
;
char
pFileName
[
32
];
sprintf
(
pFileName
,
"stats_gla%s%s.txt"
,
fUseN
?
"n"
:
""
,
pPars
->
fUseFullProof
?
"p"
:
""
);
pFile
=
fopen
(
pFileName
,
"wb+"
);
fprintf
(
pFile
,
"%s pi=%d ff=%d and=%d mem=%d bmc=%d"
,
pGia
->
pName
,
Gia_ManPiNum
(
pGia
),
Gia_ManRegNum
(
pGia
),
Gia_ManAndNum
(
pGia
),
(
int
)(
1
+
sat_solver2_memory_proof
(
pSat
)
/
(
1
<<
20
)),
iFrame
);
if
(
pGia
->
vGateClasses
)
fprintf
(
pFile
,
" ff=%d and=%d"
,
Gia_GlaCountFlops
(
pGia
,
pGia
->
vGateClasses
),
Gia_GlaCountNodes
(
pGia
,
pGia
->
vGateClasses
)
);
fprintf
(
pFile
,
"
\n
"
);
fclose
(
pFile
);
}
void
Ga2_ManReportMemory
(
Ga2_Man_t
*
p
)
void
Ga2_ManReportMemory
(
Ga2_Man_t
*
p
)
{
{
double
memTot
=
0
;
double
memTot
=
0
;
...
@@ -435,6 +458,7 @@ void Ga2_ManReportMemory( Ga2_Man_t * p )
...
@@ -435,6 +458,7 @@ void Ga2_ManReportMemory( Ga2_Man_t * p )
ABC_PRMP
(
"Memory: Hash "
,
memHash
,
memTot
);
ABC_PRMP
(
"Memory: Hash "
,
memHash
,
memTot
);
ABC_PRMP
(
"Memory: Other "
,
memOth
,
memTot
);
ABC_PRMP
(
"Memory: Other "
,
memOth
,
memTot
);
ABC_PRMP
(
"Memory: TOTAL "
,
memTot
,
memTot
);
ABC_PRMP
(
"Memory: TOTAL "
,
memTot
,
memTot
);
Ga2_ManDumpStats
(
p
->
pGia
,
p
->
pPars
,
p
->
pSat
,
p
->
pPars
->
iFrameProved
,
0
);
}
}
void
Ga2_ManStop
(
Ga2_Man_t
*
p
)
void
Ga2_ManStop
(
Ga2_Man_t
*
p
)
{
{
...
@@ -1477,7 +1501,7 @@ int Ga2_ManPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
...
@@ -1477,7 +1501,7 @@ int Ga2_ManPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
Vec_Int_t
*
vCore
,
*
vPPis
;
Vec_Int_t
*
vCore
,
*
vPPis
;
clock_t
clk2
,
clk
=
clock
();
clock_t
clk2
,
clk
=
clock
();
int
Status
=
l_Undef
,
RetValue
=
-
1
,
fOneIsSent
=
0
;
int
Status
=
l_Undef
,
RetValue
=
-
1
,
fOneIsSent
=
0
;
int
i
,
c
,
f
,
Lit
,
iFrameProved
=
-
1
;
int
i
,
c
,
f
,
Lit
;
// check trivial case
// check trivial case
assert
(
Gia_ManPoNum
(
pAig
)
==
1
);
assert
(
Gia_ManPoNum
(
pAig
)
==
1
);
ABC_FREE
(
pAig
->
pCexSeq
);
ABC_FREE
(
pAig
->
pCexSeq
);
...
@@ -1543,7 +1567,7 @@ int Ga2_ManPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
...
@@ -1543,7 +1567,7 @@ int Ga2_ManPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
// add static clauses to this timeframe
// add static clauses to this timeframe
Ga2_ManAddAbsClauses
(
p
,
f
);
Ga2_ManAddAbsClauses
(
p
,
f
);
// skip checking if skipcheck is enabled (&gla -s)
// skip checking if skipcheck is enabled (&gla -s)
if
(
p
->
pPars
->
fUseSkip
&&
f
<=
iFrameProved
)
if
(
p
->
pPars
->
fUseSkip
&&
f
<=
p
->
pPars
->
iFrameProved
)
continue
;
continue
;
// skip checking if we need to skip several starting frames (&gla -S <num>)
// skip checking if we need to skip several starting frames (&gla -S <num>)
if
(
p
->
pPars
->
nFramesStart
&&
f
<=
p
->
pPars
->
nFramesStart
)
if
(
p
->
pPars
->
nFramesStart
&&
f
<=
p
->
pPars
->
nFramesStart
)
...
@@ -1632,11 +1656,11 @@ int Ga2_ManPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
...
@@ -1632,11 +1656,11 @@ int Ga2_ManPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
goto
finish
;
goto
finish
;
if
(
c
==
0
)
if
(
c
==
0
)
{
{
if
(
f
>
iFrameProved
)
if
(
f
>
p
->
pPars
->
iFrameProved
)
p
->
pPars
->
nFramesNoChange
++
;
p
->
pPars
->
nFramesNoChange
++
;
break
;
break
;
}
}
if
(
f
>
iFrameProved
)
if
(
f
>
p
->
pPars
->
iFrameProved
)
p
->
pPars
->
nFramesNoChange
=
0
;
p
->
pPars
->
nFramesNoChange
=
0
;
// derive the core
// derive the core
...
@@ -1695,8 +1719,8 @@ int Ga2_ManPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
...
@@ -1695,8 +1719,8 @@ int Ga2_ManPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
break
;
break
;
}
}
// remember the last proved frame
// remember the last proved frame
if
(
iFrameProved
<
f
)
if
(
p
->
pPars
->
iFrameProved
<
f
)
iFrameProved
=
f
;
p
->
pPars
->
iFrameProved
=
f
;
// print statistics
// print statistics
if
(
pPars
->
fVerbose
)
if
(
pPars
->
fVerbose
)
Ga2_ManAbsPrintFrame
(
p
,
f
,
sat_solver2_nconflicts
(
p
->
pSat
)
-
nConflsBeg
,
c
,
clock
()
-
clk
,
1
);
Ga2_ManAbsPrintFrame
(
p
,
f
,
sat_solver2_nconflicts
(
p
->
pSat
)
-
nConflsBeg
,
c
,
clock
()
-
clk
,
1
);
...
@@ -1761,18 +1785,18 @@ finish:
...
@@ -1761,18 +1785,18 @@ finish:
if
(
p
->
pPars
->
fVerbose
)
if
(
p
->
pPars
->
fVerbose
)
Abc_Print
(
1
,
"
\n
"
);
Abc_Print
(
1
,
"
\n
"
);
if
(
p
->
pPars
->
nTimeOut
&&
clock
()
>=
p
->
pSat
->
nRuntimeLimit
)
if
(
p
->
pPars
->
nTimeOut
&&
clock
()
>=
p
->
pSat
->
nRuntimeLimit
)
Abc_Print
(
1
,
"Timeout %d sec in frame %d with a %d-stable abstraction. "
,
p
->
pPars
->
nTimeOut
,
iFrameProved
+
1
,
p
->
pPars
->
nFramesNoChange
);
Abc_Print
(
1
,
"Timeout %d sec in frame %d with a %d-stable abstraction. "
,
p
->
pPars
->
nTimeOut
,
p
->
pPars
->
iFrameProved
+
1
,
p
->
pPars
->
nFramesNoChange
);
else
if
(
pPars
->
nConfLimit
&&
sat_solver2_nconflicts
(
p
->
pSat
)
>=
pPars
->
nConfLimit
)
else
if
(
pPars
->
nConfLimit
&&
sat_solver2_nconflicts
(
p
->
pSat
)
>=
pPars
->
nConfLimit
)
Abc_Print
(
1
,
"Exceeded %d conflicts in frame %d with a %d-stable abstraction. "
,
pPars
->
nConfLimit
,
iFrameProved
+
1
,
p
->
pPars
->
nFramesNoChange
);
Abc_Print
(
1
,
"Exceeded %d conflicts in frame %d with a %d-stable abstraction. "
,
pPars
->
nConfLimit
,
p
->
pPars
->
iFrameProved
+
1
,
p
->
pPars
->
nFramesNoChange
);
else
if
(
Vec_IntSize
(
p
->
vAbs
)
>=
p
->
nMarked
*
(
100
-
pPars
->
nRatioMin
)
/
100
)
else
if
(
Vec_IntSize
(
p
->
vAbs
)
>=
p
->
nMarked
*
(
100
-
pPars
->
nRatioMin
)
/
100
)
Abc_Print
(
1
,
"The ratio of abstracted objects is less than %d %% in frame %d. "
,
pPars
->
nRatioMin
,
iFrameProved
+
1
);
Abc_Print
(
1
,
"The ratio of abstracted objects is less than %d %% in frame %d. "
,
pPars
->
nRatioMin
,
p
->
pPars
->
iFrameProved
+
1
);
else
else
Abc_Print
(
1
,
"Abstraction stopped for unknown reason in frame %d. "
,
iFrameProved
+
1
);
Abc_Print
(
1
,
"Abstraction stopped for unknown reason in frame %d. "
,
p
->
pPars
->
iFrameProved
+
1
);
}
}
else
else
{
{
p
->
pPars
->
iFrame
=
iFrameProved
;
p
->
pPars
->
iFrame
=
p
->
pPars
->
iFrameProved
;
Abc_Print
(
1
,
"GLA completed %d frames and produced a %d-stable abstraction. "
,
iFrameProved
+
1
,
p
->
pPars
->
nFramesNoChange
);
Abc_Print
(
1
,
"GLA completed %d frames and produced a %d-stable abstraction. "
,
p
->
pPars
->
iFrameProved
+
1
,
p
->
pPars
->
nFramesNoChange
);
}
}
}
}
else
else
...
...
src/aig/gia/giaAbsVta.c
View file @
d257fce8
...
@@ -164,6 +164,7 @@ void Gia_VtaSetDefaultParams( Gia_ParVta_t * p )
...
@@ -164,6 +164,7 @@ void Gia_VtaSetDefaultParams( Gia_ParVta_t * p )
p
->
fPropFanout
=
1
;
// propagate fanouts during refinement
p
->
fPropFanout
=
1
;
// propagate fanouts during refinement
p
->
fVerbose
=
0
;
// verbose flag
p
->
fVerbose
=
0
;
// verbose flag
p
->
iFrame
=
-
1
;
// the number of frames covered
p
->
iFrame
=
-
1
;
// the number of frames covered
p
->
iFrameProved
=
-
1
;
// the number of frames proved
}
}
/**Function*************************************************************
/**Function*************************************************************
...
...
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