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
8b24f6bf
Commit
8b24f6bf
authored
May 18, 2008
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Version abc80518
parent
4d37d4d9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
161 additions
and
115 deletions
+161
-115
abc.dsp
+20
-20
src/aig/aig/aig.h
+1
-0
src/aig/aig/aigDup.c
+9
-15
src/aig/aig/aigFrames.c
+1
-0
src/aig/aig/aigObj.c
+3
-2
src/aig/aig/aigRepr.c
+1
-1
src/aig/aig/aigRet.c
+1
-1
src/aig/aig/aigScl.c
+1
-1
src/aig/dar/darBalance.c
+4
-3
src/aig/fra/fraSec.c
+1
-1
src/aig/ioa/ioaReadAig.c
+26
-25
src/aig/ntl/ntlExtract.c
+1
-1
src/aig/ntl/ntlFraig.c
+4
-4
src/aig/saig/saig.h
+2
-2
src/aig/saig/saigHaig.c
+0
-0
src/aig/saig/saigRetStep.c
+15
-3
src/base/abci/abc.c
+61
-31
src/base/abci/abcDar.c
+10
-5
src/map/pcm/module.make
+0
-0
src/map/ply/module.make
+0
-0
No files found.
abc.dsp
View file @
8b24f6bf
...
...
@@ -3245,6 +3245,26 @@ SOURCE=.\src\aig\mfx\mfxStrash.c
SOURCE=.\src\aig\mfx\mfxWin.c
# End Source File
# End Group
# Begin Group "bbr"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\aig\bbr\bbr.h
# End Source File
# Begin Source File
SOURCE=.\src\aig\bbr\bbrImage.c
# End Source File
# Begin Source File
SOURCE=.\src\aig\bbr\bbrNtbdd.c
# End Source File
# Begin Source File
SOURCE=.\src\aig\bbr\bbrReach.c
# End Source File
# End Group
# Begin Group "saig"
# PROP Default_Filter ""
...
...
@@ -3297,26 +3317,6 @@ SOURCE=.\src\aig\saig\saigScl.c
SOURCE=.\src\aig\saig\saigTrans.c
# End Source File
# End Group
# Begin Group "bbr"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\aig\bbr\bbr.h
# End Source File
# Begin Source File
SOURCE=.\src\aig\bbr\bbrImage.c
# End Source File
# Begin Source File
SOURCE=.\src\aig\bbr\bbrNtbdd.c
# End Source File
# Begin Source File
SOURCE=.\src\aig\bbr\bbrReach.c
# End Source File
# End Group
# End Group
# End Group
# Begin Group "Header Files"
...
...
src/aig/aig/aig.h
View file @
8b24f6bf
...
...
@@ -152,6 +152,7 @@ struct Aig_Man_t_
Vec_Ptr_t
*
vOnehots
;
Aig_Man_t
*
pManHaig
;
int
fCreatePios
;
Vec_Int_t
*
vEquPairs
;
// timing statistics
int
time1
;
int
time2
;
...
...
src/aig/aig/aigDup.c
View file @
8b24f6bf
...
...
@@ -51,9 +51,6 @@ Aig_Man_t * Aig_ManDupSimple( Aig_Man_t * p )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
pNew
->
nTruePis
=
p
->
nTruePis
;
pNew
->
nTruePos
=
p
->
nTruePos
;
pNew
->
nAsserts
=
p
->
nAsserts
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
...
...
@@ -90,6 +87,7 @@ Aig_Man_t * Aig_ManDupSimple( Aig_Man_t * p )
pObj
->
pData
=
pObjNew
;
}
assert
(
Aig_ManBufNum
(
p
)
!=
0
||
Aig_ManNodeNum
(
p
)
==
Aig_ManNodeNum
(
pNew
)
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// pass the HAIG manager
if
(
p
->
pManHaig
!=
NULL
)
{
...
...
@@ -152,9 +150,6 @@ Aig_Man_t * Aig_ManDupSimpleDfs( Aig_Man_t * p )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
pNew
->
nTruePis
=
p
->
nTruePis
;
pNew
->
nTruePos
=
p
->
nTruePos
;
pNew
->
nAsserts
=
p
->
nAsserts
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
...
...
@@ -184,6 +179,7 @@ Aig_Man_t * Aig_ManDupSimpleDfs( Aig_Man_t * p )
pObj
->
pData
=
pObjNew
;
}
assert
(
Aig_ManBufNum
(
p
)
!=
0
||
Aig_ManNodeNum
(
p
)
==
Aig_ManNodeNum
(
pNew
)
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// pass the HAIG manager
if
(
p
->
pManHaig
!=
NULL
)
{
...
...
@@ -216,9 +212,6 @@ Aig_Man_t * Aig_ManDupOrdered( Aig_Man_t * p )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
pNew
->
nTruePis
=
p
->
nTruePis
;
pNew
->
nTruePos
=
p
->
nTruePos
;
pNew
->
nAsserts
=
p
->
nAsserts
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
...
...
@@ -256,6 +249,7 @@ Aig_Man_t * Aig_ManDupOrdered( Aig_Man_t * p )
assert
(
Aig_ManBufNum
(
p
)
!=
0
||
Aig_ManNodeNum
(
p
)
==
Aig_ManNodeNum
(
pNew
)
);
if
(
(
nNodes
=
Aig_ManCleanup
(
pNew
))
)
printf
(
"Aig_ManDupOrdered(): Cleanup after AIG duplication removed %d nodes.
\n
"
,
nNodes
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// duplicate the timing manager
if
(
p
->
pManTime
)
pNew
->
pManTime
=
Tim_ManDup
(
p
->
pManTime
,
0
);
...
...
@@ -292,7 +286,6 @@ Aig_Man_t * Aig_ManDupExor( Aig_Man_t * p )
pNew
->
fCatchExor
=
1
;
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
pNew
->
nAsserts
=
p
->
nAsserts
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
...
...
@@ -328,6 +321,7 @@ Aig_Man_t * Aig_ManDupExor( Aig_Man_t * p )
pObj
->
pData
=
pObjNew
;
}
Aig_ManCleanup
(
pNew
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// duplicate the timing manager
if
(
p
->
pManTime
)
pNew
->
pManTime
=
Tim_ManDup
(
p
->
pManTime
,
0
);
...
...
@@ -394,7 +388,6 @@ Aig_Man_t * Aig_ManDupDfs( Aig_Man_t * p )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
pNew
->
nAsserts
=
p
->
nAsserts
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
...
...
@@ -435,6 +428,7 @@ Aig_Man_t * Aig_ManDupDfs( Aig_Man_t * p )
assert
(
p
->
pEquivs
!=
NULL
||
Aig_ManBufNum
(
p
)
!=
0
||
Aig_ManNodeNum
(
p
)
==
Aig_ManNodeNum
(
pNew
)
);
if
(
p
->
pEquivs
==
NULL
&&
p
->
pReprs
==
NULL
&&
(
nNodes
=
Aig_ManCleanup
(
pNew
))
)
printf
(
"Aig_ManDupDfs(): Cleanup after AIG duplication removed %d nodes.
\n
"
,
nNodes
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// duplicate the timing manager
if
(
p
->
pManTime
)
pNew
->
pManTime
=
Tim_ManDup
(
p
->
pManTime
,
0
);
...
...
@@ -541,7 +535,6 @@ Aig_Man_t * Aig_ManDupDfsGuided( Aig_Man_t * p, Aig_Man_t * pGuide )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
pNew
->
nAsserts
=
p
->
nAsserts
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
...
...
@@ -584,6 +577,7 @@ Aig_Man_t * Aig_ManDupDfsGuided( Aig_Man_t * p, Aig_Man_t * pGuide )
// assert( Aig_ManBufNum(p) != 0 || Aig_ManNodeNum(p) == Aig_ManNodeNum(pNew) );
if
(
p
->
pEquivs
==
NULL
&&
p
->
pReprs
==
NULL
&&
(
nNodes
=
Aig_ManCleanup
(
pNew
))
)
printf
(
"Aig_ManDupDfs(): Cleanup after AIG duplication removed %d nodes.
\n
"
,
nNodes
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// duplicate the timing manager
if
(
p
->
pManTime
)
pNew
->
pManTime
=
Tim_ManDup
(
p
->
pManTime
,
0
);
...
...
@@ -614,7 +608,6 @@ Aig_Man_t * Aig_ManDupLevelized( Aig_Man_t * p )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
pNew
->
nAsserts
=
p
->
nAsserts
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
...
...
@@ -658,6 +651,7 @@ Aig_Man_t * Aig_ManDupLevelized( Aig_Man_t * p )
assert
(
Aig_ManBufNum
(
p
)
!=
0
||
Aig_ManNodeNum
(
p
)
==
Aig_ManNodeNum
(
pNew
)
);
// if ( (nNodes = Aig_ManCleanup( pNew )) )
// printf( "Aig_ManDupLevelized(): Cleanup after AIG duplication removed %d nodes.\n", nNodes );
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// duplicate the timing manager
if
(
p
->
pManTime
)
pNew
->
pManTime
=
Tim_ManDup
(
p
->
pManTime
,
0
);
...
...
@@ -745,7 +739,6 @@ Aig_Man_t * Aig_ManDupRepres( Aig_Man_t * p )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
// map the const and primary inputs
...
...
@@ -766,6 +759,7 @@ Aig_Man_t * Aig_ManDupRepres( Aig_Man_t * p )
else
assert
(
0
);
}
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// check the new manager
if
(
!
Aig_ManCheck
(
pNew
)
)
printf
(
"Aig_ManDupRepres: Check has failed.
\n
"
);
...
...
@@ -818,7 +812,6 @@ Aig_Man_t * Aig_ManDupRepresDfs( Aig_Man_t * p )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
// map the const and primary inputs
...
...
@@ -839,6 +832,7 @@ Aig_Man_t * Aig_ManDupRepresDfs( Aig_Man_t * p )
else
assert
(
0
);
}
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// check the new manager
if
(
!
Aig_ManCheck
(
pNew
)
)
printf
(
"Aig_ManDupRepresDfs: Check has failed.
\n
"
);
...
...
src/aig/aig/aigFrames.c
View file @
8b24f6bf
...
...
@@ -117,6 +117,7 @@ Aig_Man_t * Aig_ManFrames( Aig_Man_t * pAig, int nFs, int fInit, int fOuts, int
pObjNew
=
Aig_ObjCreatePo
(
pFrames
,
Aig_ObjChild0Frames
(
pObjMap
,
nFs
,
pObj
,
fEnlarge
?
0
:
nFs
-
1
)
);
Aig_ObjSetFrames
(
pObjMap
,
nFs
,
pObj
,
nFs
-
1
,
pObjNew
);
}
Aig_ManSetRegNum
(
pFrames
,
Aig_ManRegNum
(
pAig
)
);
}
Aig_ManCleanup
(
pFrames
);
// return the new manager
...
...
src/aig/aig/aigObj.c
View file @
8b24f6bf
...
...
@@ -473,9 +473,10 @@ void Aig_ObjReplace( Aig_Man_t * p, Aig_Obj_t * pObjOld, Aig_Obj_t * pObjNew, in
// printf( "Setting HAIG node %d equivalent to HAIG node %d (over = %d).\n",
// pObjNewR->pHaig->Id, pObjOld->pHaig->Id, pObjNewR->pHaig->pHaig != NULL );
assert
(
pObjNewR
->
pHaig
!=
NULL
);
// assert( pObjNewR->pHaig->pHaig == NULL );
assert
(
!
Aig_IsComplement
(
pObjNewR
->
pHaig
)
);
pObjNewR
->
pHaig
->
pHaig
=
pObjOld
->
pHaig
;
assert
(
p
->
pManHaig
->
vEquPairs
!=
NULL
);
Vec_IntPush
(
p
->
pManHaig
->
vEquPairs
,
pObjNewR
->
pHaig
->
Id
);
Vec_IntPush
(
p
->
pManHaig
->
vEquPairs
,
pObjOld
->
pHaig
->
Id
);
}
else
pObjOld
->
pHaig
=
pObjNewR
->
pHaig
?
pObjNewR
->
pHaig
:
pObjOld
->
pHaig
;
...
...
src/aig/aig/aigRepr.c
View file @
8b24f6bf
...
...
@@ -270,7 +270,6 @@ Aig_Man_t * Aig_ManDupRepr( Aig_Man_t * p, int fOrdered )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
// map the const and primary inputs
...
...
@@ -294,6 +293,7 @@ Aig_Man_t * Aig_ManDupRepr( Aig_Man_t * p, int fOrdered )
// transfer the POs
Aig_ManForEachPo
(
p
,
pObj
,
i
)
Aig_ObjCreatePo
(
pNew
,
Aig_ObjChild0Repr
(
p
,
pObj
)
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// check the new manager
if
(
!
Aig_ManCheck
(
pNew
)
)
printf
(
"Aig_ManDupRepr: Check has failed.
\n
"
);
...
...
src/aig/aig/aigRet.c
View file @
8b24f6bf
...
...
@@ -809,7 +809,7 @@ Aig_Man_t * Rtm_ManToAig( Rtm_Man_t * pRtm )
// assert( Aig_Regular(pObjNew)->nRefs > 0 );
}
free
(
pLatches
);
pNew
->
nRegs
=
nLatches
;
Aig_ManSetRegNum
(
pNew
,
nLatches
)
;
// remove useless nodes
Aig_ManCleanup
(
pNew
);
if
(
!
Aig_ManCheck
(
pNew
)
)
...
...
src/aig/aig/aigScl.c
View file @
8b24f6bf
...
...
@@ -49,7 +49,6 @@ Aig_Man_t * Aig_ManRemap( Aig_Man_t * p, Vec_Ptr_t * vMap )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
pNew
->
nAsserts
=
p
->
nAsserts
;
assert
(
p
->
vFlopNums
==
NULL
||
Vec_IntSize
(
p
->
vFlopNums
)
==
p
->
nRegs
);
if
(
p
->
vFlopNums
)
...
...
@@ -101,6 +100,7 @@ Aig_Man_t * Aig_ManRemap( Aig_Man_t * p, Vec_Ptr_t * vMap )
Aig_ManForEachPo
(
p
,
pObj
,
i
)
Aig_ObjCreatePo
(
pNew
,
Aig_ObjChild0Copy
(
pObj
)
);
assert
(
Aig_ManNodeNum
(
p
)
>=
Aig_ManNodeNum
(
pNew
)
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// check the resulting network
if
(
!
Aig_ManCheck
(
pNew
)
)
printf
(
"Aig_ManRemap(): The check has failed.
\n
"
);
...
...
src/aig/dar/darBalance.c
View file @
8b24f6bf
...
...
@@ -359,9 +359,10 @@ Aig_Obj_t * Dar_Balance_rec( Aig_Man_t * pNew, Aig_Obj_t * pObjOld, Vec_Vec_t *
// printf( "Balancing HAIG node %d equivalent to HAIG node %d (over = %d).\n",
// pObjNewR->pHaig->Id, pObjOld->pHaig->Id, pObjNewR->pHaig->pHaig != NULL );
assert
(
pObjNewR
->
pHaig
!=
NULL
);
// assert( pObjNewR->pHaig->pHaig == NULL );
assert
(
!
Aig_IsComplement
(
pObjNewR
->
pHaig
)
);
pObjNewR
->
pHaig
->
pHaig
=
pObjOld
->
pHaig
;
assert
(
pNew
->
pManHaig
->
vEquPairs
!=
NULL
);
Vec_IntPush
(
pNew
->
pManHaig
->
vEquPairs
,
pObjNewR
->
pHaig
->
Id
);
Vec_IntPush
(
pNew
->
pManHaig
->
vEquPairs
,
pObjOld
->
pHaig
->
Id
);
}
else
Aig_Regular
(
pObjNew
)
->
pHaig
=
pObjOld
->
pHaig
;
...
...
@@ -390,7 +391,6 @@ Aig_Man_t * Dar_ManBalance( Aig_Man_t * p, int fUpdateLevel )
pNew
=
Aig_ManStart
(
Aig_ManObjNumMax
(
p
)
);
pNew
->
pName
=
Aig_UtilStrsav
(
p
->
pName
);
pNew
->
pSpec
=
Aig_UtilStrsav
(
p
->
pSpec
);
pNew
->
nRegs
=
p
->
nRegs
;
pNew
->
nAsserts
=
p
->
nAsserts
;
if
(
p
->
vFlopNums
)
pNew
->
vFlopNums
=
Vec_IntDup
(
p
->
vFlopNums
);
...
...
@@ -463,6 +463,7 @@ Aig_Man_t * Dar_ManBalance( Aig_Man_t * p, int fUpdateLevel )
Vec_VecFree
(
vStore
);
// remove dangling nodes
Aig_ManCleanup
(
pNew
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
p
)
);
// check the resulting AIG
if
(
!
Aig_ManCheck
(
pNew
)
)
printf
(
"Dar_ManBalance(): The check has failed.
\n
"
);
...
...
src/aig/fra/fraSec.c
View file @
8b24f6bf
...
...
@@ -57,7 +57,7 @@ void Fra_SecSetDefaultParams( Fra_Sec_t * p )
p
->
fVeryVerbose
=
0
;
// enables very verbose reporting
p
->
TimeLimit
=
0
;
// enables the timeout
// internal parameters
p
->
fReportSolution
=
1
;
// enables specialized format for reporting solution
p
->
fReportSolution
=
0
;
// enables specialized format for reporting solution
}
/**Function*************************************************************
...
...
src/aig/ioa/ioaReadAig.c
View file @
8b24f6bf
...
...
@@ -104,7 +104,7 @@ Aig_Man_t * Ioa_ReadAiger( char * pFileName, int fCheck )
Vec_Int_t
*
vLits
=
NULL
;
Vec_Ptr_t
*
vNodes
,
*
vDrivers
;
//, * vTerms;
Aig_Obj_t
*
pObj
,
*
pNode0
,
*
pNode1
;
Aig_Man_t
*
p
Man
New
;
Aig_Man_t
*
pNew
;
int
nTotal
,
nInputs
,
nOutputs
,
nLatches
,
nAnds
,
nFileSize
,
i
;
//, iTerm, nDigits;
char
*
pContents
,
*
pDrivers
,
*
pSymbols
,
*
pCur
,
*
pName
;
//, * pType;
unsigned
uLit0
,
uLit1
,
uLit
;
...
...
@@ -143,39 +143,39 @@ Aig_Man_t * Ioa_ReadAiger( char * pFileName, int fCheck )
}
// allocate the empty AIG
p
Man
New
=
Aig_ManStart
(
nAnds
);
pNew
=
Aig_ManStart
(
nAnds
);
pName
=
Ioa_FileNameGeneric
(
pFileName
);
p
Man
New
->
pName
=
Aig_UtilStrsav
(
pName
);
// p
Man
New->pSpec = Ioa_UtilStrsav( pFileName );
pNew
->
pName
=
Aig_UtilStrsav
(
pName
);
// pNew->pSpec = Ioa_UtilStrsav( pFileName );
free
(
pName
);
// prepare the array of nodes
vNodes
=
Vec_PtrAlloc
(
1
+
nInputs
+
nLatches
+
nAnds
);
Vec_PtrPush
(
vNodes
,
Aig_ManConst0
(
p
Man
New
)
);
Vec_PtrPush
(
vNodes
,
Aig_ManConst0
(
pNew
)
);
// create the PIs
for
(
i
=
0
;
i
<
nInputs
+
nLatches
;
i
++
)
{
pObj
=
Aig_ObjCreatePi
(
p
Man
New
);
pObj
=
Aig_ObjCreatePi
(
pNew
);
Vec_PtrPush
(
vNodes
,
pObj
);
}
/*
// create the POs
for ( i = 0; i < nOutputs + nLatches; i++ )
{
pObj = Aig_ObjCreatePo(p
Man
New);
pObj = Aig_ObjCreatePo(pNew);
}
*/
// create the latches
p
Man
New
->
nRegs
=
nLatches
;
pNew
->
nRegs
=
nLatches
;
/*
nDigits = Ioa_Base10Log( nLatches );
for ( i = 0; i < nLatches; i++ )
{
pObj = Aig_ObjCreateLatch(p
Man
New);
pObj = Aig_ObjCreateLatch(pNew);
Aig_LatchSetInit0( pObj );
pNode0 = Aig_ObjCreateBi(p
Man
New);
pNode1 = Aig_ObjCreateBo(p
Man
New);
pNode0 = Aig_ObjCreateBi(pNew);
pNode1 = Aig_ObjCreateBo(pNew);
Aig_ObjAddFanin( pObj, pNode0 );
Aig_ObjAddFanin( pNode1, pObj );
Vec_PtrPush( vNodes, pNode1 );
...
...
@@ -211,7 +211,7 @@ Aig_Man_t * Ioa_ReadAiger( char * pFileName, int fCheck )
pNode0
=
Aig_NotCond
(
Vec_PtrEntry
(
vNodes
,
uLit0
>>
1
),
uLit0
&
1
);
pNode1
=
Aig_NotCond
(
Vec_PtrEntry
(
vNodes
,
uLit1
>>
1
),
uLit1
&
1
);
assert
(
Vec_PtrSize
(
vNodes
)
==
i
+
1
+
nInputs
+
nLatches
);
Vec_PtrPush
(
vNodes
,
Aig_And
(
p
Man
New
,
pNode0
,
pNode1
)
);
Vec_PtrPush
(
vNodes
,
Aig_And
(
pNew
,
pNode0
,
pNode1
)
);
}
// Bar_ProgressStop( pProgress );
...
...
@@ -259,9 +259,9 @@ Aig_Man_t * Ioa_ReadAiger( char * pFileName, int fCheck )
// create the POs
for
(
i
=
0
;
i
<
nOutputs
;
i
++
)
Aig_ObjCreatePo
(
p
Man
New
,
Vec_PtrEntry
(
vDrivers
,
nLatches
+
i
)
);
Aig_ObjCreatePo
(
pNew
,
Vec_PtrEntry
(
vDrivers
,
nLatches
+
i
)
);
for
(
i
=
0
;
i
<
nLatches
;
i
++
)
Aig_ObjCreatePo
(
p
Man
New
,
Vec_PtrEntry
(
vDrivers
,
i
)
);
Aig_ObjCreatePo
(
pNew
,
Vec_PtrEntry
(
vDrivers
,
i
)
);
Vec_PtrFree
(
vDrivers
);
/*
...
...
@@ -275,11 +275,11 @@ Aig_Man_t * Ioa_ReadAiger( char * pFileName, int fCheck )
// get the terminal type
pType = pCur;
if ( *pCur == 'i' )
vTerms = p
Man
New->vPis;
vTerms = pNew->vPis;
else if ( *pCur == 'l' )
vTerms = p
Man
New->vBoxes;
vTerms = pNew->vBoxes;
else if ( *pCur == 'o' )
vTerms = p
Man
New->vPos;
vTerms = pNew->vPos;
else
{
fprintf( stdout, "Wrong terminal type.\n" );
...
...
@@ -311,13 +311,13 @@ Aig_Man_t * Ioa_ReadAiger( char * pFileName, int fCheck )
}
// assign the remaining names
Aig_ManForEachPi( p
Man
New, pObj, i )
Aig_ManForEachPi( pNew, pObj, i )
{
if ( pObj->pCopy ) continue;
Aig_ObjAssignName( pObj, Aig_ObjName(pObj), NULL );
Counter++;
}
Aig_ManForEachLatchOutput( p
Man
New, pObj, i )
Aig_ManForEachLatchOutput( pNew, pObj, i )
{
if ( pObj->pCopy ) continue;
Aig_ObjAssignName( pObj, Aig_ObjName(pObj), NULL );
...
...
@@ -325,7 +325,7 @@ Aig_Man_t * Ioa_ReadAiger( char * pFileName, int fCheck )
Aig_ObjAssignName( Aig_ObjFanin0(Aig_ObjFanin0(pObj)), Aig_ObjName(pObj), "_in" );
Counter++;
}
Aig_ManForEachPo( p
Man
New, pObj, i )
Aig_ManForEachPo( pNew, pObj, i )
{
if ( pObj->pCopy ) continue;
Aig_ObjAssignName( pObj, Aig_ObjName(pObj), NULL );
...
...
@@ -337,7 +337,7 @@ Aig_Man_t * Ioa_ReadAiger( char * pFileName, int fCheck )
else
{
// printf( "Ioa_ReadAiger(): I/O/register names are not given. Generating short names.\n" );
Aig_ManShortNames( p
Man
New );
Aig_ManShortNames( pNew );
}
*/
...
...
@@ -346,16 +346,17 @@ Aig_Man_t * Ioa_ReadAiger( char * pFileName, int fCheck )
Vec_PtrFree
(
vNodes
);
// remove the extra nodes
Aig_ManCleanup
(
pManNew
);
Aig_ManCleanup
(
pNew
);
Aig_ManSetRegNum
(
pNew
,
Aig_ManRegNum
(
pNew
)
);
// check the result
if
(
fCheck
&&
!
Aig_ManCheck
(
p
Man
New
)
)
if
(
fCheck
&&
!
Aig_ManCheck
(
pNew
)
)
{
printf
(
"Ioa_ReadAiger: The network check has failed.
\n
"
);
Aig_ManStop
(
p
Man
New
);
Aig_ManStop
(
pNew
);
return
NULL
;
}
return
p
Man
New
;
return
pNew
;
}
...
...
src/aig/ntl/ntlExtract.c
View file @
8b24f6bf
...
...
@@ -715,7 +715,7 @@ Aig_Man_t * Ntl_ManCollapseForSec( Ntl_Man_t * p1, Ntl_Man_t * p2 )
pMiter
=
Aig_Miter
(
pAig
,
vPairs
);
Vec_PtrFree
(
vPairs
);
Aig_ObjPatchFanin0
(
pAig
,
Aig_ManPo
(
pAig
,
0
),
pMiter
);
pAig
->
nRegs
=
Ntl_ModelLatchNum
(
pRoot1
)
+
Ntl_ModelLatchNum
(
pRoot2
);
Aig_ManSetRegNum
(
pAig
,
Ntl_ModelLatchNum
(
pRoot1
)
+
Ntl_ModelLatchNum
(
pRoot2
)
);
Aig_ManCleanup
(
pAig
);
return
pAig
;
}
...
...
src/aig/ntl/ntlFraig.c
View file @
8b24f6bf
...
...
@@ -312,7 +312,7 @@ Ntl_Man_t * Ntl_ManScl( Ntl_Man_t * p, int fLatchConst, int fLatchEqual, int fVe
pAigCol
=
Ntl_ManCollapse
(
pNew
,
1
);
// perform SCL for the given design
pAigCol
->
nRegs
=
Ntl_ModelLatchNum
(
Ntl_ManRootModel
(
p
)
);
Aig_ManSetRegNum
(
pAigCol
,
Ntl_ModelLatchNum
(
Ntl_ManRootModel
(
p
))
);
pTemp
=
Aig_ManScl
(
pAigCol
,
fLatchConst
,
fLatchEqual
,
fVerbose
);
Aig_ManStop
(
pTemp
);
...
...
@@ -346,7 +346,7 @@ Ntl_Man_t * Ntl_ManLcorr( Ntl_Man_t * p, int nConfMax, int fVerbose )
pAigCol
=
Ntl_ManCollapse
(
pNew
,
1
);
// perform SCL for the given design
pAigCol
->
nRegs
=
Ntl_ModelLatchNum
(
Ntl_ManRootModel
(
p
)
);
Aig_ManSetRegNum
(
pAigCol
,
Ntl_ModelLatchNum
(
Ntl_ManRootModel
(
p
))
);
pTemp
=
Fra_FraigLatchCorrespondence
(
pAigCol
,
0
,
nConfMax
,
0
,
fVerbose
,
NULL
,
0
);
Aig_ManStop
(
pTemp
);
...
...
@@ -380,7 +380,7 @@ Ntl_Man_t * Ntl_ManSsw( Ntl_Man_t * p, Fra_Ssw_t * pPars )
pAigCol
=
Ntl_ManCollapse
(
pNew
,
1
);
// perform SCL for the given design
pAigCol
->
nRegs
=
Ntl_ModelLatchNum
(
Ntl_ManRootModel
(
p
)
);
Aig_ManSetRegNum
(
pAigCol
,
Ntl_ModelLatchNum
(
Ntl_ManRootModel
(
p
))
);
pTemp
=
Fra_FraigInduction
(
pAigCol
,
pPars
);
Aig_ManStop
(
pTemp
);
...
...
@@ -555,7 +555,7 @@ Ntl_Man_t * Ntl_ManSsw2( Ntl_Man_t * p, Fra_Ssw_t * pPars )
Aig_Man_t
*
pAigRed
,
*
pAigCol
;
// collapse the AIG
pAigCol
=
Ntl_ManCollapse
(
p
,
1
);
pAigCol
->
nRegs
=
Ntl_ModelLatchNum
(
Ntl_ManRootModel
(
p
)
);
Aig_ManSetRegNum
(
pAigCol
,
Ntl_ModelLatchNum
(
Ntl_ManRootModel
(
p
))
);
// transform the collapsed AIG
pAigRed
=
Fra_FraigInduction
(
pAigCol
,
pPars
);
Aig_ManStop
(
pAigRed
);
...
...
src/aig/saig/saig.h
View file @
8b24f6bf
...
...
@@ -80,7 +80,7 @@ extern int Saig_ManBmcSimple( Aig_Man_t * pAig, int nFrames, int n
/*=== saigCone.c ==========================================================*/
extern
void
Saig_ManPrintCones
(
Aig_Man_t
*
p
);
/*=== saigHaig.c ==========================================================*/
extern
void
Saig_ManHaigRecord
(
Aig_Man_t
*
p
);
extern
Aig_Man_t
*
Saig_ManHaigRecord
(
Aig_Man_t
*
p
,
int
nIters
,
int
nSteps
,
int
fRetimingOnly
,
int
fAddBugs
,
int
fUseCnf
,
int
fVerbose
);
/*=== saigIoa.c ==========================================================*/
extern
void
Saig_ManDumpBlif
(
Aig_Man_t
*
p
,
char
*
pFileName
);
extern
Aig_Man_t
*
Saig_ManReadBlif
(
char
*
pFileName
);
...
...
@@ -94,7 +94,7 @@ extern Aig_Man_t * Saig_ManRetimeForward( Aig_Man_t * p, int nMaxIters, in
extern
Aig_Man_t
*
Saig_ManRetimeDupForward
(
Aig_Man_t
*
p
,
Vec_Ptr_t
*
vCut
);
extern
Aig_Man_t
*
Saig_ManRetimeMinArea
(
Aig_Man_t
*
p
,
int
nMaxIters
,
int
fForwardOnly
,
int
fBackwardOnly
,
int
fInitial
,
int
fVerbose
);
/*=== saigRetStep.c ==========================================================*/
extern
void
Saig_ManRetimeSteps
(
Aig_Man_t
*
p
,
int
nSteps
,
int
fForward
);
extern
int
Saig_ManRetimeSteps
(
Aig_Man_t
*
p
,
int
nSteps
,
int
fForward
,
int
fAddBugs
);
/*=== saigScl.c ==========================================================*/
extern
void
Saig_ManReportUselessRegisters
(
Aig_Man_t
*
pAig
);
/*=== saigTrans.c ==========================================================*/
...
...
src/aig/saig/saigHaig.c
View file @
8b24f6bf
This diff is collapsed.
Click to expand it.
src/aig/saig/saigRetStep.c
View file @
8b24f6bf
...
...
@@ -39,7 +39,7 @@
SeeAlso []
***********************************************************************/
Aig_Obj_t
*
Saig_ManRetimeNodeFwd
(
Aig_Man_t
*
p
,
Aig_Obj_t
*
pObj
)
Aig_Obj_t
*
Saig_ManRetimeNodeFwd
(
Aig_Man_t
*
p
,
Aig_Obj_t
*
pObj
,
int
fMakeBug
)
{
Aig_Obj_t
*
pFanin0
,
*
pFanin1
;
Aig_Obj_t
*
pInput0
,
*
pInput1
;
...
...
@@ -72,6 +72,12 @@ Aig_Obj_t * Saig_ManRetimeNodeFwd( Aig_Man_t * p, Aig_Obj_t * pObj )
// get the condition when the register should be complemetned
fCompl
=
Aig_ObjFaninC0
(
pObj
)
&&
Aig_ObjFaninC1
(
pObj
);
if
(
fMakeBug
)
{
printf
(
"Introducing bug during retiming.
\n
"
);
pInput1
=
Aig_Not
(
pInput1
);
}
// create new node
pObjNew
=
Aig_And
(
p
,
pInput0
,
pInput1
);
...
...
@@ -162,7 +168,7 @@ Aig_Obj_t * Saig_ManRetimeNodeBwd( Aig_Man_t * p, Aig_Obj_t * pObjLo )
SeeAlso []
***********************************************************************/
void
Saig_ManRetimeSteps
(
Aig_Man_t
*
p
,
int
nSteps
,
int
fForward
)
int
Saig_ManRetimeSteps
(
Aig_Man_t
*
p
,
int
nSteps
,
int
fForward
,
int
fAddBugs
)
{
Aig_Obj_t
*
pObj
,
*
pObjNew
;
int
RetValue
,
s
,
i
;
...
...
@@ -175,12 +181,15 @@ void Saig_ManRetimeSteps( Aig_Man_t * p, int nSteps, int fForward )
{
Aig_ManForEachNode
(
p
,
pObj
,
i
)
{
pObjNew
=
Saig_ManRetimeNodeFwd
(
p
,
pObj
);
pObjNew
=
Saig_ManRetimeNodeFwd
(
p
,
pObj
,
fAddBugs
&&
(
s
==
10
)
);
// pObjNew = Saig_ManRetimeNodeFwd( p, pObj, 0 );
if
(
pObjNew
==
NULL
)
continue
;
Aig_ObjReplace
(
p
,
pObj
,
pObjNew
,
0
);
break
;
}
if
(
i
==
Vec_PtrSize
(
p
->
vObjs
)
)
break
;
}
}
else
...
...
@@ -195,6 +204,8 @@ void Saig_ManRetimeSteps( Aig_Man_t * p, int nSteps, int fForward )
Aig_ObjReplace
(
p
,
pObj
,
pObjNew
,
0
);
break
;
}
if
(
i
==
Vec_PtrSize
(
p
->
vObjs
)
)
break
;
}
}
p
->
fCreatePios
=
0
;
...
...
@@ -202,6 +213,7 @@ void Saig_ManRetimeSteps( Aig_Man_t * p, int nSteps, int fForward )
RetValue
=
Aig_ManCleanup
(
p
);
assert
(
RetValue
==
0
);
Aig_ManSetRegNum
(
p
,
p
->
nRegs
);
return
s
;
}
////////////////////////////////////////////////////////////////////////
...
...
src/base/abci/abc.c
View file @
8b24f6bf
...
...
@@ -149,9 +149,9 @@ static int Abc_CommandFraigClean ( Abc_Frame_t * pAbc, int argc, char ** arg
static
int
Abc_CommandFraigSweep
(
Abc_Frame_t
*
pAbc
,
int
argc
,
char
**
argv
);
static
int
Abc_CommandFraigDress
(
Abc_Frame_t
*
pAbc
,
int
argc
,
char
**
argv
);
static
int
Abc_CommandHaigStart
(
Abc_Frame_t
*
pAbc
,
int
argc
,
char
**
argv
);
static
int
Abc_CommandHaigStop
(
Abc_Frame_t
*
pAbc
,
int
argc
,
char
**
argv
);
static
int
Abc_CommandHaigUse
(
Abc_Frame_t
*
pAbc
,
int
argc
,
char
**
argv
);
//
static int Abc_CommandHaigStart ( Abc_Frame_t * pAbc, int argc, char ** argv );
//
static int Abc_CommandHaigStop ( Abc_Frame_t * pAbc, int argc, char ** argv );
//
static int Abc_CommandHaigUse ( Abc_Frame_t * pAbc, int argc, char ** argv );
static
int
Abc_CommandRecStart
(
Abc_Frame_t
*
pAbc
,
int
argc
,
char
**
argv
);
static
int
Abc_CommandRecStop
(
Abc_Frame_t
*
pAbc
,
int
argc
,
char
**
argv
);
...
...
@@ -404,9 +404,9 @@ void Abc_Init( Abc_Frame_t * pAbc )
Cmd_CommandAdd
(
pAbc
,
"Fraiging"
,
"fraig_sweep"
,
Abc_CommandFraigSweep
,
1
);
Cmd_CommandAdd
(
pAbc
,
"Fraiging"
,
"dress"
,
Abc_CommandFraigDress
,
1
);
Cmd_CommandAdd
(
pAbc
,
"Choicing"
,
"haig_start"
,
Abc_CommandHaigStart
,
0
);
Cmd_CommandAdd
(
pAbc
,
"Choicing"
,
"haig_stop"
,
Abc_CommandHaigStop
,
0
);
Cmd_CommandAdd
(
pAbc
,
"Choicing"
,
"haig_use"
,
Abc_CommandHaigUse
,
1
);
//
Cmd_CommandAdd( pAbc, "Choicing", "haig_start", Abc_CommandHaigStart, 0 );
//
Cmd_CommandAdd( pAbc, "Choicing", "haig_stop", Abc_CommandHaigStop, 0 );
//
Cmd_CommandAdd( pAbc, "Choicing", "haig_use", Abc_CommandHaigUse, 1 );
Cmd_CommandAdd
(
pAbc
,
"Choicing"
,
"rec_start"
,
Abc_CommandRecStart
,
0
);
Cmd_CommandAdd
(
pAbc
,
"Choicing"
,
"rec_stop"
,
Abc_CommandRecStop
,
0
);
...
...
@@ -7505,7 +7505,7 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
extern
Abc_Ntk_t
*
Abc_NtkFilter
(
Abc_Ntk_t
*
pNtk
);
// extern Abc_Ntk_t * Abc_NtkDarRetime( Abc_Ntk_t * pNtk, int nStepsMax, int fVerbose );
// extern Abc_Ntk_t * Abc_NtkPcmTest( Abc_Ntk_t * pNtk, int fVerbose );
extern
Abc_Ntk
DarHaigRecord
(
Abc_Ntk_t
*
pNtk
);
extern
Abc_Ntk
_t
*
Abc_NtkDarHaigRecord
(
Abc_Ntk_t
*
pNtk
,
int
nIters
,
int
nSteps
,
int
fRetimingOnly
,
int
fAddBugs
,
int
fUseCnf
,
int
fVerbose
);
// extern void Abc_NtkDarTestBlif( char * pFileName );
// extern Abc_Ntk_t * Abc_NtkDarPartition( Abc_Ntk_t * pNtk );
// extern Abc_Ntk_t * Abc_NtkTestExor( Abc_Ntk_t * pNtk, int fVerbose );
...
...
@@ -7519,13 +7519,13 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
pOut
=
Abc_FrameReadOut
(
pAbc
);
pErr
=
Abc_FrameReadErr
(
pAbc
);
//
printf( "This command is temporarily disabled.\n" );
//
return 0;
printf
(
"This command is temporarily disabled.
\n
"
);
return
0
;
// set defaults
fVeryVerbose
=
0
;
fVerbose
=
1
;
fBmc
=
1
;
fBmc
=
0
;
nFrames
=
1
;
nLevels
=
200
;
Extra_UtilGetoptReset
();
...
...
@@ -7685,7 +7685,6 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes );
*/
// Abc_NtkDarHaigRecord( pNtk );
// Abc_NtkDarClau( pNtk, nFrames, nLevels, fBmc, fVerbose, fVeryVerbose );
/*
if ( globalUtilOptind != 1 )
...
...
@@ -7699,11 +7698,8 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
// Abc_NtkDarPartition( pNtk );
//Abc_NtkDarTest( pNtk );
Abc_NtkDarHaigRecord
(
pNtk
);
return
0
;
pNtkRes
=
Abc_NtkDarRetimeStep
(
pNtk
,
0
);
// pNtkRes = Abc_NtkDarRetimeStep( pNtk, 0 );
pNtkRes
=
Abc_NtkDarHaigRecord
(
pNtk
,
3
,
3000
,
0
,
0
,
0
,
0
);
if
(
pNtkRes
==
NULL
)
{
fprintf
(
pErr
,
"Command has failed.
\n
"
);
...
...
@@ -7713,7 +7709,7 @@ return 0;
Abc_FrameReplaceCurrentNetwork
(
pAbc
,
pNtkRes
);
return
0
;
usage:
fprintf
(
pErr
,
"usage: test [-vwh]
\n
"
);
fprintf
(
pErr
,
"usage: test [-
b
vwh]
\n
"
);
fprintf
(
pErr
,
"
\t
testbench for new procedures
\n
"
);
fprintf
(
pErr
,
"
\t
-v : toggle printing verbose information [default = %s]
\n
"
,
fVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-w : toggle printing very verbose information [default = %s]
\n
"
,
fVeryVerbose
?
"yes"
:
"no"
);
...
...
@@ -9398,19 +9394,29 @@ int Abc_CommandHaig( Abc_Frame_t * pAbc, int argc, char ** argv )
{
FILE
*
pOut
,
*
pErr
;
Abc_Ntk_t
*
pNtk
,
*
pNtkRes
;
int
c
,
fUseZeroCost
,
fVerbose
,
nIters
;
extern
Abc_Ntk_t
*
Abc_NtkIvyHaig
(
Abc_Ntk_t
*
pNtk
,
int
nIters
,
int
fUseZeroCost
,
int
fVerbose
);
int
c
;
int
nIters
;
int
nSteps
;
int
fRetimingOnly
;
int
fAddBugs
;
int
fUseCnf
;
int
fVerbose
;
extern
Abc_Ntk_t
*
Abc_NtkDarHaigRecord
(
Abc_Ntk_t
*
pNtk
,
int
nIters
,
int
nSteps
,
int
fRetimingOnly
,
int
fAddBugs
,
int
fUseCnf
,
int
fVerbose
);
pNtk
=
Abc_FrameReadNtk
(
pAbc
);
pOut
=
Abc_FrameReadOut
(
pAbc
);
pErr
=
Abc_FrameReadErr
(
pAbc
);
// set defaults
nIters
=
2
;
fUseZeroCost
=
0
;
fVerbose
=
1
;
nIters
=
3
;
nSteps
=
3000
;
fRetimingOnly
=
0
;
fAddBugs
=
0
;
fUseCnf
=
0
;
fVerbose
=
0
;
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"I
z
vh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"I
Srbc
vh"
)
)
!=
EOF
)
{
switch
(
c
)
{
...
...
@@ -9425,11 +9431,28 @@ int Abc_CommandHaig( Abc_Frame_t * pAbc, int argc, char ** argv )
if
(
nIters
<
0
)
goto
usage
;
break
;
case
'z'
:
fUseZeroCost
^=
1
;
case
'S'
:
if
(
globalUtilOptind
>=
argc
)
{
fprintf
(
pErr
,
"Command line switch
\"
-S
\"
should be followed by a positive integer.
\n
"
);
goto
usage
;
}
nSteps
=
atoi
(
argv
[
globalUtilOptind
]);
globalUtilOptind
++
;
if
(
nSteps
<
0
)
goto
usage
;
break
;
case
'r'
:
fRetimingOnly
^=
1
;
break
;
case
'b'
:
fAddBugs
^=
1
;
break
;
case
'c'
:
fUseCnf
^=
1
;
break
;
case
'v'
:
f
Verbose
^=
1
;
f
UseCnf
^=
1
;
break
;
case
'h'
:
goto
usage
;
...
...
@@ -9448,7 +9471,7 @@ int Abc_CommandHaig( Abc_Frame_t * pAbc, int argc, char ** argv )
return
1
;
}
pNtkRes
=
Abc_Ntk
IvyHaig
(
pNtk
,
nIters
,
fUseZeroCost
,
fVerbose
);
pNtkRes
=
Abc_Ntk
DarHaigRecord
(
pNtk
,
nIters
,
nSteps
,
fRetimingOnly
,
fAddBugs
,
fUseCnf
,
fVerbose
);
if
(
pNtkRes
==
NULL
)
{
fprintf
(
pErr
,
"Command has failed.
\n
"
);
...
...
@@ -9459,10 +9482,17 @@ int Abc_CommandHaig( Abc_Frame_t * pAbc, int argc, char ** argv )
return
0
;
usage:
fprintf
(
pErr
,
"usage: haig [-Izvh]
\n
"
);
fprintf
(
pErr
,
"
\t
prints HAIG stats after sequential rewriting
\n
"
);
fprintf
(
pErr
,
"
\t
-I num : the number of rewriting iterations [default = %d]
\n
"
,
nIters
);
fprintf
(
pErr
,
"
\t
-z : toggle zero-cost replacements [default = %s]
\n
"
,
fUseZeroCost
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"usage: haig [-IS num] [-rbcvh]
\n
"
);
fprintf
(
pErr
,
"
\t
run a few rounds of comb+seq synthesis to test HAIG recording
\n
"
);
fprintf
(
pErr
,
"
\t
the current network is set to be the result of synthesis performed
\n
"
);
fprintf
(
pErr
,
"
\t
(this network can be verified using command
\"
dsec
\"
)
\n
"
);
fprintf
(
pErr
,
"
\t
HAIG is written out into the file
\"
haig.blif
\"\n
"
);
fprintf
(
pErr
,
"
\t
(this HAIG can be proved using
\"
r haig.blif; st; dprove -abc -F 16
\"
)
\n
"
);
fprintf
(
pErr
,
"
\t
-I num : the number of rounds of comb+seq synthesis [default = %d]
\n
"
,
nIters
);
fprintf
(
pErr
,
"
\t
-S num : the number of forward retiming moves performed [default = %d]
\n
"
,
nSteps
);
fprintf
(
pErr
,
"
\t
-r : toggle the use of retiming only [default = %s]
\n
"
,
fRetimingOnly
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-b : toggle bug insertion [default = %s]
\n
"
,
fAddBugs
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-c : enable CNF-based proof (no speculative reduction) [default = %s]
\n
"
,
fUseCnf
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-v : toggle verbose printout [default = %s]
\n
"
,
fVerbose
?
"yes"
:
"no"
);
fprintf
(
pErr
,
"
\t
-h : print the command usage
\n
"
);
return
1
;
...
...
src/base/abci/abcDar.c
View file @
8b24f6bf
...
...
@@ -1655,7 +1655,7 @@ Abc_Ntk_t * Abc_NtkDarRetimeStep( Abc_Ntk_t * pNtk, int fVerbose )
pMan
->
vFlopNums
=
NULL
;
Aig_ManPrintStats
(
pMan
);
Saig_ManRetimeSteps
(
pMan
,
1000
,
1
);
Saig_ManRetimeSteps
(
pMan
,
1000
,
1
,
0
);
Aig_ManPrintStats
(
pMan
);
pNtkAig
=
Abc_NtkFromDarSeqSweep
(
pNtk
,
pMan
);
...
...
@@ -1674,18 +1674,23 @@ Abc_Ntk_t * Abc_NtkDarRetimeStep( Abc_Ntk_t * pNtk, int fVerbose )
SeeAlso []
***********************************************************************/
void
Abc_NtkDarHaigRecord
(
Abc_Ntk_t
*
pNtk
)
Abc_Ntk_t
*
Abc_NtkDarHaigRecord
(
Abc_Ntk_t
*
pNtk
,
int
nIters
,
int
nSteps
,
int
fRetimingOnly
,
int
fAddBugs
,
int
fUseCnf
,
int
fVerbose
)
{
Aig_Man_t
*
pMan
;
Abc_Ntk_t
*
pNtkAig
;
Aig_Man_t
*
pMan
,
*
pTemp
;
pMan
=
Abc_NtkToDar
(
pNtk
,
0
,
1
);
if
(
pMan
==
NULL
)
return
;
return
NULL
;
if
(
pMan
->
vFlopNums
)
Vec_IntFree
(
pMan
->
vFlopNums
);
pMan
->
vFlopNums
=
NULL
;
Saig_ManHaigRecord
(
pMan
);
pMan
=
Saig_ManHaigRecord
(
pTemp
=
pMan
,
nIters
,
nSteps
,
fRetimingOnly
,
fAddBugs
,
fUseCnf
,
fVerbose
);
Aig_ManStop
(
pTemp
);
pNtkAig
=
Abc_NtkFromDarSeqSweep
(
pNtk
,
pMan
);
Aig_ManStop
(
pMan
);
return
pNtkAig
;
}
/**Function*************************************************************
...
...
src/map/pcm/module.make
0 → 100644
View file @
8b24f6bf
src/map/ply/module.make
0 → 100644
View file @
8b24f6bf
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