Skip to content

Commit 8a3b6c1

Browse files
committed
update ORFS
Signed-off-by: Jonas Gava <jfgava@precisioninno.com>
2 parents e5504ff + 961ba3f commit 8a3b6c1

127 files changed

Lines changed: 804 additions & 2363 deletions

File tree

Some content is hidden

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

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,17 @@ timeline
4646

4747
## Tool Installation
4848

49-
There are different ways to install and develop OpenROAD and ORFS, which is the best fit depends use-case, experience and personal taste.
49+
There are multiple ways to install and develop OpenROAD and ORFS. However, the best option depends on your use case, experience level, and personal preference.
50+
51+
52+
> **Recommendation for new users:**
53+
> If you are new to OpenROAD-flow-scripts, Docker can be a reliable way to get started since it avoids most dependency and environment issues.
54+
>
55+
> On supported platforms, using the pre-built binaries can be an even simpler option as it avoids building from source.
56+
>
57+
> Alternatively, the Bazel-based flow also avoids manual dependency installation (aside from installing Bazelisk itself), similar to how Docker requires installing Docker.
58+
59+
5060

5161
### Use Bazel, avoid installing anything at all and adapt the flow to your needs in your own repository
5262

docs/user/FlowVariables.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ configuration file.
110110
| <a name="CLKGATE_MAP_FILE"></a>CLKGATE_MAP_FILE| Optional mapping file supplied to Yosys to map clock gating cells| |
111111
| <a name="CLUSTER_FLOPS"></a>CLUSTER_FLOPS| Minimum number of flip-flops per sink cluster.| 0|
112112
| <a name="CORE_AREA"></a>CORE_AREA| The core area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2).| |
113-
| <a name="CORE_ASPECT_RATIO"></a>CORE_ASPECT_RATIO| The core aspect ratio (height / width). This value is ignored if `CORE_UTILIZATION` is undefined.| 1.0|
114-
| <a name="CORE_MARGIN"></a>CORE_MARGIN| The margin between the core area and die area, specified in microns. Allowed values are either one value for all margins or a set of four values, one for each margin. The order of the four values are: `{bottom top left right}`. This variable is ignored if `CORE_UTILIZATION` is undefined.| 1.0|
113+
| <a name="CORE_ASPECT_RATIO"></a>CORE_ASPECT_RATIO| The core aspect ratio (height / width). This variable is only used when `CORE_UTILIZATION` is set.| 1.0|
114+
| <a name="CORE_MARGIN"></a>CORE_MARGIN| The margin between the core area and die area, specified in microns. Allowed values are either one value for all margins or a set of four values, one for each margin. The order of the four values are: `{bottom top left right}`. This variable is only used when `CORE_UTILIZATION` is set.| 1.0|
115115
| <a name="CORE_UTILIZATION"></a>CORE_UTILIZATION| The core utilization percentage (0-100).| |
116116
| <a name="CORNER"></a>CORNER| PVT corner library selection. Only available for ASAP7 and GF180 PDKs.| |
117117
| <a name="CTS_ARGS"></a>CTS_ARGS| Override `clock_tree_synthesis` arguments.| |
@@ -171,11 +171,13 @@ configuration file.
171171
| <a name="MACRO_WRAPPERS"></a>MACRO_WRAPPERS| The wrapper file that replaces existing macros with their wrapped version.| |
172172
| <a name="MAKE_TRACKS"></a>MAKE_TRACKS| Tcl file that defines add routing tracks to a floorplan.| |
173173
| <a name="MATCH_CELL_FOOTPRINT"></a>MATCH_CELL_FOOTPRINT| Enforce sizing operations to only swap cells that have the same layout boundary.| 0|
174+
| <a name="MAX_PLACE_STEP_COEF"></a>MAX_PLACE_STEP_COEF| Sets the maximum phi coefficient (pcof_max / µ_k Upper Bound) for global placement optimization. This parameter controls the step size upper bound in the RePlAce Nesterov optimization algorithm. Higher values allow more aggressive optimization but may risk divergence. Valid range: 1.00-1.20| 1.05|
174175
| <a name="MAX_REPAIR_ANTENNAS_ITER_DRT"></a>MAX_REPAIR_ANTENNAS_ITER_DRT| Defines the maximum number of iterations post-detailed routing repair antennas will run.| 5|
175176
| <a name="MAX_REPAIR_ANTENNAS_ITER_GRT"></a>MAX_REPAIR_ANTENNAS_ITER_GRT| Defines the maximum number of iterations post global routing repair antennas will run.| 5|
176177
| <a name="MAX_REPAIR_TIMING_ITER"></a>MAX_REPAIR_TIMING_ITER| Maximum number of iterations for repair setup and repair hold.| |
177178
| <a name="MAX_ROUTING_LAYER"></a>MAX_ROUTING_LAYER| The highest metal layer name to be used in routing.| |
178179
| <a name="MIN_BUF_CELL_AND_PORTS"></a>MIN_BUF_CELL_AND_PORTS| Used to insert a buffer cell to pass through wires. Used in synthesis.| |
180+
| <a name="MIN_PLACE_STEP_COEF"></a>MIN_PLACE_STEP_COEF| Sets the minimum phi coefficient (pcof_min / µ_k Lower Bound) for global placement optimization. This parameter controls the step size lower bound in the RePlAce Nesterov optimization algorithm. Lower values may improve convergence but can increase runtime. Valid range: 0.95-1.05| 0.95|
179181
| <a name="MIN_ROUTING_LAYER"></a>MIN_ROUTING_LAYER| The lowest metal layer name to be used in routing.| |
180182
| <a name="NUM_CORES"></a>NUM_CORES| Passed to `openroad -threads $(NUM_CORES)`, defaults to numbers of cores in system as determined by system specific code in Makefile, `nproc` is tried first. OpenROAD does not limit itself to this number of cores across OpenROAD running instances, which can lead to overprovisioning in contexts such as bazel-orfs where there could be many routing, or place jobs running at the same time.| |
181183
| <a name="OPENROAD_HIERARCHICAL"></a>OPENROAD_HIERARCHICAL| Feature toggle to enable to run OpenROAD in hierarchical mode, otherwise considered flat. Will eventually be the default and this option will be retired.| 0|
@@ -200,7 +202,6 @@ configuration file.
200202
| <a name="RTLMP_AREA_WT"></a>RTLMP_AREA_WT| Weight for the area of the current floorplan.| 0.1|
201203
| <a name="RTLMP_ARGS"></a>RTLMP_ARGS| Overrides all other RTL macro placer arguments.| |
202204
| <a name="RTLMP_BOUNDARY_WT"></a>RTLMP_BOUNDARY_WT| Weight for the boundary or how far the hard macro clusters are from boundaries.| 50.0|
203-
| <a name="RTLMP_DEAD_SPACE"></a>RTLMP_DEAD_SPACE| Specifies the target dead space percentage, which influences the utilization of a cluster.| 0.05|
204205
| <a name="RTLMP_FENCE_LX"></a>RTLMP_FENCE_LX| Defines the lower left X coordinate for the global fence bounding box in microns.| 0.0|
205206
| <a name="RTLMP_FENCE_LY"></a>RTLMP_FENCE_LY| Defines the lower left Y coordinate for the global fence bounding box in microns.| 0.0|
206207
| <a name="RTLMP_FENCE_UX"></a>RTLMP_FENCE_UX| Defines the upper right X coordinate for the global fence bounding box in microns.| 0.0|
@@ -241,7 +242,7 @@ configuration file.
241242
| <a name="SLEW_MARGIN"></a>SLEW_MARGIN| Specifies a slew margin when fixing max slew violations. This option allows you to overfix.| |
242243
| <a name="SWAP_ARITH_OPERATORS"></a>SWAP_ARITH_OPERATORS| Improve timing QoR by swapping ALU and MULT arithmetic operators.| |
243244
| <a name="SYNTH_ARGS"></a>SYNTH_ARGS| Optional synthesis variables for yosys.| |
244-
| <a name="SYNTH_BLACKBOXES"></a>SYNTH_BLACKBOXES| List of cells treated as a black box by Yosys. With Bazel, this can be used to run synthesis in parallel for the large modules of the design.| |
245+
| <a name="SYNTH_BLACKBOXES"></a>SYNTH_BLACKBOXES| List of cells treated as a black box by Yosys. With Bazel, this can be used to run synthesis in parallel for the large modules of the design. Non-existant modules are ignored silently, useful when listing modules statically, even if modules come and go dynamically.| |
245246
| <a name="SYNTH_CANONICALIZE_TCL"></a>SYNTH_CANONICALIZE_TCL| Specifies a Tcl script with commands to run as part of the synth canonicalize step.| |
246247
| <a name="SYNTH_GUT"></a>SYNTH_GUT| Load design and remove all internal logic before doing synthesis. This is useful when creating a mock .lef abstract that has a smaller area than the amount of logic would allow. bazel-orfs uses this to mock SRAMs, for instance.| 0|
247248
| <a name="SYNTH_HDL_FRONTEND"></a>SYNTH_HDL_FRONTEND| Select an alternative language frontend to ingest the design. Available option is "slang". If the variable is empty, design is read with the Yosys read_verilog command.| |
@@ -286,11 +287,13 @@ configuration file.
286287
- [MIN_BUF_CELL_AND_PORTS](#MIN_BUF_CELL_AND_PORTS)
287288
- [SDC_FILE](#SDC_FILE)
288289
- [SDC_GUT](#SDC_GUT)
290+
- [SYNTH_ARGS](#SYNTH_ARGS)
289291
- [SYNTH_BLACKBOXES](#SYNTH_BLACKBOXES)
290292
- [SYNTH_CANONICALIZE_TCL](#SYNTH_CANONICALIZE_TCL)
291293
- [SYNTH_GUT](#SYNTH_GUT)
292294
- [SYNTH_HDL_FRONTEND](#SYNTH_HDL_FRONTEND)
293295
- [SYNTH_HIERARCHICAL](#SYNTH_HIERARCHICAL)
296+
- [SYNTH_HIER_SEPARATOR](#SYNTH_HIER_SEPARATOR)
294297
- [SYNTH_KEEP_MOCKED_MEMORIES](#SYNTH_KEEP_MOCKED_MEMORIES)
295298
- [SYNTH_KEEP_MODULES](#SYNTH_KEEP_MODULES)
296299
- [SYNTH_MEMORY_MAX_BITS](#SYNTH_MEMORY_MAX_BITS)
@@ -343,7 +346,6 @@ configuration file.
343346
- [RTLMP_AREA_WT](#RTLMP_AREA_WT)
344347
- [RTLMP_ARGS](#RTLMP_ARGS)
345348
- [RTLMP_BOUNDARY_WT](#RTLMP_BOUNDARY_WT)
346-
- [RTLMP_DEAD_SPACE](#RTLMP_DEAD_SPACE)
347349
- [RTLMP_FENCE_LX](#RTLMP_FENCE_LX)
348350
- [RTLMP_FENCE_LY](#RTLMP_FENCE_LY)
349351
- [RTLMP_FENCE_UX](#RTLMP_FENCE_UX)
@@ -383,13 +385,16 @@ configuration file.
383385
- [DONT_BUFFER_PORTS](#DONT_BUFFER_PORTS)
384386
- [EARLY_SIZING_CAP_RATIO](#EARLY_SIZING_CAP_RATIO)
385387
- [FLOORPLAN_DEF](#FLOORPLAN_DEF)
388+
- [GLOBAL_PLACEMENT_ARGS](#GLOBAL_PLACEMENT_ARGS)
386389
- [GPL_ROUTABILITY_DRIVEN](#GPL_ROUTABILITY_DRIVEN)
387390
- [GPL_TIMING_DRIVEN](#GPL_TIMING_DRIVEN)
388391
- [IO_PLACER_H](#IO_PLACER_H)
389392
- [IO_PLACER_V](#IO_PLACER_V)
390393
- [MATCH_CELL_FOOTPRINT](#MATCH_CELL_FOOTPRINT)
394+
- [MAX_PLACE_STEP_COEF](#MAX_PLACE_STEP_COEF)
391395
- [MAX_REPAIR_TIMING_ITER](#MAX_REPAIR_TIMING_ITER)
392396
- [MAX_ROUTING_LAYER](#MAX_ROUTING_LAYER)
397+
- [MIN_PLACE_STEP_COEF](#MIN_PLACE_STEP_COEF)
393398
- [MIN_ROUTING_LAYER](#MIN_ROUTING_LAYER)
394399
- [PLACE_DENSITY](#PLACE_DENSITY)
395400
- [PLACE_DENSITY_LB_ADDON](#PLACE_DENSITY_LB_ADDON)
@@ -519,7 +524,6 @@ configuration file.
519524
- [FLOW_VARIANT](#FLOW_VARIANT)
520525
- [GDS_FILES](#GDS_FILES)
521526
- [GENERATE_ARTIFACTS_ON_FAILURE](#GENERATE_ARTIFACTS_ON_FAILURE)
522-
- [GLOBAL_PLACEMENT_ARGS](#GLOBAL_PLACEMENT_ARGS)
523527
- [GUI_TIMING](#GUI_TIMING)
524528
- [IR_DROP_LAYER](#IR_DROP_LAYER)
525529
- [KLAYOUT_TECH_FILE](#KLAYOUT_TECH_FILE)
@@ -538,8 +542,6 @@ configuration file.
538542
- [SEAL_GDS](#SEAL_GDS)
539543
- [SET_RC_TCL](#SET_RC_TCL)
540544
- [SLEW_MARGIN](#SLEW_MARGIN)
541-
- [SYNTH_ARGS](#SYNTH_ARGS)
542-
- [SYNTH_HIER_SEPARATOR](#SYNTH_HIER_SEPARATOR)
543545
- [TAP_CELL_NAME](#TAP_CELL_NAME)
544546
- [TECH_LEF](#TECH_LEF)
545547
- [USE_FILL](#USE_FILL)

etc/DependencyInstaller.sh

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ fi
1111

1212
# package versions
1313
klayoutVersion=0.30.3
14-
verilatorVersion=5.026
1514
numThreads=$(nproc)
1615

1716
_versionCompare() {
@@ -38,34 +37,6 @@ _installPipCommon() {
3837
fi
3938
}
4039

41-
_installVerilator() {
42-
local baseDir
43-
if [[ "$constantBuildDir" == "true" ]]; then
44-
baseDir="/tmp/DependencyInstaller-ORFS"
45-
if [[ -d "$baseDir" ]]; then
46-
echo "[INFO] Removing old building directory $baseDir"
47-
fi
48-
mkdir -p "$baseDir"
49-
else
50-
baseDir=$(mktemp -d /tmp/DependencyInstaller-orfs-XXXXXX)
51-
fi
52-
53-
# Install Verilator
54-
verilatorPrefix=`realpath ${PREFIX:-"/usr/local"}`
55-
if [[ ! -x ${verilatorPrefix}/bin/verilator ]]; then
56-
pushd $baseDir
57-
git clone --depth=1 -b "v$verilatorVersion" https://github.com/verilator/verilator.git
58-
pushd verilator
59-
autoconf
60-
./configure --prefix "${verilatorPrefix}"
61-
make -j "${numThreads}"
62-
make install
63-
popd
64-
rm -r verilator
65-
popd
66-
fi
67-
}
68-
6940
# Enterprise Linux 7 cleanup
7041
_install_EL7_CleanUp() {
7142
yum clean -y all
@@ -472,7 +443,6 @@ case "${os}" in
472443

473444
if [[ "${option}" == "common" || "${option}" == "all" ]]; then
474445
_installPipCommon
475-
_installVerilator
476446
fi
477447
;;
478448
"Ubuntu" | "Debian GNU/Linux rodete" )
@@ -494,7 +464,6 @@ case "${os}" in
494464
if _versionCompare ${version} -lt 23.04 ; then
495465
_installPipCommon
496466
fi
497-
_installVerilator
498467
else
499468
echo "Skip common for rodete"
500469
fi
@@ -510,7 +479,6 @@ case "${os}" in
510479
fi
511480
if [[ "${option}" == "common" || "${option}" == "all" ]]; then
512481
_installPipCommon
513-
_installVerilator
514482
fi
515483
;;
516484
*)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ export MAX_ROUTING_LAYER ?= M5
1515
export PLACE_PINS_ARGS = -annealing
1616

1717
export PDN_TCL = $(PLATFORM_DIR)/openRoad/pdn/BLOCK_grid_strategy.tcl
18+

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@
2424
"compare": "<="
2525
},
2626
"cts__design__instance__count__hold_buffer": {
27-
"value": 2001,
27+
"value": 1863,
2828
"compare": "<="
2929
},
3030
"cts__timing__setup__ws": {
31-
"value": -127.0,
31+
"value": -135.0,
3232
"compare": ">="
3333
},
3434
"cts__timing__setup__tns": {
35-
"value": -7220.0,
35+
"value": -8160.0,
3636
"compare": ">="
3737
},
3838
"cts__timing__hold__ws": {
@@ -48,11 +48,11 @@
4848
"compare": "<="
4949
},
5050
"globalroute__timing__setup__ws": {
51-
"value": -129.0,
51+
"value": -135.0,
5252
"compare": ">="
5353
},
5454
"globalroute__timing__setup__tns": {
55-
"value": -7080.0,
55+
"value": -7640.0,
5656
"compare": ">="
5757
},
5858
"globalroute__timing__hold__ws": {
@@ -80,11 +80,11 @@
8080
"compare": "<="
8181
},
8282
"finish__timing__setup__ws": {
83-
"value": -94.5,
83+
"value": -98.3,
8484
"compare": ">="
8585
},
8686
"finish__timing__setup__tns": {
87-
"value": -3610.0,
87+
"value": -3890.0,
8888
"compare": ">="
8989
},
9090
"finish__timing__hold__ws": {
@@ -99,4 +99,4 @@
9999
"value": 7332,
100100
"compare": "<="
101101
}
102-
}
102+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,4 @@
9999
"value": 2254,
100100
"compare": "<="
101101
}
102-
}
102+
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"compare": ">="
3333
},
3434
"cts__timing__setup__tns": {
35-
"value": -620.0,
35+
"value": -607.0,
3636
"compare": ">="
3737
},
3838
"cts__timing__hold__ws": {
@@ -52,7 +52,7 @@
5252
"compare": ">="
5353
},
5454
"globalroute__timing__setup__tns": {
55-
"value": -2360.0,
55+
"value": -2020.0,
5656
"compare": ">="
5757
},
5858
"globalroute__timing__hold__ws": {
@@ -80,11 +80,11 @@
8080
"compare": "<="
8181
},
8282
"finish__timing__setup__ws": {
83-
"value": -57.0,
83+
"value": -44.3,
8484
"compare": ">="
8585
},
8686
"finish__timing__setup__tns": {
87-
"value": -1130.0,
87+
"value": -779.0,
8888
"compare": ">="
8989
},
9090
"finish__timing__hold__ws": {
@@ -99,4 +99,4 @@
9999
"value": 2269,
100100
"compare": "<="
101101
}
102-
}
102+
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@
8080
"compare": "<="
8181
},
8282
"finish__timing__setup__ws": {
83-
"value": -45.1,
83+
"value": -18.0,
8484
"compare": ">="
8585
},
8686
"finish__timing__setup__tns": {
87-
"value": -182.0,
87+
"value": -72.0,
8888
"compare": ">="
8989
},
9090
"finish__timing__hold__ws": {
@@ -99,4 +99,4 @@
9999
"value": 2017,
100100
"compare": "<="
101101
}
102-
}
102+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,4 @@
9999
"value": 20198,
100100
"compare": "<="
101101
}
102-
}
102+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,4 @@
9999
"value": 8904,
100100
"compare": "<="
101101
}
102-
}
102+
}

0 commit comments

Comments
 (0)