Skip to content

Commit b9eaf71

Browse files
committed
Merge remote-tracking branch 'origin/master' into HEAD
2 parents 59e651d + d4324e4 commit b9eaf71

36 files changed

+8216
-2821
lines changed

docs/tutorials/FlowTutorial.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ Log Elapsed seconds
106106
1_1_yosys 2
107107
3_3_place_gp 1
108108
4_1_cts 8
109-
5_2_TritonRoute 10
109+
5_2_route 10
110110
6_1_merge 10
111111
6_report 3
112112
```
@@ -315,13 +315,13 @@ abc.constr klayout.lyt klayout_tech.lef lib
315315

316316
| `logs` | | |
317317
|------------------------|------------------------|-----------------------|
318-
| `1_1_yosys.log` | `3_1_place_gp.log` | `5_2_TritonRoute.log` |
318+
| `1_1_yosys.log` | `3_1_place_gp.log` | `5_2_route.log` |
319319
| `2_1_floorplan.log` | `3_2_place_iop.log` | `6_1_merge.log` |
320320
| `2_2_floorplan_io.log` | `3_3_resizer.log` | `6_report.log` |
321321
| `2_3_tdms_place.log` | `3_4_opendp.log` | |
322-
| `2_4_mplace.log` | `4_1_cts.log` | |
323-
| `2_5_tapcell.log` | `4_2_cts_fillcell.log` | |
324-
| `2_6_pdn.log` | `5_1_fastroute.log` | |
322+
| `2_4_floorplan_macro.log` | `4_1_cts.log` | |
323+
| `2_5_floorplan_tapcell.log` | `4_2_cts_fillcell.log` | |
324+
| `2_6_floorplan_pdn.log` | `5_1_grt.log` | |
325325

326326

327327
- `results/sky130hd/ibex/base`
@@ -393,13 +393,13 @@ The log structure is as follows:
393393

394394
| `logs` | | |
395395
|------------------------|------------------------|-----------------------|
396-
| `1_1_yosys.log` | `3_1_place_gp.log` | `5_2_TritonRoute.log` |
396+
| `1_1_yosys.log` | `3_1_place_gp.log` | `5_2_route.log` |
397397
| `2_1_floorplan.log` | `3_2_place_iop.log` | `6_1_merge.log` |
398398
| `2_2_floorplan_io.log` | `3_3_resizer.log` | `6_report.log` |
399399
| `2_3_tdms_place.log` | `3_4_opendp.log` | |
400-
| `2_4_mplace.log` | `4_1_cts.log` | |
401-
| `2_5_tapcell.log` | `4_2_cts_fillcell.log` | |
402-
| `2_6_pdn.log` | `5_1_fastroute.log` | |
400+
| `2_4_floorplan_macro.log` | `4_1_cts.log` | |
401+
| `2_5_floorplan_tapcell.log` | `4_2_cts_fillcell.log` | |
402+
| `2_6_floorplan_pdn.log` | `5_1_grt.log` | |
403403

404404
### Area
405405

flow/Makefile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -499,13 +499,13 @@ $(eval $(call do-step,2_4_floorplan_macro,$(RESULTS_DIR)/2_3_floorplan_tdms.odb
499499
# STEP 5: Tapcell and Welltie insertion
500500
#-------------------------------------------------------------------------------
501501
$(RESULTS_DIR)/2_5_floorplan_tapcell.odb: $(RESULTS_DIR)/2_4_floorplan_macro.odb $(TAPCELL_TCL)
502-
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/tapcell.tcl -metrics $(LOG_DIR)/2_5_tapcell.json) 2>&1 | tee $(LOG_DIR)/2_5_tapcell.log
502+
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/tapcell.tcl -metrics $(LOG_DIR)/2_5_floorplan_tapcell.json) 2>&1 | tee $(LOG_DIR)/2_5_floorplan_tapcell.log
503503

504504

505505
# STEP 6: PDN generation
506506
#-------------------------------------------------------------------------------
507507
$(RESULTS_DIR)/2_6_floorplan_pdn.odb: $(RESULTS_DIR)/2_5_floorplan_tapcell.odb $(PDN_TCL)
508-
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/pdn.tcl -metrics $(LOG_DIR)/2_6_pdn.json) 2>&1 | tee $(LOG_DIR)/2_6_pdn.log
508+
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/pdn.tcl -metrics $(LOG_DIR)/2_6_floorplan_pdn.json) 2>&1 | tee $(LOG_DIR)/2_6_floorplan_pdn.log
509509

510510
$(RESULTS_DIR)/2_floorplan.odb: $(RESULTS_DIR)/2_6_floorplan_pdn.odb
511511
cp $< $@
@@ -552,7 +552,7 @@ $(RESULTS_DIR)/3_3_place_gp.odb: $(RESULTS_DIR)/3_2_place_iop.odb $(RESULTS_DIR)
552552
# STEP 4: Resizing & Buffering
553553
#-------------------------------------------------------------------------------
554554
$(RESULTS_DIR)/3_4_place_resized.odb: $(RESULTS_DIR)/3_3_place_gp.odb $(RESULTS_DIR)/2_floorplan.sdc
555-
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/resize.tcl -metrics $(LOG_DIR)/3_4_resizer.json) 2>&1 | tee $(LOG_DIR)/3_4_resizer.log
555+
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/resize.tcl -metrics $(LOG_DIR)/3_4_place_resized.json) 2>&1 | tee $(LOG_DIR)/3_4_place_resized.log
556556

557557
.PHONY: clean_resize
558558
clean_resize:
@@ -561,7 +561,7 @@ clean_resize:
561561
# STEP 5: Detail placement
562562
#-------------------------------------------------------------------------------
563563
$(RESULTS_DIR)/3_5_place_dp.odb: $(RESULTS_DIR)/3_4_place_resized.odb
564-
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/detail_place.tcl -metrics $(LOG_DIR)/3_5_opendp.json) 2>&1 | tee $(LOG_DIR)/3_5_opendp.log
564+
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/detail_place.tcl -metrics $(LOG_DIR)/3_5_place_dp.json) 2>&1 | tee $(LOG_DIR)/3_5_place_dp.log
565565

566566
$(RESULTS_DIR)/3_place.odb: $(RESULTS_DIR)/3_5_place_dp.odb
567567
cp $< $@
@@ -630,7 +630,7 @@ route: $(RESULTS_DIR)/5_route.odb \
630630
# STEP 1: Run global route
631631
#-------------------------------------------------------------------------------
632632
$(RESULTS_DIR)/5_1_grt.odb: $(RESULTS_DIR)/4_cts.odb $(FASTROUTE_TCL) $(PRE_GLOBAL_ROUTE)
633-
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/global_route.tcl -metrics $(LOG_DIR)/5_1_fastroute.json) 2>&1 | tee $(LOG_DIR)/5_1_fastroute.log
633+
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/global_route.tcl -metrics $(LOG_DIR)/5_1_grt.json) 2>&1 | tee $(LOG_DIR)/5_1_grt.log
634634

635635

636636
# STEP 2: Run detailed route
@@ -640,7 +640,7 @@ $(RESULTS_DIR)/5_2_route.odb: $(RESULTS_DIR)/5_1_grt.odb
640640
else
641641
$(RESULTS_DIR)/5_2_route.odb: $(RESULTS_DIR)/4_cts.odb
642642
endif
643-
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/detail_route.tcl -metrics $(LOG_DIR)/5_2_TritonRoute.json) 2>&1 | tee $(LOG_DIR)/5_2_TritonRoute.log
643+
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/detail_route.tcl -metrics $(LOG_DIR)/5_2_route.json) 2>&1 | tee $(LOG_DIR)/5_2_route.log
644644

645645
$(RESULTS_DIR)/5_route.odb: $(RESULTS_DIR)/5_2_route.odb
646646
cp $< $@
@@ -701,7 +701,7 @@ elapsed:
701701

702702
ifneq ($(USE_FILL),)
703703
$(RESULTS_DIR)/6_1_fill.odb: $(RESULTS_DIR)/5_route.odb $(FILL_CONFIG)
704-
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/density_fill.tcl -metrics $(LOG_DIR)/6_density_fill.json) 2>&1 | tee $(LOG_DIR)/6_density_fill.log
704+
($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/density_fill.tcl -metrics $(LOG_DIR)/6_1_fill.json) 2>&1 | tee $(LOG_DIR)/6_1_fill.log
705705
else
706706
$(RESULTS_DIR)/6_1_fill.odb: $(RESULTS_DIR)/5_route.odb
707707
cp $< $@

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ export GPL_ROUTABILITY_DRIVEN = 0
1414

1515
export CORE_AREA = $(shell \
1616
export MOCK_ARRAY_TABLE="$(MOCK_ARRAY_TABLE)" && \
17+
export MOCK_ARRAY_SCALE="$(MOCK_ARRAY_SCALE)" && \
1718
cd $(dir $(DESIGN_CONFIG))/../ && \
1819
python3 -c "import config; print(f'{config.ce_margin_x} {config.ce_margin_y} {config.ce_width - config.ce_margin_x} {config.ce_height - config.ce_margin_y}')")
1920

2021
export DIE_AREA = $(shell \
2122
export MOCK_ARRAY_TABLE="$(MOCK_ARRAY_TABLE)" && \
23+
export MOCK_ARRAY_SCALE="$(MOCK_ARRAY_SCALE)" && \
2224
cd $(dir $(DESIGN_CONFIG))/../ && \
2325
python3 -c "import config; print(f'0 0 {config.ce_width} {config.ce_height}')")
2426

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set cols [expr {[info exists ::env(MOCK_ARRAY_COLS)] ? $::env(MOCK_ARRAY_COLS) :
44

55
set clk_name clock
66
set clk_port_name clock
7-
set clk_period 8000
7+
set clk_period 2000
88

99
set clk_port [get_ports $clk_port_name]
1010
create_clock -period $clk_period -waveform [list 0 [expr $clk_period / 2]] -name $clk_name $clk_port

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ export PLACE_DENSITY = 0.30
1414

1515
export CORE_AREA = $(shell \
1616
export MOCK_ARRAY_TABLE="$(MOCK_ARRAY_TABLE)" && \
17+
export MOCK_ARRAY_SCALE="$(MOCK_ARRAY_SCALE)" && \
1718
cd $(dir $(DESIGN_CONFIG)) && \
1819
python3 -c "import config ; print(f'{config.margin_x} {config.margin_y} {config.core_width + config.margin_x} {config.core_height + config.margin_y}')")
1920

2021
export DIE_AREA = $(shell \
2122
export MOCK_ARRAY_TABLE="$(MOCK_ARRAY_TABLE)" && \
23+
export MOCK_ARRAY_SCALE="$(MOCK_ARRAY_SCALE)" && \
2224
cd $(dir $(DESIGN_CONFIG)) && \
2325
python3 -c "import config; print(f'{0} {0} {config.die_width} {config.die_height}')")
2426

@@ -49,3 +51,10 @@ export DETAILED_ROUTE_ARGS = -bottom_routing_layer M2 -top_routing_layer M7 -s
4951
# same information to other stages in the flow.
5052
export MIN_ROUTING_LAYER = M2
5153
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
57+
58+
# ensure we have some rows, so we don't get a bad clock skew.
59+
export MACRO_HALO_X = 0.5
60+
export MACRO_HALO_Y = 0.5

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import os
22

3-
# routing pitch for M4, M5 and M6 tied to placement grid at 2.16
4-
# therefore, the optimal placement and Element size should be multiple of 2.16
5-
# set grid x and y
6-
placement_grid_x = 2.16
7-
placement_grid_y = 2.16
3+
# Routing pitches for relevant metal layers.
4+
# For x, this is M5; for y, this is M4.
5+
# Pitches are specified in OpenROAD-flow-scripts/flow/platforms/asap7/lef/asap7_tech_1x_201209.lef.
6+
# For asap7, x and y pitch is the same.
7+
#
8+
# make_tracks M5 -x_offset 0.012 -x_pitch 0.048 -y_offset 0.012 -y_pitch 0.048
9+
#
10+
# the macro needs to be on a multiple of the track pattern
11+
placement_grid_x = 0.048 * int(os.environ.get("MOCK_ARRAY_SCALE"))
12+
placement_grid_y = 0.048 * int(os.environ.get("MOCK_ARRAY_SCALE"))
813

914
# number of Elements in row and column, can be control by user via environment variable
1015
# MOCK_ARRAY_TABLE (rows, cols, width, height, pitch_x, pitch_y)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
set sdc_version 2.0
22

3-
set clk_period 8000
3+
set clk_period 2000
44
create_clock [get_ports clock] -period $clk_period -waveform [list 0 [expr $clk_period/2]]
55

66
set clk_name clock

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +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 4 4 5 5
6+
export MOCK_ARRAY_TABLE ?= 8 8 20 20 20 21
77

88
# Element'd data width
9-
export MOCK_ARRAY_DATAWIDTH ?= 8
9+
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
13+
14+
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)