Skip to content

Commit ef7d63c

Browse files
committed
ppl: add deprecated message for -random and -random_seed
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
1 parent 8ec9019 commit ef7d63c

6 files changed

Lines changed: 132 additions & 100 deletions

File tree

src/ppl/src/IOPlacer.tcl

Lines changed: 106 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ proc write_pin_placement { args } {
208208

209209
sta::define_cmd_args "place_pins" {[-hor_layers h_layers]\
210210
[-ver_layers v_layers]\
211+
[-random_seed seed]\
212+
[-random]\
211213
[-corner_avoidance distance]\
212214
[-min_distance min_dist]\
213215
[-min_distance_in_tracks]\
@@ -220,146 +222,150 @@ sta::define_cmd_args "place_pins" {[-hor_layers h_layers]\
220222
proc place_pins { args } {
221223
ord::parse_list_args "place_pins" args list {-exclude -group_pins}
222224
sta::parse_key_args "place_pins" args \
223-
keys {-hor_layers -ver_layers -corner_avoidance \
225+
keys {-hor_layers -ver_layers -random_seed -corner_avoidance \
224226
-min_distance -write_pin_placement} \
225-
flags {-min_distance_in_tracks -annealing} ;# checker off
227+
flags {-random -min_distance_in_tracks -annealing} ;# checker off
226228

227229
sta::check_argc_eq0 "place_pins" $args
228230

229-
set regions $list(-exclude)
230-
set pin_groups $list(-group_pins)
231+
if { [info exists flags(-random)] || [info exists keys(-random_seed)] } {
232+
utl::warn PPL 113 "-random and -random_seed are deprecated."
233+
} else {
234+
set regions $list(-exclude)
235+
set pin_groups $list(-group_pins)
231236

232-
set dbTech [ord::get_db_tech]
233-
if { $dbTech == "NULL" } {
234-
utl::error PPL 31 "No technology found."
235-
}
237+
set dbTech [ord::get_db_tech]
238+
if { $dbTech == "NULL" } {
239+
utl::error PPL 31 "No technology found."
240+
}
236241

237-
set dbBlock [ord::get_db_block]
238-
if { $dbBlock == "NULL" } {
239-
utl::error PPL 32 "No block found."
240-
}
242+
set dbBlock [ord::get_db_block]
243+
if { $dbBlock == "NULL" } {
244+
utl::error PPL 32 "No block found."
245+
}
241246

242-
set db [ord::get_db]
247+
set db [ord::get_db]
243248

244-
set blockages {}
249+
set blockages {}
245250

246-
foreach inst [$dbBlock getInsts] {
247-
if { [$inst isBlock] } {
248-
if { ![$inst isPlaced] } {
249-
utl::warn PPL 15 "Macro [$inst getName] is not placed."
250-
} else {
251-
lappend blockages $inst
251+
foreach inst [$dbBlock getInsts] {
252+
if { [$inst isBlock] } {
253+
if { ![$inst isPlaced] } {
254+
utl::warn PPL 15 "Macro [$inst getName] is not placed."
255+
} else {
256+
lappend blockages $inst
257+
}
252258
}
253259
}
254-
}
255-
256-
utl::report "Found [llength $blockages] macro blocks."
257-
258-
if { [info exists keys(-hor_layers)] } {
259-
set hor_layers $keys(-hor_layers)
260-
} else {
261-
utl::error PPL 17 "-hor_layers is required."
262-
}
263260

264-
if { [info exists keys(-ver_layers)] } {
265-
set ver_layers $keys(-ver_layers)
266-
} else {
267-
utl::error PPL 18 "-ver_layers is required."
268-
}
261+
utl::report "Found [llength $blockages] macro blocks."
269262

270-
# set default interval_length from boundaries as 1u
271-
set distance 1
272-
if { [info exists keys(-corner_avoidance)] } {
273-
set distance $keys(-corner_avoidance)
274-
ppl::set_corner_avoidance [ord::microns_to_dbu $distance]
275-
}
263+
if { [info exists keys(-hor_layers)] } {
264+
set hor_layers $keys(-hor_layers)
265+
} else {
266+
utl::error PPL 17 "-hor_layers is required."
267+
}
276268

277-
set min_dist 2
278-
set dist_in_tracks [info exists flags(-min_distance_in_tracks)]
279-
if { [info exists keys(-min_distance)] } {
280-
set min_dist $keys(-min_distance)
281-
if { $dist_in_tracks } {
282-
ppl::set_min_distance $min_dist
269+
if { [info exists keys(-ver_layers)] } {
270+
set ver_layers $keys(-ver_layers)
283271
} else {
284-
ppl::set_min_distance [ord::microns_to_dbu $min_dist]
272+
utl::error PPL 18 "-ver_layers is required."
285273
}
286-
} else {
287-
utl::report "Using $min_dist tracks default min distance between IO pins."
288-
# setting min distance as 0u leads to the default min distance
289-
ppl::set_min_distance 0
290-
}
291-
ppl::set_min_distance_in_tracks $dist_in_tracks
292274

293-
set bterms_cnt [llength [$dbBlock getBTerms]]
275+
# set default interval_length from boundaries as 1u
276+
set distance 1
277+
if { [info exists keys(-corner_avoidance)] } {
278+
set distance $keys(-corner_avoidance)
279+
ppl::set_corner_avoidance [ord::microns_to_dbu $distance]
280+
}
294281

295-
if { $bterms_cnt == 0 } {
296-
utl::error PPL 19 "Design without pins."
297-
}
282+
set min_dist 2
283+
set dist_in_tracks [info exists flags(-min_distance_in_tracks)]
284+
if { [info exists keys(-min_distance)] } {
285+
set min_dist $keys(-min_distance)
286+
if { $dist_in_tracks } {
287+
ppl::set_min_distance $min_dist
288+
} else {
289+
ppl::set_min_distance [ord::microns_to_dbu $min_dist]
290+
}
291+
} else {
292+
utl::report "Using $min_dist tracks default min distance between IO pins."
293+
# setting min distance as 0u leads to the default min distance
294+
ppl::set_min_distance 0
295+
}
296+
ppl::set_min_distance_in_tracks $dist_in_tracks
298297

298+
set bterms_cnt [llength [$dbBlock getBTerms]]
299299

300-
set num_tracks_y 0
301-
foreach hor_layer_name $hor_layers {
302-
set hor_layer [ppl::parse_layer_name $hor_layer_name]
303-
if { ![ord::db_layer_has_hor_tracks $hor_layer] } {
304-
utl::error PPL 21 "Horizontal routing tracks not found for layer $hor_layer_name."
300+
if { $bterms_cnt == 0 } {
301+
utl::error PPL 19 "Design without pins."
305302
}
306303

307-
if { [$hor_layer getDirection] != "HORIZONTAL" } {
308-
utl::error PPL 45 "Layer $hor_layer_name preferred direction is not horizontal."
309-
}
310304

311-
set hor_track_grid [$dbBlock findTrackGrid $hor_layer]
305+
set num_tracks_y 0
306+
foreach hor_layer_name $hor_layers {
307+
set hor_layer [ppl::parse_layer_name $hor_layer_name]
308+
if { ![ord::db_layer_has_hor_tracks $hor_layer] } {
309+
utl::error PPL 21 "Horizontal routing tracks not found for layer $hor_layer_name."
310+
}
312311

313-
set num_tracks_y [expr $num_tracks_y+[llength [$hor_track_grid getGridY]]]
312+
if { [$hor_layer getDirection] != "HORIZONTAL" } {
313+
utl::error PPL 45 "Layer $hor_layer_name preferred direction is not horizontal."
314+
}
314315

315-
ppl::add_hor_layer $hor_layer
316-
}
316+
set hor_track_grid [$dbBlock findTrackGrid $hor_layer]
317317

318-
set num_tracks_x 0
319-
foreach ver_layer_name $ver_layers {
320-
set ver_layer [ppl::parse_layer_name $ver_layer_name]
321-
if { ![ord::db_layer_has_ver_tracks $ver_layer] } {
322-
utl::error PPL 23 "Vertical routing tracks not found for layer $ver_layer_name."
323-
}
318+
set num_tracks_y [expr $num_tracks_y+[llength [$hor_track_grid getGridY]]]
324319

325-
if { [$ver_layer getDirection] != "VERTICAL" } {
326-
utl::error PPL 46 "Layer $ver_layer_name preferred direction is not vertical."
320+
ppl::add_hor_layer $hor_layer
327321
}
328322

329-
set ver_track_grid [$dbBlock findTrackGrid $ver_layer]
323+
set num_tracks_x 0
324+
foreach ver_layer_name $ver_layers {
325+
set ver_layer [ppl::parse_layer_name $ver_layer_name]
326+
if { ![ord::db_layer_has_ver_tracks $ver_layer] } {
327+
utl::error PPL 23 "Vertical routing tracks not found for layer $ver_layer_name."
328+
}
330329

331-
set num_tracks_x [expr $num_tracks_x+[llength [$ver_track_grid getGridX]]]
330+
if { [$ver_layer getDirection] != "VERTICAL" } {
331+
utl::error PPL 46 "Layer $ver_layer_name preferred direction is not vertical."
332+
}
332333

333-
ppl::add_ver_layer $ver_layer
334-
}
334+
set ver_track_grid [$dbBlock findTrackGrid $ver_layer]
335335

336-
set num_slots [expr (2*$num_tracks_x + 2*$num_tracks_y)/$min_dist]
336+
set num_tracks_x [expr $num_tracks_x+[llength [$ver_track_grid getGridX]]]
337337

338-
if { [llength $regions] != 0 } {
339-
set lef_units [$dbTech getLefUnits]
338+
ppl::add_ver_layer $ver_layer
339+
}
340+
341+
set num_slots [expr (2*$num_tracks_x + 2*$num_tracks_y)/$min_dist]
342+
343+
if { [llength $regions] != 0 } {
344+
set lef_units [$dbTech getLefUnits]
340345

341-
foreach region $regions {
342-
exclude_io_pin_region -region $region
346+
foreach region $regions {
347+
exclude_io_pin_region -region $region
348+
}
343349
}
344-
}
345350

346-
if { [llength $pin_groups] != 0 } {
347-
foreach group $pin_groups {
348-
set pins [ppl::parse_pin_names "place_pins -group_pins" $group]
349-
if { [llength $pins] != 0 } {
350-
odb::add_pin_group $pins 0
351+
if { [llength $pin_groups] != 0 } {
352+
foreach group $pin_groups {
353+
set pins [ppl::parse_pin_names "place_pins -group_pins" $group]
354+
if { [llength $pins] != 0 } {
355+
odb::add_pin_group $pins 0
356+
}
351357
}
352358
}
353-
}
354359

355-
if { [info exists keys(-write_pin_placement)] } {
356-
ppl::set_pin_placement_file $keys(-write_pin_placement)
357-
}
360+
if { [info exists keys(-write_pin_placement)] } {
361+
ppl::set_pin_placement_file $keys(-write_pin_placement)
362+
}
358363

359-
if { [info exists flags(-annealing)] } {
360-
ppl::run_annealing
361-
} else {
362-
ppl::run_hungarian_matching
364+
if { [info exists flags(-annealing)] } {
365+
ppl::run_annealing
366+
} else {
367+
ppl::run_hungarian_matching
368+
}
363369
}
364370
}
365371

src/ppl/test/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ or_integration_tests(
106106
place_pin_error1
107107
place_pin_error2
108108
place_pin_error3
109+
random_deprecated1
110+
random_deprecated2
109111
top_layer1
110112
top_layer2
111113
top_layer3

src/ppl/test/random_deprecated1.ok

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[INFO ODB-0227] LEF file: Nangate45/Nangate45.lef, created 22 layers, 27 vias, 135 library cells
2+
[INFO ODB-0128] Design: gcd
3+
[INFO ODB-0130] Created 54 pins.
4+
[INFO ODB-0131] Created 88 components and 422 component-terminals.
5+
[INFO ODB-0133] Created 54 nets and 88 connections.
6+
[WARNING PPL-0113] -random and -random_seed are deprecated.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# gcd_nangate45 IO placement
2+
source "helpers.tcl"
3+
read_lef Nangate45/Nangate45.lef
4+
read_def gcd.def
5+
6+
place_pins -random -hor_layers metal3 -ver_layers metal2 -corner_avoidance 0 -min_distance 0.12

src/ppl/test/random_deprecated2.ok

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[INFO ODB-0227] LEF file: Nangate45/Nangate45.lef, created 22 layers, 27 vias, 135 library cells
2+
[INFO ODB-0128] Design: gcd
3+
[INFO ODB-0130] Created 54 pins.
4+
[INFO ODB-0131] Created 88 components and 422 component-terminals.
5+
[INFO ODB-0133] Created 54 nets and 88 connections.
6+
[WARNING PPL-0113] -random and -random_seed are deprecated.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# gcd_nangate45 IO placement
2+
source "helpers.tcl"
3+
read_lef Nangate45/Nangate45.lef
4+
read_def gcd.def
5+
6+
place_pins -random_seed 20 -hor_layers metal3 -ver_layers metal2 -corner_avoidance 0 -min_distance 0.12

0 commit comments

Comments
 (0)