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
0923d543
Commit
0923d543
authored
Jun 16, 2016
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding a switch 'retime -o' to use old flop naming conventions.
parent
ada21a65
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
59 additions
and
35 deletions
+59
-35
src/base/abci/abc.c
+10
-4
src/opt/ret/retArea.c
+21
-12
src/opt/ret/retCore.c
+10
-10
src/opt/ret/retIncrem.c
+14
-5
src/opt/ret/retInt.h
+4
-4
No files found.
src/base/abci/abc.c
View file @
0923d543
...
@@ -18072,6 +18072,7 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -18072,6 +18072,7 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
int
fForward
;
int
fForward
;
int
fBackward
;
int
fBackward
;
int
fOneStep
;
int
fOneStep
;
int
fUseOldNames
;
int
fVerbose
;
int
fVerbose
;
int
Mode
;
int
Mode
;
int
nDelayLim
;
int
nDelayLim
;
...
@@ -18083,10 +18084,11 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -18083,10 +18084,11 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
fForward
=
0
;
fForward
=
0
;
fBackward
=
0
;
fBackward
=
0
;
fOneStep
=
0
;
fOneStep
=
0
;
fUseOldNames
=
0
;
fVerbose
=
0
;
fVerbose
=
0
;
nMaxIters
=
15
;
nMaxIters
=
15
;
Extra_UtilGetoptReset
();
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"MDfbsvh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"MDfbs
o
vh"
)
)
!=
EOF
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -18121,6 +18123,9 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -18121,6 +18123,9 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
case
's'
:
case
's'
:
fOneStep
^=
1
;
fOneStep
^=
1
;
break
;
break
;
case
'o'
:
fUseOldNames
^=
1
;
break
;
case
'v'
:
case
'v'
:
fVerbose
^=
1
;
fVerbose
^=
1
;
break
;
break
;
...
@@ -18165,7 +18170,7 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -18165,7 +18170,7 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
// convert the network into an SOP network
// convert the network into an SOP network
pNtkRes
=
Abc_NtkToLogic
(
pNtk
);
pNtkRes
=
Abc_NtkToLogic
(
pNtk
);
// perform the retiming
// perform the retiming
Abc_NtkRetime
(
pNtkRes
,
Mode
,
nDelayLim
,
fForward
,
fBackward
,
fOneStep
,
fVerbose
);
Abc_NtkRetime
(
pNtkRes
,
Mode
,
nDelayLim
,
fForward
,
fBackward
,
fOneStep
,
f
UseOldNames
,
f
Verbose
);
// replace the current network
// replace the current network
Abc_FrameReplaceCurrentNetwork
(
pAbc
,
pNtkRes
);
Abc_FrameReplaceCurrentNetwork
(
pAbc
,
pNtkRes
);
return
0
;
return
0
;
...
@@ -18185,11 +18190,11 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
...
@@ -18185,11 +18190,11 @@ int Abc_CommandRetime( Abc_Frame_t * pAbc, int argc, char ** argv )
}
}
// perform the retiming
// perform the retiming
Abc_NtkRetime
(
pNtk
,
Mode
,
nDelayLim
,
fForward
,
fBackward
,
fOneStep
,
fVerbose
);
Abc_NtkRetime
(
pNtk
,
Mode
,
nDelayLim
,
fForward
,
fBackward
,
fOneStep
,
f
UseOldNames
,
f
Verbose
);
return
0
;
return
0
;
usage:
usage:
Abc_Print
(
-
2
,
"usage: retime [-MD num] [-fbvh]
\n
"
);
Abc_Print
(
-
2
,
"usage: retime [-MD num] [-fb
so
vh]
\n
"
);
Abc_Print
(
-
2
,
"
\t
retimes the current network using one of the algorithms:
\n
"
);
Abc_Print
(
-
2
,
"
\t
retimes the current network using one of the algorithms:
\n
"
);
Abc_Print
(
-
2
,
"
\t
1: most forward retiming
\n
"
);
Abc_Print
(
-
2
,
"
\t
1: most forward retiming
\n
"
);
Abc_Print
(
-
2
,
"
\t
2: most backward retiming
\n
"
);
Abc_Print
(
-
2
,
"
\t
2: most backward retiming
\n
"
);
...
@@ -18202,6 +18207,7 @@ usage:
...
@@ -18202,6 +18207,7 @@ usage:
Abc_Print
(
-
2
,
"
\t
-f : enables forward-only retiming in modes 3,4,5 [default = %s]
\n
"
,
fForward
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-f : enables forward-only retiming in modes 3,4,5 [default = %s]
\n
"
,
fForward
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-b : enables backward-only retiming in modes 3,4,5 [default = %s]
\n
"
,
fBackward
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-b : enables backward-only retiming in modes 3,4,5 [default = %s]
\n
"
,
fBackward
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-s : enables retiming one step only in mode 4 [default = %s]
\n
"
,
fOneStep
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-s : enables retiming one step only in mode 4 [default = %s]
\n
"
,
fOneStep
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-o : enables usind old flop naming conventions [default = %s]
\n
"
,
fUseOldNames
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : enables verbose output [default = %s]
\n
"
,
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : enables verbose output [default = %s]
\n
"
,
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-h : print the command usage
\n
"
);
Abc_Print
(
-
2
,
"
\t
-h : print the command usage
\n
"
);
return
1
;
return
1
;
src/opt/ret/retArea.c
View file @
0923d543
...
@@ -27,11 +27,11 @@ ABC_NAMESPACE_IMPL_START
...
@@ -27,11 +27,11 @@ ABC_NAMESPACE_IMPL_START
/// DECLARATIONS ///
/// DECLARATIONS ///
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
static
Abc_Ntk_t
*
Abc_NtkRetimeMinAreaOne
(
Abc_Ntk_t
*
pNtk
,
int
fForward
,
int
fVerbose
);
static
Abc_Ntk_t
*
Abc_NtkRetimeMinAreaOne
(
Abc_Ntk_t
*
pNtk
,
int
fForward
,
int
f
UseOldNames
,
int
f
Verbose
);
static
void
Abc_NtkRetimeMinAreaPrepare
(
Abc_Ntk_t
*
pNtk
,
int
fForward
);
static
void
Abc_NtkRetimeMinAreaPrepare
(
Abc_Ntk_t
*
pNtk
,
int
fForward
);
static
void
Abc_NtkRetimeMinAreaInitValues
(
Abc_Ntk_t
*
pNtk
,
Vec_Ptr_t
*
vMinCut
);
static
void
Abc_NtkRetimeMinAreaInitValues
(
Abc_Ntk_t
*
pNtk
,
Vec_Ptr_t
*
vMinCut
);
static
Abc_Ntk_t
*
Abc_NtkRetimeMinAreaConstructNtk
(
Abc_Ntk_t
*
pNtk
,
Vec_Ptr_t
*
vMinCut
);
static
Abc_Ntk_t
*
Abc_NtkRetimeMinAreaConstructNtk
(
Abc_Ntk_t
*
pNtk
,
Vec_Ptr_t
*
vMinCut
);
static
void
Abc_NtkRetimeMinAreaUpdateLatches
(
Abc_Ntk_t
*
pNtk
,
Vec_Ptr_t
*
vMinCut
,
int
fForward
);
static
void
Abc_NtkRetimeMinAreaUpdateLatches
(
Abc_Ntk_t
*
pNtk
,
Vec_Ptr_t
*
vMinCut
,
int
fForward
,
int
fUseOldNames
);
extern
Abc_Ntk_t
*
Abc_NtkAttachBottom
(
Abc_Ntk_t
*
pNtkTop
,
Abc_Ntk_t
*
pNtkBottom
);
extern
Abc_Ntk_t
*
Abc_NtkAttachBottom
(
Abc_Ntk_t
*
pNtkTop
,
Abc_Ntk_t
*
pNtkBottom
);
...
@@ -50,7 +50,7 @@ extern Abc_Ntk_t * Abc_NtkAttachBottom( Abc_Ntk_t * pNtkTop, Abc_Ntk_t * pNtkBot
...
@@ -50,7 +50,7 @@ extern Abc_Ntk_t * Abc_NtkAttachBottom( Abc_Ntk_t * pNtkTop, Abc_Ntk_t * pNtkBot
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
int
Abc_NtkRetimeMinArea
(
Abc_Ntk_t
*
pNtk
,
int
fForwardOnly
,
int
fBackwardOnly
,
int
fVerbose
)
int
Abc_NtkRetimeMinArea
(
Abc_Ntk_t
*
pNtk
,
int
fForwardOnly
,
int
fBackwardOnly
,
int
f
UseOldNames
,
int
f
Verbose
)
{
{
Abc_Ntk_t
*
pNtkTotal
=
NULL
,
*
pNtkBottom
;
Abc_Ntk_t
*
pNtkTotal
=
NULL
,
*
pNtkBottom
;
Vec_Int_t
*
vValuesNew
=
NULL
,
*
vValues
;
Vec_Int_t
*
vValuesNew
=
NULL
,
*
vValues
;
...
@@ -66,9 +66,9 @@ int Abc_NtkRetimeMinArea( Abc_Ntk_t * pNtk, int fForwardOnly, int fBackwardOnly,
...
@@ -66,9 +66,9 @@ int Abc_NtkRetimeMinArea( Abc_Ntk_t * pNtk, int fForwardOnly, int fBackwardOnly,
if
(
!
fBackwardOnly
)
if
(
!
fBackwardOnly
)
{
{
if
(
fOneFrame
)
if
(
fOneFrame
)
Abc_NtkRetimeMinAreaOne
(
pNtk
,
1
,
fVerbose
);
Abc_NtkRetimeMinAreaOne
(
pNtk
,
1
,
f
UseOldNames
,
f
Verbose
);
else
else
while
(
Abc_NtkRetimeMinAreaOne
(
pNtk
,
1
,
fVerbose
)
);
while
(
Abc_NtkRetimeMinAreaOne
(
pNtk
,
1
,
f
UseOldNames
,
f
Verbose
)
);
}
}
// remember initial values
// remember initial values
vValues
=
Abc_NtkCollectLatchValues
(
pNtk
);
vValues
=
Abc_NtkCollectLatchValues
(
pNtk
);
...
@@ -76,9 +76,9 @@ int Abc_NtkRetimeMinArea( Abc_Ntk_t * pNtk, int fForwardOnly, int fBackwardOnly,
...
@@ -76,9 +76,9 @@ int Abc_NtkRetimeMinArea( Abc_Ntk_t * pNtk, int fForwardOnly, int fBackwardOnly,
if
(
!
fForwardOnly
)
if
(
!
fForwardOnly
)
{
{
if
(
fOneFrame
)
if
(
fOneFrame
)
pNtkTotal
=
Abc_NtkRetimeMinAreaOne
(
pNtk
,
0
,
fVerbose
);
pNtkTotal
=
Abc_NtkRetimeMinAreaOne
(
pNtk
,
0
,
f
UseOldNames
,
f
Verbose
);
else
else
while
(
(
pNtkBottom
=
Abc_NtkRetimeMinAreaOne
(
pNtk
,
0
,
fVerbose
))
)
while
(
(
pNtkBottom
=
Abc_NtkRetimeMinAreaOne
(
pNtk
,
0
,
f
UseOldNames
,
f
Verbose
))
)
pNtkTotal
=
Abc_NtkAttachBottom
(
pNtkTotal
,
pNtkBottom
);
pNtkTotal
=
Abc_NtkAttachBottom
(
pNtkTotal
,
pNtkBottom
);
}
}
// compute initial values
// compute initial values
...
@@ -108,7 +108,7 @@ int Abc_NtkRetimeMinArea( Abc_Ntk_t * pNtk, int fForwardOnly, int fBackwardOnly,
...
@@ -108,7 +108,7 @@ int Abc_NtkRetimeMinArea( Abc_Ntk_t * pNtk, int fForwardOnly, int fBackwardOnly,
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
Abc_Ntk_t
*
Abc_NtkRetimeMinAreaOne
(
Abc_Ntk_t
*
pNtk
,
int
fForward
,
int
fVerbose
)
Abc_Ntk_t
*
Abc_NtkRetimeMinAreaOne
(
Abc_Ntk_t
*
pNtk
,
int
fForward
,
int
f
UseOldNames
,
int
f
Verbose
)
{
{
Abc_Ntk_t
*
pNtkNew
=
NULL
;
Abc_Ntk_t
*
pNtkNew
=
NULL
;
Vec_Ptr_t
*
vMinCut
;
Vec_Ptr_t
*
vMinCut
;
...
@@ -125,7 +125,7 @@ Abc_Ntk_t * Abc_NtkRetimeMinAreaOne( Abc_Ntk_t * pNtk, int fForward, int fVerbos
...
@@ -125,7 +125,7 @@ Abc_Ntk_t * Abc_NtkRetimeMinAreaOne( Abc_Ntk_t * pNtk, int fForward, int fVerbos
Abc_NtkRetimeMinAreaInitValues
(
pNtk
,
vMinCut
);
Abc_NtkRetimeMinAreaInitValues
(
pNtk
,
vMinCut
);
else
else
pNtkNew
=
Abc_NtkRetimeMinAreaConstructNtk
(
pNtk
,
vMinCut
);
pNtkNew
=
Abc_NtkRetimeMinAreaConstructNtk
(
pNtk
,
vMinCut
);
Abc_NtkRetimeMinAreaUpdateLatches
(
pNtk
,
vMinCut
,
fForward
);
Abc_NtkRetimeMinAreaUpdateLatches
(
pNtk
,
vMinCut
,
fForward
,
fUseOldNames
);
}
}
// clean up
// clean up
Vec_PtrFree
(
vMinCut
);
Vec_PtrFree
(
vMinCut
);
...
@@ -408,7 +408,7 @@ Abc_Ntk_t * Abc_NtkRetimeMinAreaConstructNtk( Abc_Ntk_t * pNtk, Vec_Ptr_t * vMin
...
@@ -408,7 +408,7 @@ Abc_Ntk_t * Abc_NtkRetimeMinAreaConstructNtk( Abc_Ntk_t * pNtk, Vec_Ptr_t * vMin
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
void
Abc_NtkRetimeMinAreaUpdateLatches
(
Abc_Ntk_t
*
pNtk
,
Vec_Ptr_t
*
vMinCut
,
int
fForward
)
void
Abc_NtkRetimeMinAreaUpdateLatches
(
Abc_Ntk_t
*
pNtk
,
Vec_Ptr_t
*
vMinCut
,
int
fForward
,
int
fUseOldNames
)
{
{
Vec_Ptr_t
*
vCis
,
*
vCos
,
*
vBoxes
,
*
vBoxesNew
,
*
vNodes
,
*
vBuffers
;
Vec_Ptr_t
*
vCis
,
*
vCos
,
*
vBoxes
,
*
vBoxesNew
,
*
vNodes
,
*
vBuffers
;
Abc_Obj_t
*
pObj
,
*
pLatch
,
*
pLatchIn
,
*
pLatchOut
,
*
pNext
,
*
pBuffer
;
Abc_Obj_t
*
pObj
,
*
pLatch
,
*
pLatchIn
,
*
pLatchOut
,
*
pNext
,
*
pBuffer
;
...
@@ -475,8 +475,17 @@ void Abc_NtkRetimeMinAreaUpdateLatches( Abc_Ntk_t * pNtk, Vec_Ptr_t * vMinCut, i
...
@@ -475,8 +475,17 @@ void Abc_NtkRetimeMinAreaUpdateLatches( Abc_Ntk_t * pNtk, Vec_Ptr_t * vMinCut, i
pLatchOut
=
Abc_NtkCreateBo
(
pNtk
);
pLatchOut
=
Abc_NtkCreateBo
(
pNtk
);
pLatch
=
Abc_NtkCreateLatch
(
pNtk
);
pLatch
=
Abc_NtkCreateLatch
(
pNtk
);
pLatchIn
=
Abc_NtkCreateBi
(
pNtk
);
pLatchIn
=
Abc_NtkCreateBi
(
pNtk
);
Abc_ObjAssignName
(
pLatchOut
,
Abc_ObjName
(
pObj
),
"_o1"
);
Abc_ObjAssignName
(
pLatchIn
,
Abc_ObjName
(
pObj
),
"_i1"
);
if
(
fUseOldNames
)
{
Abc_ObjAssignName
(
pLatchOut
,
Abc_ObjName
(
pLatch
),
"_out"
);
Abc_ObjAssignName
(
pLatchIn
,
Abc_ObjName
(
pLatch
),
"_in"
);
}
else
{
Abc_ObjAssignName
(
pLatchOut
,
Abc_ObjName
(
pObj
),
"_o1"
);
Abc_ObjAssignName
(
pLatchIn
,
Abc_ObjName
(
pObj
),
"_i1"
);
}
// connect
// connect
Abc_ObjAddFanin
(
pLatchOut
,
pLatch
);
Abc_ObjAddFanin
(
pLatchOut
,
pLatch
);
Abc_ObjAddFanin
(
pLatch
,
pLatchIn
);
Abc_ObjAddFanin
(
pLatch
,
pLatchIn
);
...
...
src/opt/ret/retCore.c
View file @
0923d543
...
@@ -44,7 +44,7 @@ abctime timeRetime = 0;
...
@@ -44,7 +44,7 @@ abctime timeRetime = 0;
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
int
Abc_NtkRetime
(
Abc_Ntk_t
*
pNtk
,
int
Mode
,
int
nDelayLim
,
int
fForwardOnly
,
int
fBackwardOnly
,
int
fOneStep
,
int
fVerbose
)
int
Abc_NtkRetime
(
Abc_Ntk_t
*
pNtk
,
int
Mode
,
int
nDelayLim
,
int
fForwardOnly
,
int
fBackwardOnly
,
int
fOneStep
,
int
f
UseOldNames
,
int
f
Verbose
)
{
{
int
nLatches
=
Abc_NtkLatchNum
(
pNtk
);
int
nLatches
=
Abc_NtkLatchNum
(
pNtk
);
int
nLevels
=
Abc_NtkLevel
(
pNtk
);
int
nLevels
=
Abc_NtkLevel
(
pNtk
);
...
@@ -66,26 +66,26 @@ int Abc_NtkRetime( Abc_Ntk_t * pNtk, int Mode, int nDelayLim, int fForwardOnly,
...
@@ -66,26 +66,26 @@ int Abc_NtkRetime( Abc_Ntk_t * pNtk, int Mode, int nDelayLim, int fForwardOnly,
switch
(
Mode
)
switch
(
Mode
)
{
{
case
1
:
// forward
case
1
:
// forward
RetValue
=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
1
,
0
,
0
,
fVerbose
);
RetValue
=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
1
,
0
,
0
,
f
UseOldNames
,
f
Verbose
);
break
;
break
;
case
2
:
// backward
case
2
:
// backward
RetValue
=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
0
,
0
,
0
,
fVerbose
);
RetValue
=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
0
,
0
,
0
,
f
UseOldNames
,
f
Verbose
);
break
;
break
;
case
3
:
// min-area
case
3
:
// min-area
RetValue
=
Abc_NtkRetimeMinArea
(
pNtk
,
fForwardOnly
,
fBackwardOnly
,
fVerbose
);
RetValue
=
Abc_NtkRetimeMinArea
(
pNtk
,
fForwardOnly
,
fBackwardOnly
,
f
UseOldNames
,
f
Verbose
);
break
;
break
;
case
4
:
// min-delay
case
4
:
// min-delay
if
(
!
fBackwardOnly
)
if
(
!
fBackwardOnly
)
RetValue
+=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
1
,
1
,
fOneStep
,
fVerbose
);
RetValue
+=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
1
,
1
,
fOneStep
,
f
UseOldNames
,
f
Verbose
);
if
(
!
fForwardOnly
)
if
(
!
fForwardOnly
)
RetValue
+=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
0
,
1
,
fOneStep
,
fVerbose
);
RetValue
+=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
0
,
1
,
fOneStep
,
f
UseOldNames
,
f
Verbose
);
break
;
break
;
case
5
:
// min-area + min-delay
case
5
:
// min-area + min-delay
RetValue
=
Abc_NtkRetimeMinArea
(
pNtk
,
fForwardOnly
,
fBackwardOnly
,
fVerbose
);
RetValue
=
Abc_NtkRetimeMinArea
(
pNtk
,
fForwardOnly
,
fBackwardOnly
,
f
UseOldNames
,
f
Verbose
);
if
(
!
fBackwardOnly
)
if
(
!
fBackwardOnly
)
RetValue
+=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
1
,
1
,
0
,
fVerbose
);
RetValue
+=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
1
,
1
,
0
,
f
UseOldNames
,
f
Verbose
);
if
(
!
fForwardOnly
)
if
(
!
fForwardOnly
)
RetValue
+=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
0
,
1
,
0
,
fVerbose
);
RetValue
+=
Abc_NtkRetimeIncremental
(
pNtk
,
nDelayLim
,
0
,
1
,
0
,
f
UseOldNames
,
f
Verbose
);
break
;
break
;
case
6
:
// Pan's algorithm
case
6
:
// Pan's algorithm
RetValue
=
Abc_NtkRetimeLValue
(
pNtk
,
500
,
fVerbose
);
RetValue
=
Abc_NtkRetimeLValue
(
pNtk
,
500
,
fVerbose
);
...
@@ -125,7 +125,7 @@ int Abc_NtkRetimeDebug( Abc_Ntk_t * pNtk )
...
@@ -125,7 +125,7 @@ int Abc_NtkRetimeDebug( Abc_Ntk_t * pNtk )
// fprintf( stdout, "Abc_NtkRetimeDebug(): Network check has failed.\n" );
// fprintf( stdout, "Abc_NtkRetimeDebug(): Network check has failed.\n" );
// Io_WriteBlifLogic( pNtk, "debug_temp.blif", 1 );
// Io_WriteBlifLogic( pNtk, "debug_temp.blif", 1 );
pNtkRet
=
Abc_NtkDup
(
pNtk
);
pNtkRet
=
Abc_NtkDup
(
pNtk
);
Abc_NtkRetime
(
pNtkRet
,
3
,
0
,
0
,
1
,
0
,
0
);
// debugging backward flow
Abc_NtkRetime
(
pNtkRet
,
3
,
0
,
0
,
1
,
0
,
1
,
0
);
// debugging backward flow
return
!
Abc_NtkSecFraig
(
pNtk
,
pNtkRet
,
10000
,
3
,
0
);
return
!
Abc_NtkSecFraig
(
pNtk
,
pNtkRet
,
10000
,
3
,
0
);
}
}
...
...
src/opt/ret/retIncrem.c
View file @
0923d543
...
@@ -44,7 +44,7 @@ static int Abc_NtkRetimeOneWay( Abc_Ntk_t * pNtk, int fForward, int fVerbose );
...
@@ -44,7 +44,7 @@ static int Abc_NtkRetimeOneWay( Abc_Ntk_t * pNtk, int fForward, int fVerbose );
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
int
Abc_NtkRetimeIncremental
(
Abc_Ntk_t
*
pNtk
,
int
nDelayLim
,
int
fForward
,
int
fMinDelay
,
int
fOneStep
,
int
fVerbose
)
int
Abc_NtkRetimeIncremental
(
Abc_Ntk_t
*
pNtk
,
int
nDelayLim
,
int
fForward
,
int
fMinDelay
,
int
fOneStep
,
int
f
UseOldNames
,
int
f
Verbose
)
{
{
Abc_Ntk_t
*
pNtkCopy
=
NULL
;
Abc_Ntk_t
*
pNtkCopy
=
NULL
;
Vec_Ptr_t
*
vBoxes
;
Vec_Ptr_t
*
vBoxes
;
...
@@ -82,7 +82,7 @@ int Abc_NtkRetimeIncremental( Abc_Ntk_t * pNtk, int nDelayLim, int fForward, int
...
@@ -82,7 +82,7 @@ int Abc_NtkRetimeIncremental( Abc_Ntk_t * pNtk, int nDelayLim, int fForward, int
// restore boxes
// restore boxes
pNtk
->
vBoxes
=
vBoxes
;
pNtk
->
vBoxes
=
vBoxes
;
// finalize the latches
// finalize the latches
RetValue
=
Abc_NtkRetimeFinalizeLatches
(
pNtk
,
tLatches
,
nIdMaxStart
);
RetValue
=
Abc_NtkRetimeFinalizeLatches
(
pNtk
,
tLatches
,
nIdMaxStart
,
fUseOldNames
);
st__free_table
(
tLatches
);
st__free_table
(
tLatches
);
if
(
RetValue
==
0
)
if
(
RetValue
==
0
)
return
0
;
return
0
;
...
@@ -143,7 +143,7 @@ int Abc_NtkRetimeIncremental( Abc_Ntk_t * pNtk, int nDelayLim, int fForward, int
...
@@ -143,7 +143,7 @@ int Abc_NtkRetimeIncremental( Abc_Ntk_t * pNtk, int nDelayLim, int fForward, int
SeeAlso []
SeeAlso []
***********************************************************************/
***********************************************************************/
int
Abc_NtkRetimeFinalizeLatches
(
Abc_Ntk_t
*
pNtk
,
st__table
*
tLatches
,
int
nIdMaxStart
)
int
Abc_NtkRetimeFinalizeLatches
(
Abc_Ntk_t
*
pNtk
,
st__table
*
tLatches
,
int
nIdMaxStart
,
int
fUseOldNames
)
{
{
Vec_Ptr_t
*
vCisOld
,
*
vCosOld
,
*
vBoxesOld
,
*
vCisNew
,
*
vCosNew
,
*
vBoxesNew
;
Vec_Ptr_t
*
vCisOld
,
*
vCosOld
,
*
vBoxesOld
,
*
vCisNew
,
*
vCosNew
,
*
vBoxesNew
;
Abc_Obj_t
*
pObj
,
*
pLatch
,
*
pLatchIn
,
*
pLatchOut
;
Abc_Obj_t
*
pObj
,
*
pLatch
,
*
pLatchIn
,
*
pLatchOut
;
...
@@ -169,8 +169,17 @@ int Abc_NtkRetimeFinalizeLatches( Abc_Ntk_t * pNtk, st__table * tLatches, int nI
...
@@ -169,8 +169,17 @@ int Abc_NtkRetimeFinalizeLatches( Abc_Ntk_t * pNtk, st__table * tLatches, int nI
// this is a new latch
// this is a new latch
pLatchIn
=
Abc_NtkCreateBi
(
pNtk
);
pLatchIn
=
Abc_NtkCreateBi
(
pNtk
);
pLatchOut
=
Abc_NtkCreateBo
(
pNtk
);
pLatchOut
=
Abc_NtkCreateBo
(
pNtk
);
Abc_ObjAssignName
(
pLatchOut
,
Abc_ObjName
(
Abc_ObjFanin0
(
pLatch
)),
"_o2"
);
Abc_ObjAssignName
(
pLatchIn
,
Abc_ObjName
(
Abc_ObjFanin0
(
pLatch
)),
"_i2"
);
if
(
fUseOldNames
)
{
Abc_ObjAssignName
(
pLatchOut
,
Abc_ObjName
(
pLatch
),
"_out"
);
Abc_ObjAssignName
(
pLatchIn
,
Abc_ObjName
(
pLatch
),
"_in"
);
}
else
{
Abc_ObjAssignName
(
pLatchOut
,
Abc_ObjName
(
Abc_ObjFanin0
(
pLatch
)),
"_o2"
);
Abc_ObjAssignName
(
pLatchIn
,
Abc_ObjName
(
Abc_ObjFanin0
(
pLatch
)),
"_i2"
);
}
}
}
else
else
{
{
...
...
src/opt/ret/retInt.h
View file @
0923d543
...
@@ -48,18 +48,18 @@ ABC_NAMESPACE_HEADER_START
...
@@ -48,18 +48,18 @@ ABC_NAMESPACE_HEADER_START
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/*=== retArea.c ========================================================*/
/*=== retArea.c ========================================================*/
extern
int
Abc_NtkRetimeMinArea
(
Abc_Ntk_t
*
pNtk
,
int
fForwardOnly
,
int
fBackwardOnly
,
int
fVerbose
);
extern
int
Abc_NtkRetimeMinArea
(
Abc_Ntk_t
*
pNtk
,
int
fForwardOnly
,
int
fBackwardOnly
,
int
f
UseOldNames
,
int
f
Verbose
);
/*=== retCore.c ========================================================*/
/*=== retCore.c ========================================================*/
extern
int
Abc_NtkRetime
(
Abc_Ntk_t
*
pNtk
,
int
Mode
,
int
nDelayLim
,
int
fForwardOnly
,
int
fBackwardOnly
,
int
fOneStep
,
int
fVerbose
);
extern
int
Abc_NtkRetime
(
Abc_Ntk_t
*
pNtk
,
int
Mode
,
int
nDelayLim
,
int
fForwardOnly
,
int
fBackwardOnly
,
int
fOneStep
,
int
f
UseOldNames
,
int
f
Verbose
);
/*=== retDelay.c ========================================================*/
/*=== retDelay.c ========================================================*/
extern
int
Abc_NtkRetimeMinDelay
(
Abc_Ntk_t
*
pNtk
,
Abc_Ntk_t
*
pNtkCopy
,
int
nDelayLim
,
int
nIterLimit
,
int
fForward
,
int
fVerbose
);
extern
int
Abc_NtkRetimeMinDelay
(
Abc_Ntk_t
*
pNtk
,
Abc_Ntk_t
*
pNtkCopy
,
int
nDelayLim
,
int
nIterLimit
,
int
fForward
,
int
fVerbose
);
/*=== retDirect.c ========================================================*/
/*=== retDirect.c ========================================================*/
extern
int
Abc_NtkRetimeIncremental
(
Abc_Ntk_t
*
pNtk
,
int
nDelayLim
,
int
fForward
,
int
fMinDelay
,
int
fOneStep
,
int
fVerbose
);
extern
int
Abc_NtkRetimeIncremental
(
Abc_Ntk_t
*
pNtk
,
int
nDelayLim
,
int
fForward
,
int
fMinDelay
,
int
fOneStep
,
int
f
UseOldNames
,
int
f
Verbose
);
extern
void
Abc_NtkRetimeShareLatches
(
Abc_Ntk_t
*
pNtk
,
int
fInitial
);
extern
void
Abc_NtkRetimeShareLatches
(
Abc_Ntk_t
*
pNtk
,
int
fInitial
);
extern
int
Abc_NtkRetimeNodeIsEnabled
(
Abc_Obj_t
*
pObj
,
int
fForward
);
extern
int
Abc_NtkRetimeNodeIsEnabled
(
Abc_Obj_t
*
pObj
,
int
fForward
);
extern
void
Abc_NtkRetimeNode
(
Abc_Obj_t
*
pObj
,
int
fForward
,
int
fInitial
);
extern
void
Abc_NtkRetimeNode
(
Abc_Obj_t
*
pObj
,
int
fForward
,
int
fInitial
);
extern
st__table
*
Abc_NtkRetimePrepareLatches
(
Abc_Ntk_t
*
pNtk
);
extern
st__table
*
Abc_NtkRetimePrepareLatches
(
Abc_Ntk_t
*
pNtk
);
extern
int
Abc_NtkRetimeFinalizeLatches
(
Abc_Ntk_t
*
pNtk
,
st__table
*
tLatches
,
int
nIdMaxStart
);
extern
int
Abc_NtkRetimeFinalizeLatches
(
Abc_Ntk_t
*
pNtk
,
st__table
*
tLatches
,
int
nIdMaxStart
,
int
fUseOldNames
);
/*=== retFlow.c ========================================================*/
/*=== retFlow.c ========================================================*/
extern
void
Abc_NtkMaxFlowTest
(
Abc_Ntk_t
*
pNtk
);
extern
void
Abc_NtkMaxFlowTest
(
Abc_Ntk_t
*
pNtk
);
extern
Vec_Ptr_t
*
Abc_NtkMaxFlow
(
Abc_Ntk_t
*
pNtk
,
int
fForward
,
int
fVerbose
);
extern
Vec_Ptr_t
*
Abc_NtkMaxFlow
(
Abc_Ntk_t
*
pNtk
,
int
fForward
,
int
fVerbose
);
...
...
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