librelane 2.4.0.dev12__tar.gz → 2.4.0.dev13__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.0.dev12 → librelane-2.4.0.dev13}/PKG-INFO +1 -1
  2. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/flows/flow.py +9 -13
  3. librelane-2.4.0.dev13/librelane/help/__main__.py +39 -0
  4. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/pyproject.toml +2 -1
  5. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/Readme.md +0 -0
  6. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/__init__.py +0 -0
  7. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/__main__.py +0 -0
  8. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/__version__.py +0 -0
  9. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/__init__.py +0 -0
  10. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/cli.py +0 -0
  11. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/drc.py +0 -0
  12. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/generic_dict.py +0 -0
  13. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/metrics/__init__.py +0 -0
  14. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/metrics/__main__.py +0 -0
  15. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/metrics/library.py +0 -0
  16. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/metrics/metric.py +0 -0
  17. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/metrics/util.py +0 -0
  18. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/misc.py +0 -0
  19. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/ring_buffer.py +0 -0
  20. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/tcl.py +0 -0
  21. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/toolbox.py +0 -0
  22. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/tpe.py +0 -0
  23. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/common/types.py +0 -0
  24. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/config/__init__.py +0 -0
  25. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/config/__main__.py +0 -0
  26. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/config/config.py +0 -0
  27. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/config/flow.py +0 -0
  28. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/config/pdk_compat.py +0 -0
  29. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/config/preprocessor.py +0 -0
  30. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/config/removals.py +0 -0
  31. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/config/variable.py +0 -0
  32. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/container.py +0 -0
  33. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/env_info.py +0 -0
  34. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm/config.yaml +0 -0
  35. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm/pin_order.cfg +0 -0
  36. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm/src/impl.sdc +0 -0
  37. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm/src/signoff.sdc +0 -0
  38. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm/src/spm.v +0 -0
  39. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm/verify/spm_tb.v +0 -0
  40. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm-user_project_wrapper/SPM_example.v +0 -0
  41. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +0 -0
  42. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm-user_project_wrapper/config-tut.json +0 -0
  43. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm-user_project_wrapper/config.json +0 -0
  44. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm-user_project_wrapper/defines.v +0 -0
  45. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm-user_project_wrapper/template.def +0 -0
  46. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +0 -0
  47. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/flows/__init__.py +0 -0
  48. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/flows/builtins.py +0 -0
  49. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/flows/classic.py +0 -0
  50. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/flows/cli.py +0 -0
  51. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/flows/misc.py +0 -0
  52. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/flows/optimizing.py +0 -0
  53. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/flows/sequential.py +0 -0
  54. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/flows/synth_explore.py +0 -0
  55. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/logging/__init__.py +0 -0
  56. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/logging/logger.py +0 -0
  57. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/open_pdks_rev +0 -0
  58. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/plugins.py +0 -0
  59. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/py.typed +0 -0
  60. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/base.sdc +0 -0
  61. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/klayout/Readme.md +0 -0
  62. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/klayout/open_design.py +0 -0
  63. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/klayout/render.py +0 -0
  64. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/klayout/stream_out.py +0 -0
  65. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/klayout/xml_drc_report_to_json.py +0 -0
  66. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/klayout/xor.drc +0 -0
  67. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/Readme.md +0 -0
  68. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/common/read.tcl +0 -0
  69. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/def/antenna_check.tcl +0 -0
  70. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/def/mag.tcl +0 -0
  71. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/def/mag_gds.tcl +0 -0
  72. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/drc.tcl +0 -0
  73. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/extract_spice.tcl +0 -0
  74. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/gds/drc_batch.tcl +0 -0
  75. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/gds/erase_box.tcl +0 -0
  76. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/gds/extras_mag.tcl +0 -0
  77. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/gds/mag_with_pointers.tcl +0 -0
  78. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/get_bbox.tcl +0 -0
  79. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/lef/extras_maglef.tcl +0 -0
  80. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/lef/maglef.tcl +0 -0
  81. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/lef.tcl +0 -0
  82. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/open.tcl +0 -0
  83. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/magic/wrapper.tcl +0 -0
  84. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/netgen/setup.tcl +0 -0
  85. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/apply_def_template.py +0 -0
  86. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/cell_frequency.py +0 -0
  87. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/check_antenna_properties.py +0 -0
  88. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/contextualize.py +0 -0
  89. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/defutil.py +0 -0
  90. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/diodes.py +0 -0
  91. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/disconnected_pins.py +0 -0
  92. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/eco_buffer.py +0 -0
  93. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/eco_diode.py +0 -0
  94. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/filter_unannotated.py +0 -0
  95. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/io_place.py +0 -0
  96. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/ioplace_parser/__init__.py +0 -0
  97. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/ioplace_parser/parse.py +0 -0
  98. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/label_macro_pins.py +0 -0
  99. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/lefutil.py +0 -0
  100. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/placers.py +0 -0
  101. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/power_utils.py +0 -0
  102. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/random_place.py +0 -0
  103. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/reader.py +0 -0
  104. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/remove_buffers.py +0 -0
  105. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/snap_to_grid.py +0 -0
  106. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/odbpy/wire_lengths.py +0 -0
  107. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/antenna_check.tcl +0 -0
  108. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/antenna_repair.tcl +0 -0
  109. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/basic_mp.tcl +0 -0
  110. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/buffer_list.tcl +0 -0
  111. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/dpl.tcl +0 -0
  112. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/dpl_cell_pad.tcl +0 -0
  113. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/grt.tcl +0 -0
  114. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/io.tcl +0 -0
  115. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/pdn_cfg.tcl +0 -0
  116. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/resizer.tcl +0 -0
  117. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/set_global_connections.tcl +0 -0
  118. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/set_layer_adjustments.tcl +0 -0
  119. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/set_power_nets.tcl +0 -0
  120. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/set_rc.tcl +0 -0
  121. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/common/set_routing_layers.tcl +0 -0
  122. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/cts.tcl +0 -0
  123. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/cut_rows.tcl +0 -0
  124. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/dpl.tcl +0 -0
  125. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/drt.tcl +0 -0
  126. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/fill.tcl +0 -0
  127. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/floorplan.tcl +0 -0
  128. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/gpl.tcl +0 -0
  129. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/grt.tcl +0 -0
  130. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/gui.tcl +0 -0
  131. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/insert_buffer.tcl +0 -0
  132. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/ioplacer.tcl +0 -0
  133. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/irdrop.tcl +0 -0
  134. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/pdn.tcl +0 -0
  135. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/rcx.tcl +0 -0
  136. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/repair_design.tcl +0 -0
  137. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/repair_design_postgrt.tcl +0 -0
  138. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/rsz_timing_postcts.tcl +0 -0
  139. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/rsz_timing_postgrt.tcl +0 -0
  140. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/sta/check_macro_instances.tcl +0 -0
  141. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/sta/corner.tcl +0 -0
  142. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/tapcell.tcl +0 -0
  143. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/openroad/write_views.tcl +0 -0
  144. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/pyosys/construct_abc_script.py +0 -0
  145. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/pyosys/json_header.py +0 -0
  146. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/pyosys/synthesize.py +0 -0
  147. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/pyosys/ys_common.py +0 -0
  148. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/scripts/tclsh/hello.tcl +0 -0
  149. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/state/__init__.py +0 -0
  150. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/state/__main__.py +0 -0
  151. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/state/design_format.py +0 -0
  152. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/state/state.py +0 -0
  153. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/__init__.py +0 -0
  154. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/__main__.py +0 -0
  155. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/checker.py +0 -0
  156. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/common_variables.py +0 -0
  157. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/cvc_rv.py +0 -0
  158. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/klayout.py +0 -0
  159. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/magic.py +0 -0
  160. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/misc.py +0 -0
  161. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/netgen.py +0 -0
  162. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/odb.py +0 -0
  163. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/openroad.py +0 -0
  164. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/openroad_alerts.py +0 -0
  165. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/pyosys.py +0 -0
  166. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/step.py +0 -0
  167. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/tclstep.py +0 -0
  168. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/verilator.py +0 -0
  169. {librelane-2.4.0.dev12 → librelane-2.4.0.dev13}/librelane/steps/yosys.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: librelane
3
- Version: 2.4.0.dev12
3
+ Version: 2.4.0.dev13
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
@@ -375,7 +375,7 @@ class Flow(ABC):
375
375
  self.progress_bar = FlowProgressBar(self.name)
376
376
 
377
377
  @classmethod
378
- def get_help_md(Self, myst_anchors: bool = True) -> str: # pragma: no cover
378
+ def get_help_md(Self, myst_anchors: bool = False) -> str: # pragma: no cover
379
379
  """
380
380
  :returns: rendered Markdown help for this Flow
381
381
  """
@@ -415,10 +415,10 @@ class Flow(ABC):
415
415
  flow_config_vars = Self.config_vars
416
416
 
417
417
  if len(flow_config_vars):
418
+ config_var_anchors = f"({slugify(Self.__name__, lower=True)}-config-vars)="
418
419
  result += textwrap.dedent(
419
420
  f"""
420
- ({slugify(Self.__name__, lower=True)}-config-vars)=
421
-
421
+ {config_var_anchors * myst_anchors}
422
422
  #### Flow-specific Configuration Variables
423
423
 
424
424
  | Variable Name | Type | Description | Default | Units |
@@ -435,18 +435,14 @@ class Flow(ABC):
435
435
  if len(Self.Steps):
436
436
  result += "#### Included Steps\n"
437
437
  for step in Self.Steps:
438
- if hasattr(step, "long_name"):
439
- name = step.long_name
440
- elif hasattr(step, "name"):
441
- name = step.name
442
- else:
443
- name = step.id
438
+ imp_id = step.get_implementation_id()
444
439
  if myst_anchors:
445
- result += (
446
- f"* [`{step.id}`](./step_config_vars.md#{slugify(name)})\n"
447
- )
440
+ result += f"* [`{step.id}`](./step_config_vars.md#step-{slugify(imp_id, lower=True)})\n"
448
441
  else:
449
- result += f"* {step.id}"
442
+ variant_str = ""
443
+ if imp_id != step.id:
444
+ variant_str = f" (implementation: `{imp_id}`)"
445
+ result += f"* `{step.id}`{variant_str}\n"
450
446
 
451
447
  return result
452
448
 
@@ -0,0 +1,39 @@
1
+ # Copyright 2025 LibreLane Contributors
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ from ..common.cli import formatter_settings
15
+ from ..flows import Flow
16
+ from ..steps import Step
17
+ from ..logging import console
18
+
19
+ import cloup
20
+
21
+
22
+ @cloup.command(formatter_settings=formatter_settings)
23
+ @cloup.argument("step_or_flow")
24
+ @cloup.pass_context
25
+ def cli(ctx, step_or_flow):
26
+ """
27
+ Displays rich help for the step or flow in question.
28
+ """
29
+ if TargetFlow := Flow.factory.get(step_or_flow):
30
+ TargetFlow.display_help()
31
+ elif TargetStep := Step.factory.get(step_or_flow):
32
+ TargetStep.display_help()
33
+ else:
34
+ console.log(f"Unknown Flow or Step '{step_or_flow}'.")
35
+ ctx.exit(-1)
36
+
37
+
38
+ if __name__ == "__main__":
39
+ cli()
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "librelane"
3
- version = "2.4.0.dev12"
3
+ version = "2.4.0.dev13"
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
@@ -65,6 +65,7 @@ librelane = "librelane.__main__:cli"
65
65
  "librelane.steps" = "librelane.steps.__main__:cli"
66
66
  "librelane.config" = "librelane.config.__main__:cli"
67
67
  "librelane.state" = "librelane.state.__main__:cli"
68
+ "librelane.help" = "librelane.help.__main__:cli"
68
69
  "librelane.env_info" = "librelane:env_info_cli"
69
70
 
70
71
  [build-system]