Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into HEAD
Browse files Browse the repository at this point in the history
  • Loading branch information
oharboe committed Nov 18, 2024
2 parents a5f426d + ccd5a71 commit 6b155bd
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 32 deletions.
59 changes: 46 additions & 13 deletions docs/tutorials/FlowTutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -408,8 +408,13 @@ The log structure is as follows:

View design area and its core utilization:

```
```shell
make gui_final
```

In the `Tcl Commands` section:

```tcl
report_design_area
```

Expand Down Expand Up @@ -453,6 +458,8 @@ hierarchy refer to the OpenROAD [GUI](https://openroad.readthedocs.io/en/latest/
Use the report command to view individual power components i.e.
sequential, combinational, macro and power consumed by I/O pads.

In the `Tcl Commands` section:

```tcl
report_power
```
Expand Down Expand Up @@ -699,6 +706,11 @@ fixed DRC violation in the design:

```shell
openroad -gui
```

In the `Tcl Commands` section:

```tcl
source drc_fix.tcl
```

Expand All @@ -718,7 +730,7 @@ to view Tcl Commands available. In OpenROAD GUI, at the bottom,
`TCL commands` executable space is available to run the commands.
For example

View `design area`:
View `design area` in the `Tcl Commands` section of the GUI:

```tcl
report_design_area
Expand Down Expand Up @@ -817,7 +829,7 @@ The `gcd` design synthesis results for area and speed optimizations are shown be
|-----------------------|--------------------------------------|--------------------------------------|
| `Number of wires` | 224 | 224 |
| `Number of wire bits` | 270 | 270 |
| `Number of cells` | 234 | 234 |
[O| `Number of cells` | 234 | 234 |
| `Chip area` | 2083.248000 | 2083.248000 |
| `Final Design Area` | Design area 4295 u^2 6% utilization. | Design area 4074 u^2 6% utilization. |

Expand Down Expand Up @@ -1085,6 +1097,11 @@ To check this in OpenROAD tool root directory:
```shell
cd ../tools/OpenROAD/src/ifp/test/
openroad
```

In the `Tcl Commands` section:

```tcl
source tiecells.tcl
```

Expand All @@ -1095,7 +1112,7 @@ AND2_X1 u2 (.A1(r1q), .A2(1'b0), .ZN(u2z0));
AND2_X1 u3 (.A1(u1z), .A2(1'b1), .ZN(u2z1));
```
With following `insert_tiecells` command:
```
```tcl
insert_tiecells LOGIC0_X1/Z -prefix "TIE_ZERO_"
insert_tiecells LOGIC1_X1/Z
```
Expand Down Expand Up @@ -1152,7 +1169,7 @@ Read the resulting macro placement with a complete core view:
##### Macro Placement With Halo Spacing

Explore macro placement with halo spacing, refer to the example
[here]((https://github.com/The-OpenROAD-Project/OpenROAD/tree/master/src/mpl/test/).
[here](https://github.com/The-OpenROAD-Project/OpenROAD/tree/master/src/mpl/test/).

Launch GUI by running the following command(s) in the terminal in OpenROAD tool root directory:
```shell
Expand Down Expand Up @@ -1208,7 +1225,7 @@ Change `CORE_UTILIZATION` and `PLACE_DENSITY` for the `ibex` design
View `ibex` design `config.mk`
[here](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/master/flow/designs/sky130hd/ibex/config.mk).

```
```tcl
export CORE_UTILIZATION = 40
export PLACE_DENSITY_LB_ADDON = 0.1
```
Expand Down Expand Up @@ -1324,6 +1341,7 @@ corners.
Refer to the built-in example [here](https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/test/gcd_sky130hd_fast_slow.tcl).

Run the following commands in the terminal:

```shell
cd ../../test/
openroad
Expand All @@ -1332,12 +1350,15 @@ source gcd_sky130hd_fast_slow.tcl

The resulting `worst slack`, `TNS`:

```
```tcl
report_worst_slack -min -digits 3
worst slack 0.321
report_worst_slack -max -digits 3
worst slack -16.005
report_tns -digits 3
```

```
worst slack 0.321
worst slack -16.005
tns -529.496
```

Expand Down Expand Up @@ -1431,7 +1452,7 @@ Reduce the clock frequency by increasing the clock period to `0.9` and re-run
`repair_timing` to fix the setup violation warnings. Such timing violations
are automatically fixed by the `resizer` `post CTS` and `global routing.`

```yvl
```tcl
create_clock -period 0.9 clk
repair_timing -setup
```
Expand Down Expand Up @@ -1701,7 +1722,7 @@ Refer to the built-in examples [here](https://github.com/The-OpenROAD-Project/Op

Run these Tcl commands in the terminal in OpenROAD tool root directory:

```
```shell
cd ../tools/OpenROAD/src/cts/test/
openroad
source post_cts_opt.tcl
Expand Down Expand Up @@ -1765,7 +1786,7 @@ Filler cells removed with `remove_fillers` command.
### Global Routing

The global router analyzes available routing resources and automatically
allocates them to avoid any  H/V  overflow violations for optimal routing. 
allocates them to avoid any H/V overflow violations for optimal routing.
It generates a congestion report for GCells showing total resources, demand,
utilization, location and the H/V violation status. If there are no violations
reported then the design can proceed to detail routing.
Expand Down Expand Up @@ -1937,22 +1958,32 @@ design rules while obeying DRC constraints. It is driven by a json
configuration file.

Command used as follows:

```tcl
density_fill -rules <json_file> [-area <list of lx ly ux uy>]
```

If -area is not specified, the core area will be used.

To run metal fill post route, run the following:

```shell
cd flow/tutorials/scripts/metal_fill
openroad -gui
```

In the `Tcl Commands` section:

```tcl
source "helpers.tcl"
read_db ./5_route.odb
```

Layout before adding metal fill is as follows:
![Detail Routing](./images/sky130_gcd_route.webp)

To add metal fill, run the command:

```tcl
density_fill -rules ../../../platforms/sky130hd/fill.json
```
Expand Down Expand Up @@ -1980,7 +2011,8 @@ cd ../tools/OpenROAD/src/rcx/test/
openroad
```

To run parasitics for gcd design:
Run parasitics in the `Tcl Commands` section:

```tcl
source 45_gcd.tcl
```
Expand Down Expand Up @@ -2064,6 +2096,7 @@ In the GUI, you can go under `Heat Maps` and mark the
You can create a text file with the congestion information of the
GCells for further investigation on the GUI. To do that, add the
`-congestion_report_file file_name` to the `global_route` command, as shown below:

```tcl
global_route -guide_file out.guide -congestion_report_file congest.rpt
```
Expand Down
4 changes: 1 addition & 3 deletions flow/scripts/detail_route.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,7 @@ set all_args [concat [list \

log_cmd detailed_route {*}$all_args

set_global_routing_layer_adjustment $env(MIN_ROUTING_LAYER)-$env(MAX_ROUTING_LAYER) 0.5
set_routing_layers -signal $env(MIN_ROUTING_LAYER)-$env(MAX_ROUTING_LAYER)

fast_route

if {![env_var_equals SKIP_ANTENNA_REPAIR_POST_DRT 1]} {
set repair_antennas_iters 1
Expand Down
4 changes: 1 addition & 3 deletions flow/scripts/global_place.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@ proc do_placement {global_placement_args} {
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)] \
$global_placement_args]

if { 0 != [llength [array get ::env GLOBAL_PLACEMENT_ARGS]] } {
lappend all_args {*}$::env(GLOBAL_PLACEMENT_ARGS)
}
lappend all_args {*}$::env(GLOBAL_PLACEMENT_ARGS)

log_cmd global_placement {*}$all_args
}
Expand Down
17 changes: 4 additions & 13 deletions flow/scripts/global_place_skip_io.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,13 @@ source $::env(SCRIPTS_DIR)/load.tcl
erase_non_stage_variables place
load_design 2_floorplan.odb 2_floorplan.sdc


if { [env_var_exists_and_non_empty FLOORPLAN_DEF] } {
puts "FLOORPLAN_DEF is set. Skipping global placement without IOs"
} else {
set place_density [place_density_with_lb_addon]

if { 0 != [llength [array get ::env GLOBAL_PLACEMENT_ARGS]] } {
log_cmd global_placement -skip_io -density $place_density \
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
{*}$::env(GLOBAL_PLACEMENT_ARGS)
} else {
log_cmd global_placement -skip_io -density $place_density \
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)
}
log_cmd global_placement -skip_io -density [place_density_with_lb_addon] \
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
{*}$::env(GLOBAL_PLACEMENT_ARGS)
}

write_db $::env(RESULTS_DIR)/3_1_place_gp_skip_io.odb
1 change: 1 addition & 0 deletions flow/scripts/variables.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,7 @@ REPAIR_PDN_VIA_LAYER:
GLOBAL_PLACEMENT_ARGS:
description: >
Use additional tuning parameters during global placement other than default args defined in global_place.tcl.
default: ""
ENABLE_DPO:
description: >
Enable detail placement with improve_placement feature.
Expand Down

0 comments on commit 6b155bd

Please sign in to comment.