librelane 3.0.0.dev32__tar.gz → 3.0.0.dev34__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.dev32 → librelane-3.0.0.dev34}/PKG-INFO +1 -1
  2. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/extract_spice.tcl +4 -2
  3. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/pyosys/json_header.py +1 -0
  4. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/pyosys/synthesize.py +2 -0
  5. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/pyosys/ys_common.py +2 -0
  6. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/magic.py +9 -6
  7. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/pyosys.py +6 -1
  8. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/pyproject.toml +1 -1
  9. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/Readme.md +0 -0
  10. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/__init__.py +0 -0
  11. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/__main__.py +0 -0
  12. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/__version__.py +0 -0
  13. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/__init__.py +0 -0
  14. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/cli.py +0 -0
  15. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/drc.py +0 -0
  16. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/generic_dict.py +0 -0
  17. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/metrics/__init__.py +0 -0
  18. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/metrics/__main__.py +0 -0
  19. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/metrics/library.py +0 -0
  20. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/metrics/metric.py +0 -0
  21. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/metrics/util.py +0 -0
  22. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/misc.py +0 -0
  23. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/ring_buffer.py +0 -0
  24. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/tcl.py +0 -0
  25. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/toolbox.py +0 -0
  26. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/tpe.py +0 -0
  27. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/common/types.py +0 -0
  28. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/config/__init__.py +0 -0
  29. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/config/__main__.py +0 -0
  30. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/config/config.py +0 -0
  31. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/config/flow.py +0 -0
  32. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/config/pdk_compat.py +0 -0
  33. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/config/preprocessor.py +0 -0
  34. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/config/removals.py +0 -0
  35. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/config/variable.py +0 -0
  36. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/container.py +0 -0
  37. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/env_info.py +0 -0
  38. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm/config.yaml +0 -0
  39. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm/pin_order.cfg +0 -0
  40. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm/src/impl.sdc +0 -0
  41. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm/src/signoff.sdc +0 -0
  42. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm/src/spm.v +0 -0
  43. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm/verify/spm_tb.v +0 -0
  44. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm-user_project_wrapper/SPM_example.v +0 -0
  45. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +0 -0
  46. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm-user_project_wrapper/config-tut.json +0 -0
  47. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm-user_project_wrapper/config.json +0 -0
  48. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm-user_project_wrapper/defines.v +0 -0
  49. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm-user_project_wrapper/template.def +0 -0
  50. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +0 -0
  51. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/flows/__init__.py +0 -0
  52. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/flows/builtins.py +0 -0
  53. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/flows/classic.py +0 -0
  54. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/flows/cli.py +0 -0
  55. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/flows/flow.py +0 -0
  56. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/flows/misc.py +0 -0
  57. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/flows/optimizing.py +0 -0
  58. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/flows/sequential.py +0 -0
  59. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/flows/synth_explore.py +0 -0
  60. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/help/__main__.py +0 -0
  61. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/logging/__init__.py +0 -0
  62. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/logging/logger.py +0 -0
  63. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/pdk_hashes.yaml +0 -0
  64. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/plugins.py +0 -0
  65. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/py.typed +0 -0
  66. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/base.sdc +0 -0
  67. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/klayout/Readme.md +0 -0
  68. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/klayout/open_design.py +0 -0
  69. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/klayout/render.py +0 -0
  70. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/klayout/stream_out.py +0 -0
  71. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/klayout/xml_drc_report_to_json.py +0 -0
  72. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/klayout/xor.drc +0 -0
  73. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/Readme.md +0 -0
  74. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/common/read.tcl +0 -0
  75. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/def/antenna_check.tcl +0 -0
  76. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/def/mag.tcl +0 -0
  77. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/def/mag_gds.tcl +0 -0
  78. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/drc.tcl +0 -0
  79. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/gds/drc_batch.tcl +0 -0
  80. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/gds/erase_box.tcl +0 -0
  81. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/gds/extras_mag.tcl +0 -0
  82. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/gds/mag_with_pointers.tcl +0 -0
  83. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/get_bbox.tcl +0 -0
  84. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/lef/extras_maglef.tcl +0 -0
  85. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/lef/maglef.tcl +0 -0
  86. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/lef.tcl +0 -0
  87. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/open.tcl +0 -0
  88. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/magic/wrapper.tcl +0 -0
  89. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/netgen/setup.tcl +0 -0
  90. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/apply_def_template.py +0 -0
  91. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/cell_frequency.py +0 -0
  92. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/check_antenna_properties.py +0 -0
  93. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/contextualize.py +0 -0
  94. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/defutil.py +0 -0
  95. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/diodes.py +0 -0
  96. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/disconnected_pins.py +0 -0
  97. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/eco_buffer.py +0 -0
  98. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/eco_diode.py +0 -0
  99. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/filter_unannotated.py +0 -0
  100. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/io_place.py +0 -0
  101. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/ioplace_parser/__init__.py +0 -0
  102. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/ioplace_parser/parse.py +0 -0
  103. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/label_macro_pins.py +0 -0
  104. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/lefutil.py +0 -0
  105. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/placers.py +0 -0
  106. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/power_utils.py +0 -0
  107. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/random_place.py +0 -0
  108. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/reader.py +0 -0
  109. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/remove_buffers.py +0 -0
  110. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/snap_to_grid.py +0 -0
  111. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/odbpy/wire_lengths.py +0 -0
  112. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/antenna_check.tcl +0 -0
  113. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/antenna_repair.tcl +0 -0
  114. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/basic_mp.tcl +0 -0
  115. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/buffer_list.tcl +0 -0
  116. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/dpl.tcl +0 -0
  117. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/dpl_cell_pad.tcl +0 -0
  118. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/grt.tcl +0 -0
  119. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/io.tcl +0 -0
  120. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/pdn_cfg.tcl +0 -0
  121. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/resizer.tcl +0 -0
  122. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/set_global_connections.tcl +0 -0
  123. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/set_layer_adjustments.tcl +0 -0
  124. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/set_power_nets.tcl +0 -0
  125. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/set_rc.tcl +0 -0
  126. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/common/set_routing_layers.tcl +0 -0
  127. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/cts.tcl +0 -0
  128. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/cut_rows.tcl +0 -0
  129. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/dpl.tcl +0 -0
  130. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/drt.tcl +0 -0
  131. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/dump_rc.tcl +0 -0
  132. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/fill.tcl +0 -0
  133. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/floorplan.tcl +0 -0
  134. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/gpl.tcl +0 -0
  135. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/grt.tcl +0 -0
  136. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/gui.tcl +0 -0
  137. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/insert_buffer.tcl +0 -0
  138. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/ioplacer.tcl +0 -0
  139. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/irdrop.tcl +0 -0
  140. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/pdn.tcl +0 -0
  141. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/rcx.tcl +0 -0
  142. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/repair_design.tcl +0 -0
  143. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/repair_design_postgrt.tcl +0 -0
  144. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/rsz_timing_postcts.tcl +0 -0
  145. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/rsz_timing_postgrt.tcl +0 -0
  146. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/sta/check_macro_instances.tcl +0 -0
  147. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/sta/corner.tcl +0 -0
  148. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/tapcell.tcl +0 -0
  149. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/ungpl.tcl +0 -0
  150. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/write_cdl.tcl +0 -0
  151. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/openroad/write_views.tcl +0 -0
  152. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/pyosys/construct_abc_script.py +0 -0
  153. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/scripts/tclsh/hello.tcl +0 -0
  154. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/state/__init__.py +0 -0
  155. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/state/__main__.py +0 -0
  156. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/state/design_format.py +0 -0
  157. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/state/state.py +0 -0
  158. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/__init__.py +0 -0
  159. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/__main__.py +0 -0
  160. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/checker.py +0 -0
  161. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/common_variables.py +0 -0
  162. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/cvc_rv.py +0 -0
  163. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/klayout.py +0 -0
  164. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/misc.py +0 -0
  165. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/netgen.py +0 -0
  166. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/odb.py +0 -0
  167. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/openroad.py +0 -0
  168. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/openroad_alerts.py +0 -0
  169. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/step.py +0 -0
  170. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/tclstep.py +0 -0
  171. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/librelane/steps/verilator.py +0 -0
  172. {librelane-3.0.0.dev32 → librelane-3.0.0.dev34}/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.dev32
3
+ Version: 3.0.0.dev34
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
@@ -79,9 +79,11 @@ extract no capacitance
79
79
  extract no coupling
80
80
  extract no resistance
81
81
  extract no adjust
82
- if { ! $::env(MAGIC_NO_EXT_UNIQUE) } {
83
- extract unique
82
+
83
+ if { $::env(MAGIC_EXT_UNIQUE) != "none" } {
84
+ extract unique $::env(MAGIC_EXT_UNIQUE)
84
85
  }
86
+
85
87
  # extract warn all
86
88
  extract
87
89
 
@@ -63,6 +63,7 @@ def json_header(
63
63
  includes=includes,
64
64
  defines=defines,
65
65
  use_slang=config["USE_SLANG"],
66
+ slang_arguments=config["SLANG_ARGUMENTS"] or [],
66
67
  )
67
68
  d.run_pass(
68
69
  "hierarchy",
@@ -263,6 +263,7 @@ def synthesize(
263
263
  includes=includes,
264
264
  defines=defines,
265
265
  use_slang=False,
266
+ slang_arguments=[],
266
267
  )
267
268
  elif verilog_files := config.get("VERILOG_FILES"):
268
269
  d.read_verilog_files(
@@ -272,6 +273,7 @@ def synthesize(
272
273
  includes=includes,
273
274
  defines=defines,
274
275
  use_slang=config["USE_SLANG"],
276
+ slang_arguments=config["SLANG_ARGUMENTS"] or [],
275
277
  )
276
278
  elif vhdl_files := config.get("VHDL_FILES"):
277
279
  d.run_pass("plugin", "-i", "ghdl")
@@ -51,6 +51,7 @@ def _Design_read_verilog_files(
51
51
  includes: Iterable[str],
52
52
  defines: Iterable[str],
53
53
  use_slang: bool = False,
54
+ slang_arguments: Iterable[str],
54
55
  ):
55
56
  files = list(files) # for easier concatenation
56
57
  include_args = [f"-I{dir}" for dir in includes]
@@ -72,6 +73,7 @@ def _Design_read_verilog_files(
72
73
  *define_args,
73
74
  *include_args,
74
75
  *slang_chparam_args,
76
+ *slang_arguments,
75
77
  *files,
76
78
  )
77
79
  else:
@@ -458,15 +458,18 @@ class SpiceExtraction(MagicStep):
458
458
  Variable(
459
459
  "MAGIC_EXT_ABSTRACT_CELLS",
460
460
  Optional[List[str]],
461
- "A list of regular experssions which are matched against the cells of a "
461
+ "A list of regular expressions which are matched against the cells of a "
462
462
  + "the design. Matches are abstracted (black-boxed) during SPICE extraction.",
463
463
  ),
464
464
  Variable(
465
- "MAGIC_NO_EXT_UNIQUE",
466
- bool,
467
- "Enables connections by label in LVS by skipping `extract unique` in Magic extractions.",
468
- default=False,
469
- deprecated_names=["LVS_CONNECT_BY_LABEL"],
465
+ "MAGIC_EXT_UNIQUE",
466
+ Literal["all", "notopports", "noports", "none"],
467
+ 'Runs `extract unique` with the specified option. The default is "all", and "none" disables `extract unique`, allowing connections between separate nets by label in LVS.',
468
+ default="all",
469
+ deprecated_names=[
470
+ ("MAGIC_NO_EXT_UNIQUE", lambda o: "none" if o else "all"),
471
+ ("LVS_CONNECT_BY_LABEL", lambda o: "none" if o else "all"),
472
+ ],
470
473
  ),
471
474
  Variable(
472
475
  "MAGIC_EXT_SHORT_RESISTOR",
@@ -128,6 +128,11 @@ verilog_rtl_cfg_vars = [
128
128
  default=False,
129
129
  deprecated_names=["USE_SYNLIG"],
130
130
  ),
131
+ Variable(
132
+ "SLANG_ARGUMENTS",
133
+ Optional[List[str]],
134
+ "Pass arguments to the Slang frontend.",
135
+ ),
131
136
  ]
132
137
 
133
138
  DesignFormat(
@@ -439,7 +444,7 @@ class SynthesisCommon(VerilogStep):
439
444
  Variable(
440
445
  "SYNTH_HIERARCHY_MODE",
441
446
  Literal["flatten", "deferred_flatten", "keep"],
442
- "Affects how hierarchy is maintained throughout and after synthesis. 'flatten' flattens it during and after synthesis. 'deferred_flatten' flattens it after synthesis. 'keep' never flattens it.",
447
+ "Affects how hierarchy is maintained throughout and after synthesis. 'flatten' flattens it during and after synthesis. 'deferred_flatten' flattens it after synthesis. 'keep' never flattens it. Please note that when using the Slang plugin, you need to pass '--keep-hierarchy' to `SLANG_ARGUMENTS` separately.",
443
448
  default="flatten",
444
449
  deprecated_names=[
445
450
  (
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "librelane"
3
- version = "3.0.0.dev32"
3
+ version = "3.0.0.dev34"
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