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
24ffd526
Commit
24ffd526
authored
Nov 07, 2013
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Organizing the timing report functions.
parent
4774dc56
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
23 deletions
+22
-23
src/map/scl/sclSize.c
+16
-16
src/map/scl/sclSize.h
+6
-7
No files found.
src/map/scl/sclSize.c
View file @
24ffd526
...
...
@@ -116,14 +116,14 @@ static inline void Abc_SclTimeNodePrint( SC_Man * p, Abc_Obj_t * pObj, int fRise
printf
(
"%-*s "
,
Length
,
pCell
?
pCell
->
pName
:
"pi"
);
printf
(
"A =%7.2f "
,
pCell
?
pCell
->
area
:
0
.
0
);
printf
(
"D%s ="
,
fRise
?
"r"
:
"f"
);
printf
(
"%6.1f"
,
Abc_
MaxFloat
(
Abc_SclObjTimePs
(
p
,
pObj
,
0
),
Abc_SclObjTimePs
(
p
,
pObj
,
1
)
)
);
printf
(
"%7.1f ps "
,
-
Abc_AbsFloat
(
Abc_SclObjTime
Ps
(
p
,
pObj
,
0
)
-
Abc_SclObjTimePs
(
p
,
pObj
,
1
))
);
printf
(
"S =%6.1f ps "
,
Abc_SclObjSlew
Ps
(
p
,
pObj
,
fRise
>=
0
?
fRise
:
0
)
);
printf
(
"%6.1f"
,
Abc_
SclObjTimeMax
(
p
,
pObj
)
);
printf
(
"%7.1f ps "
,
-
Abc_AbsFloat
(
Abc_SclObjTime
One
(
p
,
pObj
,
0
)
-
Abc_SclObjTimeOne
(
p
,
pObj
,
1
))
);
printf
(
"S =%6.1f ps "
,
Abc_SclObjSlew
Max
(
p
,
pObj
)
);
printf
(
"Cin =%5.1f ff "
,
pCell
?
SC_CellPinCapAve
(
pCell
)
:
0
.
0
);
printf
(
"Cout =%6.1f ff "
,
Abc_SclObjLoad
Ff
(
p
,
pObj
,
fRise
>=
0
?
fRise
:
0
)
);
printf
(
"Cout =%6.1f ff "
,
Abc_SclObjLoad
Max
(
p
,
pObj
)
);
printf
(
"Cmax =%6.1f ff "
,
pCell
?
SC_CellPin
(
pCell
,
pCell
->
n_inputs
)
->
max_out_cap
:
0
.
0
);
printf
(
"G =%5d "
,
pCell
?
(
int
)(
100
.
0
*
Abc_SclObjLoadAve
(
p
,
pObj
)
/
SC_CellPinCapAve
(
pCell
))
:
0
);
// printf( "SL =%6.1f ps", Abc_SclObjSlack
Ps
(p, pObj, p->MaxDelay0) );
// printf( "SL =%6.1f ps", Abc_SclObjSlack
Max
(p, pObj, p->MaxDelay0) );
printf
(
"
\n
"
);
}
void
Abc_SclTimeNtkPrint
(
SC_Man
*
p
,
int
fShowAll
,
int
fPrintPath
)
...
...
@@ -131,7 +131,7 @@ void Abc_SclTimeNtkPrint( SC_Man * p, int fShowAll, int fPrintPath )
int
fReversePath
=
1
;
int
i
,
nLength
=
0
,
fRise
=
0
;
Abc_Obj_t
*
pObj
,
*
pPivot
=
Abc_SclFindCriticalCo
(
p
,
&
fRise
);
float
maxDelay
=
Abc_SclObjTime
Ps
(
p
,
pPivot
,
fRise
);
float
maxDelay
=
Abc_SclObjTime
One
(
p
,
pPivot
,
fRise
);
p
->
ReportDelay
=
maxDelay
;
printf
(
"WireLoad =
\"
%s
\"
"
,
p
->
pWLoadUsed
?
p
->
pWLoadUsed
->
pName
:
"none"
);
...
...
@@ -362,10 +362,10 @@ void Abc_SclTimeCone( SC_Man * p, Vec_Int_t * vCone )
if
(
fVerbose
&&
Abc_ObjIsNode
(
pObj
)
)
printf
(
" Updating node %d with gate %s
\n
"
,
Abc_ObjId
(
pObj
),
Abc_SclObjCell
(
pObj
)
->
pName
);
if
(
fVerbose
&&
Abc_ObjIsNode
(
pObj
)
)
printf
(
" before (%6.1f ps %6.1f ps) "
,
Abc_SclObjTime
Ps
(
p
,
pObj
,
1
),
Abc_SclObjTimePs
(
p
,
pObj
,
0
)
);
printf
(
" before (%6.1f ps %6.1f ps) "
,
Abc_SclObjTime
One
(
p
,
pObj
,
1
),
Abc_SclObjTimeOne
(
p
,
pObj
,
0
)
);
Abc_SclTimeNode
(
p
,
pObj
,
0
);
if
(
fVerbose
&&
Abc_ObjIsNode
(
pObj
)
)
printf
(
"after (%6.1f ps %6.1f ps)
\n
"
,
Abc_SclObjTime
Ps
(
p
,
pObj
,
1
),
Abc_SclObjTimePs
(
p
,
pObj
,
0
)
);
printf
(
"after (%6.1f ps %6.1f ps)
\n
"
,
Abc_SclObjTime
One
(
p
,
pObj
,
1
),
Abc_SclObjTimeOne
(
p
,
pObj
,
0
)
);
}
}
void
Abc_SclTimeNtkRecompute
(
SC_Man
*
p
,
float
*
pArea
,
float
*
pDelay
,
int
fReverse
,
float
DUser
)
...
...
@@ -750,7 +750,7 @@ float Abc_SclCountNonBufferDelayInt( SC_Man * p, Abc_Obj_t * pObj )
float
Delay
=
0
;
int
i
;
if
(
!
Abc_ObjIsBuffer
(
pObj
)
)
return
Abc_SclObjTime
Ps
(
p
,
pObj
,
1
);
return
Abc_SclObjTime
Max
(
p
,
pObj
);
Abc_ObjForEachFanout
(
pObj
,
pFanout
,
i
)
Delay
+=
Abc_SclCountNonBufferDelayInt
(
p
,
pFanout
);
return
Delay
;
...
...
@@ -802,17 +802,17 @@ void Abc_SclPrintBuffersOne( SC_Man * p, Abc_Obj_t * pObj, int nOffset )
printf
(
" "
);
printf
(
"a =%5.2f "
,
Abc_ObjIsPi
(
pObj
)
?
0
:
Abc_SclObjCell
(
pObj
)
->
area
);
printf
(
"d = ("
);
printf
(
"%6.0f ps; "
,
Abc_SclObjTime
Ps
(
p
,
pObj
,
1
)
);
printf
(
"%6.0f ps) "
,
Abc_SclObjTime
Ps
(
p
,
pObj
,
0
)
);
printf
(
"l =%5.0f ff "
,
Abc_SclObjLoad
Ff
(
p
,
pObj
,
0
)
);
printf
(
"s =%5.0f ps "
,
Abc_SclObjSlew
Ps
(
p
,
pObj
,
0
)
);
printf
(
"sl =%5.0f ps "
,
Abc_SclObjSlack
Ps
(
p
,
pObj
,
p
->
MaxDelay0
)
);
printf
(
"%6.0f ps; "
,
Abc_SclObjTime
One
(
p
,
pObj
,
1
)
);
printf
(
"%6.0f ps) "
,
Abc_SclObjTime
One
(
p
,
pObj
,
0
)
);
printf
(
"l =%5.0f ff "
,
Abc_SclObjLoad
Max
(
p
,
pObj
)
);
printf
(
"s =%5.0f ps "
,
Abc_SclObjSlew
Max
(
p
,
pObj
)
);
printf
(
"sl =%5.0f ps "
,
Abc_SclObjSlack
Max
(
p
,
pObj
,
p
->
MaxDelay0
)
);
if
(
nOffset
==
0
)
{
printf
(
"L =%5.0f ff "
,
Abc_SclCountNonBufferLoad
(
p
,
pObj
)
);
printf
(
"Lx =%5.0f ff "
,
100
.
0
*
Abc_SclCountNonBufferLoad
(
p
,
pObj
)
/
p
->
EstLoadAve
);
printf
(
"Dx =%5.0f ps "
,
Abc_SclCountNonBufferDelay
(
p
,
pObj
)
/
Abc_SclCountNonBufferFanouts
(
pObj
)
-
Abc_SclObjTime
Ps
(
p
,
pObj
,
1
)
);
printf
(
"Cx =%5.0f ps"
,
(
Abc_SclCountNonBufferDelay
(
p
,
pObj
)
/
Abc_SclCountNonBufferFanouts
(
pObj
)
-
Abc_SclObjTime
Ps
(
p
,
pObj
,
1
))
/
log
(
Abc_SclCountNonBufferLoad
(
p
,
pObj
)
/
p
->
EstLoadAve
)
);
printf
(
"Dx =%5.0f ps "
,
Abc_SclCountNonBufferDelay
(
p
,
pObj
)
/
Abc_SclCountNonBufferFanouts
(
pObj
)
-
Abc_SclObjTime
One
(
p
,
pObj
,
1
)
);
printf
(
"Cx =%5.0f ps"
,
(
Abc_SclCountNonBufferDelay
(
p
,
pObj
)
/
Abc_SclCountNonBufferFanouts
(
pObj
)
-
Abc_SclObjTime
One
(
p
,
pObj
,
1
))
/
log
(
Abc_SclCountNonBufferLoad
(
p
,
pObj
)
/
p
->
EstLoadAve
)
);
}
printf
(
"
\n
"
);
}
...
...
src/map/scl/sclSize.h
View file @
24ffd526
...
...
@@ -114,20 +114,19 @@ static inline SC_Pair * Abc_SclObjDept( SC_Man * p, Abc_Obj_t * pObj )
static
inline
SC_Pair
*
Abc_SclObjTime
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
p
->
pTimes
+
Abc_ObjId
(
pObj
);
}
static
inline
SC_Pair
*
Abc_SclObjSlew
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
p
->
pSlews
+
Abc_ObjId
(
pObj
);
}
static
inline
double
Abc_SclObjLoadMax
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
Abc_MaxFloat
(
Abc_SclObjLoad
(
p
,
pObj
)
->
rise
,
Abc_SclObjLoad
(
p
,
pObj
)
->
fall
);
}
static
inline
float
Abc_SclObjLoadAve
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
0
.
5
*
Abc_SclObjLoad
(
p
,
pObj
)
->
rise
+
0
.
5
*
Abc_SclObjLoad
(
p
,
pObj
)
->
fall
;
}
static
inline
double
Abc_SclObjTimeOne
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
int
fRise
){
return
fRise
?
Abc_SclObjTime
(
p
,
pObj
)
->
rise
:
Abc_SclObjTime
(
p
,
pObj
)
->
fall
;
}
static
inline
float
Abc_SclObjTimeMax
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
Abc_MaxFloat
(
Abc_SclObjTime
(
p
,
pObj
)
->
rise
,
Abc_SclObjTime
(
p
,
pObj
)
->
fall
);
}
static
inline
float
Abc_SclObjDepthMax
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
Abc_MaxFloat
(
Abc_SclObjDept
(
p
,
pObj
)
->
rise
,
Abc_SclObjDept
(
p
,
pObj
)
->
fall
);
}
static
inline
float
Abc_SclObjGetSlack
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
float
D
)
{
return
D
-
Abc_MaxFloat
(
Abc_SclObjTime
(
p
,
pObj
)
->
rise
+
Abc_SclObjDept
(
p
,
pObj
)
->
rise
,
Abc_SclObjTime
(
p
,
pObj
)
->
fall
+
Abc_SclObjDept
(
p
,
pObj
)
->
fall
);
}
static
inline
double
Abc_SclObjSlewMax
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
Abc_MaxFloat
(
Abc_SclObjSlew
(
p
,
pObj
)
->
rise
,
Abc_SclObjSlew
(
p
,
pObj
)
->
fall
);
}
static
inline
float
Abc_SclObjGetSlackR
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
float
D
){
return
D
-
(
Abc_SclObjTime
(
p
,
pObj
)
->
rise
+
Abc_SclObjDept
(
p
,
pObj
)
->
rise
);
}
static
inline
float
Abc_SclObjGetSlackF
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
float
D
){
return
D
-
(
Abc_SclObjTime
(
p
,
pObj
)
->
fall
+
Abc_SclObjDept
(
p
,
pObj
)
->
fall
);
}
static
inline
float
Abc_SclObjLoadAve
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
0
.
5
*
Abc_SclObjLoad
(
p
,
pObj
)
->
rise
+
0
.
5
*
Abc_SclObjLoad
(
p
,
pObj
)
->
fall
;
}
static
inline
float
Abc_SclObjGetSlack
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
float
D
)
{
return
D
-
Abc_MaxFloat
(
Abc_SclObjTime
(
p
,
pObj
)
->
rise
+
Abc_SclObjDept
(
p
,
pObj
)
->
rise
,
Abc_SclObjTime
(
p
,
pObj
)
->
fall
+
Abc_SclObjDept
(
p
,
pObj
)
->
fall
);
}
static
inline
double
Abc_SclObjSlackMax
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
float
D
)
{
return
Abc_SclObjGetSlack
(
p
,
pObj
,
D
);
}
static
inline
void
Abc_SclObjDupFanin
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
assert
(
Abc_ObjIsCo
(
pObj
)
);
*
Abc_SclObjTime
(
p
,
pObj
)
=
*
Abc_SclObjTime
(
p
,
Abc_ObjFanin0
(
pObj
));
}
static
inline
float
Abc_SclObjInDrive
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
)
{
return
Vec_FltEntry
(
p
->
vInDrive
,
pObj
->
iData
);
}
static
inline
void
Abc_SclObjSetInDrive
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
float
c
){
Vec_FltWriteEntry
(
p
->
vInDrive
,
pObj
->
iData
,
c
);
}
static
inline
double
Abc_SclObjLoadFf
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
int
fRise
)
{
return
fRise
?
Abc_SclObjLoad
(
p
,
pObj
)
->
rise
:
Abc_SclObjLoad
(
p
,
pObj
)
->
fall
;
}
static
inline
double
Abc_SclObjTimePs
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
int
fRise
)
{
return
fRise
?
Abc_SclObjTime
(
p
,
pObj
)
->
rise
:
Abc_SclObjTime
(
p
,
pObj
)
->
fall
;
}
static
inline
double
Abc_SclObjSlewPs
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
int
fRise
)
{
return
fRise
?
Abc_SclObjSlew
(
p
,
pObj
)
->
rise
:
Abc_SclObjSlew
(
p
,
pObj
)
->
fall
;
}
static
inline
double
Abc_SclObjSlackPs
(
SC_Man
*
p
,
Abc_Obj_t
*
pObj
,
float
D
)
{
return
Abc_SclObjGetSlack
(
p
,
pObj
,
D
);
}
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
...
...
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