Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
OpenLane for SwiSH
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Artem Ageev
OpenLane for SwiSH
Commits
a3b780f4
Unverified
Commit
a3b780f4
authored
1 year ago
by
Kareem Farid
Committed by
GitHub
1 year ago
Browse files
Options
Downloads
Patches
Plain Diff
Fix looping over the design when `GRT_MAX_DIODE_INS_ITERS` > 1 (#2075)
Co-authored-by:
Mohamed Gaber
<
donn@efabless.com
>
parent
dbcc8252
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
scripts/tcl_commands/routing.tcl
+19
-34
19 additions, 34 deletions
scripts/tcl_commands/routing.tcl
scripts/utils/utils.tcl
+2
-0
2 additions, 0 deletions
scripts/utils/utils.tcl
with
21 additions
and
34 deletions
scripts/tcl_commands/routing.tcl
+
19
−
34
View file @
a3b780f4
...
...
@@ -33,29 +33,22 @@ proc global_routing_fastroute {args} {
TIMER::timer_start
set log
[
index_file $::env
(
routing_logs
)
/global.log
]
puts_info
"Running Global Routing (log:
[
relpath . $log
]
)..."
set initial_def
[
index_file $::env
(
routing_tmpfiles
)
/global.def
]
set initial_guide
[
index_file $::env
(
routing_tmpfiles
)
/global.guide
]
set initial_odb
[
index_file $::env
(
routing_tmpfiles
)
/global.odb
]
set ::env
(
GRT_CONGESTION_REPORT_FILE
)
$::env
(
routing_tmpfiles
)
/groute-congestion.rpt
if
{
$::env
(
GRT_REPAIR_ANTENNAS
)
}
{
puts_info
"Starting OpenROAD Antenna Repair Iterations..."
run_openroad_script $::env
(
SCRIPTS_DIR
)
/openroad/repair_antennas.tcl
\
-indexed_log $log
\
-save
"def=
$initial
_def,guide=
$initial
_guide,odb=
$initial
_odb"
\
-no_update_current
-save
"to=
$::env
(routing_tmpfiles),name=global,def,guide,odb"
set iter 1
set minimum_def $
initial_def
set minimum_guide $
initial_guide
set minimum_odb $
initial_odb
set minimum_antenna
e
[
groute_antenna_extract -from_log $log
]
set minimum_def $
::env
(
CURRENT_DEF
)
set minimum_guide $
::env
(
CURRENT_GUIDE
)
set minimum_odb $
::env
(
CURRENT_ODB
)
set minimum_antenna
s
[
groute_antenna_extract -from_log $log
]
while
{
$iter
<= $::env
(
GRT_MAX_DIODE_INS_ITERS
)
&& $minimum_antenna
e
> 0
}
{
while
{
$iter
<= $::env
(
GRT_MAX_DIODE_INS_ITERS
)
&& $minimum_antenna
s
> 0
}
{
set log
[
index_file $::env
(
routing_logs
)
/antenna_diodes_$iter.log
]
puts_info
"Starting antenna repair iteration
$iter
with
$minimum
_antenna
e
violations..."
puts_info
"Starting antenna repair iteration
$iter
with
$minimum
_antenna
s
violations..."
manipulate_layout $::env
(
SCRIPTS_DIR
)
/odbpy/defutil.py replace_instance_prefixes
\
-indexed_log $log
\
...
...
@@ -68,37 +61,29 @@ proc global_routing_fastroute {args} {
-indexed_log $log
\
-save
"to=
$::env
(routing_tmpfiles),name=global_
$iter
,def,guide,odb"
set antenna
e
[
groute_antenna_extract -from_log $log
]
set antenna
s
[
groute_antenna_extract -from_log $log
]
if
{
$antenna
e
>= $minimum_antenna
e
}
{
puts_info
"
\[
Iteration
$iter
\]
Failed to reduce antenna violations (
$minimum
_antenna
e
->
$antenna
e
), stopping iterations..."
set
::env
(
SAVE_DEF
)
$minimum_def
set
::env
(
SAVE_GUIDE
)
$minimum_guide
set
::env
(
SAVE_ODB
)
$minimum_odb
if
{
$antenna
s
>= $minimum_antenna
s
}
{
puts_info
"
\[
Iteration
$iter
\]
Failed to reduce antenna violations (
$minimum
_antenna
s
->
$antenna
s
), stopping iterations..."
set
_def
$minimum_def
set
_guide
$minimum_guide
set
_odb
$minimum_odb
break
}
else
{
puts_info
"
\[
Iteration
$iter
\]
Reduced antenna violations (
$minimum
_antenna
e
->
$antenna
e
)"
set minimum_def $::env
(
SAVE
_DEF
)
set minimum_guide $::env
(
SAVE
_GUIDE
)
set minimum_odb $::env
(
SAVE
_ODB
)
set minimum_antenna
e
[
groute_antenna_extract -from_log
[
groute_antenna_extract -from_log $log
]]
puts_info
"
\[
Iteration
$iter
\]
Reduced antenna violations (
$minimum
_antenna
s
->
$antenna
s
)"
set minimum_def $::env
(
CURRENT
_DEF
)
set minimum_guide $::env
(
CURRENT
_GUIDE
)
set minimum_odb $::env
(
CURRENT
_ODB
)
set minimum_antenna
s $antennas
}
incr iter
}
}
else
{
run_openroad_script $::env
(
SCRIPTS_DIR
)
/openroad/groute.tcl
\
-indexed_log $log
\
-save
"def=
$initial
_def,guide=
$initial
_guide,odb=
$initial
_odb"
\
-no_update_current
-save
"to=
$::env
(routing_tmpfiles),name=global,def,guide,odb"
}
set_def $::env
(
SAVE_DEF
)
set_guide $::env
(
SAVE_GUIDE
)
set_odb $::env
(
SAVE_ODB
)
unset ::env
(
SAVE_DEF
)
unset ::env
(
SAVE_GUIDE
)
unset ::env
(
SAVE_ODB
)
write_verilog
\
$::env
(
routing_tmpfiles
)
/global.nl.v
\
-powered_to $::env
(
routing_tmpfiles
)
/global.pnl.v
\
...
...
This diff is collapsed.
Click to expand it.
scripts/utils/utils.tcl
+
2
−
0
View file @
a3b780f4
...
...
@@ -769,6 +769,8 @@ proc run_tcl_script {args} {
set_sdc $::env
(
SAVE_SDC
)
}
elseif
{
$element ==
"netlist"
}
{
set_netlist -lec $::env
(
SAVE_NETLIST
)
}
elseif
{
$element ==
"guide"
}
{
set_guide $::env
(
SAVE_GUIDE
)
}
else
{
set ::env
(
${current_env}
)
$::env
(
${save_env}
)
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment