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
14dc389e
Commit
14dc389e
authored
Sep 06, 2021
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug fix in the timing manager.
parent
e7a029d7
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
21 deletions
+23
-21
src/base/abci/abcTiming.c
+23
-21
No files found.
src/base/abci/abcTiming.c
View file @
14dc389e
...
@@ -191,8 +191,6 @@ void Abc_NtkTimeSetDefaultRequired( Abc_Ntk_t * pNtk, float Rise, float Fall )
...
@@ -191,8 +191,6 @@ void Abc_NtkTimeSetDefaultRequired( Abc_Ntk_t * pNtk, float Rise, float Fall )
// set the required times for each output
// set the required times for each output
Abc_NtkForEachCo
(
pNtk
,
pObj
,
i
){
Abc_NtkForEachCo
(
pNtk
,
pObj
,
i
){
Abc_NtkTimeSetRequired
(
pNtk
,
Abc_ObjId
(
pObj
),
Rise
,
Fall
);
Abc_NtkTimeSetRequired
(
pNtk
,
Abc_ObjId
(
pObj
),
Rise
,
Fall
);
// printf("Debug: Setting *default* required time on object %d to R %f F %f\n",
// Abc_ObjId(pObj),Rise,Fall);
}
}
}
}
...
@@ -211,8 +209,7 @@ void Abc_NtkTimeSetArrival( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall
...
@@ -211,8 +209,7 @@ void Abc_NtkTimeSetArrival( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall
{
{
Vec_Ptr_t
*
vTimes
;
Vec_Ptr_t
*
vTimes
;
Abc_Time_t
*
pTime
;
Abc_Time_t
*
pTime
;
static
int
debug
;
debug
++
;
if
(
pNtk
->
pManTime
==
NULL
)
if
(
pNtk
->
pManTime
==
NULL
)
pNtk
->
pManTime
=
Abc_ManTimeStart
(
pNtk
);
pNtk
->
pManTime
=
Abc_ManTimeStart
(
pNtk
);
Abc_ManTimeExpand
(
pNtk
->
pManTime
,
ObjId
+
1
,
1
);
Abc_ManTimeExpand
(
pNtk
->
pManTime
,
ObjId
+
1
,
1
);
...
@@ -221,16 +218,13 @@ void Abc_NtkTimeSetArrival( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall
...
@@ -221,16 +218,13 @@ void Abc_NtkTimeSetArrival( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall
pTime
=
(
Abc_Time_t
*
)
vTimes
->
pArray
[
ObjId
];
pTime
=
(
Abc_Time_t
*
)
vTimes
->
pArray
[
ObjId
];
pTime
->
Rise
=
Rise
;
pTime
->
Rise
=
Rise
;
pTime
->
Fall
=
Fall
;
pTime
->
Fall
=
Fall
;
// printf("Debug:%d Setting arrival time on object %d to R %f and F %f\n",debug,
// ObjId, Rise, Fall);
}
}
void
Abc_NtkTimeSetRequired
(
Abc_Ntk_t
*
pNtk
,
int
ObjId
,
float
Rise
,
float
Fall
)
void
Abc_NtkTimeSetRequired
(
Abc_Ntk_t
*
pNtk
,
int
ObjId
,
float
Rise
,
float
Fall
)
{
{
Vec_Ptr_t
*
vTimes
;
Vec_Ptr_t
*
vTimes
;
Abc_Time_t
*
pTime
;
Abc_Time_t
*
pTime
;
static
int
debug
;
debug
++
;
if
(
pNtk
->
pManTime
==
NULL
)
if
(
pNtk
->
pManTime
==
NULL
)
pNtk
->
pManTime
=
Abc_ManTimeStart
(
pNtk
);
pNtk
->
pManTime
=
Abc_ManTimeStart
(
pNtk
);
Abc_ManTimeExpand
(
pNtk
->
pManTime
,
ObjId
+
1
,
1
);
Abc_ManTimeExpand
(
pNtk
->
pManTime
,
ObjId
+
1
,
1
);
...
@@ -239,8 +233,6 @@ void Abc_NtkTimeSetRequired( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall
...
@@ -239,8 +233,6 @@ void Abc_NtkTimeSetRequired( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall
pTime
=
(
Abc_Time_t
*
)
vTimes
->
pArray
[
ObjId
];
pTime
=
(
Abc_Time_t
*
)
vTimes
->
pArray
[
ObjId
];
pTime
->
Rise
=
Rise
;
pTime
->
Rise
=
Rise
;
pTime
->
Fall
=
Fall
;
pTime
->
Fall
=
Fall
;
// printf("Debug:%d Setting required time on object %d to R %f and F %f\n",debug,
// ObjId, Rise, Fall);
}
}
/**Function*************************************************************
/**Function*************************************************************
...
@@ -485,7 +477,7 @@ void Abc_NtkTimePrepare( Abc_Ntk_t * pNtk )
...
@@ -485,7 +477,7 @@ void Abc_NtkTimePrepare( Abc_Ntk_t * pNtk )
***********************************************************************/
***********************************************************************/
Abc_ManTime_t
*
Abc_ManTimeStart
(
Abc_Ntk_t
*
pNtk
)
Abc_ManTime_t
*
Abc_ManTimeStart
(
Abc_Ntk_t
*
pNtk
)
{
{
//
int fUseZeroDefaultOutputRequired = 1;
int
fUseZeroDefaultOutputRequired
=
1
;
Abc_ManTime_t
*
p
;
Abc_ManTime_t
*
p
;
Abc_Time_t
*
pTime
;
Abc_Time_t
*
pTime
;
Abc_Obj_t
*
pObj
;
int
i
;
Abc_Obj_t
*
pObj
;
int
i
;
...
@@ -496,27 +488,33 @@ Abc_ManTime_t * Abc_ManTimeStart( Abc_Ntk_t * pNtk )
...
@@ -496,27 +488,33 @@ Abc_ManTime_t * Abc_ManTimeStart( Abc_Ntk_t * pNtk )
// set default default input=arrivals (assumed to be 0)
// set default default input=arrivals (assumed to be 0)
// set default default output-requireds (can be either 0 or +infinity, based on the flag)
// set default default output-requireds (can be either 0 or +infinity, based on the flag)
//AF: hack support the values read in. Not defaults !
// p->tReqDef.Rise = fUseZeroDefaultOutputRequired ? 0 : ABC_INFINITY;
// p->tReqDef.Fall = fUseZeroDefaultOutputRequired ? 0 : ABC_INFINITY;
// extend manager
// extend manager
Abc_ManTimeExpand
(
p
,
Abc_NtkObjNumMax
(
pNtk
)
+
1
,
0
);
Abc_ManTimeExpand
(
p
,
Abc_NtkObjNumMax
(
pNtk
)
+
1
,
0
);
// set the default timing for CIs
// set the default timing for CIs
Abc_NtkForEachCi
(
pNtk
,
pObj
,
i
){
Abc_NtkForEachCi
(
pNtk
,
pObj
,
i
){
//get the constrained value, if there is one
Vec_Ptr_t
*
vTimes
;
Vec_Ptr_t
*
vTimes
;
vTimes
=
pNtk
->
pManTime
->
vArrs
;
vTimes
=
pNtk
->
pManTime
->
vArrs
;
pTime
=
(
Abc_Time_t
*
)
vTimes
->
pArray
[
Abc_ObjId
(
pObj
)];
pTime
=
(
Abc_Time_t
*
)
vTimes
->
pArray
[
Abc_ObjId
(
pObj
)];
if
(
pTime
){
//unconstrained arrival defaults. Note that
//unconstrained value in vTimes set to -ABC_INFINITY.
if
(
pTime
&&
(
!
(
p
->
tArrDef
.
Fall
==
-
ABC_INFINITY
||
p
->
tArrDef
.
Rise
!=
-
ABC_INFINITY
))
){
p
->
tArrDef
.
Fall
=
pTime
->
Fall
;
p
->
tArrDef
.
Fall
=
pTime
->
Fall
;
p
->
tArrDef
.
Rise
=
pTime
->
Rise
;
p
->
tArrDef
.
Rise
=
pTime
->
Rise
;
}
}
else
{
//use the default arrival time 0 (implicit in memset 0, above).
p
->
tArrDef
.
Rise
=
0
;
p
->
tArrDef
.
Fall
=
0
;
}
Abc_NtkTimeSetArrival
(
pNtk
,
Abc_ObjId
(
pObj
),
p
->
tArrDef
.
Rise
,
p
->
tArrDef
.
Rise
);
Abc_NtkTimeSetArrival
(
pNtk
,
Abc_ObjId
(
pObj
),
p
->
tArrDef
.
Rise
,
p
->
tArrDef
.
Rise
);
}
}
// set the default timing for COs
Abc_NtkForEachCo
(
pNtk
,
pObj
,
i
){
Abc_NtkForEachCo
(
pNtk
,
pObj
,
i
){
Vec_Ptr_t
*
vTimes
;
Vec_Ptr_t
*
vTimes
;
vTimes
=
pNtk
->
pManTime
->
vArrs
;
vTimes
=
pNtk
->
pManTime
->
vArrs
;
...
@@ -525,6 +523,11 @@ Abc_ManTime_t * Abc_ManTimeStart( Abc_Ntk_t * pNtk )
...
@@ -525,6 +523,11 @@ Abc_ManTime_t * Abc_ManTimeStart( Abc_Ntk_t * pNtk )
p
->
tReqDef
.
Fall
=
pTime
->
Fall
;
p
->
tReqDef
.
Fall
=
pTime
->
Fall
;
p
->
tReqDef
.
Rise
=
pTime
->
Rise
;
p
->
tReqDef
.
Rise
=
pTime
->
Rise
;
}
}
else
{
//use the default
p
->
tReqDef
.
Rise
=
fUseZeroDefaultOutputRequired
?
0
:
ABC_INFINITY
;
p
->
tReqDef
.
Fall
=
fUseZeroDefaultOutputRequired
?
0
:
ABC_INFINITY
;
}
Abc_NtkTimeSetRequired
(
pNtk
,
Abc_ObjId
(
pObj
),
p
->
tReqDef
.
Rise
,
p
->
tReqDef
.
Rise
);
Abc_NtkTimeSetRequired
(
pNtk
,
Abc_ObjId
(
pObj
),
p
->
tReqDef
.
Rise
,
p
->
tReqDef
.
Rise
);
}
}
return
p
;
return
p
;
...
@@ -609,8 +612,7 @@ void Abc_ManTimeDup( Abc_Ntk_t * pNtkOld, Abc_Ntk_t * pNtkNew )
...
@@ -609,8 +612,7 @@ void Abc_ManTimeDup( Abc_Ntk_t * pNtkOld, Abc_Ntk_t * pNtkNew )
memcpy
(
pNtkNew
->
pManTime
->
tOutLoad
,
pNtkOld
->
pManTime
->
tOutLoad
,
sizeof
(
Abc_Time_t
)
*
Abc_NtkCoNum
(
pNtkOld
)
);
memcpy
(
pNtkNew
->
pManTime
->
tOutLoad
,
pNtkOld
->
pManTime
->
tOutLoad
,
sizeof
(
Abc_Time_t
)
*
Abc_NtkCoNum
(
pNtkOld
)
);
}
}
printf
(
"State of abc timing manager
\n
"
);
Abc_NtkTimePrint
(
pNtkNew
);
}
}
/**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