librelane 3.0.0.dev37__tar.gz → 3.0.0.dev38__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 (172) hide show
  1. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/PKG-INFO +1 -1
  2. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/eco_buffer.py +1 -1
  3. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/eco_diode.py +2 -1
  4. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/odb.py +14 -1
  5. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/pyproject.toml +1 -1
  6. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/Readme.md +0 -0
  7. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/__init__.py +0 -0
  8. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/__main__.py +0 -0
  9. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/__version__.py +0 -0
  10. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/__init__.py +0 -0
  11. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/cli.py +0 -0
  12. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/drc.py +0 -0
  13. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/generic_dict.py +0 -0
  14. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/metrics/__init__.py +0 -0
  15. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/metrics/__main__.py +0 -0
  16. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/metrics/library.py +0 -0
  17. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/metrics/metric.py +0 -0
  18. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/metrics/util.py +0 -0
  19. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/misc.py +0 -0
  20. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/ring_buffer.py +0 -0
  21. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/tcl.py +0 -0
  22. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/toolbox.py +0 -0
  23. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/tpe.py +0 -0
  24. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/common/types.py +0 -0
  25. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/config/__init__.py +0 -0
  26. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/config/__main__.py +0 -0
  27. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/config/config.py +0 -0
  28. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/config/flow.py +0 -0
  29. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/config/pdk_compat.py +0 -0
  30. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/config/preprocessor.py +0 -0
  31. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/config/removals.py +0 -0
  32. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/config/variable.py +0 -0
  33. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/container.py +0 -0
  34. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/env_info.py +0 -0
  35. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm/config.yaml +0 -0
  36. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm/pin_order.cfg +0 -0
  37. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm/src/impl.sdc +0 -0
  38. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm/src/signoff.sdc +0 -0
  39. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm/src/spm.v +0 -0
  40. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm/verify/spm_tb.v +0 -0
  41. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm-user_project_wrapper/SPM_example.v +0 -0
  42. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +0 -0
  43. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm-user_project_wrapper/config-tut.json +0 -0
  44. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm-user_project_wrapper/config.json +0 -0
  45. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm-user_project_wrapper/defines.v +0 -0
  46. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm-user_project_wrapper/template.def +0 -0
  47. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +0 -0
  48. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/flows/__init__.py +0 -0
  49. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/flows/builtins.py +0 -0
  50. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/flows/classic.py +0 -0
  51. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/flows/cli.py +0 -0
  52. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/flows/flow.py +0 -0
  53. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/flows/misc.py +0 -0
  54. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/flows/optimizing.py +0 -0
  55. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/flows/sequential.py +0 -0
  56. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/flows/synth_explore.py +0 -0
  57. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/help/__main__.py +0 -0
  58. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/logging/__init__.py +0 -0
  59. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/logging/logger.py +0 -0
  60. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/pdk_hashes.yaml +0 -0
  61. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/plugins.py +0 -0
  62. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/py.typed +0 -0
  63. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/base.sdc +0 -0
  64. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/klayout/Readme.md +0 -0
  65. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/klayout/open_design.py +0 -0
  66. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/klayout/render.py +0 -0
  67. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/klayout/stream_out.py +0 -0
  68. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/klayout/xml_drc_report_to_json.py +0 -0
  69. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/klayout/xor.drc +0 -0
  70. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/Readme.md +0 -0
  71. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/common/read.tcl +0 -0
  72. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/def/antenna_check.tcl +0 -0
  73. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/def/mag.tcl +0 -0
  74. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/def/mag_gds.tcl +0 -0
  75. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/drc.tcl +0 -0
  76. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/extract_spice.tcl +0 -0
  77. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/gds/drc_batch.tcl +0 -0
  78. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/gds/erase_box.tcl +0 -0
  79. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/gds/extras_mag.tcl +0 -0
  80. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/gds/mag_with_pointers.tcl +0 -0
  81. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/get_bbox.tcl +0 -0
  82. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/lef/extras_maglef.tcl +0 -0
  83. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/lef/maglef.tcl +0 -0
  84. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/lef.tcl +0 -0
  85. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/open.tcl +0 -0
  86. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/magic/wrapper.tcl +0 -0
  87. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/netgen/setup.tcl +0 -0
  88. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/apply_def_template.py +0 -0
  89. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/cell_frequency.py +0 -0
  90. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/check_antenna_properties.py +0 -0
  91. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/contextualize.py +0 -0
  92. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/defutil.py +0 -0
  93. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/diodes.py +0 -0
  94. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/disconnected_pins.py +0 -0
  95. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/filter_unannotated.py +0 -0
  96. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/io_place.py +0 -0
  97. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/ioplace_parser/__init__.py +0 -0
  98. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/ioplace_parser/parse.py +0 -0
  99. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/label_macro_pins.py +0 -0
  100. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/lefutil.py +0 -0
  101. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/placers.py +0 -0
  102. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/power_utils.py +0 -0
  103. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/random_place.py +0 -0
  104. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/reader.py +0 -0
  105. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/remove_buffers.py +0 -0
  106. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/snap_to_grid.py +0 -0
  107. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/odbpy/wire_lengths.py +0 -0
  108. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/antenna_check.tcl +0 -0
  109. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/antenna_repair.tcl +0 -0
  110. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/basic_mp.tcl +0 -0
  111. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/buffer_list.tcl +0 -0
  112. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/dpl.tcl +0 -0
  113. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/dpl_cell_pad.tcl +0 -0
  114. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/grt.tcl +0 -0
  115. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/io.tcl +0 -0
  116. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/pdn_cfg.tcl +0 -0
  117. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/resizer.tcl +0 -0
  118. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/set_global_connections.tcl +0 -0
  119. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/set_layer_adjustments.tcl +0 -0
  120. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/set_power_nets.tcl +0 -0
  121. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/set_rc.tcl +0 -0
  122. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/common/set_routing_layers.tcl +0 -0
  123. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/cts.tcl +0 -0
  124. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/cut_rows.tcl +0 -0
  125. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/dpl.tcl +0 -0
  126. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/drt.tcl +0 -0
  127. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/dump_rc.tcl +0 -0
  128. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/fill.tcl +0 -0
  129. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/floorplan.tcl +0 -0
  130. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/gpl.tcl +0 -0
  131. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/grt.tcl +0 -0
  132. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/gui.tcl +0 -0
  133. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/insert_buffer.tcl +0 -0
  134. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/ioplacer.tcl +0 -0
  135. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/irdrop.tcl +0 -0
  136. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/pdn.tcl +0 -0
  137. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/rcx.tcl +0 -0
  138. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/repair_design.tcl +0 -0
  139. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/repair_design_postgrt.tcl +0 -0
  140. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/rsz_timing_postcts.tcl +0 -0
  141. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/rsz_timing_postgrt.tcl +0 -0
  142. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/sta/check_macro_instances.tcl +0 -0
  143. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/sta/corner.tcl +0 -0
  144. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/tapcell.tcl +0 -0
  145. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/ungpl.tcl +0 -0
  146. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/write_cdl.tcl +0 -0
  147. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/openroad/write_views.tcl +0 -0
  148. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/pyosys/construct_abc_script.py +0 -0
  149. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/pyosys/json_header.py +0 -0
  150. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/pyosys/synthesize.py +0 -0
  151. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/pyosys/ys_common.py +0 -0
  152. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/scripts/tclsh/hello.tcl +0 -0
  153. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/state/__init__.py +0 -0
  154. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/state/__main__.py +0 -0
  155. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/state/design_format.py +0 -0
  156. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/state/state.py +0 -0
  157. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/__init__.py +0 -0
  158. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/__main__.py +0 -0
  159. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/checker.py +0 -0
  160. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/common_variables.py +0 -0
  161. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/cvc_rv.py +0 -0
  162. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/klayout.py +0 -0
  163. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/magic.py +0 -0
  164. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/misc.py +0 -0
  165. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/netgen.py +0 -0
  166. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/openroad.py +0 -0
  167. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/openroad_alerts.py +0 -0
  168. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/pyosys.py +0 -0
  169. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/step.py +0 -0
  170. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/tclstep.py +0 -0
  171. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/librelane/steps/verilator.py +0 -0
  172. {librelane-3.0.0.dev37 → librelane-3.0.0.dev38}/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.dev37
3
+ Version: 3.0.0.dev38
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
@@ -44,7 +44,7 @@ def cli(reader):
44
44
  i = 0
45
45
 
46
46
  for target_info in reader.config["INSERT_ECO_BUFFERS"]:
47
- target_name, target_pin = target_info["target"].split("/")
47
+ target_name, target_pin = target_info["target"].rsplit("/", 1)
48
48
  name_escaped = reader.escape_verilog_name(target_name)
49
49
  buffer_master = target_info["buffer"]
50
50
 
@@ -38,8 +38,9 @@ def cli(reader):
38
38
  # print(grt)
39
39
  grt_inc = GRT.IncrementalGRoute(grt, reader.block)
40
40
  i = 0
41
+
41
42
  for target_info in reader.config["INSERT_ECO_DIODES"]:
42
- target_name, target_pin = target_info["target"].split("/")
43
+ target_name, target_pin = target_info["target"].rsplit("/", 1)
43
44
  name_escaped = reader.escape_verilog_name(target_name)
44
45
 
45
46
  target = reader.block.findInst(name_escaped)
@@ -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");
@@ -979,7 +983,7 @@ class ManualGlobalPlacement(OdbpyStep):
979
983
 
980
984
  def run(self, state_in: State, **kwargs) -> Tuple[ViewsUpdate, MetricsUpdate]:
981
985
  if self.config["MANUAL_GLOBAL_PLACEMENTS"] is None:
982
- info(f"'MANUAL_GLOBAL_PLACEMENTS' not set, skipping '{self.id}'…")
986
+ info(f"'MANUAL_GLOBAL_PLACEMENTS' not set. Skipping '{self.id}'…")
983
987
  return {}, {}
984
988
  return super().run(state_in, **kwargs)
985
989
 
@@ -1039,6 +1043,12 @@ class InsertECOBuffers(OdbpyStep):
1039
1043
  assert self.config_path is not None, "get_command called before start()"
1040
1044
  return super().get_command() + ["--step-config", self.config_path]
1041
1045
 
1046
+ def run(self, state_in: State, **kwargs) -> Tuple[ViewsUpdate, MetricsUpdate]:
1047
+ if self.config["INSERT_ECO_BUFFERS"] is None:
1048
+ info(f"'INSERT_ECO_BUFFERS' not set. Skipping '{self.id}'…")
1049
+ return {}, {}
1050
+ return super().run(state_in, **kwargs)
1051
+
1042
1052
 
1043
1053
  @dataclass
1044
1054
  class ECODiode:
@@ -1092,4 +1102,7 @@ class InsertECODiodes(OdbpyStep):
1092
1102
  if self.config["DIODE_CELL"] is None:
1093
1103
  info(f"'DIODE_CELL' not set. Skipping '{self.id}'…")
1094
1104
  return {}, {}
1105
+ if self.config["INSERT_ECO_DIODES"] is None:
1106
+ info(f"'INSERT_ECO_DIODES' not set. Skipping '{self.id}'…")
1107
+ return {}, {}
1095
1108
  return super().run(state_in, **kwargs)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "librelane"
3
- version = "3.0.0.dev37"
3
+ version = "3.0.0.dev38"
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