librelane 2.4.2__tar.gz → 2.4.3__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.

Files changed (169) hide show
  1. {librelane-2.4.2 → librelane-2.4.3}/PKG-INFO +1 -1
  2. {librelane-2.4.2 → librelane-2.4.3}/librelane/flows/cli.py +24 -11
  3. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/defutil.py +9 -3
  4. {librelane-2.4.2 → librelane-2.4.3}/pyproject.toml +1 -1
  5. {librelane-2.4.2 → librelane-2.4.3}/Readme.md +0 -0
  6. {librelane-2.4.2 → librelane-2.4.3}/librelane/__init__.py +0 -0
  7. {librelane-2.4.2 → librelane-2.4.3}/librelane/__main__.py +0 -0
  8. {librelane-2.4.2 → librelane-2.4.3}/librelane/__version__.py +0 -0
  9. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/__init__.py +0 -0
  10. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/cli.py +0 -0
  11. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/drc.py +0 -0
  12. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/generic_dict.py +0 -0
  13. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/metrics/__init__.py +0 -0
  14. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/metrics/__main__.py +0 -0
  15. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/metrics/library.py +0 -0
  16. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/metrics/metric.py +0 -0
  17. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/metrics/util.py +0 -0
  18. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/misc.py +0 -0
  19. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/ring_buffer.py +0 -0
  20. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/tcl.py +0 -0
  21. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/toolbox.py +0 -0
  22. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/tpe.py +0 -0
  23. {librelane-2.4.2 → librelane-2.4.3}/librelane/common/types.py +0 -0
  24. {librelane-2.4.2 → librelane-2.4.3}/librelane/config/__init__.py +0 -0
  25. {librelane-2.4.2 → librelane-2.4.3}/librelane/config/__main__.py +0 -0
  26. {librelane-2.4.2 → librelane-2.4.3}/librelane/config/config.py +0 -0
  27. {librelane-2.4.2 → librelane-2.4.3}/librelane/config/flow.py +0 -0
  28. {librelane-2.4.2 → librelane-2.4.3}/librelane/config/pdk_compat.py +0 -0
  29. {librelane-2.4.2 → librelane-2.4.3}/librelane/config/preprocessor.py +0 -0
  30. {librelane-2.4.2 → librelane-2.4.3}/librelane/config/removals.py +0 -0
  31. {librelane-2.4.2 → librelane-2.4.3}/librelane/config/variable.py +0 -0
  32. {librelane-2.4.2 → librelane-2.4.3}/librelane/container.py +0 -0
  33. {librelane-2.4.2 → librelane-2.4.3}/librelane/env_info.py +0 -0
  34. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm/config.yaml +0 -0
  35. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm/pin_order.cfg +0 -0
  36. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm/src/impl.sdc +0 -0
  37. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm/src/signoff.sdc +0 -0
  38. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm/src/spm.v +0 -0
  39. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm/verify/spm_tb.v +0 -0
  40. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm-user_project_wrapper/SPM_example.v +0 -0
  41. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +0 -0
  42. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm-user_project_wrapper/config-tut.json +0 -0
  43. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm-user_project_wrapper/config.json +0 -0
  44. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm-user_project_wrapper/defines.v +0 -0
  45. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm-user_project_wrapper/template.def +0 -0
  46. {librelane-2.4.2 → librelane-2.4.3}/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +0 -0
  47. {librelane-2.4.2 → librelane-2.4.3}/librelane/flows/__init__.py +0 -0
  48. {librelane-2.4.2 → librelane-2.4.3}/librelane/flows/builtins.py +0 -0
  49. {librelane-2.4.2 → librelane-2.4.3}/librelane/flows/classic.py +0 -0
  50. {librelane-2.4.2 → librelane-2.4.3}/librelane/flows/flow.py +0 -0
  51. {librelane-2.4.2 → librelane-2.4.3}/librelane/flows/misc.py +0 -0
  52. {librelane-2.4.2 → librelane-2.4.3}/librelane/flows/optimizing.py +0 -0
  53. {librelane-2.4.2 → librelane-2.4.3}/librelane/flows/sequential.py +0 -0
  54. {librelane-2.4.2 → librelane-2.4.3}/librelane/flows/synth_explore.py +0 -0
  55. {librelane-2.4.2 → librelane-2.4.3}/librelane/help/__main__.py +0 -0
  56. {librelane-2.4.2 → librelane-2.4.3}/librelane/logging/__init__.py +0 -0
  57. {librelane-2.4.2 → librelane-2.4.3}/librelane/logging/logger.py +0 -0
  58. {librelane-2.4.2 → librelane-2.4.3}/librelane/open_pdks_rev +0 -0
  59. {librelane-2.4.2 → librelane-2.4.3}/librelane/plugins.py +0 -0
  60. {librelane-2.4.2 → librelane-2.4.3}/librelane/py.typed +0 -0
  61. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/base.sdc +0 -0
  62. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/klayout/Readme.md +0 -0
  63. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/klayout/open_design.py +0 -0
  64. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/klayout/render.py +0 -0
  65. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/klayout/stream_out.py +0 -0
  66. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/klayout/xml_drc_report_to_json.py +0 -0
  67. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/klayout/xor.drc +0 -0
  68. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/Readme.md +0 -0
  69. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/common/read.tcl +0 -0
  70. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/def/antenna_check.tcl +0 -0
  71. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/def/mag.tcl +0 -0
  72. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/def/mag_gds.tcl +0 -0
  73. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/drc.tcl +0 -0
  74. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/extract_spice.tcl +0 -0
  75. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/gds/drc_batch.tcl +0 -0
  76. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/gds/erase_box.tcl +0 -0
  77. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/gds/extras_mag.tcl +0 -0
  78. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/gds/mag_with_pointers.tcl +0 -0
  79. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/get_bbox.tcl +0 -0
  80. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/lef/extras_maglef.tcl +0 -0
  81. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/lef/maglef.tcl +0 -0
  82. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/lef.tcl +0 -0
  83. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/open.tcl +0 -0
  84. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/magic/wrapper.tcl +0 -0
  85. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/netgen/setup.tcl +0 -0
  86. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/apply_def_template.py +0 -0
  87. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/cell_frequency.py +0 -0
  88. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/check_antenna_properties.py +0 -0
  89. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/contextualize.py +0 -0
  90. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/diodes.py +0 -0
  91. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/disconnected_pins.py +0 -0
  92. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/eco_buffer.py +0 -0
  93. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/eco_diode.py +0 -0
  94. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/filter_unannotated.py +0 -0
  95. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/io_place.py +0 -0
  96. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/ioplace_parser/__init__.py +0 -0
  97. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/ioplace_parser/parse.py +0 -0
  98. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/label_macro_pins.py +0 -0
  99. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/lefutil.py +0 -0
  100. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/placers.py +0 -0
  101. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/power_utils.py +0 -0
  102. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/random_place.py +0 -0
  103. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/reader.py +0 -0
  104. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/remove_buffers.py +0 -0
  105. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/snap_to_grid.py +0 -0
  106. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/odbpy/wire_lengths.py +0 -0
  107. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/antenna_check.tcl +0 -0
  108. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/antenna_repair.tcl +0 -0
  109. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/basic_mp.tcl +0 -0
  110. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/buffer_list.tcl +0 -0
  111. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/dpl.tcl +0 -0
  112. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/dpl_cell_pad.tcl +0 -0
  113. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/grt.tcl +0 -0
  114. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/io.tcl +0 -0
  115. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/pdn_cfg.tcl +0 -0
  116. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/resizer.tcl +0 -0
  117. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/set_global_connections.tcl +0 -0
  118. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/set_layer_adjustments.tcl +0 -0
  119. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/set_power_nets.tcl +0 -0
  120. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/set_rc.tcl +0 -0
  121. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/common/set_routing_layers.tcl +0 -0
  122. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/cts.tcl +0 -0
  123. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/cut_rows.tcl +0 -0
  124. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/dpl.tcl +0 -0
  125. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/drt.tcl +0 -0
  126. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/fill.tcl +0 -0
  127. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/floorplan.tcl +0 -0
  128. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/gpl.tcl +0 -0
  129. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/grt.tcl +0 -0
  130. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/gui.tcl +0 -0
  131. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/insert_buffer.tcl +0 -0
  132. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/ioplacer.tcl +0 -0
  133. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/irdrop.tcl +0 -0
  134. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/pdn.tcl +0 -0
  135. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/rcx.tcl +0 -0
  136. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/repair_design.tcl +0 -0
  137. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/repair_design_postgrt.tcl +0 -0
  138. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/rsz_timing_postcts.tcl +0 -0
  139. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/rsz_timing_postgrt.tcl +0 -0
  140. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/sta/check_macro_instances.tcl +0 -0
  141. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/sta/corner.tcl +0 -0
  142. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/tapcell.tcl +0 -0
  143. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/openroad/write_views.tcl +0 -0
  144. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/pyosys/construct_abc_script.py +0 -0
  145. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/pyosys/json_header.py +0 -0
  146. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/pyosys/synthesize.py +0 -0
  147. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/pyosys/ys_common.py +0 -0
  148. {librelane-2.4.2 → librelane-2.4.3}/librelane/scripts/tclsh/hello.tcl +0 -0
  149. {librelane-2.4.2 → librelane-2.4.3}/librelane/state/__init__.py +0 -0
  150. {librelane-2.4.2 → librelane-2.4.3}/librelane/state/__main__.py +0 -0
  151. {librelane-2.4.2 → librelane-2.4.3}/librelane/state/design_format.py +0 -0
  152. {librelane-2.4.2 → librelane-2.4.3}/librelane/state/state.py +0 -0
  153. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/__init__.py +0 -0
  154. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/__main__.py +0 -0
  155. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/checker.py +0 -0
  156. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/common_variables.py +0 -0
  157. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/cvc_rv.py +0 -0
  158. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/klayout.py +0 -0
  159. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/magic.py +0 -0
  160. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/misc.py +0 -0
  161. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/netgen.py +0 -0
  162. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/odb.py +0 -0
  163. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/openroad.py +0 -0
  164. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/openroad_alerts.py +0 -0
  165. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/pyosys.py +0 -0
  166. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/step.py +0 -0
  167. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/tclstep.py +0 -0
  168. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/verilator.py +0 -0
  169. {librelane-2.4.2 → librelane-2.4.3}/librelane/steps/yosys.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: librelane
3
- Version: 2.4.2
3
+ Version: 2.4.3
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
@@ -35,7 +35,7 @@ from cloup.typing import Decorator
35
35
 
36
36
  from .flow import Flow
37
37
  from ..common import set_tpe, cli, get_opdks_rev, _get_process_limit
38
- from ..logging import set_log_level, verbose, err, options, LogLevels
38
+ from ..logging import set_log_level, verbose, info, err, options, LogLevels
39
39
  from ..state import State, InvalidState
40
40
 
41
41
 
@@ -446,16 +446,29 @@ def cloup_flow_opts(
446
446
  err(f"Could not resolve the PDK '{pdk}'.")
447
447
  exit(1)
448
448
 
449
- version = ciel.fetch(
450
- ciel_home,
451
- pdk_family,
452
- opdks_rev,
453
- data_source=StaticWebDataSource(
454
- "https://fossi-foundation.github.io/ciel-releases"
455
- ),
456
- include_libraries=include_libraries,
457
- )
458
- pdk_root = version.get_dir(ciel_home)
449
+ if pdk_family == "ihp-sg13g2":
450
+ err(
451
+ "The IHP Open PDK is only supported in the development version of LibreLane, specifically 3.0.0.dev28 or higher."
452
+ )
453
+ info(
454
+ "If you're using Nix, switch to the 'dev' branch. If you're using the Python package, run \"python3 -m pip install 'librelane>=3.0.0.dev28'\"."
455
+ )
456
+ exit(1)
457
+
458
+ try:
459
+ version = ciel.fetch(
460
+ ciel_home,
461
+ pdk_family,
462
+ opdks_rev,
463
+ data_source=StaticWebDataSource(
464
+ "https://fossi-foundation.github.io/ciel-releases"
465
+ ),
466
+ include_libraries=include_libraries,
467
+ )
468
+ pdk_root = version.get_dir(ciel_home)
469
+ except ValueError as e:
470
+ err(f"Failed to download PDK: {e}")
471
+ exit(1)
459
472
 
460
473
  return f(*args, pdk_root=pdk_root, pdk=pdk, scl=scl, **kwargs)
461
474
 
@@ -248,13 +248,19 @@ def relocate_pins(db, input_lefs, template_def, permissive, copy_def_power=False
248
248
  pin_name = bterm.getName()
249
249
  pin_net_name = bterm.getNet().getName()
250
250
  pin_net = output_block.findNet(pin_net_name)
251
+ new_net_created = False
251
252
  if pin_net is None:
252
253
  pin_net = odb.dbNet.create(output_block, pin_net_name, True)
253
254
  pin_net.setSpecial()
254
255
  pin_net.setSigType(bterm.getSigType())
255
- pin_bterm = odb.dbBTerm.create(pin_net, pin_name)
256
- pin_bterm.setSigType(bterm.getSigType())
257
- output_bterms.append(pin_bterm)
256
+ new_net_created = True
257
+ pin_bterm = output_block.findBTerm(pin_name)
258
+ if pin_bterm is None:
259
+ pin_bterm = odb.dbBTerm.create(pin_net, pin_name)
260
+ pin_bterm.setSigType(bterm.getSigType())
261
+ output_bterms.append(pin_bterm)
262
+ elif new_net_created:
263
+ pin_bterm.connect(pin_net)
258
264
 
259
265
  grid_errors = False
260
266
  for output_bterm in output_bterms:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "librelane"
3
- version = "2.4.2"
3
+ version = "2.4.3"
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
File without changes
File without changes