librelane 3.0.0.dev38__tar.gz → 3.0.0.dev39__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.dev38 → librelane-3.0.0.dev39}/PKG-INFO +2 -2
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/config/flow.py +2 -2
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/flows/cli.py +15 -12
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/flows/flow.py +6 -2
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/io.tcl +11 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/pdn_cfg.tcl +73 -14
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/common_variables.py +45 -1
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/openroad.py +1 -1
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/step.py +2 -1
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/pyproject.toml +2 -2
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/Readme.md +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/__init__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/__main__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/__version__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/__init__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/cli.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/drc.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/generic_dict.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/metrics/__init__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/metrics/__main__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/metrics/library.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/metrics/metric.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/metrics/util.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/misc.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/ring_buffer.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/tcl.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/toolbox.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/tpe.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/common/types.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/config/__init__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/config/__main__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/config/config.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/config/pdk_compat.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/config/preprocessor.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/config/removals.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/config/variable.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/container.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/env_info.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm/config.yaml +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm/pin_order.cfg +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm/src/impl.sdc +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm/src/signoff.sdc +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm/src/spm.v +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm/verify/spm_tb.v +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm-user_project_wrapper/SPM_example.v +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm-user_project_wrapper/config-tut.json +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm-user_project_wrapper/config.json +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm-user_project_wrapper/defines.v +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm-user_project_wrapper/template.def +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/flows/__init__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/flows/builtins.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/flows/classic.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/flows/misc.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/flows/optimizing.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/flows/sequential.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/flows/synth_explore.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/help/__main__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/logging/__init__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/logging/logger.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/pdk_hashes.yaml +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/plugins.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/py.typed +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/base.sdc +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/klayout/Readme.md +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/klayout/open_design.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/klayout/render.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/klayout/stream_out.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/klayout/xml_drc_report_to_json.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/klayout/xor.drc +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/Readme.md +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/common/read.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/def/antenna_check.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/def/mag.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/def/mag_gds.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/drc.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/extract_spice.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/gds/drc_batch.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/gds/erase_box.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/gds/extras_mag.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/gds/mag_with_pointers.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/get_bbox.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/lef/extras_maglef.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/lef/maglef.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/lef.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/open.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/wrapper.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/netgen/setup.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/apply_def_template.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/cell_frequency.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/check_antenna_properties.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/contextualize.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/defutil.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/diodes.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/disconnected_pins.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/eco_buffer.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/eco_diode.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/filter_unannotated.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/io_place.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/ioplace_parser/__init__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/ioplace_parser/parse.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/label_macro_pins.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/lefutil.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/placers.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/power_utils.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/random_place.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/reader.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/remove_buffers.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/snap_to_grid.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/wire_lengths.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/antenna_check.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/antenna_repair.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/basic_mp.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/buffer_list.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/dpl.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/dpl_cell_pad.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/grt.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/resizer.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/set_global_connections.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/set_layer_adjustments.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/set_power_nets.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/set_rc.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/set_routing_layers.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/cts.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/cut_rows.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/dpl.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/drt.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/dump_rc.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/fill.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/floorplan.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/gpl.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/grt.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/gui.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/insert_buffer.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/ioplacer.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/irdrop.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/pdn.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/rcx.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/repair_design.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/repair_design_postgrt.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/rsz_timing_postcts.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/rsz_timing_postgrt.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/sta/check_macro_instances.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/sta/corner.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/tapcell.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/ungpl.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/write_cdl.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/write_views.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/pyosys/construct_abc_script.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/pyosys/json_header.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/pyosys/synthesize.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/pyosys/ys_common.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/tclsh/hello.tcl +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/state/__init__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/state/__main__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/state/design_format.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/state/state.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/__init__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/__main__.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/checker.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/cvc_rv.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/klayout.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/magic.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/misc.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/netgen.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/odb.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/openroad_alerts.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/pyosys.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/tclstep.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/verilator.py +0 -0
- {librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/steps/yosys.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: librelane
|
|
3
|
-
Version: 3.0.0.
|
|
3
|
+
Version: 3.0.0.dev39
|
|
4
4
|
Summary: An infrastructure for implementing chip design flows
|
|
5
5
|
Home-page: https://github.com/librelane/librelane
|
|
6
6
|
License: Apache-2.0
|
|
@@ -20,7 +20,7 @@ Requires-Dist: cloup (>=3.0.5,<4)
|
|
|
20
20
|
Requires-Dist: deprecated (>=1.2.10,<2)
|
|
21
21
|
Requires-Dist: httpx (>=0.22.0,<0.29)
|
|
22
22
|
Requires-Dist: klayout (>=0.29.0,<0.31.0)
|
|
23
|
-
Requires-Dist: libparse (
|
|
23
|
+
Requires-Dist: lln-libparse (==0.56.*)
|
|
24
24
|
Requires-Dist: lxml (>=4.9.0)
|
|
25
25
|
Requires-Dist: psutil (>=5.9.0)
|
|
26
26
|
Requires-Dist: pyyaml (>=5,<7)
|
|
@@ -107,13 +107,13 @@ pdk_variables = [
|
|
|
107
107
|
Variable(
|
|
108
108
|
"FP_IO_HLAYER",
|
|
109
109
|
str,
|
|
110
|
-
"The metal layer on which to place
|
|
110
|
+
"The metal layer on which to place horizontally-aligned (long side parallel with the horizon) pins alongside the east and west edges of the die.",
|
|
111
111
|
pdk=True,
|
|
112
112
|
),
|
|
113
113
|
Variable(
|
|
114
114
|
"FP_IO_VLAYER",
|
|
115
115
|
str,
|
|
116
|
-
"The metal layer on which to place
|
|
116
|
+
"The metal layer on which to place vertically-aligned (long side perpendicular to the horizon) pins alongside the north and south edges of the die.",
|
|
117
117
|
pdk=True,
|
|
118
118
|
),
|
|
119
119
|
Variable("RT_MIN_LAYER", str, "The lowest metal layer to route on.", pdk=True),
|
|
@@ -218,27 +218,30 @@ def cloup_flow_opts(
|
|
|
218
218
|
function decorated with @cloup.command (https://cloup.readthedocs.io/en/stable/autoapi/cloup/index.html#cloup.command).
|
|
219
219
|
|
|
220
220
|
The following keyword arguments will be passed to the decorated function.
|
|
221
|
+
|
|
221
222
|
* Those postfixed ‡ are compatible with the constructor for :class:`Flow`.
|
|
222
223
|
* Those postfixed § are compatible with the :meth:`Flow.start`.
|
|
223
224
|
|
|
225
|
+
---
|
|
226
|
+
|
|
224
227
|
* Flow configuration options (if parameter ``config_options`` is ``True``):
|
|
225
228
|
* ``flow_name``: ``Optional[str]``: A valid flow ID to be used with :meth:`Flow.factory.get`
|
|
226
|
-
* ``config_override_strings
|
|
229
|
+
* ``config_override_strings`` ‡: ``Optional[Iterable[str]]``
|
|
227
230
|
* Sequential flow controls (if parameter ``sequential_flow_controls`` is ``True``)
|
|
228
|
-
* ``frm
|
|
229
|
-
* ``to
|
|
230
|
-
* ``skip
|
|
231
|
+
* ``frm`` §: ``Optional[str]``: Start from a step with this ID. Supported by sequential flows.
|
|
232
|
+
* ``to`` §: ``Optional[str]``: Stop at a step with this id. Supported by sequential flows.
|
|
233
|
+
* ``skip`` §: ``Iterable[str]``: Skip these steps. Supported by sequential flows.
|
|
231
234
|
* Sequential flow reproducible (if parameter ``sequential_flow_reproducible`` is ``True``)
|
|
232
|
-
* ``reproducible
|
|
235
|
+
* ``reproducible`` §: ``str``: Create a reproducible for a step with is ID, aborting the flow afterwards. Supported by sequential flows.
|
|
233
236
|
* Flow run options (if parameter ``run_options`` is ``True``):
|
|
234
|
-
* ``tag
|
|
235
|
-
* ``last_run
|
|
236
|
-
* ``with_initial_state
|
|
237
|
+
* ``tag`` §: ``Optional[str]``
|
|
238
|
+
* ``last_run`` §: ``bool``: If ``True``, ``tag`` is guaranteed to be None.
|
|
239
|
+
* ``with_initial_state`` §: ``Optional[State]``
|
|
237
240
|
* PDK options
|
|
238
|
-
* ``use_volare
|
|
239
|
-
* ``pdk_root
|
|
240
|
-
* ``pdk
|
|
241
|
-
* ``scl
|
|
241
|
+
* ``use_volare`` : ``bool``
|
|
242
|
+
* ``pdk_root`` ‡: ``Optional[str]``
|
|
243
|
+
* ``pdk`` ‡: ``str``
|
|
244
|
+
* ``scl`` ‡: ``Optional[str]``
|
|
242
245
|
* ``config_files``: ``Iterable[str]``: Paths to configuration files (if
|
|
243
246
|
parameter ``accept_config_files`` is ``True``)
|
|
244
247
|
|
|
@@ -534,8 +534,11 @@ class Flow(ABC):
|
|
|
534
534
|
|
|
535
535
|
:param with_initial_state: An optional initial state object to use.
|
|
536
536
|
If not provided:
|
|
537
|
+
|
|
537
538
|
* If resuming a previous run, the latest ``state_out.json`` (by filesystem modification date)
|
|
539
|
+
|
|
538
540
|
* If not, an empty state object is created.
|
|
541
|
+
|
|
539
542
|
:param tag: A name for this invocation of the flow. If not provided,
|
|
540
543
|
one based on a date string will be created.
|
|
541
544
|
|
|
@@ -999,8 +1002,9 @@ class Flow(ABC):
|
|
|
999
1002
|
A factory singleton for Flows, allowing Flow types to be registered and then
|
|
1000
1003
|
retrieved by name.
|
|
1001
1004
|
|
|
1002
|
-
See
|
|
1003
|
-
|
|
1005
|
+
See
|
|
1006
|
+
`Factory (object-oriented programming) on Wikipedia <https://en.wikipedia.org/wiki/Factory_(object-oriented_programming)>`_
|
|
1007
|
+
for a primer.
|
|
1004
1008
|
"""
|
|
1005
1009
|
|
|
1006
1010
|
__registry: ClassVar[Dict[str, Type[Flow]]] = {}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# Copyright 2025 LibreLane Contributors
|
|
2
|
+
#
|
|
3
|
+
# Adapted from OpenLane
|
|
4
|
+
#
|
|
1
5
|
# Copyright 2022-2025 Efabless Corporation
|
|
2
6
|
#
|
|
3
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -641,6 +645,13 @@ proc append_if_not_flag {list_arg glob_variable_name flag} {
|
|
|
641
645
|
}
|
|
642
646
|
}
|
|
643
647
|
|
|
648
|
+
proc append_if_equals {list_arg glob_variable_name value flag} {
|
|
649
|
+
upvar $list_arg local_array
|
|
650
|
+
if { [info exists ::env($glob_variable_name)] && $::env($glob_variable_name) == $value } {
|
|
651
|
+
lappend local_array $flag
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
|
|
644
655
|
# Code below adapted from OpenROAD Flow Scripts under the following license:
|
|
645
656
|
#
|
|
646
657
|
# BSD 3-Clause License
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/pdn_cfg.tcl
RENAMED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# Copyright 2025 LibreLane Contributors
|
|
2
|
+
#
|
|
3
|
+
# Adapted from OpenLane
|
|
4
|
+
#
|
|
1
5
|
# Copyright 2020-2022 Efabless Corporation
|
|
2
6
|
#
|
|
3
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -12,6 +16,7 @@
|
|
|
12
16
|
# See the License for the specific language governing permissions and
|
|
13
17
|
# limitations under the License.
|
|
14
18
|
|
|
19
|
+
source $::env(SCRIPTS_DIR)/openroad/common/io.tcl
|
|
15
20
|
source $::env(SCRIPTS_DIR)/openroad/common/set_global_connections.tcl
|
|
16
21
|
set_global_connections
|
|
17
22
|
|
|
@@ -43,12 +48,24 @@ foreach vdd $::env(VDD_NETS) gnd $::env(GND_NETS) {
|
|
|
43
48
|
set_voltage_domain -name CORE -power $::env(VDD_NET) -ground $::env(GND_NET) \
|
|
44
49
|
-secondary_power $secondary
|
|
45
50
|
|
|
51
|
+
|
|
52
|
+
|
|
46
53
|
if { $::env(PDN_MULTILAYER) == 1 } {
|
|
54
|
+
|
|
55
|
+
set arg_list [list]
|
|
56
|
+
if { $::env(PDN_ENABLE_PINS) } {
|
|
57
|
+
lappend arg_list -pins "$::env(PDN_VERTICAL_LAYER) $::env(PDN_HORIZONTAL_LAYER)"
|
|
58
|
+
}
|
|
59
|
+
|
|
47
60
|
define_pdn_grid \
|
|
48
61
|
-name stdcell_grid \
|
|
49
62
|
-starts_with POWER \
|
|
50
63
|
-voltage_domain CORE \
|
|
51
|
-
|
|
64
|
+
{*}$arg_list
|
|
65
|
+
|
|
66
|
+
set arg_list [list]
|
|
67
|
+
append_if_equals arg_list PDN_EXTEND_TO "core_ring" -extend_to_core_ring
|
|
68
|
+
append_if_equals arg_list PDN_EXTEND_TO "boundary" -extend_to_boundary
|
|
52
69
|
|
|
53
70
|
add_pdn_stripe \
|
|
54
71
|
-grid stdcell_grid \
|
|
@@ -57,7 +74,8 @@ if { $::env(PDN_MULTILAYER) == 1 } {
|
|
|
57
74
|
-pitch $::env(PDN_VPITCH) \
|
|
58
75
|
-offset $::env(PDN_VOFFSET) \
|
|
59
76
|
-spacing $::env(PDN_VSPACING) \
|
|
60
|
-
-starts_with POWER
|
|
77
|
+
-starts_with POWER \
|
|
78
|
+
{*}$arg_list
|
|
61
79
|
|
|
62
80
|
add_pdn_stripe \
|
|
63
81
|
-grid stdcell_grid \
|
|
@@ -66,17 +84,28 @@ if { $::env(PDN_MULTILAYER) == 1 } {
|
|
|
66
84
|
-pitch $::env(PDN_HPITCH) \
|
|
67
85
|
-offset $::env(PDN_HOFFSET) \
|
|
68
86
|
-spacing $::env(PDN_HSPACING) \
|
|
69
|
-
-starts_with POWER
|
|
87
|
+
-starts_with POWER \
|
|
88
|
+
{*}$arg_list
|
|
70
89
|
|
|
71
90
|
add_pdn_connect \
|
|
72
91
|
-grid stdcell_grid \
|
|
73
92
|
-layers "$::env(PDN_VERTICAL_LAYER) $::env(PDN_HORIZONTAL_LAYER)"
|
|
74
93
|
} else {
|
|
94
|
+
|
|
95
|
+
set arg_list [list]
|
|
96
|
+
if { $::env(PDN_ENABLE_PINS) } {
|
|
97
|
+
lappend arg_list -pins "$::env(PDN_VERTICAL_LAYER)"
|
|
98
|
+
}
|
|
99
|
+
|
|
75
100
|
define_pdn_grid \
|
|
76
101
|
-name stdcell_grid \
|
|
77
102
|
-starts_with POWER \
|
|
78
103
|
-voltage_domain CORE \
|
|
79
|
-
|
|
104
|
+
{*}$arg_list
|
|
105
|
+
|
|
106
|
+
set arg_list [list]
|
|
107
|
+
append_if_equals arg_list PDN_EXTEND_TO "core_ring" -extend_to_core_ring
|
|
108
|
+
append_if_equals arg_list PDN_EXTEND_TO "boundary" -extend_to_boundary
|
|
80
109
|
|
|
81
110
|
add_pdn_stripe \
|
|
82
111
|
-grid stdcell_grid \
|
|
@@ -85,7 +114,8 @@ if { $::env(PDN_MULTILAYER) == 1 } {
|
|
|
85
114
|
-pitch $::env(PDN_VPITCH) \
|
|
86
115
|
-offset $::env(PDN_VOFFSET) \
|
|
87
116
|
-spacing $::env(PDN_VSPACING) \
|
|
88
|
-
-starts_with POWER
|
|
117
|
+
-starts_with POWER \
|
|
118
|
+
{*}$arg_list
|
|
89
119
|
}
|
|
90
120
|
|
|
91
121
|
# Adds the standard cell rails if enabled.
|
|
@@ -105,21 +135,50 @@ if { $::env(PDN_ENABLE_RAILS) == 1 } {
|
|
|
105
135
|
# Adds the core ring if enabled.
|
|
106
136
|
if { $::env(PDN_CORE_RING) == 1 } {
|
|
107
137
|
if { $::env(PDN_MULTILAYER) == 1 } {
|
|
138
|
+
set arg_list [list]
|
|
139
|
+
append_if_flag arg_list PDN_CORE_RING_ALLOW_OUT_OF_DIE -allow_out_of_die
|
|
140
|
+
append_if_flag arg_list PDN_CORE_RING_CONNECT_TO_PADS -connect_to_pads
|
|
141
|
+
append_if_equals arg_list PDN_EXTEND_TO "boundary" -extend_to_boundary
|
|
142
|
+
|
|
143
|
+
set pdn_core_vertical_layer $::env(PDN_VERTICAL_LAYER)
|
|
144
|
+
set pdn_core_horizontal_layer $::env(PDN_HORIZONTAL_LAYER)
|
|
145
|
+
|
|
146
|
+
if { [info exists ::env(PDN_CORE_VERTICAL_LAYER)] } {
|
|
147
|
+
set pdn_core_vertical_layer $::env(PDN_CORE_VERTICAL_LAYER)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if { [info exists ::env(PDN_CORE_HORIZONTAL_LAYER)] } {
|
|
151
|
+
set pdn_core_horizontal_layer $::env(PDN_CORE_HORIZONTAL_LAYER)
|
|
152
|
+
}
|
|
153
|
+
|
|
108
154
|
add_pdn_ring \
|
|
109
|
-
-allow_out_of_die \
|
|
110
155
|
-grid stdcell_grid \
|
|
111
|
-
-layers "
|
|
156
|
+
-layers "$pdn_core_vertical_layer $pdn_core_horizontal_layer" \
|
|
112
157
|
-widths "$::env(PDN_CORE_RING_VWIDTH) $::env(PDN_CORE_RING_HWIDTH)" \
|
|
113
158
|
-spacings "$::env(PDN_CORE_RING_VSPACING) $::env(PDN_CORE_RING_HSPACING)" \
|
|
114
|
-
-core_offset "$::env(PDN_CORE_RING_VOFFSET) $::env(PDN_CORE_RING_HOFFSET)"
|
|
159
|
+
-core_offset "$::env(PDN_CORE_RING_VOFFSET) $::env(PDN_CORE_RING_HOFFSET)" \
|
|
160
|
+
{*}$arg_list
|
|
161
|
+
|
|
162
|
+
if { [info exists ::env(PDN_CORE_VERTICAL_LAYER)] } {
|
|
163
|
+
add_pdn_connect \
|
|
164
|
+
-grid stdcell_grid \
|
|
165
|
+
-layers "$::env(PDN_CORE_VERTICAL_LAYER) $::env(PDN_HORIZONTAL_LAYER)"
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if { [info exists ::env(PDN_CORE_HORIZONTAL_LAYER)] } {
|
|
169
|
+
add_pdn_connect \
|
|
170
|
+
-grid stdcell_grid \
|
|
171
|
+
-layers "$::env(PDN_CORE_HORIZONTAL_LAYER) $::env(PDN_VERTICAL_LAYER)"
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if { [info exists ::env(PDN_CORE_VERTICAL_LAYER)] && [info exists ::env(PDN_CORE_HORIZONTAL_LAYER)] } {
|
|
175
|
+
add_pdn_connect \
|
|
176
|
+
-grid stdcell_grid \
|
|
177
|
+
-layers "$::env(PDN_CORE_VERTICAL_LAYER) $::env(PDN_CORE_HORIZONTAL_LAYER)"
|
|
178
|
+
}
|
|
179
|
+
|
|
115
180
|
} else {
|
|
116
181
|
throw APPLICATION "PDN_CORE_RING cannot be used when PDN_MULTILAYER is set to false."
|
|
117
|
-
# add_pdn_ring \
|
|
118
|
-
# -grid stdcell_grid \
|
|
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
182
|
}
|
|
124
183
|
}
|
|
125
184
|
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# Copyright 2025 LibreLane Contributors
|
|
2
|
+
#
|
|
3
|
+
# Adapted from OpenLane
|
|
4
|
+
#
|
|
1
5
|
# Copyright 2023 Efabless Corporation
|
|
2
6
|
#
|
|
3
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -12,7 +16,7 @@
|
|
|
12
16
|
# See the License for the specific language governing permissions and
|
|
13
17
|
# limitations under the License.
|
|
14
18
|
from decimal import Decimal
|
|
15
|
-
from typing import Optional, List
|
|
19
|
+
from typing import Optional, List, Literal
|
|
16
20
|
|
|
17
21
|
from ..config import Variable
|
|
18
22
|
|
|
@@ -238,6 +242,20 @@ pdn_variables = [
|
|
|
238
242
|
pdk=True,
|
|
239
243
|
deprecated_names=["FP_PDN_CORE_RING_HOFFSET"],
|
|
240
244
|
),
|
|
245
|
+
Variable(
|
|
246
|
+
"PDN_CORE_RING_CONNECT_TO_PADS",
|
|
247
|
+
bool,
|
|
248
|
+
"If specified, the core side of the pad pins will be connected to the ring.",
|
|
249
|
+
default=False,
|
|
250
|
+
pdk=True,
|
|
251
|
+
),
|
|
252
|
+
Variable(
|
|
253
|
+
"PDN_CORE_RING_ALLOW_OUT_OF_DIE",
|
|
254
|
+
bool,
|
|
255
|
+
"If specified, the ring shapes are allowed to be outside the die boundary.",
|
|
256
|
+
default=True,
|
|
257
|
+
pdk=True,
|
|
258
|
+
),
|
|
241
259
|
Variable(
|
|
242
260
|
"PDN_RAIL_LAYER",
|
|
243
261
|
str,
|
|
@@ -267,6 +285,32 @@ pdn_variables = [
|
|
|
267
285
|
deprecated_names=["FP_PDN_VERTICAL_LAYER", "FP_PDN_LOWER_LAYER"],
|
|
268
286
|
pdk=True,
|
|
269
287
|
),
|
|
288
|
+
Variable(
|
|
289
|
+
"PDN_CORE_HORIZONTAL_LAYER",
|
|
290
|
+
Optional[str],
|
|
291
|
+
"Defines the horizontal PDN layer for the core ring. Falls back to `PDN_HORIZONTAL_LAYER` if undefined.",
|
|
292
|
+
pdk=True,
|
|
293
|
+
),
|
|
294
|
+
Variable(
|
|
295
|
+
"PDN_CORE_VERTICAL_LAYER",
|
|
296
|
+
Optional[str],
|
|
297
|
+
"Defines the vertical PDN layer for the core ring. Falls back to `PDN_VERTICAL_LAYER` if undefined.",
|
|
298
|
+
pdk=True,
|
|
299
|
+
),
|
|
300
|
+
Variable(
|
|
301
|
+
"PDN_EXTEND_TO",
|
|
302
|
+
Literal["core_ring", "boundary"],
|
|
303
|
+
"Defines how far the stripes and rings extend.",
|
|
304
|
+
default="core_ring",
|
|
305
|
+
pdk=True,
|
|
306
|
+
),
|
|
307
|
+
Variable(
|
|
308
|
+
"PDN_ENABLE_PINS",
|
|
309
|
+
bool,
|
|
310
|
+
"If specified, the power straps will be promoted to block pins.",
|
|
311
|
+
default=True,
|
|
312
|
+
pdk=True,
|
|
313
|
+
),
|
|
270
314
|
]
|
|
271
315
|
|
|
272
316
|
routing_layer_variables = [
|
|
@@ -2394,7 +2394,7 @@ class RepairDesignPostGPL(ResizerStep):
|
|
|
2394
2394
|
Variable(
|
|
2395
2395
|
"DESIGN_REPAIR_BUFFER_OUTPUT_PORTS",
|
|
2396
2396
|
bool,
|
|
2397
|
-
"Specifies whether or not to insert buffers on
|
|
2397
|
+
"Specifies whether or not to insert buffers on output ports when design repairs are run.",
|
|
2398
2398
|
default=True,
|
|
2399
2399
|
deprecated_names=["PL_RESIZER_BUFFER_OUTPUT_PORTS"],
|
|
2400
2400
|
),
|
|
@@ -1437,7 +1437,8 @@ class Step(ABC):
|
|
|
1437
1437
|
A factory singleton for Steps, allowing steps types to be registered and then
|
|
1438
1438
|
retrieved by name.
|
|
1439
1439
|
|
|
1440
|
-
See
|
|
1440
|
+
See
|
|
1441
|
+
`Factory (object-oriented programming) on Wikipedia <https://en.wikipedia.org/wiki/Factory_(object-oriented_programming)>`_
|
|
1441
1442
|
a primer.
|
|
1442
1443
|
"""
|
|
1443
1444
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "librelane"
|
|
3
|
-
version = "3.0.0.
|
|
3
|
+
version = "3.0.0.dev39"
|
|
4
4
|
description = "An infrastructure for implementing chip design flows"
|
|
5
5
|
# Technically, maintainer. We cannot use the maintainers field until
|
|
6
6
|
# poetry-core>=2.0.0 which requires Python version 3.9+. This field does
|
|
@@ -21,7 +21,7 @@ rich = ">=12,<15"
|
|
|
21
21
|
ciel = ">=2.0.3,<3"
|
|
22
22
|
lxml = ">=4.9.0"
|
|
23
23
|
deprecated = ">=1.2.10,<2"
|
|
24
|
-
libparse = "
|
|
24
|
+
lln-libparse = "0.56.*"
|
|
25
25
|
psutil = ">=5.9.0"
|
|
26
26
|
httpx = ">=0.22.0,<0.29"
|
|
27
27
|
klayout = ">=0.29.0,<0.31.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/klayout/xml_drc_report_to_json.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/def/antenna_check.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/gds/mag_with_pointers.tcl
RENAMED
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/magic/lef/extras_maglef.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/apply_def_template.py
RENAMED
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/check_antenna_properties.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/disconnected_pins.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/filter_unannotated.py
RENAMED
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/ioplace_parser/__init__.py
RENAMED
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/odbpy/ioplace_parser/parse.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/antenna_check.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/antenna_repair.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/dpl_cell_pad.tcl
RENAMED
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/resizer.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/set_power_nets.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/common/set_rc.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/insert_buffer.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/repair_design.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/repair_design_postgrt.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/rsz_timing_postcts.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/openroad/rsz_timing_postgrt.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev38 → librelane-3.0.0.dev39}/librelane/scripts/pyosys/construct_abc_script.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|