Skip to content

Commit 7747838

Browse files
authored
Merge pull request #1220 from Pinata-Consulting/mock-array-route-by-abutment
Mock array route by abutment
2 parents 0f05374 + 260af8f commit 7747838

File tree

6 files changed

+207
-194
lines changed

6 files changed

+207
-194
lines changed

flow/designs/asap7/mock-array/config.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,6 @@ export DETAILED_ROUTE_ARGS = -bottom_routing_layer M2 -top_routing_layer M7 -s
5151
# same information to other stages in the flow.
5252
export MIN_ROUTING_LAYER = M2
5353
export MAX_ROUTING_LAYER = M7
54+
55+
# works with 28 or more iterations as of writing, so give it a few more.
56+
export GLOBAL_ROUTE_ARGS=-congestion_iterations 40 -verbose

flow/designs/asap7/mock-array/constraints.sdc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port]
1313

1414
set_input_delay [expr $clk_period * $clk_io_pct] -clock $clk_name $non_clock_inputs
1515
set_output_delay [expr $clk_period * $clk_io_pct] -clock $clk_name [all_outputs]
16+
17+
set_dont_touch [get_nets ces_*_*]

flow/designs/asap7/mock-array/defaults.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
# current unit is configured as 2.16 which is on the routing grid for M5
44

55
# table of Elements - (rows cols width height pitch_x pitch_y)
6-
export MOCK_ARRAY_TABLE ?= 8 8 20 20 25 25
6+
export MOCK_ARRAY_TABLE ?= 8 8 20 20 20 22
77

88
# Element'd data width
99
export MOCK_ARRAY_DATAWIDTH ?= 64
1010

1111
# Must be zero for routing by abutment
12-
export MACRO_BLOCKAGE_HALO ?= 0.5
12+
export MACRO_BLOCKAGE_HALO ?= 0
1313

1414
export MOCK_ARRAY_SCALE ?= 45

flow/designs/asap7/mock-array/macro-placement.tcl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,16 @@ for {set row 0} {$row < $rows} {incr row} {
99
for {set col 0} {$col < $cols} {incr col} {
1010
set inst [$block findInst [format "ces_%d_%d" $row $col]]
1111

12-
set x [expr int((($array_offset_x + (($placement_grid_x * $pitch_x) * $col)) * $units))]
13-
set y [expr int((($array_offset_y + (($placement_grid_y * $pitch_y) * $row)) * $units))]
12+
set x [expr round((($array_offset_x + (($placement_grid_x * $pitch_x) * $col)) * $units))]
13+
set y [expr round((($array_offset_y + (($placement_grid_y * $pitch_y) * $row)) * $units))]
14+
15+
# belt and suspenders check... ASAP7 macro placement must be aligned to 0.048um
16+
if {$x % 48 != 0} {
17+
error "x=$x is not divisible by 48"
18+
}
19+
if {$y % 48 != 0} {
20+
error "y=$y is not divisible by 48"
21+
}
1422

1523
$inst setOrient R0
1624
$inst setOrigin $x $y

0 commit comments

Comments
 (0)