librelane 3.0.0.dev48__tar.gz → 3.0.0.dev49__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.
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/PKG-INFO +3 -5
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/Readme.md +2 -4
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/__main__.py +4 -2
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/sequential.py +7 -5
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/klayout/open_design.py +8 -1
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/pyosys/construct_abc_script.py +7 -7
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/pyproject.toml +1 -1
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/__init__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/__version__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/__init__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/cli.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/drc.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/generic_dict.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/metrics/__init__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/metrics/__main__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/metrics/library.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/metrics/metric.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/metrics/util.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/misc.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/ring_buffer.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/tcl.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/toolbox.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/tpe.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/common/types.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/config/__init__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/config/__main__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/config/config.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/config/flow.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/config/pdk_compat.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/config/preprocessor.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/config/removals.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/config/variable.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/container.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/env_info.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/hold_eco_demo/config.yaml +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/hold_eco_demo/demo.v +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm/config.yaml +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm/pin_order.cfg +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm/src/impl.sdc +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm/src/signoff.sdc +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm/src/spm.v +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm/verify/spm_tb.v +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm-user_project_wrapper/SPM_example.v +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm-user_project_wrapper/config-tut.json +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm-user_project_wrapper/config.json +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm-user_project_wrapper/defines.v +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm-user_project_wrapper/template.def +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/__init__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/builtins.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/chip.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/classic.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/cli.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/flow.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/misc.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/optimizing.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/flows/synth_explore.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/help/__main__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/logging/__init__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/logging/logger.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/pdk_hashes.yaml +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/plugins.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/py.typed +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/base.sdc +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/klayout/Readme.md +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/klayout/render.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/klayout/stream_out.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/klayout/xml_drc_report_to_json.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/klayout/xor.drc +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/Readme.md +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/common/read.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/def/antenna_check.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/def/mag.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/def/mag_gds.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/drc.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/extract_spice.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/gds/drc_batch.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/gds/erase_box.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/gds/extras_mag.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/gds/mag_with_pointers.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/get_bbox.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/lef/extras_maglef.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/lef/maglef.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/lef.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/open.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/wrapper.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/netgen/setup.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/apply_def_template.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/cell_frequency.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/check_antenna_properties.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/contextualize.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/defutil.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/diodes.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/disconnected_pins.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/eco_buffer.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/eco_diode.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/filter_unannotated.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/io_place.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/ioplace_parser/__init__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/ioplace_parser/parse.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/label_macro_pins.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/lefutil.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/placers.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/power_utils.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/random_place.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/reader.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/remove_buffers.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/snap_to_grid.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/wire_lengths.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/antenna_check.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/antenna_repair.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/buffer_list.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/dpl.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/dpl_cell_pad.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/grt.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/io.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/pad_cfg.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/pdn_cfg.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/resizer.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/set_global_connections.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/set_layer_adjustments.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/set_power_nets.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/set_rc.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/set_routing_layers.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/cts.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/cut_rows.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/dpl.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/drt.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/dump_rc.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/fill.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/floorplan.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/gpl.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/grt.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/gui.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/insert_buffer.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/ioplacer.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/irdrop.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/pad.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/pdn.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/rcx.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/repair_design.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/repair_design_postgrt.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/rsz_timing_postcts.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/rsz_timing_postgrt.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/sta/check_macro_instances.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/sta/corner.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/tapcell.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/ungpl.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/write_cdl.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/write_views.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/pyosys/json_header.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/pyosys/synthesize.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/pyosys/ys_common.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/tclsh/hello.tcl +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/state/__init__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/state/__main__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/state/design_format.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/state/state.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/__init__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/__main__.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/checker.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/common_variables.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/klayout.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/magic.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/misc.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/netgen.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/odb.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/openroad.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/openroad_alerts.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/pyosys.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/step.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/tclstep.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/verilator.py +0 -0
- {librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/steps/yosys.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: librelane
|
|
3
|
-
Version: 3.0.0.
|
|
3
|
+
Version: 3.0.0.dev49
|
|
4
4
|
Summary: An infrastructure for implementing chip design flows
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Maintainer: Mohamed Gaber
|
|
@@ -48,10 +48,8 @@ Description-Content-Type: text/markdown
|
|
|
48
48
|
|
|
49
49
|
LibreLane is an ASIC infrastructure library based on several components including
|
|
50
50
|
OpenROAD, Yosys, Magic, Netgen, CVC, KLayout and a number of custom scripts for
|
|
51
|
-
design exploration and optimization, currently developed and maintained
|
|
52
|
-
|
|
53
|
-
[American University in Cairo Open Hardware Lab](https://github.com/aucohl)
|
|
54
|
-
under the stewardship of the [FOSSi Foundation](https://fossi-foundation.org).
|
|
51
|
+
design exploration and optimization, currently developed and maintained under
|
|
52
|
+
the stewardship of the [FOSSi Foundation](https://fossi-foundation.org).
|
|
55
53
|
|
|
56
54
|
A reference flow, "Classic", performs all ASIC implementation steps from RTL all
|
|
57
55
|
the way down to GDSII.
|
|
@@ -14,10 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
LibreLane is an ASIC infrastructure library based on several components including
|
|
16
16
|
OpenROAD, Yosys, Magic, Netgen, CVC, KLayout and a number of custom scripts for
|
|
17
|
-
design exploration and optimization, currently developed and maintained
|
|
18
|
-
|
|
19
|
-
[American University in Cairo Open Hardware Lab](https://github.com/aucohl)
|
|
20
|
-
under the stewardship of the [FOSSi Foundation](https://fossi-foundation.org).
|
|
17
|
+
design exploration and optimization, currently developed and maintained under
|
|
18
|
+
the stewardship of the [FOSSi Foundation](https://fossi-foundation.org).
|
|
21
19
|
|
|
22
20
|
A reference flow, "Classic", performs all ASIC implementation steps from RTL all
|
|
23
21
|
the way down to GDSII.
|
|
@@ -204,8 +204,10 @@ def print_version(ctx: click.Context, param: click.Parameter, value: bool):
|
|
|
204
204
|
f"""
|
|
205
205
|
LibreLane v{__version__}
|
|
206
206
|
|
|
207
|
-
Copyright ©
|
|
208
|
-
|
|
207
|
+
Copyright ©2025-2026 LibreLane Contributors
|
|
208
|
+
|
|
209
|
+
Adapted from OpenLane 2.0
|
|
210
|
+
Copyright ©2020-2025 Efabless Corporation
|
|
209
211
|
|
|
210
212
|
Available under the Apache License, version 2. Included with the source code,
|
|
211
213
|
but you can also get a copy at https://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -395,11 +395,6 @@ class SequentialFlow(Flow):
|
|
|
395
395
|
|
|
396
396
|
if to_resolved and to_resolved == step.id:
|
|
397
397
|
executing = False
|
|
398
|
-
if len(deferred_errors) != 0:
|
|
399
|
-
raise FlowError(
|
|
400
|
-
"One or more deferred errors were encountered:\n"
|
|
401
|
-
+ "\n".join(deferred_errors)
|
|
402
|
-
)
|
|
403
398
|
|
|
404
399
|
assert self.run_dir is not None
|
|
405
400
|
debug(f"Run concluded ▶ '{self.run_dir}'")
|
|
@@ -408,5 +403,12 @@ class SequentialFlow(Flow):
|
|
|
408
403
|
current_state.save_snapshot(final_views_path)
|
|
409
404
|
except Exception as e:
|
|
410
405
|
raise FlowException(f"Failed to save final views: {e}")
|
|
406
|
+
|
|
407
|
+
if len(deferred_errors) != 0:
|
|
408
|
+
raise FlowError(
|
|
409
|
+
"One or more deferred errors were encountered:\n"
|
|
410
|
+
+ "\n".join(deferred_errors)
|
|
411
|
+
)
|
|
412
|
+
|
|
411
413
|
success("Flow complete.")
|
|
412
414
|
return (current_state, step_list)
|
|
@@ -27,6 +27,13 @@ def open_design(input_lefs: Tuple[str, ...], lyt: str, lyp: str, lym: str, input
|
|
|
27
27
|
|
|
28
28
|
tech = pya.Technology()
|
|
29
29
|
tech.load(lyt)
|
|
30
|
+
# Register the technology.
|
|
31
|
+
# Throws an exception if a technology
|
|
32
|
+
# with the same name already exists.
|
|
33
|
+
try:
|
|
34
|
+
pya.Technology().register_technology(tech)
|
|
35
|
+
except Exception:
|
|
36
|
+
print(f"Could not register the technology: {tech.name}.")
|
|
30
37
|
|
|
31
38
|
layout_options = tech.load_layout_options
|
|
32
39
|
layout_options.keep_other_cells = True
|
|
@@ -35,7 +42,7 @@ def open_design(input_lefs: Tuple[str, ...], lyt: str, lyp: str, lym: str, input
|
|
|
35
42
|
layout_options.lefdef_config.lef_files = list(input_lefs)
|
|
36
43
|
layout_options.lefdef_config.map_file = lym
|
|
37
44
|
|
|
38
|
-
cell_view = main_window.load_layout(input, layout_options,
|
|
45
|
+
cell_view = main_window.load_layout(input, layout_options, tech.name, False)
|
|
39
46
|
layout_view = cell_view.view()
|
|
40
47
|
layout_view.load_layer_props(lyp)
|
|
41
48
|
except Exception as e:
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/pyosys/construct_abc_script.py
RENAMED
|
@@ -18,6 +18,8 @@ import re
|
|
|
18
18
|
class ABCScriptCreator:
|
|
19
19
|
def __init__(self, config):
|
|
20
20
|
self.config = config
|
|
21
|
+
D = config["CLOCK_PERIOD"] * 1000 # ns -> ps
|
|
22
|
+
self.D = D
|
|
21
23
|
|
|
22
24
|
self.rs_K = "resub -K "
|
|
23
25
|
self.rs = "resub"
|
|
@@ -55,8 +57,8 @@ class ABCScriptCreator:
|
|
|
55
57
|
|
|
56
58
|
self.map_old_area = "map -p -a -B 0.2 -A 0.9 -M 0"
|
|
57
59
|
self.map_old_dly = "map -p -B 0.2 -A 0.9 -M 0"
|
|
58
|
-
self.retime_area = "retime
|
|
59
|
-
self.retime_dly = "retime
|
|
60
|
+
self.retime_area = "retime -M 5"
|
|
61
|
+
self.retime_dly = "retime -M 6"
|
|
60
62
|
self.map_new_area = "amap -m -Q 0.1 -F 20 -A 20 -C 5000"
|
|
61
63
|
|
|
62
64
|
if config["SYNTH_ABC_AREA_USE_NF"]:
|
|
@@ -71,11 +73,9 @@ class ABCScriptCreator:
|
|
|
71
73
|
max_tr_arg = ""
|
|
72
74
|
if self.max_transition != 0:
|
|
73
75
|
max_tr_arg = f" -S {self.max_transition}"
|
|
74
|
-
self.fine_tune =
|
|
75
|
-
f"buffer -N {self.max_fanout}{max_tr_arg};upsize {{D}};dnsize {{D}}"
|
|
76
|
-
)
|
|
76
|
+
self.fine_tune = f"buffer -N {self.max_fanout}{max_tr_arg};upsize;dnsize"
|
|
77
77
|
elif config["SYNTH_SIZING"]:
|
|
78
|
-
self.fine_tune = "upsize
|
|
78
|
+
self.fine_tune = "upsize;dnsize"
|
|
79
79
|
|
|
80
80
|
def generate_abc_script(self, step_dir, strategy):
|
|
81
81
|
strategy_clean = re.sub(r"\s+", "_", strategy)
|
|
@@ -160,7 +160,7 @@ class ABCScriptCreator:
|
|
|
160
160
|
else:
|
|
161
161
|
print(self.delay_mfs3, file=f)
|
|
162
162
|
|
|
163
|
-
print("retime
|
|
163
|
+
print("retime", file=f)
|
|
164
164
|
|
|
165
165
|
# & space
|
|
166
166
|
print("&get -n", file=f)
|
|
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.dev48 → librelane-3.0.0.dev49}/librelane/examples/hold_eco_demo/config.yaml
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
|
|
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.dev48 → librelane-3.0.0.dev49}/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.dev48 → librelane-3.0.0.dev49}/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.dev48 → librelane-3.0.0.dev49}/librelane/scripts/magic/gds/mag_with_pointers.tcl
RENAMED
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/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.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/apply_def_template.py
RENAMED
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/check_antenna_properties.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/disconnected_pins.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/filter_unannotated.py
RENAMED
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/odbpy/ioplace_parser/__init__.py
RENAMED
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/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.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/antenna_check.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/antenna_repair.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/dpl_cell_pad.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/pad_cfg.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/pdn_cfg.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/resizer.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/common/set_power_nets.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/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.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/insert_buffer.tcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/repair_design.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/repair_design_postgrt.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/librelane/scripts/openroad/rsz_timing_postcts.tcl
RENAMED
|
File without changes
|
{librelane-3.0.0.dev48 → librelane-3.0.0.dev49}/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
|
|
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
|