librelane 2.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of librelane might be problematic. Click here for more details.
- librelane/__init__.py +38 -0
- librelane/__main__.py +479 -0
- librelane/__version__.py +43 -0
- librelane/common/__init__.py +63 -0
- librelane/common/cli.py +75 -0
- librelane/common/drc.py +246 -0
- librelane/common/generic_dict.py +319 -0
- librelane/common/metrics/__init__.py +35 -0
- librelane/common/metrics/__main__.py +413 -0
- librelane/common/metrics/library.py +354 -0
- librelane/common/metrics/metric.py +186 -0
- librelane/common/metrics/util.py +279 -0
- librelane/common/misc.py +456 -0
- librelane/common/ring_buffer.py +63 -0
- librelane/common/tcl.py +80 -0
- librelane/common/toolbox.py +549 -0
- librelane/common/tpe.py +41 -0
- librelane/common/types.py +116 -0
- librelane/config/__init__.py +32 -0
- librelane/config/__main__.py +155 -0
- librelane/config/config.py +1025 -0
- librelane/config/flow.py +490 -0
- librelane/config/pdk_compat.py +255 -0
- librelane/config/preprocessor.py +464 -0
- librelane/config/removals.py +45 -0
- librelane/config/variable.py +743 -0
- librelane/container.py +285 -0
- librelane/env_info.py +320 -0
- librelane/examples/spm/config.yaml +33 -0
- librelane/examples/spm/pin_order.cfg +14 -0
- librelane/examples/spm/src/impl.sdc +73 -0
- librelane/examples/spm/src/signoff.sdc +68 -0
- librelane/examples/spm/src/spm.v +73 -0
- librelane/examples/spm/verify/spm_tb.v +106 -0
- librelane/examples/spm-user_project_wrapper/SPM_example.v +286 -0
- librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +145 -0
- librelane/examples/spm-user_project_wrapper/config-tut.json +12 -0
- librelane/examples/spm-user_project_wrapper/config.json +13 -0
- librelane/examples/spm-user_project_wrapper/defines.v +66 -0
- librelane/examples/spm-user_project_wrapper/template.def +7656 -0
- librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +123 -0
- librelane/flows/__init__.py +24 -0
- librelane/flows/builtins.py +18 -0
- librelane/flows/classic.py +327 -0
- librelane/flows/cli.py +463 -0
- librelane/flows/flow.py +1049 -0
- librelane/flows/misc.py +71 -0
- librelane/flows/optimizing.py +179 -0
- librelane/flows/sequential.py +367 -0
- librelane/flows/synth_explore.py +173 -0
- librelane/help/__main__.py +39 -0
- librelane/logging/__init__.py +40 -0
- librelane/logging/logger.py +323 -0
- librelane/open_pdks_rev +1 -0
- librelane/plugins.py +21 -0
- librelane/py.typed +0 -0
- librelane/scripts/base.sdc +80 -0
- librelane/scripts/klayout/Readme.md +2 -0
- librelane/scripts/klayout/open_design.py +63 -0
- librelane/scripts/klayout/render.py +121 -0
- librelane/scripts/klayout/stream_out.py +176 -0
- librelane/scripts/klayout/xml_drc_report_to_json.py +45 -0
- librelane/scripts/klayout/xor.drc +120 -0
- librelane/scripts/magic/Readme.md +1 -0
- librelane/scripts/magic/common/read.tcl +114 -0
- librelane/scripts/magic/def/antenna_check.tcl +35 -0
- librelane/scripts/magic/def/mag.tcl +19 -0
- librelane/scripts/magic/def/mag_gds.tcl +79 -0
- librelane/scripts/magic/drc.tcl +78 -0
- librelane/scripts/magic/extract_spice.tcl +98 -0
- librelane/scripts/magic/gds/drc_batch.tcl +74 -0
- librelane/scripts/magic/gds/erase_box.tcl +32 -0
- librelane/scripts/magic/gds/extras_mag.tcl +45 -0
- librelane/scripts/magic/gds/mag_with_pointers.tcl +31 -0
- librelane/scripts/magic/get_bbox.tcl +11 -0
- librelane/scripts/magic/lef/extras_maglef.tcl +61 -0
- librelane/scripts/magic/lef/maglef.tcl +26 -0
- librelane/scripts/magic/lef.tcl +57 -0
- librelane/scripts/magic/open.tcl +28 -0
- librelane/scripts/magic/wrapper.tcl +21 -0
- librelane/scripts/netgen/setup.tcl +28 -0
- librelane/scripts/odbpy/apply_def_template.py +49 -0
- librelane/scripts/odbpy/cell_frequency.py +107 -0
- librelane/scripts/odbpy/check_antenna_properties.py +116 -0
- librelane/scripts/odbpy/contextualize.py +109 -0
- librelane/scripts/odbpy/defutil.py +573 -0
- librelane/scripts/odbpy/diodes.py +373 -0
- librelane/scripts/odbpy/disconnected_pins.py +305 -0
- librelane/scripts/odbpy/eco_buffer.py +181 -0
- librelane/scripts/odbpy/eco_diode.py +139 -0
- librelane/scripts/odbpy/filter_unannotated.py +100 -0
- librelane/scripts/odbpy/io_place.py +482 -0
- librelane/scripts/odbpy/ioplace_parser/__init__.py +23 -0
- librelane/scripts/odbpy/ioplace_parser/parse.py +147 -0
- librelane/scripts/odbpy/label_macro_pins.py +277 -0
- librelane/scripts/odbpy/lefutil.py +97 -0
- librelane/scripts/odbpy/placers.py +162 -0
- librelane/scripts/odbpy/power_utils.py +397 -0
- librelane/scripts/odbpy/random_place.py +57 -0
- librelane/scripts/odbpy/reader.py +250 -0
- librelane/scripts/odbpy/remove_buffers.py +173 -0
- librelane/scripts/odbpy/snap_to_grid.py +57 -0
- librelane/scripts/odbpy/wire_lengths.py +93 -0
- librelane/scripts/openroad/antenna_check.tcl +20 -0
- librelane/scripts/openroad/antenna_repair.tcl +31 -0
- librelane/scripts/openroad/basic_mp.tcl +24 -0
- librelane/scripts/openroad/buffer_list.tcl +10 -0
- librelane/scripts/openroad/common/dpl.tcl +24 -0
- librelane/scripts/openroad/common/dpl_cell_pad.tcl +26 -0
- librelane/scripts/openroad/common/grt.tcl +32 -0
- librelane/scripts/openroad/common/io.tcl +540 -0
- librelane/scripts/openroad/common/pdn_cfg.tcl +135 -0
- librelane/scripts/openroad/common/resizer.tcl +103 -0
- librelane/scripts/openroad/common/set_global_connections.tcl +78 -0
- librelane/scripts/openroad/common/set_layer_adjustments.tcl +31 -0
- librelane/scripts/openroad/common/set_power_nets.tcl +30 -0
- librelane/scripts/openroad/common/set_rc.tcl +75 -0
- librelane/scripts/openroad/common/set_routing_layers.tcl +30 -0
- librelane/scripts/openroad/cts.tcl +80 -0
- librelane/scripts/openroad/cut_rows.tcl +24 -0
- librelane/scripts/openroad/dpl.tcl +24 -0
- librelane/scripts/openroad/drt.tcl +37 -0
- librelane/scripts/openroad/fill.tcl +30 -0
- librelane/scripts/openroad/floorplan.tcl +145 -0
- librelane/scripts/openroad/gpl.tcl +88 -0
- librelane/scripts/openroad/grt.tcl +30 -0
- librelane/scripts/openroad/gui.tcl +37 -0
- librelane/scripts/openroad/insert_buffer.tcl +127 -0
- librelane/scripts/openroad/ioplacer.tcl +67 -0
- librelane/scripts/openroad/irdrop.tcl +51 -0
- librelane/scripts/openroad/pdn.tcl +52 -0
- librelane/scripts/openroad/rcx.tcl +32 -0
- librelane/scripts/openroad/repair_design.tcl +70 -0
- librelane/scripts/openroad/repair_design_postgrt.tcl +48 -0
- librelane/scripts/openroad/rsz_timing_postcts.tcl +68 -0
- librelane/scripts/openroad/rsz_timing_postgrt.tcl +70 -0
- librelane/scripts/openroad/sta/check_macro_instances.tcl +53 -0
- librelane/scripts/openroad/sta/corner.tcl +393 -0
- librelane/scripts/openroad/tapcell.tcl +25 -0
- librelane/scripts/openroad/write_views.tcl +27 -0
- librelane/scripts/pyosys/construct_abc_script.py +177 -0
- librelane/scripts/pyosys/json_header.py +84 -0
- librelane/scripts/pyosys/synthesize.py +493 -0
- librelane/scripts/pyosys/ys_common.py +153 -0
- librelane/scripts/tclsh/hello.tcl +1 -0
- librelane/state/__init__.py +24 -0
- librelane/state/__main__.py +61 -0
- librelane/state/design_format.py +195 -0
- librelane/state/state.py +359 -0
- librelane/steps/__init__.py +61 -0
- librelane/steps/__main__.py +510 -0
- librelane/steps/checker.py +637 -0
- librelane/steps/common_variables.py +340 -0
- librelane/steps/cvc_rv.py +169 -0
- librelane/steps/klayout.py +509 -0
- librelane/steps/magic.py +576 -0
- librelane/steps/misc.py +160 -0
- librelane/steps/netgen.py +253 -0
- librelane/steps/odb.py +1088 -0
- librelane/steps/openroad.py +2460 -0
- librelane/steps/openroad_alerts.py +102 -0
- librelane/steps/pyosys.py +640 -0
- librelane/steps/step.py +1571 -0
- librelane/steps/tclstep.py +288 -0
- librelane/steps/verilator.py +222 -0
- librelane/steps/yosys.py +371 -0
- librelane-2.4.0.dist-info/METADATA +169 -0
- librelane-2.4.0.dist-info/RECORD +170 -0
- librelane-2.4.0.dist-info/WHEEL +4 -0
- librelane-2.4.0.dist-info/entry_points.txt +9 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Copyright 2020-2023 Efabless Corporation
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
source $::env(SCRIPTS_DIR)/openroad/common/io.tcl
|
|
15
|
+
source $::env(SCRIPTS_DIR)/openroad/common/resizer.tcl
|
|
16
|
+
|
|
17
|
+
load_rsz_corners
|
|
18
|
+
read_current_odb
|
|
19
|
+
|
|
20
|
+
unset_propagated_clock [all_clocks]
|
|
21
|
+
|
|
22
|
+
set_dont_touch_objects
|
|
23
|
+
|
|
24
|
+
# set rc values
|
|
25
|
+
source $::env(SCRIPTS_DIR)/openroad/common/set_rc.tcl
|
|
26
|
+
|
|
27
|
+
# CTS and detailed placement move instances, so update parastic estimates.
|
|
28
|
+
# estimate wire rc parasitics
|
|
29
|
+
estimate_parasitics -placement
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# Buffer I/O
|
|
33
|
+
if { $::env(DESIGN_REPAIR_REMOVE_BUFFERS) } {
|
|
34
|
+
remove_buffers
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if { $::env(DESIGN_REPAIR_BUFFER_INPUT_PORTS) } {
|
|
38
|
+
buffer_ports -inputs
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if { $::env(DESIGN_REPAIR_BUFFER_OUTPUT_PORTS) } {
|
|
42
|
+
buffer_ports -outputs
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
# Repair Design
|
|
46
|
+
repair_design -verbose \
|
|
47
|
+
-max_wire_length $::env(DESIGN_REPAIR_MAX_WIRE_LENGTH) \
|
|
48
|
+
-slew_margin $::env(DESIGN_REPAIR_MAX_SLEW_PCT) \
|
|
49
|
+
-cap_margin $::env(DESIGN_REPAIR_MAX_CAP_PCT)
|
|
50
|
+
|
|
51
|
+
if { $::env(DESIGN_REPAIR_TIE_FANOUT) } {
|
|
52
|
+
# repair tie lo fanout
|
|
53
|
+
repair_tie_fanout -separation $::env(DESIGN_REPAIR_TIE_SEPARATION) $::env(SYNTH_TIELO_CELL)
|
|
54
|
+
# repair tie hi fanout
|
|
55
|
+
repair_tie_fanout -separation $::env(DESIGN_REPAIR_TIE_SEPARATION) $::env(SYNTH_TIEHI_CELL)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
report_floating_nets -verbose
|
|
59
|
+
|
|
60
|
+
# Legalize
|
|
61
|
+
source $::env(SCRIPTS_DIR)/openroad/common/dpl.tcl
|
|
62
|
+
|
|
63
|
+
unset_dont_touch_objects
|
|
64
|
+
|
|
65
|
+
source $::env(SCRIPTS_DIR)/openroad/common/set_rc.tcl
|
|
66
|
+
estimate_parasitics -placement
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
write_views
|
|
70
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Copyright 2020-2023 Efabless Corporation
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
source $::env(SCRIPTS_DIR)/openroad/common/io.tcl
|
|
15
|
+
source $::env(SCRIPTS_DIR)/openroad/common/resizer.tcl
|
|
16
|
+
|
|
17
|
+
load_rsz_corners
|
|
18
|
+
read_current_odb
|
|
19
|
+
|
|
20
|
+
set_propagated_clock [all_clocks]
|
|
21
|
+
|
|
22
|
+
set_dont_touch_objects
|
|
23
|
+
|
|
24
|
+
# set rc values
|
|
25
|
+
source $::env(SCRIPTS_DIR)/openroad/common/set_rc.tcl
|
|
26
|
+
|
|
27
|
+
# (Re-)GRT and Estimate Parasitics
|
|
28
|
+
# Temporarily always enabled: https://github.com/The-OpenROAD-Project/OpenROAD/issues/5590
|
|
29
|
+
#if { $::env(GRT_DESIGN_REPAIR_RUN_GRT) } {
|
|
30
|
+
source $::env(SCRIPTS_DIR)/openroad/common/grt.tcl
|
|
31
|
+
#}
|
|
32
|
+
estimate_parasitics -global_routing
|
|
33
|
+
|
|
34
|
+
# Repair design
|
|
35
|
+
repair_design -verbose \
|
|
36
|
+
-max_wire_length $::env(GRT_DESIGN_REPAIR_MAX_WIRE_LENGTH) \
|
|
37
|
+
-slew_margin $::env(GRT_DESIGN_REPAIR_MAX_SLEW_PCT) \
|
|
38
|
+
-cap_margin $::env(GRT_DESIGN_REPAIR_MAX_CAP_PCT)
|
|
39
|
+
|
|
40
|
+
# Re-DPL and GRT
|
|
41
|
+
source $::env(SCRIPTS_DIR)/openroad/common/dpl.tcl
|
|
42
|
+
unset_dont_touch_objects
|
|
43
|
+
if { $::env(GRT_DESIGN_REPAIR_RUN_GRT) } {
|
|
44
|
+
source $::env(SCRIPTS_DIR)/openroad/common/grt.tcl
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
write_views
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Copyright 2020-2023 Efabless Corporation
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
source $::env(SCRIPTS_DIR)/openroad/common/io.tcl
|
|
15
|
+
source $::env(SCRIPTS_DIR)/openroad/common/resizer.tcl
|
|
16
|
+
|
|
17
|
+
load_rsz_corners
|
|
18
|
+
read_current_odb
|
|
19
|
+
|
|
20
|
+
set_propagated_clock [all_clocks]
|
|
21
|
+
|
|
22
|
+
set_dont_touch_objects
|
|
23
|
+
|
|
24
|
+
# set rc values
|
|
25
|
+
source $::env(SCRIPTS_DIR)/openroad/common/set_rc.tcl
|
|
26
|
+
|
|
27
|
+
# CTS and detailed placement move instances, so update parastic estimates.
|
|
28
|
+
# estimate wire rc parasitics
|
|
29
|
+
estimate_parasitics -placement
|
|
30
|
+
|
|
31
|
+
# Resize
|
|
32
|
+
set setup_args [list]
|
|
33
|
+
lappend setup_args -verbose
|
|
34
|
+
lappend setup_args -setup
|
|
35
|
+
lappend setup_args -setup_margin $::env(PL_RESIZER_SETUP_SLACK_MARGIN)
|
|
36
|
+
lappend setup_args -max_buffer_percent $::env(PL_RESIZER_SETUP_MAX_BUFFER_PCT)
|
|
37
|
+
if { $::env(PL_RESIZER_GATE_CLONING) != 1 } {
|
|
38
|
+
lappend setup_args -skip_gate_cloning
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
set hold_args [list]
|
|
42
|
+
lappend hold_args -verbose
|
|
43
|
+
lappend hold_args -hold
|
|
44
|
+
lappend hold_args -setup_margin $::env(PL_RESIZER_SETUP_SLACK_MARGIN)
|
|
45
|
+
lappend hold_args -hold_margin $::env(PL_RESIZER_HOLD_SLACK_MARGIN)
|
|
46
|
+
lappend hold_args -max_buffer_percent $::env(PL_RESIZER_HOLD_MAX_BUFFER_PCT)
|
|
47
|
+
if { $::env(PL_RESIZER_ALLOW_SETUP_VIOS) == 1 } {
|
|
48
|
+
lappend hold_args -allow_setup_violations
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if { $::env(PL_RESIZER_FIX_HOLD_FIRST) == 1 } {
|
|
52
|
+
repair_timing {*}$hold_args
|
|
53
|
+
repair_timing {*}$setup_args
|
|
54
|
+
} else {
|
|
55
|
+
repair_timing {*}$setup_args
|
|
56
|
+
repair_timing {*}$hold_args
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# Legalize
|
|
60
|
+
source $::env(SCRIPTS_DIR)/openroad/common/dpl.tcl
|
|
61
|
+
|
|
62
|
+
unset_dont_touch_objects
|
|
63
|
+
|
|
64
|
+
source $::env(SCRIPTS_DIR)/openroad/common/set_rc.tcl
|
|
65
|
+
estimate_parasitics -placement
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
write_views
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Copyright 2020-2023 Efabless Corporation
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
source $::env(SCRIPTS_DIR)/openroad/common/io.tcl
|
|
15
|
+
source $::env(SCRIPTS_DIR)/openroad/common/resizer.tcl
|
|
16
|
+
|
|
17
|
+
load_rsz_corners
|
|
18
|
+
read_current_odb
|
|
19
|
+
|
|
20
|
+
set_propagated_clock [all_clocks]
|
|
21
|
+
|
|
22
|
+
set_dont_touch_objects
|
|
23
|
+
|
|
24
|
+
# set rc values
|
|
25
|
+
source $::env(SCRIPTS_DIR)/openroad/common/set_rc.tcl
|
|
26
|
+
|
|
27
|
+
# (Re-)GRT and Estimate Parasitics
|
|
28
|
+
# Temporarily always enabled: https://github.com/The-OpenROAD-Project/OpenROAD/issues/5590
|
|
29
|
+
#if { $::env(GRT_RESIZER_RUN_GRT) } {
|
|
30
|
+
source $::env(SCRIPTS_DIR)/openroad/common/grt.tcl
|
|
31
|
+
# }
|
|
32
|
+
estimate_parasitics -global_routing
|
|
33
|
+
|
|
34
|
+
# Resize
|
|
35
|
+
set setup_args [list]
|
|
36
|
+
lappend setup_args -verbose
|
|
37
|
+
lappend setup_args -setup
|
|
38
|
+
lappend setup_args -setup_margin $::env(GRT_RESIZER_SETUP_SLACK_MARGIN)
|
|
39
|
+
lappend setup_args -max_buffer_percent $::env(GRT_RESIZER_SETUP_MAX_BUFFER_PCT)
|
|
40
|
+
if { $::env(GRT_RESIZER_GATE_CLONING) != 1 } {
|
|
41
|
+
lappend setup_args -skip_gate_cloning
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
set hold_args [list]
|
|
45
|
+
lappend hold_args -verbose
|
|
46
|
+
lappend hold_args -hold
|
|
47
|
+
lappend hold_args -setup_margin $::env(GRT_RESIZER_SETUP_SLACK_MARGIN)
|
|
48
|
+
lappend hold_args -hold_margin $::env(GRT_RESIZER_HOLD_SLACK_MARGIN)
|
|
49
|
+
lappend hold_args -max_buffer_percent $::env(GRT_RESIZER_HOLD_MAX_BUFFER_PCT)
|
|
50
|
+
if { $::env(GRT_RESIZER_ALLOW_SETUP_VIOS) == 1 } {
|
|
51
|
+
lappend hold_args -allow_setup_violations
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if { $::env(GRT_RESIZER_FIX_HOLD_FIRST) == 1 } {
|
|
55
|
+
repair_timing {*}$hold_args
|
|
56
|
+
repair_timing {*}$setup_args
|
|
57
|
+
} else {
|
|
58
|
+
repair_timing {*}$setup_args
|
|
59
|
+
repair_timing {*}$hold_args
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
# Re-DPL and GRT
|
|
63
|
+
source $::env(SCRIPTS_DIR)/openroad/common/dpl.tcl
|
|
64
|
+
unset_dont_touch_objects
|
|
65
|
+
if { $::env(GRT_RESIZER_RUN_GRT) } {
|
|
66
|
+
source $::env(SCRIPTS_DIR)/openroad/common/grt.tcl
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
write_views
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Copyright 2024 Efabless Corporation
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
source $::env(SCRIPTS_DIR)/openroad/common/io.tcl
|
|
15
|
+
|
|
16
|
+
set_cmd_units\
|
|
17
|
+
-time ns\
|
|
18
|
+
-capacitance pF\
|
|
19
|
+
-current mA\
|
|
20
|
+
-voltage V\
|
|
21
|
+
-resistance kOhm\
|
|
22
|
+
-distance um
|
|
23
|
+
|
|
24
|
+
set sta_report_default_digits 6
|
|
25
|
+
|
|
26
|
+
read_timing_info
|
|
27
|
+
|
|
28
|
+
set error_count 0
|
|
29
|
+
foreach {instance_name macro_name} $::env(_check_macro_instances) {
|
|
30
|
+
set instances [get_cells -hierarchical $instance_name]
|
|
31
|
+
set instance_count [llength $instances]
|
|
32
|
+
if { $instance_count < 1 } {
|
|
33
|
+
puts "\[ERROR\] No macro instance $instance_name found."
|
|
34
|
+
incr error_count
|
|
35
|
+
} elseif { $instance_count > 1 } {
|
|
36
|
+
puts "\[ERROR\] Macro instance name $instance_name matches multiple cells."
|
|
37
|
+
incr error_count
|
|
38
|
+
} else {
|
|
39
|
+
# The next line doesn't actually matter because this is Tcl but I'd feel
|
|
40
|
+
# dirty otherwise
|
|
41
|
+
set instance [lindex $instances 0]
|
|
42
|
+
|
|
43
|
+
set master_name [get_property $instance ref_name]
|
|
44
|
+
if { $master_name != $macro_name } {
|
|
45
|
+
puts "\[ERROR\] Instance $instance_name is configured as an instance of macro $macro_name, but is an instance of $master_name."
|
|
46
|
+
incr error_count
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if { $error_count != 0 } {
|
|
52
|
+
exit -1
|
|
53
|
+
}
|