@@ -102,7 +102,8 @@ proc clear_left { physical_pin blockages } {
102102 set track [dict get $physical_pin track]
103103
104104 foreach blockage $blockages {
105- if { [dict get $blockage track] == $track && [dict get $blockage to] < [dict get $physical_pin from] } {
105+ if { [dict get $blockage track] == $track && \
106+ [dict get $blockage to] < [dict get $physical_pin from] } {
106107 return 0
107108 }
108109 }
@@ -113,7 +114,8 @@ proc clear_right { physical_pin blockages } {
113114 set track [dict get $physical_pin track]
114115
115116 foreach blockage $blockages {
116- if { [dict get $blockage track] == $track && [dict get $blockage from] > [dict get $physical_pin to] } {
117+ if { [dict get $blockage track] == $track && \
118+ [dict get $blockage from] > [dict get $physical_pin to] } {
117119 return 0
118120 }
119121 }
@@ -179,7 +181,10 @@ proc move_m2_pins_to_edge { cell_name cell_data } {
179181 set layer_name [dict get $wrapper_cfg remove_pins layer]
180182 set layer_width [expr round([dict get $wrapper_cfg layer $layer_name width] * $def_units )]
181183 set new_pin_layer_name [dict get $wrapper_cfg new_pins layer]
182- set new_pin_layer_width [expr round([dict get $wrapper_cfg layer $new_pin_layer_name width] * $def_units )]
184+ set new_pin_layer_width [expr round( \
185+ [dict get $wrapper_cfg layer $new_pin_layer_name width] * \
186+ $def_units \
187+ )]
183188 set cell_width [lindex [dict get [lef get_cell $cell_name ] die_area] 2]
184189 set design [wrapper::create_def_wrapper $cell_name ${cell_name} _mod]
185190 set lower_y [expr 2 * 128]
@@ -280,7 +285,14 @@ proc move_m2_pins_to_edge { cell_name cell_data } {
280285 dict set design obstructions M2 $m2_obstructions
281286 }
282287 # Replace the M2 port with an M1 port which is now at the side of the cells
283- set new_pin_rect [list [expr round($x2 - ($new_pin_layer_width / 2))] $lower_y [expr round($x2 + ($new_pin_layer_width / 2))] $upper_y ]
288+ set new_pin_rect [concat \
289+ [list \
290+ [expr round($x2 - ($new_pin_layer_width / 2))] \
291+ $lower_y \
292+ [expr round($x2 + ($new_pin_layer_width / 2))] \
293+ $upper_y \
294+ ] \
295+ ]
284296 if { [dict exists $port layers " M1" shapes] } {
285297 set shapes [dict get $port layers " M1" shapes]
286298 } else {
@@ -368,7 +380,10 @@ proc move_m2_pins_to_edge { cell_name cell_data } {
368380 dict set design die_area [list \
369381 0 \
370382 0 \
371- [expr [lindex [dict get $design die_area] 2] + (($pad_idx - ($left_padding + 1)) * $padding_cell_width )] \
383+ [concat \
384+ [expr [lindex [dict get $design die_area] 2] + \
385+ (($pad_idx - ($left_padding + 1)) * $padding_cell_width )] \
386+ ] \
372387 [lindex [dict get $design die_area] 3]]
373388
374389 # Extend VDD, VSS, VPW, VNW pins to be the width of the wrapper
@@ -434,7 +449,13 @@ proc get_pin_rect { port layer } {
434449 set offset [list 0 0]
435450 }
436451
437- return [absolute_rectangle [dict get [lindex [dict get $port layers $layer shapes] 0] rect] $offset ]
452+ return [absolute_rectangle \
453+ [dict get \
454+ [lindex \
455+ [dict get $port layers $layer shapes] 0 \
456+ ] rect \
457+ ] $offset \
458+ ]
438459}
439460
440461proc wrap_macro { cell_name } {
@@ -465,14 +486,19 @@ proc wrap_macro { cell_name } {
465486 }
466487
467488 set macro_pin_y [expr ([lindex $pin_rect 1] + [lindex $pin_rect 3]) / 2]
468- set grid_y [expr round((floor(([lindex $pin_rect 1] + [lindex $pin_rect 3]) / 2 / [dict get $tech pitch horizontal_track]) - 1))]
489+ set grid_y [expr round((floor( \
490+ ([lindex $pin_rect 1] + [lindex $pin_rect 3]) / 2 / \
491+ [dict get $tech pitch horizontal_track]) - 1))]
469492
470493 # Need to check that the grid point we're trying to use is going to be accessible.
471494 # If it is not, then try the point 2 grid points higher
472495 if { [dict exists $grid_pins $grid_y ] } {
473496 if { [dict exists $grid_pins [expr $grid_y + 2]] } {
474497 puts " Cell $cell_name "
475- puts " Problem assigning pin grid - requested and upper grid points for $pin_name at $grid_y already allocated to [ dict get $grid_pins $grid_y ] and [ dict get $grid_pins [expr $grid_y + 2] ]"
498+ puts [concat " Problem assigning pin grid - requested and upper grid points " \
499+ " for $pin_name at " \
500+ " $grid_y already allocated to [ dict get $grid_pins $grid_y ] and " \
501+ " [ dict get $grid_pins [expr $grid_y + 2] ]" ]
476502 exit -1
477503 }
478504 set grid_y [expr $grid_y + 2]
@@ -486,14 +512,19 @@ proc wrap_macro { cell_name } {
486512 set order [lsort -integer [dict keys $grid_pins ]]
487513 set prev_pos [lindex $order 0]
488514
515+ # tclint-disable-next-line line-length
489516 # We will have a jog in the track, which needs to be on a vertical grid 3 units from the edge of the macro
490517 # If there is another pin close by, the we will need to have the jog 3 grids further in
491518 dict set net_info [dict get $grid_pins $prev_pos ] h_offset 3
492519 foreach pin_pos [lrange $order 1 end] {
493520 if { $pin_pos - $prev_pos > 3 } {
494521 dict set net_info [dict get $grid_pins $pin_pos ] h_offset 3
495522 } else {
496- dict set net_info [dict get $grid_pins $pin_pos ] h_offset [expr [dict get $net_info [dict get $grid_pins $prev_pos ] h_offset] + 3]
523+ dict set net_info [dict get $grid_pins $pin_pos ] h_offset \
524+ [expr \
525+ [dict get $net_info [dict get $grid_pins $prev_pos ] h_offset] \
526+ + 3 \
527+ ]
497528 }
498529 set prev_pos $pin_pos
499530 }
@@ -507,12 +538,18 @@ proc wrap_macro { cell_name } {
507538 }
508539 set wrapper_depth [expr $wrapper_depth + 3]
509540 set macro_x [expr $wrapper_depth * [dict get $tech pitch vertical_track]]
510- set width [expr round((floor([lef get_width $cell ] / [dict get $tech pitch vertical_track]) + 1) * [dict get $tech pitch vertical_track] )]
511- set height [expr round((floor([lef get_height $cell ] / [dict get $tech pitch horizontal_track]) + 1) * [dict get $tech pitch horizontal_track])]
541+ set width [expr round((floor([lef get_width $cell ] / \
542+ [dict get $tech pitch vertical_track]) + 1) * \
543+ [dict get $tech pitch vertical_track])]
544+ set height [expr round((floor([lef get_height $cell ] / \
545+ [dict get $tech pitch horizontal_track]) + 1) * \
546+ [dict get $tech pitch horizontal_track])]
512547
513548 # Now we know where the macro is placed, we know the size of the wrapper
514549 dict set wrapper die_area [list [expr round(-1 * $macro_x )] 0 [expr $width ] $height ]
515550 # debug "Set die area [dict get $wrapper die_area]"
551+
552+ # tclint-disable-next-line line-length
516553 # Now we know the maximum extent of the space needed for the job we can add in the pins the appropriate number of grids to the left of the RAM
517554
518555 # Shift the wrapper so the lower left corner is at (0, 0)
@@ -542,14 +579,24 @@ proc wrap_macro { cell_name } {
542579 dict set new_port layers {}
543580 dict set new_port fixed [list 0 $y_position ]
544581 dict set new_port layers " C4" shapes [list \
545- [list rect [list 0 [expr 0 - [dict get $tech layer C4 width] / 2] [dict get $tech layer C4 depth] [expr 0 + [dict get $tech layer C4 width] / 2]]]]
582+ [list rect [concat \
583+ [list 0 \
584+ [expr 0 - [dict get $tech layer C4 width] / 2] \
585+ [dict get $tech layer C4 depth] \
586+ [expr 0 + [dict get $tech layer C4 width] / 2] \
587+ ] \
588+ ]] \
589+ ]
546590 # debug "Replacing pin $net_name with $new_port"
547591 dict set wrapper pins $net_name ports [list $new_port ]
548592
549593 set segments {}
550594
551595 # First segment from RAM to jog location, to the y grid of the pin
552- set target_grid_point [expr ($wrapper_depth - [dict get $net h_offset]) * [dict get $tech pitch vertical_track]]
596+ set target_grid_point [expr \
597+ ($wrapper_depth - [dict get $net h_offset]) * \
598+ [dict get $tech pitch vertical_track] \
599+ ]
553600 set width [dict get $tech layer [dict get $net pin_layer] width]
554601 lappend segments [list \
555602 layer [dict get $net pin_layer] \
@@ -591,7 +638,10 @@ proc test_harness { wrappers } {
591638 set grid_x_size [expr $max_cell_width + (2 * $site_width )]
592639 set grid_y_size [expr 4 * $site_height ]
593640
594- def new_design " test_harness" [dict get $wrapper_cfg def_units] [list 0 0 [expr round($grid_x_size * $num_grids )] [expr round($grid_y_size * $num_grids )]]
641+ def new_design " test_harness" [dict get $wrapper_cfg def_units] \
642+ [concat [list 0 0] \
643+ [list [expr round($grid_x_size * $num_grids )] \
644+ [expr round($grid_y_size * $num_grids )]]]
595645
596646 foreach cell [dict keys $wrappers ] {
597647 set x [expr round(($idx % $num_grids ) * $grid_x_size )]
@@ -617,6 +667,7 @@ proc set_stdcell_config { config } {
617667}
618668
619669proc run { } {
670+ # tclint-disable-next-line line-length
620671 set file_name /projects/ssg/pj10000064_diphda/users/colhol01/openroad/library/arm/cp/14lpp/sc10p5mcpp84_base_lvt_c14/r2p1/lef/sc10p5mcpp84_14lpp_base_lvt_c14.lef
621672
622673 lef read_macros $file_name
@@ -633,7 +684,10 @@ proc convert_tech_to_def_units { tech } {
633684 dict for {layer_name layer} [dict get $tech layer] {
634685 foreach property {depth width non_preferred_width} {
635686 if { [dict exists $layer $property ] } {
636- dict set tech layer $layer_name $property [expr round([dict get $layer $property ] * $def_units )]
687+ dict set tech layer $layer_name $property \
688+ [expr round( \
689+ [dict get $layer $property ] * $def_units \
690+ )]
637691 }
638692 }
639693 }
@@ -646,8 +700,10 @@ proc convert_tech_to_def_units { tech } {
646700 }
647701 }
648702
649- dict set tech pitch vertical_track [expr round([dict get $tech pitch vertical_track] * $def_units )]
650- dict set tech pitch horizontal_track [expr round([dict get $tech pitch horizontal_track] * $def_units )]
703+ dict set tech pitch vertical_track [expr round( \
704+ [dict get $tech pitch vertical_track] * $def_units )]
705+ dict set tech pitch horizontal_track [expr round( \
706+ [dict get $tech pitch horizontal_track] * $def_units )]
651707
652708 return $tech
653709}
0 commit comments