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
2ba12a76
Commit
2ba12a76
authored
Sep 16, 2013
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding new switch to &if to relax the delay.
parent
e446cfca
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
31 additions
and
9 deletions
+31
-9
src/base/abci/abc.c
+14
-2
src/map/if/if.h
+2
-0
src/map/if/ifUtil.c
+15
-7
No files found.
src/base/abci/abc.c
View file @
2ba12a76
...
...
@@ -29267,7 +29267,7 @@ int Abc_CommandAbc9If( Abc_Frame_t * pAbc, int argc, char ** argv )
}
pPars
->
pLutLib
=
(
If_LibLut_t
*
)
pAbc
->
pLibLut
;
Extra_UtilGetoptReset
();
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"KCFAGDEWSqalepmrsdbgyojikfuzvh"
)
)
!=
EOF
)
while
(
(
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"KCFAG
R
DEWSqalepmrsdbgyojikfuzvh"
)
)
!=
EOF
)
{
switch
(
c
)
{
...
...
@@ -29328,6 +29328,17 @@ int Abc_CommandAbc9If( Abc_Frame_t * pAbc, int argc, char ** argv )
if
(
pPars
->
nGateSize
<
2
)
goto
usage
;
break
;
case
'R'
:
if
(
globalUtilOptind
>=
argc
)
{
Abc_Print
(
1
,
"Command line switch
\"
-R
\"
should be followed by a floating point number.
\n
"
);
return
0
;
}
pPars
->
nRelaxRatio
=
(
float
)
atof
(
argv
[
globalUtilOptind
]);
globalUtilOptind
++
;
if
(
pPars
->
nRelaxRatio
<
0
)
goto
usage
;
break
;
case
'D'
:
if
(
globalUtilOptind
>=
argc
)
{
...
...
@@ -29626,13 +29637,14 @@ usage:
sprintf
(
LutSize
,
"library"
);
else
sprintf
(
LutSize
,
"%d"
,
pPars
->
nLutSize
);
Abc_Print
(
-
2
,
"usage: &if [-KCFAG num] [-DEW float] [-S str] [-qarlepmsdbgyojikfuczvh]
\n
"
);
Abc_Print
(
-
2
,
"usage: &if [-KCFAG
R
num] [-DEW float] [-S str] [-qarlepmsdbgyojikfuczvh]
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs FPGA technology mapping of the network
\n
"
);
Abc_Print
(
-
2
,
"
\t
-K num : the number of LUT inputs (2 < num < %d) [default = %s]
\n
"
,
IF_MAX_LUTSIZE
+
1
,
LutSize
);
Abc_Print
(
-
2
,
"
\t
-C num : the max number of priority cuts (0 < num < 2^12) [default = %d]
\n
"
,
pPars
->
nCutsMax
);
Abc_Print
(
-
2
,
"
\t
-F num : the number of area flow recovery iterations (num >= 0) [default = %d]
\n
"
,
pPars
->
nFlowIters
);
Abc_Print
(
-
2
,
"
\t
-A num : the number of exact area recovery iterations (num >= 0) [default = %d]
\n
"
,
pPars
->
nAreaIters
);
Abc_Print
(
-
2
,
"
\t
-G num : the max AND/OR gate size for mapping (0 = unused) [default = %d]
\n
"
,
pPars
->
nGateSize
);
Abc_Print
(
-
2
,
"
\t
-R num : the delay relaxation ratio (num >= 0) [default = %d]
\n
"
,
pPars
->
nRelaxRatio
);
Abc_Print
(
-
2
,
"
\t
-D float : sets the delay constraint for the mapping [default = %s]
\n
"
,
Buffer
);
Abc_Print
(
-
2
,
"
\t
-E float : sets epsilon used for tie-breaking [default = %f]
\n
"
,
pPars
->
Epsilon
);
Abc_Print
(
-
2
,
"
\t
-W float : sets wire delay between adjects LUTs [default = %f]
\n
"
,
pPars
->
WireDelay
);
src/map/if/if.h
View file @
2ba12a76
...
...
@@ -102,6 +102,7 @@ struct If_Par_t_
int
nNonDecLimit
;
// the max size of non-dec nodes
float
DelayTarget
;
// delay target
float
Epsilon
;
// value used in comparison floating point numbers
int
nRelaxRatio
;
// delay relaxation ratio
int
fPreprocess
;
// preprossing
int
fArea
;
// area-oriented mapping
int
fFancy
;
// a fancy feature
...
...
@@ -141,6 +142,7 @@ struct If_Par_t_
int
nLatchesCoBox
;
// the number of white box inputs among the COs
int
fLiftLeaves
;
// shift the leaves for seq mapping
int
fUseCoAttrs
;
// use CO attributes
float
DelayTargetNew
;
// new delay target
float
FinalDelay
;
// final delay after mapping
If_LibLut_t
*
pLutLib
;
// the LUT library
float
*
pTimesArr
;
// arrival times
...
...
src/map/if/ifUtil.c
View file @
2ba12a76
...
...
@@ -182,13 +182,11 @@ void If_ManComputeRequired( If_Man_t * p )
{
// get the global required times
p
->
RequiredGlo
=
If_ManDelayMax
(
p
,
0
);
/*
////////////////////////////////////////
// redefine the delay target (positive number means percentage)
if ( p->pPars->DelayTarget > 0 )
p->pPars->DelayTarget = p->RequiredGlo * (100.0 + p->pPars->DelayTarget) / 100.0;
////////////////////////////////////////
*/
// find new delay target
if
(
p
->
pPars
->
nRelaxRatio
&&
p
->
pPars
->
DelayTargetNew
==
0
)
p
->
pPars
->
DelayTargetNew
=
p
->
RequiredGlo
*
(
100
.
0
+
p
->
pPars
->
nRelaxRatio
)
/
100
.
0
;
// update the required times according to the target
if
(
p
->
pPars
->
DelayTarget
!=
-
1
)
{
...
...
@@ -210,6 +208,8 @@ void If_ManComputeRequired( If_Man_t * p )
p
->
RequiredGlo
=
p
->
pPars
->
DelayTarget
;
}
}
else
if
(
p
->
pPars
->
DelayTargetNew
>
0
)
// relax the required times
p
->
RequiredGlo
=
p
->
pPars
->
DelayTargetNew
;
// do not propagate required times if area minimization is requested
if
(
p
->
pPars
->
fAreaOnly
)
return
;
...
...
@@ -239,6 +239,11 @@ void If_ManComputeRequired( If_Man_t * p )
{
// get the global required times
p
->
RequiredGlo
=
If_ManDelayMax
(
p
,
0
);
// find new delay target
if
(
p
->
pPars
->
nRelaxRatio
&&
p
->
pPars
->
DelayTargetNew
==
0
)
p
->
pPars
->
DelayTargetNew
=
p
->
RequiredGlo
*
(
100
.
0
+
p
->
pPars
->
nRelaxRatio
)
/
100
.
0
;
// update the required times according to the target
if
(
p
->
pPars
->
DelayTarget
!=
-
1
)
{
...
...
@@ -260,6 +265,9 @@ void If_ManComputeRequired( If_Man_t * p )
p
->
RequiredGlo
=
p
->
pPars
->
DelayTarget
;
}
}
else
if
(
p
->
pPars
->
DelayTargetNew
>
0
)
// relax the required times
p
->
RequiredGlo
=
p
->
pPars
->
DelayTargetNew
;
// do not propagate required times if area minimization is requested
if
(
p
->
pPars
->
fAreaOnly
)
return
;
...
...
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