Skip to content

Commit 1c38be3

Browse files
authored
Merge branch 'The-OpenROAD-Project:master' into signoff-single-commit
2 parents 2a53331 + 5f96c41 commit 1c38be3

File tree

103 files changed

+98366
-33249
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+98366
-33249
lines changed

docs/user/FlowVariables.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ configuration file.
100100
| <a name="ADDITIONAL_GDS"></a>ADDITIONAL_GDS| Hardened macro GDS files listed here.| |
101101
| <a name="ADDITIONAL_LEFS"></a>ADDITIONAL_LEFS| Hardened macro LEF view files listed here. The LEF information of the macros is immutable and used throughout all stages. Stored in the .odb file.| |
102102
| <a name="ADDITIONAL_LIBS"></a>ADDITIONAL_LIBS| Hardened macro library files listed here. The library information is immutable and used throughout all stages. Not stored in the .odb file.| |
103+
| <a name="ASAP7_USE_VT"></a>ASAP7_USE_VT| A space separated list of VT options to use with the ASAP7 standard cell library: RVT, LVT, SLVT.| RVT|
103104
| <a name="BALANCE_ROWS"></a>BALANCE_ROWS| Balance rows during placement.| 0|
104105
| <a name="BLOCKS"></a>BLOCKS| Blocks used as hard macros in a hierarchical flow. Do note that you have to specify block-specific inputs file in the directory mentioned by Makefile.| |
105106
| <a name="BUFFER_PORTS_ARGS"></a>BUFFER_PORTS_ARGS| Specify arguments to the buffer_ports call during placement. Only used if DONT_BUFFER_PORTS=0.| |
@@ -127,6 +128,7 @@ configuration file.
127128
| <a name="DETAILED_METRICS"></a>DETAILED_METRICS| If set, then calls report_metrics prior to repair operations in the CTS and global route stages| 0|
128129
| <a name="DETAILED_ROUTE_ARGS"></a>DETAILED_ROUTE_ARGS| Add additional arguments for debugging purposes during detail route.| |
129130
| <a name="DETAILED_ROUTE_END_ITERATION"></a>DETAILED_ROUTE_END_ITERATION| Maximum number of iterations.| 64|
131+
| <a name="DETAIL_PLACEMENT_ARGS"></a>DETAIL_PLACEMENT_ARGS| Specify arguments to the detailed_placement call during placement.| |
130132
| <a name="DFF_LIB_FILES"></a>DFF_LIB_FILES| Technology mapping liberty files for flip-flops.| |
131133
| <a name="DFF_MAP_FILE"></a>DFF_MAP_FILE| Optional mapping file supplied to Yosys to map D flip-flops| |
132134
| <a name="DIE_AREA"></a>DIE_AREA| The die area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2).| |
@@ -161,7 +163,7 @@ configuration file.
161163
| <a name="KLAYOUT_TECH_FILE"></a>KLAYOUT_TECH_FILE| A mapping from LEF/DEF to GDS using the KLayout tool.| |
162164
| <a name="LATCH_MAP_FILE"></a>LATCH_MAP_FILE| Optional mapping file supplied to Yosys to map latches| |
163165
| <a name="LAYER_PARASITICS_FILE"></a>LAYER_PARASITICS_FILE| Path to per layer parasitics file. Defaults to $(PLATFORM_DIR)/setRC.tcl.| |
164-
| <a name="LEC_CHECK"></a>LEC_CHECK| Perform a formal equivalence check between before and after netlists.| 1|
166+
| <a name="LEC_CHECK"></a>LEC_CHECK| Perform a formal equivalence check between before and after netlists. If this fails, report an issue to OpenROAD.| 0|
165167
| <a name="LIB_FILES"></a>LIB_FILES| A Liberty file of the standard cell library with PVT characterization, input and output characteristics, timing and power definitions for each cell.| |
166168
| <a name="MACRO_BLOCKAGE_HALO"></a>MACRO_BLOCKAGE_HALO| Distance beyond the edges of a macro that will also be covered by the blockage generated for that macro. Note that the default macro blockage halo comes from the largest of the specified MACRO_PLACE_HALO x or y values. This variable overrides that calculation.| |
167169
| <a name="MACRO_EXTENSION"></a>MACRO_EXTENSION| Sets the number of GCells added to the blockages boundaries from macros.| |
@@ -388,6 +390,7 @@ configuration file.
388390
- [CELL_PAD_IN_SITES_DETAIL_PLACEMENT](#CELL_PAD_IN_SITES_DETAIL_PLACEMENT)
389391
- [CELL_PAD_IN_SITES_GLOBAL_PLACEMENT](#CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)
390392
- [CLUSTER_FLOPS](#CLUSTER_FLOPS)
393+
- [DETAIL_PLACEMENT_ARGS](#DETAIL_PLACEMENT_ARGS)
391394
- [DONT_BUFFER_PORTS](#DONT_BUFFER_PORTS)
392395
- [EARLY_SIZING_CAP_RATIO](#EARLY_SIZING_CAP_RATIO)
393396
- [FLOORPLAN_DEF](#FLOORPLAN_DEF)
@@ -496,6 +499,7 @@ configuration file.
496499

497500
## All stages variables
498501

502+
- [ASAP7_USE_VT](#ASAP7_USE_VT)
499503
- [KEEP_VARS](#KEEP_VARS)
500504
- [NUM_CORES](#NUM_CORES)
501505
- [OPENROAD_HIERARCHICAL](#OPENROAD_HIERARCHICAL)

docs/user/InstructionsForAutoTuner.md

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -122,27 +122,28 @@ The order of the parameters matter. Arguments `--design`, `--platform` and
122122
The following commands should be run from `./tools/AutoTuner`.
123123
```
124124

125-
#### Tune only
126-
127-
* AutoTuner: `openroad_autotuner tune -h`
125+
#### Tune only
128126

129127
Example:
130128

131129
```shell
132-
openroad_autotuner --design gcd --platform sky130hd \
133-
--config ../../flow/designs/sky130hd/gcd/autotuner.json \
134-
tune --samples 5
130+
python3 -m autotuner.distributed \
131+
--design gcd \
132+
--platform sky130hd \
133+
--config ../../flow/designs/sky130hd/gcd/autotuner.json \
134+
tune --samples 5
135135
```
136-
#### Sweep only
137136

138-
* Parameter sweeping: `openroad_autotuner sweep -h`
137+
#### Sweep only
139138

140139
Example:
141140

142141
```shell
143-
openroad_autotuner --design gcd --platform sky130hd \
144-
--config src/autotuner/distributed-sweep-example.json \
145-
sweep
142+
python3 -m autotuner.distributed \
143+
--design gcd \
144+
--platform sky130hd \
145+
--config src/autotuner/distributed-sweep-example.json \
146+
sweep
146147
```
147148

148149
#### Plot images
@@ -159,6 +160,19 @@ The graph will show the progression of one metric (see list below) over the exec
159160
python3 utils/plot.py --results_dir <your-autotuner-result-path>
160161
```
161162

163+
#### Work Directory
164+
165+
Use `--work-dir` to specify a writable directory for outputs. This is passed to ORFS as `WORK_HOME`.
166+
167+
```shell
168+
python3 -m autotuner.distributed \
169+
--design gcd \
170+
--platform sky130hd \
171+
--config ../../flow/designs/sky130hd/gcd/autotuner.json \
172+
--work-dir /tmp/autotuner123 \
173+
tune --samples 5
174+
```
175+
162176
### Google Cloud Platform (GCP) distribution with Ray
163177

164178
GCP Setup Tutorial coming soon.
@@ -171,6 +185,7 @@ GCP Setup Tutorial coming soon.
171185
| `--platform` | Name of the platform for Autotuning. ||
172186
| `--config` | Configuration file that sets which knobs to use for Autotuning. ||
173187
| `--experiment` | Experiment name. This parameter is used to prefix the FLOW_VARIANT and to set the Ray log destination.| test |
188+
| `--work-dir` | Work directory for outputs (passed to ORFS as WORK_HOME). | Installation directory |
174189
| `--git_clean` | Clean binaries and build files. **WARNING**: may lose previous data. ||
175190
| `--git_clone` | Force new git clone. **WARNING**: may lose previous data. ||
176191
| `--git_clone_args` | Additional git clone arguments. ||

etc/DependencyInstaller.sh

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ _versionCompare() {
2020
}
2121

2222
_installORDependencies() {
23-
./tools/OpenROAD/etc/DependencyInstaller.sh ${OR_INSTALLER_ARGS}
23+
if [[ ${YOSYS_VER} == "" ]]; then
24+
YOSYS_VER=v$(grep 'yosys_ver =' tools/yosys/docs/source/conf.py | awk -F'"' '{print $2}')
25+
fi
26+
./tools/OpenROAD/etc/DependencyInstaller.sh ${OR_INSTALLER_ARGS} -yosys-ver="${YOSYS_VER}"
2427
}
2528

2629
_installPipCommon() {
@@ -306,6 +309,10 @@ Usage: $0 [-all|-base|-common] [-<ARGS>]
306309
# sudo or with root access.
307310
$0 -ci
308311
# Installs CI tools
312+
$0 -yosys-ver=VERSION
313+
# Installs specified version of Yosys.
314+
# By default, the Yosys version is
315+
# obtained from tools/yosys/docs/source/conf.py
309316
$0 -constant-build-dir
310317
# Use constant build directory, instead of
311318
# random one.
@@ -315,6 +322,7 @@ EOF
315322

316323
# default args
317324
OR_INSTALLER_ARGS="-eqy"
325+
YOSYS_VER=""
318326
# default prefix
319327
PREFIX=""
320328
# default option
@@ -355,6 +363,9 @@ while [ "$#" -gt 0 ]; do
355363
CI="yes"
356364
OR_INSTALLER_ARGS="${OR_INSTALLER_ARGS} -save-deps-prefixes=/etc/openroad_deps_prefixes.txt"
357365
;;
366+
-yosys-ver=*)
367+
YOSYS_VER=${1#*=}
368+
;;
358369
-prefix=*)
359370
OR_INSTALLER_ARGS="${OR_INSTALLER_ARGS} $1"
360371
PREFIX=${1#*=}

etc/DockerHelper.sh

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ _setup() {
7373
fromImage="${FROM_IMAGE_OVERRIDE:-$osBaseImage}"
7474
cp tools/OpenROAD/etc/DependencyInstaller.sh etc/InstallerOpenROAD.sh
7575
context="etc"
76-
buildArgs="--build-arg options=${options} ${noConstantBuildDir}"
76+
local yosys_ver
77+
yosys_ver=v$(grep 'yosys_ver =' tools/yosys/docs/source/conf.py | awk -F'"' '{print $2}')
78+
options+=" -yosys-ver=${yosys_ver}"
79+
buildArgs="--build-arg \"options=${options}\" ${noConstantBuildDir}"
7780
;;
7881
*)
7982
echo "Target ${target} not found" >&2
@@ -87,20 +90,20 @@ _setup() {
8790

8891
_create() {
8992
echo "Create docker image ${imagePath} using ${file}"
90-
${DOCKER_CMD} buildx build \
93+
eval ${DOCKER_CMD} buildx build \
9194
--file "${file}" \
9295
--tag "${imagePath}" \
93-
${buildArgs} \
96+
"${buildArgs}" \
9497
"${context}"
9598
rm -f etc/InstallerOpenROAD.sh
9699
}
97100

98101
_push() {
99-
if [[ -z ${username+x} ]]; then
102+
if [[ -z ${username+x} ]] && [[ ${dryRun} != 1 ]]; then
100103
echo "Missing required -username=<USER> argument"
101104
_help
102105
fi
103-
if [[ -z ${password+x} ]]; then
106+
if [[ -z ${password+x} ]] && [[ ${dryRun} != 1 ]]; then
104107
echo "Missing required -password=<PASS> argument"
105108
_help
106109
fi

flow/.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
settings.mk
21
vars.sh
32
vars.gdb
43
vars.tcl

flow/Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
# settings.mk is not under source control. Put variables into this
2-
# file to avoid having to adding the to the make command line.
1+
# Put variables into this file to avoid having to adding
2+
# the to the make command line.
3+
#
4+
# Out of ORFS trees can have their own settings.mk.
35
-include settings.mk
46

57
# ==============================================================================
@@ -389,6 +391,8 @@ endef
389391
# Custom target to go from synthesis to placement in a single OpenROAD run
390392
$(eval $(call do-step,1_3_floorplan_to_place, $(RESULTS_DIR)/1_synth.odb $(RESULTS_DIR)/1_synth.sdc,floorplan_to_place))
391393

394+
$(eval $(call OPEN_GUI_SHORTCUT,yosys,1_2_yosys.v))
395+
392396
.PHONY: floorplan_to_place
393397
floorplan_to_place: $(RESULTS_DIR)/1_synth.odb $(RESULTS_DIR)/1_synth.sdc
394398
$(UNSET_AND_MAKE) do-1_3_floorplan_to_place
@@ -777,6 +781,7 @@ $(eval $(call OPEN_GUI_SHORTCUT,final,6_final.odb))
777781

778782
$(foreach file,$(RESULTS_DEF),$(eval $(call OPEN_GUI,$(file),DEF_FILE)))
779783
$(foreach file,$(RESULTS_ODB),$(eval $(call OPEN_GUI,$(file),ODB_FILE)))
784+
$(foreach file,$(RESULTS_V),$(eval $(call OPEN_GUI,$(file),V_FILE)))
780785

781786
# Write a def for the corresponding odb
782787
$(foreach file,$(RESULTS_ODB),$(file).def): %.def:

flow/designs/asap7/aes-block/config.mk

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.
88

99
export ABC_AREA = 1
1010

11-
export CORE_UTILIZATION = 40
11+
export CORE_UTILIZATION = 47
1212
export CORE_ASPECT_RATIO = 1
1313
export CORE_MARGIN = 2
14-
export PLACE_DENSITY = 0.53
1514

1615
export BLOCKS ?= aes_rcon aes_sbox
1716
export SYNTH_HIERARCHICAL = 1

flow/designs/asap7/aes-block/rules-base.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,27 @@
1212
"compare": "<="
1313
},
1414
"placeopt__design__instance__count__stdcell": {
15-
"value": 10573,
15+
"value": 10501,
1616
"compare": "<="
1717
},
1818
"detailedplace__design__violations": {
1919
"value": 0,
2020
"compare": "=="
2121
},
2222
"cts__design__instance__count__setup_buffer": {
23-
"value": 919,
23+
"value": 913,
2424
"compare": "<="
2525
},
2626
"cts__design__instance__count__hold_buffer": {
27-
"value": 923,
27+
"value": 1691,
2828
"compare": "<="
2929
},
3030
"cts__timing__setup__ws": {
31-
"value": -124.0,
31+
"value": -148.0,
3232
"compare": ">="
3333
},
3434
"cts__timing__setup__tns": {
35-
"value": -5920.0,
35+
"value": -12100.0,
3636
"compare": ">="
3737
},
3838
"cts__timing__hold__ws": {
@@ -48,11 +48,11 @@
4848
"compare": "<="
4949
},
5050
"globalroute__timing__setup__ws": {
51-
"value": -150.0,
51+
"value": -171.0,
5252
"compare": ">="
5353
},
5454
"globalroute__timing__setup__tns": {
55-
"value": -6750.0,
55+
"value": -9610.0,
5656
"compare": ">="
5757
},
5858
"globalroute__timing__hold__ws": {
@@ -64,7 +64,7 @@
6464
"compare": ">="
6565
},
6666
"detailedroute__route__wirelength": {
67-
"value": 52923,
67+
"value": 50927,
6868
"compare": "<="
6969
},
7070
"detailedroute__route__drc_errors": {
@@ -80,11 +80,11 @@
8080
"compare": "<="
8181
},
8282
"finish__timing__setup__ws": {
83-
"value": -116.0,
83+
"value": -98.4,
8484
"compare": ">="
8585
},
8686
"finish__timing__setup__tns": {
87-
"value": -3780.0,
87+
"value": -5410.0,
8888
"compare": ">="
8989
},
9090
"finish__timing__hold__ws": {

flow/designs/asap7/ibex/rules-base.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"compare": ">="
3333
},
3434
"cts__timing__setup__tns": {
35-
"value": -35900.0,
35+
"value": -48300.0,
3636
"compare": ">="
3737
},
3838
"cts__timing__hold__ws": {
@@ -52,7 +52,7 @@
5252
"compare": ">="
5353
},
5454
"globalroute__timing__setup__tns": {
55-
"value": -63800.0,
55+
"value": -82000.0,
5656
"compare": ">="
5757
},
5858
"globalroute__timing__hold__ws": {
@@ -84,7 +84,7 @@
8484
"compare": ">="
8585
},
8686
"finish__timing__setup__tns": {
87-
"value": -24300.0,
87+
"value": -46500.0,
8888
"compare": ">="
8989
},
9090
"finish__timing__hold__ws": {

flow/designs/asap7/minimal/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ gui_synth
6262
The module hierarchy can here be examined to give a sense of
6363
area required for the default placement density.
6464

65+
## `make gui_yosys` OpenROAD GUI information for Yosys netlist
66+
67+
It is possible to set up hierarchical synthesis using ORFS, in which case it can be helpful to view a netlist with blackboxed submodules, in which case there's no .odb file and `make gui_synth` is not available.
68+
6569
## `make gui_floorplan` OpenROAD GUI information
6670

6771
Next to iterate on floorplan settings:

0 commit comments

Comments
 (0)