librelane 3.0.0.dev42__tar.gz → 3.0.0.dev44__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.
Files changed (174) hide show
  1. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/PKG-INFO +3 -3
  2. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/Readme.md +2 -2
  3. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/config/preprocessor.py +1 -1
  4. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/flows/cli.py +1 -10
  5. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/drc.tcl +15 -0
  6. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/magic.py +5 -0
  7. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/pyproject.toml +1 -1
  8. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/__init__.py +0 -0
  9. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/__main__.py +0 -0
  10. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/__version__.py +0 -0
  11. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/__init__.py +0 -0
  12. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/cli.py +0 -0
  13. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/drc.py +0 -0
  14. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/generic_dict.py +0 -0
  15. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/metrics/__init__.py +0 -0
  16. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/metrics/__main__.py +0 -0
  17. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/metrics/library.py +0 -0
  18. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/metrics/metric.py +0 -0
  19. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/metrics/util.py +0 -0
  20. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/misc.py +0 -0
  21. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/ring_buffer.py +0 -0
  22. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/tcl.py +0 -0
  23. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/toolbox.py +0 -0
  24. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/tpe.py +0 -0
  25. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/common/types.py +0 -0
  26. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/config/__init__.py +0 -0
  27. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/config/__main__.py +0 -0
  28. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/config/config.py +0 -0
  29. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/config/flow.py +0 -0
  30. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/config/pdk_compat.py +0 -0
  31. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/config/removals.py +0 -0
  32. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/config/variable.py +0 -0
  33. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/container.py +0 -0
  34. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/env_info.py +0 -0
  35. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/hold_eco_demo/config.yaml +0 -0
  36. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/hold_eco_demo/demo.v +0 -0
  37. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm/config.yaml +0 -0
  38. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm/pin_order.cfg +0 -0
  39. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm/src/impl.sdc +0 -0
  40. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm/src/signoff.sdc +0 -0
  41. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm/src/spm.v +0 -0
  42. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm/verify/spm_tb.v +0 -0
  43. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm-user_project_wrapper/SPM_example.v +0 -0
  44. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +0 -0
  45. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm-user_project_wrapper/config-tut.json +0 -0
  46. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm-user_project_wrapper/config.json +0 -0
  47. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm-user_project_wrapper/defines.v +0 -0
  48. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm-user_project_wrapper/template.def +0 -0
  49. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +0 -0
  50. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/flows/__init__.py +0 -0
  51. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/flows/builtins.py +0 -0
  52. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/flows/classic.py +0 -0
  53. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/flows/flow.py +0 -0
  54. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/flows/misc.py +0 -0
  55. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/flows/optimizing.py +0 -0
  56. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/flows/sequential.py +0 -0
  57. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/flows/synth_explore.py +0 -0
  58. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/help/__main__.py +0 -0
  59. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/logging/__init__.py +0 -0
  60. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/logging/logger.py +0 -0
  61. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/pdk_hashes.yaml +0 -0
  62. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/plugins.py +0 -0
  63. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/py.typed +0 -0
  64. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/base.sdc +0 -0
  65. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/klayout/Readme.md +0 -0
  66. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/klayout/open_design.py +0 -0
  67. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/klayout/render.py +0 -0
  68. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/klayout/stream_out.py +0 -0
  69. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/klayout/xml_drc_report_to_json.py +0 -0
  70. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/klayout/xor.drc +0 -0
  71. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/Readme.md +0 -0
  72. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/common/read.tcl +0 -0
  73. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/def/antenna_check.tcl +0 -0
  74. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/def/mag.tcl +0 -0
  75. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/def/mag_gds.tcl +0 -0
  76. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/extract_spice.tcl +0 -0
  77. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/gds/drc_batch.tcl +0 -0
  78. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/gds/erase_box.tcl +0 -0
  79. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/gds/extras_mag.tcl +0 -0
  80. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/gds/mag_with_pointers.tcl +0 -0
  81. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/get_bbox.tcl +0 -0
  82. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/lef/extras_maglef.tcl +0 -0
  83. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/lef/maglef.tcl +0 -0
  84. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/lef.tcl +0 -0
  85. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/open.tcl +0 -0
  86. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/magic/wrapper.tcl +0 -0
  87. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/netgen/setup.tcl +0 -0
  88. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/apply_def_template.py +0 -0
  89. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/cell_frequency.py +0 -0
  90. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/check_antenna_properties.py +0 -0
  91. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/contextualize.py +0 -0
  92. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/defutil.py +0 -0
  93. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/diodes.py +0 -0
  94. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/disconnected_pins.py +0 -0
  95. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/eco_buffer.py +0 -0
  96. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/eco_diode.py +0 -0
  97. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/filter_unannotated.py +0 -0
  98. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/io_place.py +0 -0
  99. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/ioplace_parser/__init__.py +0 -0
  100. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/ioplace_parser/parse.py +0 -0
  101. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/label_macro_pins.py +0 -0
  102. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/lefutil.py +0 -0
  103. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/placers.py +0 -0
  104. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/power_utils.py +0 -0
  105. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/random_place.py +0 -0
  106. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/reader.py +0 -0
  107. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/remove_buffers.py +0 -0
  108. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/snap_to_grid.py +0 -0
  109. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/odbpy/wire_lengths.py +0 -0
  110. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/antenna_check.tcl +0 -0
  111. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/antenna_repair.tcl +0 -0
  112. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/basic_mp.tcl +0 -0
  113. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/buffer_list.tcl +0 -0
  114. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/dpl.tcl +0 -0
  115. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/dpl_cell_pad.tcl +0 -0
  116. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/grt.tcl +0 -0
  117. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/io.tcl +0 -0
  118. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/pdn_cfg.tcl +0 -0
  119. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/resizer.tcl +0 -0
  120. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/set_global_connections.tcl +0 -0
  121. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/set_layer_adjustments.tcl +0 -0
  122. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/set_power_nets.tcl +0 -0
  123. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/set_rc.tcl +0 -0
  124. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/common/set_routing_layers.tcl +0 -0
  125. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/cts.tcl +0 -0
  126. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/cut_rows.tcl +0 -0
  127. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/dpl.tcl +0 -0
  128. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/drt.tcl +0 -0
  129. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/dump_rc.tcl +0 -0
  130. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/fill.tcl +0 -0
  131. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/floorplan.tcl +0 -0
  132. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/gpl.tcl +0 -0
  133. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/grt.tcl +0 -0
  134. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/gui.tcl +0 -0
  135. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/insert_buffer.tcl +0 -0
  136. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/ioplacer.tcl +0 -0
  137. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/irdrop.tcl +0 -0
  138. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/pdn.tcl +0 -0
  139. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/rcx.tcl +0 -0
  140. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/repair_design.tcl +0 -0
  141. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/repair_design_postgrt.tcl +0 -0
  142. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/rsz_timing_postcts.tcl +0 -0
  143. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/rsz_timing_postgrt.tcl +0 -0
  144. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/sta/check_macro_instances.tcl +0 -0
  145. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/sta/corner.tcl +0 -0
  146. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/tapcell.tcl +0 -0
  147. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/ungpl.tcl +0 -0
  148. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/write_cdl.tcl +0 -0
  149. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/openroad/write_views.tcl +0 -0
  150. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/pyosys/construct_abc_script.py +0 -0
  151. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/pyosys/json_header.py +0 -0
  152. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/pyosys/synthesize.py +0 -0
  153. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/pyosys/ys_common.py +0 -0
  154. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/scripts/tclsh/hello.tcl +0 -0
  155. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/state/__init__.py +0 -0
  156. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/state/__main__.py +0 -0
  157. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/state/design_format.py +0 -0
  158. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/state/state.py +0 -0
  159. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/__init__.py +0 -0
  160. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/__main__.py +0 -0
  161. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/checker.py +0 -0
  162. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/common_variables.py +0 -0
  163. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/cvc_rv.py +0 -0
  164. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/klayout.py +0 -0
  165. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/misc.py +0 -0
  166. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/netgen.py +0 -0
  167. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/odb.py +0 -0
  168. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/openroad.py +0 -0
  169. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/openroad_alerts.py +0 -0
  170. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/pyosys.py +0 -0
  171. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/step.py +0 -0
  172. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/tclstep.py +0 -0
  173. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/librelane/steps/verilator.py +0 -0
  174. {librelane-3.0.0.dev42 → librelane-3.0.0.dev44}/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.dev42
3
+ Version: 3.0.0.dev44
4
4
  Summary: An infrastructure for implementing chip design flows
5
5
  License-Expression: Apache-2.0
6
6
  Maintainer: Mohamed Gaber
@@ -80,7 +80,7 @@ Works for macOS and Linux (x86-64 and aarch64). Recommended, as it is more
80
80
  integrated with your filesystem and overall has less upload and download deltas.
81
81
 
82
82
  See
83
- [Nix-based installation](https://librelane.readthedocs.io/en/latest/getting_started/common/nix_installation/index.html)
83
+ [Nix-based installation](https://librelane.readthedocs.io/en/latest/installation/nix_installation/index.html)
84
84
  in the docs for more info.
85
85
 
86
86
  ### Docker
@@ -88,7 +88,7 @@ in the docs for more info.
88
88
  Works for Windows, macOS and Linux (x86-64 and aarch64).
89
89
 
90
90
  See
91
- [Docker-based installation](https://librelane.readthedocs.io/en/latest/getting_started/common/docker_installation/index.html)
91
+ [Docker-based installation](https://librelane.readthedocs.io/en/latest/installation/docker_installation/index.html)
92
92
  in the docs for more info.
93
93
 
94
94
  Do note you'll need to add `--dockerized` right after `librelane` in most CLI
@@ -46,7 +46,7 @@ Works for macOS and Linux (x86-64 and aarch64). Recommended, as it is more
46
46
  integrated with your filesystem and overall has less upload and download deltas.
47
47
 
48
48
  See
49
- [Nix-based installation](https://librelane.readthedocs.io/en/latest/getting_started/common/nix_installation/index.html)
49
+ [Nix-based installation](https://librelane.readthedocs.io/en/latest/installation/nix_installation/index.html)
50
50
  in the docs for more info.
51
51
 
52
52
  ### Docker
@@ -54,7 +54,7 @@ in the docs for more info.
54
54
  Works for Windows, macOS and Linux (x86-64 and aarch64).
55
55
 
56
56
  See
57
- [Docker-based installation](https://librelane.readthedocs.io/en/latest/getting_started/common/docker_installation/index.html)
57
+ [Docker-based installation](https://librelane.readthedocs.io/en/latest/installation/docker_installation/index.html)
58
58
  in the docs for more info.
59
59
 
60
60
  Do note you'll need to add `--dockerized` right after `librelane` in most CLI
@@ -190,7 +190,7 @@ class Expr(object):
190
190
  elif token.value == "+":
191
191
  result = number1 + number2
192
192
  elif token.value == "-":
193
- result = number1 + number2
193
+ result = number1 - number2
194
194
 
195
195
  eval_stack.append(result)
196
196
  except IndexError:
@@ -43,7 +43,7 @@ from cloup.typing import Decorator
43
43
 
44
44
  from .flow import Flow
45
45
  from ..common import set_tpe, cli, get_pdk_hash, _get_process_limit
46
- from ..logging import set_log_level, verbose, info, err, options, LogLevels
46
+ from ..logging import set_log_level, verbose, err, options, LogLevels
47
47
  from ..state import State, InvalidState
48
48
 
49
49
 
@@ -520,15 +520,6 @@ def cloup_flow_opts(
520
520
  err(f"Could not resolve the PDK '{pdk}'.")
521
521
  exit(1)
522
522
 
523
- if pdk_family == "ihp-sg13g2":
524
- err(
525
- "The IHP Open PDK is only supported in the development version of LibreLane, specifically 3.0.0.dev28 or higher."
526
- )
527
- info(
528
- "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'\"."
529
- )
530
- exit(1)
531
-
532
523
  try:
533
524
  version = ciel.fetch(
534
525
  ciel_home,
@@ -12,6 +12,21 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ crashbackups disable
16
+
17
+ # Read in maglef views in order to blackbox cells
18
+ if { [info exists ::env(MAGIC_DRC_MAGLEFS)] } {
19
+ foreach {maglef} $::env(MAGIC_DRC_MAGLEFS) {
20
+ puts "Loading maglef view: $maglef"
21
+ load $maglef
22
+ }
23
+ }
24
+
25
+ # Enable gds noduplicates to ignore cells
26
+ # that have been previously loaded as maglef
27
+ gds noduplicates true
28
+ gds readonly true
29
+
15
30
  # Flatten cells
16
31
  if { [info exists ::env(MAGIC_GDS_FLATGLOB)] } {
17
32
  foreach {gds_flatglob} $::env(MAGIC_GDS_FLATGLOB) {
@@ -408,6 +408,11 @@ class DRC(MagicStep):
408
408
  Optional[List[str]],
409
409
  "Flatten cells by name pattern on input. May be used to avoid false positive DRC errors. The strings may use standard shell-type glob patterns, with * for any length string match, ? for any single character match, \\ for special characters, and [] for matching character sets or ranges.",
410
410
  ),
411
+ Variable(
412
+ "MAGIC_DRC_MAGLEFS",
413
+ Optional[List[Path]],
414
+ "A list of pre-processed abstract LEF views for cells. They are read in before the design and act as blackboxes during DRC.",
415
+ ),
411
416
  ]
412
417
 
413
418
  def get_script_path(self):
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "librelane"
3
- version = "3.0.0.dev42"
3
+ version = "3.0.0.dev44"
4
4
  description = "An infrastructure for implementing chip design flows"
5
5
  maintainers = [
6
6
  {name = "Mohamed Gaber", email = "me@donn.website"}