librelane 3.0.0.dev24__tar.gz → 3.0.0.dev25__tar.gz
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-3.0.0.dev24 → librelane-3.0.0.dev25}/PKG-INFO +1 -1
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm/config.yaml +8 -8
- librelane-3.0.0.dev25/librelane/examples/spm-user_project_wrapper/config.json +25 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/io.tcl +23 -11
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/pdn_cfg.tcl +36 -36
- librelane-3.0.0.dev25/librelane/scripts/openroad/ioplacer.tcl +67 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/pdn.tcl +1 -1
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/common_variables.py +82 -33
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/odb.py +14 -35
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/openroad.py +21 -40
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/pyproject.toml +1 -1
- librelane-3.0.0.dev24/librelane/examples/spm-user_project_wrapper/config.json +0 -13
- librelane-3.0.0.dev24/librelane/scripts/openroad/ioplacer.tcl +0 -66
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/Readme.md +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/__init__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/__main__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/__version__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/__init__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/cli.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/drc.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/generic_dict.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/metrics/__init__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/metrics/__main__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/metrics/library.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/metrics/metric.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/metrics/util.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/misc.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/ring_buffer.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/tcl.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/toolbox.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/tpe.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/common/types.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/config/__init__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/config/__main__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/config/config.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/config/flow.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/config/pdk_compat.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/config/preprocessor.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/config/removals.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/config/variable.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/container.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/env_info.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm/pin_order.cfg +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm/src/impl.sdc +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm/src/signoff.sdc +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm/src/spm.v +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm/verify/spm_tb.v +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm-user_project_wrapper/SPM_example.v +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm-user_project_wrapper/config-tut.json +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm-user_project_wrapper/defines.v +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm-user_project_wrapper/template.def +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/flows/__init__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/flows/builtins.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/flows/classic.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/flows/cli.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/flows/flow.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/flows/misc.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/flows/optimizing.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/flows/sequential.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/flows/synth_explore.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/logging/__init__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/logging/logger.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/open_pdks_rev +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/plugins.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/py.typed +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/base.sdc +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/klayout/Readme.md +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/klayout/open_design.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/klayout/render.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/klayout/stream_out.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/klayout/xml_drc_report_to_json.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/klayout/xor.drc +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/Readme.md +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/common/read.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/def/antenna_check.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/def/mag.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/def/mag_gds.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/drc.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/extract_spice.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/gds/drc_batch.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/gds/erase_box.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/gds/extras_mag.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/gds/mag_with_pointers.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/get_bbox.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/lef/extras_maglef.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/lef/maglef.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/lef.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/open.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/magic/wrapper.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/netgen/setup.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/apply_def_template.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/cell_frequency.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/check_antenna_properties.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/contextualize.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/defutil.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/diodes.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/disconnected_pins.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/eco_buffer.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/eco_diode.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/filter_unannotated.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/io_place.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/ioplace_parser/__init__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/ioplace_parser/parse.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/label_macro_pins.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/lefutil.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/placers.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/power_utils.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/random_place.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/reader.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/remove_buffers.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/snap_to_grid.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/odbpy/wire_lengths.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/antenna_check.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/antenna_repair.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/basic_mp.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/buffer_list.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/dpl.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/dpl_cell_pad.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/grt.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/resizer.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/set_global_connections.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/set_layer_adjustments.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/set_power_nets.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/set_rc.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/set_routing_layers.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/cts.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/cut_rows.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/dpl.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/drt.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/dump_rc.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/fill.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/floorplan.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/gpl.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/grt.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/gui.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/insert_buffer.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/irdrop.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/rcx.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/repair_design.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/repair_design_postgrt.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/rsz_timing_postcts.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/rsz_timing_postgrt.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/sta/check_macro_instances.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/sta/corner.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/tapcell.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/ungpl.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/write_views.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/pyosys/construct_abc_script.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/pyosys/json_header.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/pyosys/synthesize.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/pyosys/ys_common.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/tclsh/hello.tcl +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/state/__init__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/state/__main__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/state/design_format.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/state/state.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/__init__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/__main__.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/checker.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/cvc_rv.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/klayout.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/magic.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/misc.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/netgen.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/openroad_alerts.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/pyosys.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/step.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/tclstep.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/verilator.py +0 -0
- {librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/steps/yosys.py +0 -0
|
@@ -7,16 +7,16 @@ PNR_SDC_FILE: dir::src/impl.sdc
|
|
|
7
7
|
SIGNOFF_SDC_FILE: dir::src/signoff.sdc
|
|
8
8
|
|
|
9
9
|
# PDN
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
PDN_VOFFSET: 5
|
|
11
|
+
PDN_HOFFSET: 5
|
|
12
|
+
PDN_VWIDTH: 2
|
|
13
|
+
PDN_HWIDTH: 2
|
|
14
|
+
PDN_VPITCH: 30
|
|
15
|
+
PDN_HPITCH: 30
|
|
16
|
+
PDN_SKIPTRIM: true
|
|
17
17
|
|
|
18
18
|
# Pin Order
|
|
19
|
-
|
|
19
|
+
IO_PIN_ORDER_CFG: dir::pin_order.cfg
|
|
20
20
|
|
|
21
21
|
# Technology-Specific Configs
|
|
22
22
|
pdk::sky130*:
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"DESIGN_NAME": "SPM_example",
|
|
3
|
+
"VERILOG_FILES": [
|
|
4
|
+
"dir::./defines.v",
|
|
5
|
+
"dir::./SPM_example.v"
|
|
6
|
+
],
|
|
7
|
+
"CLOCK_PERIOD": 25,
|
|
8
|
+
"CLOCK_PORT": "wb_clk_i",
|
|
9
|
+
"CLOCK_NET": "SPM.clk",
|
|
10
|
+
"RT_MAX_LAYER": "met4",
|
|
11
|
+
"FP_SIZING": "absolute",
|
|
12
|
+
"VDD_NETS": [
|
|
13
|
+
"vccd1"
|
|
14
|
+
],
|
|
15
|
+
"GND_NETS": [
|
|
16
|
+
"vssd1"
|
|
17
|
+
],
|
|
18
|
+
"PDN_MULTILAYER": false,
|
|
19
|
+
"DIE_AREA": [
|
|
20
|
+
0,
|
|
21
|
+
0,
|
|
22
|
+
600,
|
|
23
|
+
600
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -99,23 +99,35 @@ proc read_pdn_cfg {} {
|
|
|
99
99
|
|
|
100
100
|
# Compatibility Layer for Deprecated Variables That May Still Be Used By
|
|
101
101
|
# User Files
|
|
102
|
-
set
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
set unset_list {
|
|
103
|
+
DESIGN_IS_CORE
|
|
104
|
+
PDN_ENABLE_MACROS_GRID
|
|
105
|
+
PDN_RAILS_LAYER
|
|
106
|
+
PDN_UPPER_LAYER
|
|
107
|
+
PDN_LOWER_LAYER
|
|
108
|
+
}
|
|
109
|
+
set ::env(DESIGN_IS_CORE) $::env(PDN_MULTILAYER)
|
|
110
|
+
set ::env(PDN_ENABLE_MACROS_GRID) $::env(PDN_CONNECT_MACROS_TO_GRID)
|
|
111
|
+
set ::env(PDN_RAILS_LAYER) $::env(PDN_RAIL_LAYER)
|
|
112
|
+
set ::env(PDN_UPPER_LAYER) $::env(PDN_HORIZONTAL_LAYER)
|
|
113
|
+
set ::env(PDN_LOWER_LAYER) $::env(PDN_VERTICAL_LAYER)
|
|
114
|
+
foreach key [array names ::env] {
|
|
115
|
+
if { [string match PDN_* $key] } {
|
|
116
|
+
set fp_name FP_$key
|
|
117
|
+
lappend unset_list $fp_name
|
|
118
|
+
set ::env($fp_name) $::env($key)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
107
121
|
|
|
108
|
-
if {[catch {source $::env(
|
|
122
|
+
if {[catch {source $::env(PDN_CFG)} errmsg]} {
|
|
109
123
|
puts stderr $errmsg
|
|
110
124
|
exit 1
|
|
111
125
|
}
|
|
112
126
|
|
|
113
127
|
# Restore Environment
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
unset ::env(FP_PDN_UPPER_LAYER)
|
|
118
|
-
unset ::env(FP_PDN_LOWER_LAYER)
|
|
128
|
+
foreach unsettable $unset_list {
|
|
129
|
+
unset ::env($unsettable)
|
|
130
|
+
}
|
|
119
131
|
}
|
|
120
132
|
|
|
121
133
|
|
{librelane-3.0.0.dev24 → librelane-3.0.0.dev25}/librelane/scripts/openroad/common/pdn_cfg.tcl
RENAMED
|
@@ -43,83 +43,83 @@ foreach vdd $::env(VDD_NETS) gnd $::env(GND_NETS) {
|
|
|
43
43
|
set_voltage_domain -name CORE -power $::env(VDD_NET) -ground $::env(GND_NET) \
|
|
44
44
|
-secondary_power $secondary
|
|
45
45
|
|
|
46
|
-
if { $::env(
|
|
46
|
+
if { $::env(PDN_MULTILAYER) == 1 } {
|
|
47
47
|
define_pdn_grid \
|
|
48
48
|
-name stdcell_grid \
|
|
49
49
|
-starts_with POWER \
|
|
50
50
|
-voltage_domain CORE \
|
|
51
|
-
-pins "$::env(
|
|
51
|
+
-pins "$::env(PDN_VERTICAL_LAYER) $::env(PDN_HORIZONTAL_LAYER)"
|
|
52
52
|
|
|
53
53
|
add_pdn_stripe \
|
|
54
54
|
-grid stdcell_grid \
|
|
55
|
-
-layer $::env(
|
|
56
|
-
-width $::env(
|
|
57
|
-
-pitch $::env(
|
|
58
|
-
-offset $::env(
|
|
59
|
-
-spacing $::env(
|
|
55
|
+
-layer $::env(PDN_VERTICAL_LAYER) \
|
|
56
|
+
-width $::env(PDN_VWIDTH) \
|
|
57
|
+
-pitch $::env(PDN_VPITCH) \
|
|
58
|
+
-offset $::env(PDN_VOFFSET) \
|
|
59
|
+
-spacing $::env(PDN_VSPACING) \
|
|
60
60
|
-starts_with POWER -extend_to_core_ring
|
|
61
61
|
|
|
62
62
|
add_pdn_stripe \
|
|
63
63
|
-grid stdcell_grid \
|
|
64
|
-
-layer $::env(
|
|
65
|
-
-width $::env(
|
|
66
|
-
-pitch $::env(
|
|
67
|
-
-offset $::env(
|
|
68
|
-
-spacing $::env(
|
|
64
|
+
-layer $::env(PDN_HORIZONTAL_LAYER) \
|
|
65
|
+
-width $::env(PDN_HWIDTH) \
|
|
66
|
+
-pitch $::env(PDN_HPITCH) \
|
|
67
|
+
-offset $::env(PDN_HOFFSET) \
|
|
68
|
+
-spacing $::env(PDN_HSPACING) \
|
|
69
69
|
-starts_with POWER -extend_to_core_ring
|
|
70
70
|
|
|
71
71
|
add_pdn_connect \
|
|
72
72
|
-grid stdcell_grid \
|
|
73
|
-
-layers "$::env(
|
|
73
|
+
-layers "$::env(PDN_VERTICAL_LAYER) $::env(PDN_HORIZONTAL_LAYER)"
|
|
74
74
|
} else {
|
|
75
75
|
define_pdn_grid \
|
|
76
76
|
-name stdcell_grid \
|
|
77
77
|
-starts_with POWER \
|
|
78
78
|
-voltage_domain CORE \
|
|
79
|
-
-pins $::env(
|
|
79
|
+
-pins $::env(PDN_VERTICAL_LAYER)
|
|
80
80
|
|
|
81
81
|
add_pdn_stripe \
|
|
82
82
|
-grid stdcell_grid \
|
|
83
|
-
-layer $::env(
|
|
84
|
-
-width $::env(
|
|
85
|
-
-pitch $::env(
|
|
86
|
-
-offset $::env(
|
|
87
|
-
-spacing $::env(
|
|
83
|
+
-layer $::env(PDN_VERTICAL_LAYER) \
|
|
84
|
+
-width $::env(PDN_VWIDTH) \
|
|
85
|
+
-pitch $::env(PDN_VPITCH) \
|
|
86
|
+
-offset $::env(PDN_VOFFSET) \
|
|
87
|
+
-spacing $::env(PDN_VSPACING) \
|
|
88
88
|
-starts_with POWER -extend_to_core_ring
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
# Adds the standard cell rails if enabled.
|
|
92
|
-
if { $::env(
|
|
92
|
+
if { $::env(PDN_ENABLE_RAILS) == 1 } {
|
|
93
93
|
add_pdn_stripe \
|
|
94
94
|
-grid stdcell_grid \
|
|
95
|
-
-layer $::env(
|
|
96
|
-
-width $::env(
|
|
95
|
+
-layer $::env(PDN_RAIL_LAYER) \
|
|
96
|
+
-width $::env(PDN_RAIL_WIDTH) \
|
|
97
97
|
-followpins
|
|
98
98
|
|
|
99
99
|
add_pdn_connect \
|
|
100
100
|
-grid stdcell_grid \
|
|
101
|
-
-layers "$::env(
|
|
101
|
+
-layers "$::env(PDN_RAIL_LAYER) $::env(PDN_VERTICAL_LAYER)"
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
|
|
105
105
|
# Adds the core ring if enabled.
|
|
106
|
-
if { $::env(
|
|
107
|
-
if { $::env(
|
|
106
|
+
if { $::env(PDN_CORE_RING) == 1 } {
|
|
107
|
+
if { $::env(PDN_MULTILAYER) == 1 } {
|
|
108
108
|
add_pdn_ring \
|
|
109
109
|
-allow_out_of_die \
|
|
110
110
|
-grid stdcell_grid \
|
|
111
|
-
-layers "$::env(
|
|
112
|
-
-widths "$::env(
|
|
113
|
-
-spacings "$::env(
|
|
114
|
-
-core_offset "$::env(
|
|
111
|
+
-layers "$::env(PDN_VERTICAL_LAYER) $::env(PDN_HORIZONTAL_LAYER)" \
|
|
112
|
+
-widths "$::env(PDN_CORE_RING_VWIDTH) $::env(PDN_CORE_RING_HWIDTH)" \
|
|
113
|
+
-spacings "$::env(PDN_CORE_RING_VSPACING) $::env(PDN_CORE_RING_HSPACING)" \
|
|
114
|
+
-core_offset "$::env(PDN_CORE_RING_VOFFSET) $::env(PDN_CORE_RING_HOFFSET)"
|
|
115
115
|
} else {
|
|
116
|
-
throw APPLICATION "
|
|
116
|
+
throw APPLICATION "PDN_CORE_RING cannot be used when PDN_MULTILAYER is set to false."
|
|
117
117
|
# add_pdn_ring \
|
|
118
118
|
# -grid stdcell_grid \
|
|
119
|
-
# -layers "$::env(
|
|
120
|
-
# -widths "$::env(
|
|
121
|
-
# -spacings "$::env(
|
|
122
|
-
# -core_offset "$::env(
|
|
119
|
+
# -layers "$::env(PDN_VERTICAL_LAYER)" \
|
|
120
|
+
# -widths "$::env(PDN_CORE_RING_VWIDTH)" \
|
|
121
|
+
# -spacings "$::env(PDN_CORE_RING_VSPACING)" \
|
|
122
|
+
# -core_offset "$::env(PDN_CORE_RING_VOFFSET)"
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
|
|
@@ -128,8 +128,8 @@ define_pdn_grid \
|
|
|
128
128
|
-default \
|
|
129
129
|
-name macro \
|
|
130
130
|
-starts_with POWER \
|
|
131
|
-
-halo "$::env(
|
|
131
|
+
-halo "$::env(PDN_HORIZONTAL_HALO) $::env(PDN_VERTICAL_HALO)"
|
|
132
132
|
|
|
133
133
|
add_pdn_connect \
|
|
134
134
|
-grid macro \
|
|
135
|
-
-layers "$::env(
|
|
135
|
+
-layers "$::env(PDN_VERTICAL_LAYER) $::env(PDN_HORIZONTAL_LAYER)"
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Copyright 2020-2022 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
|
+
read_current_odb
|
|
16
|
+
|
|
17
|
+
if { [info exists ::env(CONTEXTUAL_IO_FLAG)] } {
|
|
18
|
+
read_lef $::env(placement_tmpfiles)/top_level.lef
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if { [info exists ::env(IO_PIN_H_LENGTH)] } {
|
|
22
|
+
set_pin_length -hor_length $::env(IO_PIN_H_LENGTH)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if { [info exists ::env(IO_PIN_V_LENGTH)] } {
|
|
26
|
+
set_pin_length -ver_length $::env(IO_PIN_V_LENGTH)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if { $::env(IO_PIN_H_EXTENSION) != "0"} {
|
|
30
|
+
set_pin_length_extension -hor_extension $::env(IO_PIN_H_EXTENSION)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if { $::env(IO_PIN_V_EXTENSION) != "0"} {
|
|
34
|
+
set_pin_length_extension -ver_extension $::env(IO_PIN_V_EXTENSION)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if {$::env(IO_PIN_V_THICKNESS_MULT) != "" && $::env(IO_PIN_H_THICKNESS_MULT) != ""} {
|
|
38
|
+
set_pin_thick_multiplier\
|
|
39
|
+
-hor_multiplier $::env(IO_PIN_H_THICKNESS_MULT) \
|
|
40
|
+
-ver_multiplier $::env(IO_PIN_V_THICKNESS_MULT)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
set arg_list [list]
|
|
44
|
+
if { $::env(IO_PIN_PLACEMENT_MODE) == "random_equidistant" } {
|
|
45
|
+
lappend arg_list -random
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if { [info exists ::env(IO_PIN_MIN_DISTANCE)] } {
|
|
49
|
+
lappend arg_list -min_distance $::env(IO_PIN_MIN_DISTANCE)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if { $::env(IO_PIN_PLACEMENT_MODE) == "annealing" } {
|
|
53
|
+
lappend arg_list -annealing
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
set HMETAL $::env(FP_IO_HLAYER)
|
|
57
|
+
set VMETAL $::env(FP_IO_VLAYER)
|
|
58
|
+
|
|
59
|
+
log_cmd place_pins {*}$arg_list \
|
|
60
|
+
-random_seed 42 \
|
|
61
|
+
-hor_layers $HMETAL \
|
|
62
|
+
-ver_layers $VMETAL
|
|
63
|
+
|
|
64
|
+
write_views
|
|
65
|
+
|
|
66
|
+
report_design_area_metrics
|
|
67
|
+
|
|
@@ -18,204 +18,253 @@ from ..config import Variable
|
|
|
18
18
|
|
|
19
19
|
io_layer_variables = [
|
|
20
20
|
Variable(
|
|
21
|
-
"
|
|
21
|
+
"IO_PIN_V_EXTENSION",
|
|
22
22
|
Decimal,
|
|
23
23
|
"Extends the vertical io pins outside of the die by the specified units.",
|
|
24
24
|
default=0,
|
|
25
25
|
units="µm",
|
|
26
|
+
deprecated_names=["FP_IO_VEXTEND"],
|
|
26
27
|
),
|
|
27
28
|
Variable(
|
|
28
|
-
"
|
|
29
|
+
"IO_PIN_H_EXTENSION",
|
|
29
30
|
Decimal,
|
|
30
31
|
"Extends the horizontal io pins outside of the die by the specified units.",
|
|
31
32
|
default=0,
|
|
32
33
|
units="µm",
|
|
34
|
+
deprecated_names=["FP_IO_HEXTEND"],
|
|
33
35
|
),
|
|
34
36
|
Variable(
|
|
35
|
-
"
|
|
37
|
+
"IO_PIN_V_THICKNESS_MULT",
|
|
36
38
|
Decimal,
|
|
37
39
|
"A multiplier for vertical pin thickness. Base thickness is the pins layer min width.",
|
|
38
40
|
default=2,
|
|
41
|
+
deprecated_names=["FP_IO_VTHICKNESS_MULT"],
|
|
39
42
|
),
|
|
40
43
|
Variable(
|
|
41
|
-
"
|
|
44
|
+
"IO_PIN_H_THICKNESS_MULT",
|
|
42
45
|
Decimal,
|
|
43
46
|
"A multiplier for horizontal pin thickness. Base thickness is the pins layer min width.",
|
|
44
47
|
default=2,
|
|
48
|
+
deprecated_names=["FP_IO_HTHICKNESS_MULT"],
|
|
49
|
+
),
|
|
50
|
+
Variable(
|
|
51
|
+
"IO_PIN_V_LENGTH",
|
|
52
|
+
Optional[Decimal],
|
|
53
|
+
"""
|
|
54
|
+
The length of the pins with a north or south orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values:
|
|
55
|
+
* The pin width
|
|
56
|
+
* The minimum value satisfying the minimum area constraint given the pin width
|
|
57
|
+
""",
|
|
58
|
+
units="µm",
|
|
59
|
+
pdk=True,
|
|
60
|
+
deprecated_names=["FP_IO_VLENGTH"],
|
|
61
|
+
),
|
|
62
|
+
Variable(
|
|
63
|
+
"IO_PIN_H_LENGTH",
|
|
64
|
+
Optional[Decimal],
|
|
65
|
+
"""
|
|
66
|
+
The length of the pins with an east or west orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values:
|
|
67
|
+
* The pin width
|
|
68
|
+
* The minimum value satisfying the minimum area constraint given the pin width
|
|
69
|
+
""",
|
|
70
|
+
units="µm",
|
|
71
|
+
pdk=True,
|
|
72
|
+
deprecated_names=["FP_IO_HLENGTH"],
|
|
45
73
|
),
|
|
46
74
|
]
|
|
47
75
|
|
|
48
76
|
pdn_variables = [
|
|
49
77
|
Variable(
|
|
50
|
-
"
|
|
78
|
+
"PDN_SKIPTRIM",
|
|
51
79
|
bool,
|
|
52
80
|
"Enables `-skip_trim` option during pdngen which skips the metal trim step, which attempts to remove metal stubs.",
|
|
53
81
|
default=False,
|
|
82
|
+
deprecated_names=["FP_PDN_SKIPTRIM"],
|
|
54
83
|
),
|
|
55
84
|
Variable(
|
|
56
|
-
"
|
|
85
|
+
"PDN_CORE_RING",
|
|
57
86
|
bool,
|
|
58
87
|
"Enables adding a core ring around the design. More details on the control variables in the PDK config documentation.",
|
|
59
88
|
default=False,
|
|
89
|
+
deprecated_names=["FP_PDN_CORE_RING"],
|
|
60
90
|
),
|
|
61
91
|
Variable(
|
|
62
|
-
"
|
|
92
|
+
"PDN_ENABLE_RAILS",
|
|
63
93
|
bool,
|
|
64
94
|
"Enables the creation of rails in the power grid.",
|
|
65
95
|
default=True,
|
|
96
|
+
deprecated_names=["FP_PDN_ENABLE_RAILS"],
|
|
66
97
|
),
|
|
67
98
|
Variable(
|
|
68
|
-
"
|
|
99
|
+
"PDN_HORIZONTAL_HALO",
|
|
69
100
|
Decimal,
|
|
70
101
|
"Sets the horizontal halo around the macros during power grid insertion.",
|
|
71
102
|
default=10,
|
|
72
103
|
units="µm",
|
|
104
|
+
deprecated_names=["FP_PDN_HORIZONTAL_HALO"],
|
|
73
105
|
),
|
|
74
106
|
Variable(
|
|
75
|
-
"
|
|
107
|
+
"PDN_VERTICAL_HALO",
|
|
76
108
|
Decimal,
|
|
77
109
|
"Sets the vertical halo around the macros during power grid insertion.",
|
|
78
110
|
default=10,
|
|
79
111
|
units="µm",
|
|
112
|
+
deprecated_names=["FP_PDN_VERTICAL_HALO"],
|
|
80
113
|
),
|
|
81
114
|
Variable(
|
|
82
|
-
"
|
|
115
|
+
"PDN_MULTILAYER",
|
|
83
116
|
bool,
|
|
84
117
|
"Controls the layers used in the power grid. If set to false, only the lower layer will be used, which is useful when hardening a macro for integrating into a larger top-level design.",
|
|
85
118
|
default=True,
|
|
86
|
-
deprecated_names=["DESIGN_IS_CORE"],
|
|
119
|
+
deprecated_names=["FP_PDN_MULTILAYER", "DESIGN_IS_CORE"],
|
|
87
120
|
),
|
|
88
121
|
Variable(
|
|
89
|
-
"
|
|
122
|
+
"PDN_RAIL_OFFSET",
|
|
90
123
|
Decimal,
|
|
91
124
|
"The offset for the power distribution network rails for first metal layer.",
|
|
92
125
|
units="µm",
|
|
93
126
|
pdk=True,
|
|
127
|
+
deprecated_names=["FP_PDN_RAIL_OFFSET"],
|
|
94
128
|
),
|
|
95
129
|
Variable(
|
|
96
|
-
"
|
|
130
|
+
"PDN_VWIDTH",
|
|
97
131
|
Decimal,
|
|
98
132
|
"The strap width for the vertical layer in generated power distribution networks.",
|
|
99
133
|
units="µm",
|
|
100
134
|
pdk=True,
|
|
135
|
+
deprecated_names=["FP_PDN_VWIDTH"],
|
|
101
136
|
),
|
|
102
137
|
Variable(
|
|
103
|
-
"
|
|
138
|
+
"PDN_HWIDTH",
|
|
104
139
|
Decimal,
|
|
105
140
|
"The strap width for the horizontal layer in generated power distribution networks.",
|
|
106
141
|
units="µm",
|
|
107
142
|
pdk=True,
|
|
143
|
+
deprecated_names=["FP_PDN_HWIDTH"],
|
|
108
144
|
),
|
|
109
145
|
Variable(
|
|
110
|
-
"
|
|
146
|
+
"PDN_VSPACING",
|
|
111
147
|
Decimal,
|
|
112
148
|
"Intra-spacing (within a set) of vertical straps in generated power distribution networks.",
|
|
113
149
|
units="µm",
|
|
114
150
|
pdk=True,
|
|
151
|
+
deprecated_names=["FP_PDN_VSPACING"],
|
|
115
152
|
),
|
|
116
153
|
Variable(
|
|
117
|
-
"
|
|
154
|
+
"PDN_HSPACING",
|
|
118
155
|
Decimal,
|
|
119
156
|
"Intra-spacing (within a set) of horizontal straps in generated power distribution networks.",
|
|
120
157
|
units="µm",
|
|
121
158
|
pdk=True,
|
|
159
|
+
deprecated_names=["FP_PDN_HSPACING"],
|
|
122
160
|
),
|
|
123
161
|
Variable(
|
|
124
|
-
"
|
|
162
|
+
"PDN_VPITCH",
|
|
125
163
|
Decimal,
|
|
126
164
|
"Inter-distance (between sets) of vertical power straps in generated power distribution networks.",
|
|
127
165
|
units="µm",
|
|
128
166
|
pdk=True,
|
|
167
|
+
deprecated_names=["FP_PDN_VPITCH"],
|
|
129
168
|
),
|
|
130
169
|
Variable(
|
|
131
|
-
"
|
|
170
|
+
"PDN_HPITCH",
|
|
132
171
|
Decimal,
|
|
133
172
|
"Inter-distance (between sets) of horizontal power straps in generated power distribution networks.",
|
|
134
173
|
units="µm",
|
|
135
174
|
pdk=True,
|
|
175
|
+
deprecated_names=["FP_PDN_HPITCH"],
|
|
136
176
|
),
|
|
137
177
|
Variable(
|
|
138
|
-
"
|
|
178
|
+
"PDN_VOFFSET",
|
|
139
179
|
Decimal,
|
|
140
180
|
"Initial offset for sets of vertical power straps.",
|
|
141
181
|
units="µm",
|
|
142
182
|
pdk=True,
|
|
183
|
+
deprecated_names=["FP_PDN_VOFFSET"],
|
|
143
184
|
),
|
|
144
185
|
Variable(
|
|
145
|
-
"
|
|
186
|
+
"PDN_HOFFSET",
|
|
146
187
|
Decimal,
|
|
147
188
|
"Initial offset for sets of horizontal power straps.",
|
|
148
189
|
units="µm",
|
|
149
190
|
pdk=True,
|
|
191
|
+
deprecated_names=["FP_PDN_HOFFSET"],
|
|
150
192
|
),
|
|
151
193
|
Variable(
|
|
152
|
-
"
|
|
194
|
+
"PDN_CORE_RING_VWIDTH",
|
|
153
195
|
Decimal,
|
|
154
196
|
"The width for the vertical layer in the core ring of generated power distribution networks.",
|
|
155
197
|
units="µm",
|
|
156
198
|
pdk=True,
|
|
199
|
+
deprecated_names=["FP_PDN_CORE_RING_VWIDTH"],
|
|
157
200
|
),
|
|
158
201
|
Variable(
|
|
159
|
-
"
|
|
202
|
+
"PDN_CORE_RING_HWIDTH",
|
|
160
203
|
Decimal,
|
|
161
204
|
"The width for the horizontal layer in the core ring of generated power distribution networks.",
|
|
162
205
|
units="µm",
|
|
163
206
|
pdk=True,
|
|
207
|
+
deprecated_names=["FP_PDN_CORE_RING_HWIDTH"],
|
|
164
208
|
),
|
|
165
209
|
Variable(
|
|
166
|
-
"
|
|
210
|
+
"PDN_CORE_RING_VSPACING",
|
|
167
211
|
Decimal,
|
|
168
212
|
"The spacing for the vertical layer in the core ring of generated power distribution networks.",
|
|
169
213
|
units="µm",
|
|
170
214
|
pdk=True,
|
|
215
|
+
deprecated_names=["FP_PDN_CORE_RING_VSPACING"],
|
|
171
216
|
),
|
|
172
217
|
Variable(
|
|
173
|
-
"
|
|
218
|
+
"PDN_CORE_RING_HSPACING",
|
|
174
219
|
Decimal,
|
|
175
220
|
"The spacing for the horizontal layer in the core ring of generated power distribution networks.",
|
|
176
221
|
units="µm",
|
|
177
222
|
pdk=True,
|
|
223
|
+
deprecated_names=["FP_PDN_CORE_RING_HSPACING"],
|
|
178
224
|
),
|
|
179
225
|
Variable(
|
|
180
|
-
"
|
|
226
|
+
"PDN_CORE_RING_VOFFSET",
|
|
181
227
|
Decimal,
|
|
182
228
|
"The offset for the vertical layer in the core ring of generated power distribution networks.",
|
|
183
229
|
units="µm",
|
|
184
230
|
pdk=True,
|
|
231
|
+
deprecated_names=["FP_PDN_CORE_RING_VOFFSET"],
|
|
185
232
|
),
|
|
186
233
|
Variable(
|
|
187
|
-
"
|
|
234
|
+
"PDN_CORE_RING_HOFFSET",
|
|
188
235
|
Decimal,
|
|
189
236
|
"The offset for the horizontal layer in the core ring of generated power distribution networks.",
|
|
190
237
|
units="µm",
|
|
191
238
|
pdk=True,
|
|
239
|
+
deprecated_names=["FP_PDN_CORE_RING_HOFFSET"],
|
|
192
240
|
),
|
|
193
241
|
Variable(
|
|
194
|
-
"
|
|
242
|
+
"PDN_RAIL_LAYER",
|
|
195
243
|
str,
|
|
196
244
|
"Defines the metal layer used for PDN rails.",
|
|
197
|
-
deprecated_names=["FP_PDN_RAILS_LAYER"],
|
|
245
|
+
deprecated_names=["FP_PDN_RAIL_LAYER", "FP_PDN_RAILS_LAYER"],
|
|
198
246
|
pdk=True,
|
|
199
247
|
),
|
|
200
248
|
Variable(
|
|
201
|
-
"
|
|
249
|
+
"PDN_RAIL_WIDTH",
|
|
202
250
|
Decimal,
|
|
203
251
|
"Defines the width of PDN rails on the `FP_PDN_RAILS_LAYER` layer.",
|
|
204
252
|
units="µm",
|
|
205
253
|
pdk=True,
|
|
254
|
+
deprecated_names=["FP_PDN_RAIL_WIDTH"],
|
|
206
255
|
),
|
|
207
256
|
Variable(
|
|
208
|
-
"
|
|
257
|
+
"PDN_HORIZONTAL_LAYER",
|
|
209
258
|
str,
|
|
210
259
|
"Defines the horizontal PDN layer.",
|
|
211
|
-
deprecated_names=["FP_PDN_UPPER_LAYER"],
|
|
260
|
+
deprecated_names=["FP_PDN_HORIZONTAL_LAYER", "FP_PDN_UPPER_LAYER"],
|
|
212
261
|
pdk=True,
|
|
213
262
|
),
|
|
214
263
|
Variable(
|
|
215
|
-
"
|
|
264
|
+
"PDN_VERTICAL_LAYER",
|
|
216
265
|
str,
|
|
217
266
|
"Defines the vertical PDN layer.",
|
|
218
|
-
deprecated_names=["FP_PDN_LOWER_LAYER"],
|
|
267
|
+
deprecated_names=["FP_PDN_VERTICAL_LAYER", "FP_PDN_LOWER_LAYER"],
|
|
219
268
|
pdk=True,
|
|
220
269
|
),
|
|
221
270
|
]
|