librelane 3.0.2__tar.gz → 3.0.4__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 (177) hide show
  1. {librelane-3.0.2 → librelane-3.0.4}/PKG-INFO +1 -1
  2. {librelane-3.0.2 → librelane-3.0.4}/librelane/config/config.py +5 -0
  3. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/def/antenna_check.tcl +3 -0
  4. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/def/mag.tcl +4 -1
  5. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/def/mag_gds.tcl +1 -0
  6. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/drc.tcl +1 -0
  7. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/extract_spice.tcl +3 -0
  8. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/gds/drc_batch.tcl +3 -0
  9. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/gds/erase_box.tcl +4 -0
  10. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/gds/extras_mag.tcl +2 -0
  11. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/gds/mag_with_pointers.tcl +2 -0
  12. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/get_bbox.tcl +4 -0
  13. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/lef/extras_maglef.tcl +2 -0
  14. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/lef/maglef.tcl +2 -0
  15. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/lef.tcl +3 -0
  16. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/spice_rcx.tcl +4 -0
  17. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/io.tcl +5 -1
  18. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/common_variables.py +1 -1
  19. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/verilator.py +10 -0
  20. {librelane-3.0.2 → librelane-3.0.4}/pyproject.toml +1 -1
  21. {librelane-3.0.2 → librelane-3.0.4}/Readme.md +0 -0
  22. {librelane-3.0.2 → librelane-3.0.4}/librelane/__init__.py +0 -0
  23. {librelane-3.0.2 → librelane-3.0.4}/librelane/__main__.py +0 -0
  24. {librelane-3.0.2 → librelane-3.0.4}/librelane/__version__.py +0 -0
  25. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/__init__.py +0 -0
  26. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/cli.py +0 -0
  27. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/drc.py +0 -0
  28. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/generic_dict.py +0 -0
  29. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/metrics/__init__.py +0 -0
  30. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/metrics/__main__.py +0 -0
  31. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/metrics/library.py +0 -0
  32. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/metrics/metric.py +0 -0
  33. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/metrics/util.py +0 -0
  34. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/misc.py +0 -0
  35. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/ring_buffer.py +0 -0
  36. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/tcl.py +0 -0
  37. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/toolbox.py +0 -0
  38. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/tpe.py +0 -0
  39. {librelane-3.0.2 → librelane-3.0.4}/librelane/common/types.py +0 -0
  40. {librelane-3.0.2 → librelane-3.0.4}/librelane/config/__init__.py +0 -0
  41. {librelane-3.0.2 → librelane-3.0.4}/librelane/config/__main__.py +0 -0
  42. {librelane-3.0.2 → librelane-3.0.4}/librelane/config/flow.py +0 -0
  43. {librelane-3.0.2 → librelane-3.0.4}/librelane/config/pdk_compat.py +0 -0
  44. {librelane-3.0.2 → librelane-3.0.4}/librelane/config/preprocessor.py +0 -0
  45. {librelane-3.0.2 → librelane-3.0.4}/librelane/config/removals.py +0 -0
  46. {librelane-3.0.2 → librelane-3.0.4}/librelane/config/variable.py +0 -0
  47. {librelane-3.0.2 → librelane-3.0.4}/librelane/container.py +0 -0
  48. {librelane-3.0.2 → librelane-3.0.4}/librelane/env_info.py +0 -0
  49. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/hold_eco_demo/config.yaml +0 -0
  50. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/hold_eco_demo/demo.v +0 -0
  51. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm/config.yaml +0 -0
  52. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm/pin_order.cfg +0 -0
  53. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm/src/impl.sdc +0 -0
  54. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm/src/signoff.sdc +0 -0
  55. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm/src/spm.v +0 -0
  56. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm/verify/spm_tb.v +0 -0
  57. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm-user_project_wrapper/SPM_example.v +0 -0
  58. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +0 -0
  59. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm-user_project_wrapper/config-tut.json +0 -0
  60. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm-user_project_wrapper/config.json +0 -0
  61. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm-user_project_wrapper/defines.v +0 -0
  62. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm-user_project_wrapper/template.def +0 -0
  63. {librelane-3.0.2 → librelane-3.0.4}/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +0 -0
  64. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/__init__.py +0 -0
  65. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/builtins.py +0 -0
  66. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/chip.py +0 -0
  67. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/classic.py +0 -0
  68. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/cli.py +0 -0
  69. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/flow.py +0 -0
  70. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/misc.py +0 -0
  71. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/optimizing.py +0 -0
  72. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/sequential.py +0 -0
  73. {librelane-3.0.2 → librelane-3.0.4}/librelane/flows/synth_explore.py +0 -0
  74. {librelane-3.0.2 → librelane-3.0.4}/librelane/help/__main__.py +0 -0
  75. {librelane-3.0.2 → librelane-3.0.4}/librelane/logging/__init__.py +0 -0
  76. {librelane-3.0.2 → librelane-3.0.4}/librelane/logging/logger.py +0 -0
  77. {librelane-3.0.2 → librelane-3.0.4}/librelane/pdk_hashes.yaml +0 -0
  78. {librelane-3.0.2 → librelane-3.0.4}/librelane/plugins.py +0 -0
  79. {librelane-3.0.2 → librelane-3.0.4}/librelane/py.typed +0 -0
  80. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/base.sdc +0 -0
  81. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/klayout/Readme.md +0 -0
  82. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/klayout/insert_cell.py +0 -0
  83. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/klayout/open_design.py +0 -0
  84. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/klayout/render.py +0 -0
  85. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/klayout/stream_out.py +0 -0
  86. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/klayout/xml_drc_report_to_json.py +0 -0
  87. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/klayout/xor.drc +0 -0
  88. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/Readme.md +0 -0
  89. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/common/read.tcl +0 -0
  90. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/open.tcl +0 -0
  91. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/magic/wrapper.tcl +0 -0
  92. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/netgen/setup.tcl +0 -0
  93. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/apply_def_template.py +0 -0
  94. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/cell_frequency.py +0 -0
  95. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/check_antenna_properties.py +0 -0
  96. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/contextualize.py +0 -0
  97. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/defutil.py +0 -0
  98. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/diodes.py +0 -0
  99. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/disconnected_pins.py +0 -0
  100. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/eco_buffer.py +0 -0
  101. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/eco_diode.py +0 -0
  102. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/filter_unannotated.py +0 -0
  103. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/io_place.py +0 -0
  104. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/ioplace_parser/__init__.py +0 -0
  105. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/ioplace_parser/parse.py +0 -0
  106. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/label_macro_pins.py +0 -0
  107. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/lefutil.py +0 -0
  108. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/placers.py +0 -0
  109. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/power_utils.py +0 -0
  110. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/random_place.py +0 -0
  111. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/reader.py +0 -0
  112. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/remove_buffers.py +0 -0
  113. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/snap_to_grid.py +0 -0
  114. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/odbpy/wire_lengths.py +0 -0
  115. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/antenna_check.tcl +0 -0
  116. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/antenna_repair.tcl +0 -0
  117. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/buffer_list.tcl +0 -0
  118. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/dpl.tcl +0 -0
  119. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/dpl_cell_pad.tcl +0 -0
  120. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/grt.tcl +0 -0
  121. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/pad_cfg.tcl +0 -0
  122. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/pdn_cfg.tcl +0 -0
  123. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/resizer.tcl +0 -0
  124. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/set_global_connections.tcl +0 -0
  125. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/set_layer_adjustments.tcl +0 -0
  126. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/set_power_nets.tcl +0 -0
  127. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/set_rc.tcl +0 -0
  128. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/common/set_routing_layers.tcl +0 -0
  129. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/cts.tcl +0 -0
  130. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/cut_rows.tcl +0 -0
  131. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/dpl.tcl +0 -0
  132. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/drt.tcl +0 -0
  133. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/dump_rc.tcl +0 -0
  134. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/fill.tcl +0 -0
  135. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/floorplan.tcl +0 -0
  136. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/gpl.tcl +0 -0
  137. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/grt.tcl +0 -0
  138. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/gui.tcl +0 -0
  139. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/insert_buffer.tcl +0 -0
  140. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/ioplacer.tcl +0 -0
  141. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/irdrop.tcl +0 -0
  142. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/pad.tcl +0 -0
  143. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/pdn.tcl +0 -0
  144. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/rcx.tcl +0 -0
  145. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/repair_design.tcl +0 -0
  146. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/repair_design_postgrt.tcl +0 -0
  147. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/rsz_timing_postcts.tcl +0 -0
  148. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/rsz_timing_postgrt.tcl +0 -0
  149. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/sta/check_macro_instances.tcl +0 -0
  150. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/sta/corner.tcl +0 -0
  151. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/tapcell.tcl +0 -0
  152. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/ungpl.tcl +0 -0
  153. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/write_cdl.tcl +0 -0
  154. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/openroad/write_views.tcl +0 -0
  155. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/pyosys/construct_abc_script.py +0 -0
  156. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/pyosys/json_header.py +0 -0
  157. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/pyosys/synthesize.py +0 -0
  158. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/pyosys/ys_common.py +0 -0
  159. {librelane-3.0.2 → librelane-3.0.4}/librelane/scripts/tclsh/hello.tcl +0 -0
  160. {librelane-3.0.2 → librelane-3.0.4}/librelane/state/__init__.py +0 -0
  161. {librelane-3.0.2 → librelane-3.0.4}/librelane/state/__main__.py +0 -0
  162. {librelane-3.0.2 → librelane-3.0.4}/librelane/state/design_format.py +0 -0
  163. {librelane-3.0.2 → librelane-3.0.4}/librelane/state/state.py +0 -0
  164. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/__init__.py +0 -0
  165. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/__main__.py +0 -0
  166. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/checker.py +0 -0
  167. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/klayout.py +0 -0
  168. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/magic.py +0 -0
  169. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/misc.py +0 -0
  170. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/netgen.py +0 -0
  171. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/odb.py +0 -0
  172. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/openroad.py +0 -0
  173. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/openroad_alerts.py +0 -0
  174. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/pyosys.py +0 -0
  175. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/step.py +0 -0
  176. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/tclstep.py +0 -0
  177. {librelane-3.0.2 → librelane-3.0.4}/librelane/steps/yosys.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: librelane
3
- Version: 3.0.2
3
+ Version: 3.0.4
4
4
  Summary: An infrastructure for implementing chip design flows
5
5
  License-Expression: Apache-2.0
6
6
  Maintainer: Mohamed Gaber
@@ -833,6 +833,11 @@ class Config(GenericImmutableDict[str, Any]):
833
833
  if scl is not None:
834
834
  pdk_config[SpecialKeys.scl] = scl
835
835
 
836
+ # HACK: Prevent loading default SCL cfg vars for old openlane PDK
837
+ # configs
838
+ # For more info: https://github.com/librelane/librelane/issues/932
839
+ pdk_config["STD_CELL_LIBRARY_OPT"] = scl
840
+
836
841
  if pad is not None:
837
842
  pdk_config[SpecialKeys.pad] = pad
838
843
 
@@ -12,6 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  source $::env(SCRIPTS_DIR)/magic/def/read.tcl
15
+ drc off
16
+ crashbackups disable
17
+ locking disable
15
18
 
16
19
  load $::env(DESIGN_NAME) -dereference
17
20
 
@@ -13,7 +13,10 @@
13
13
  # limitations under the License.
14
14
 
15
15
  source $::env(SCRIPTS_DIR)/magic/def/read.tcl
16
+ drc off
17
+ crashbackups disable
18
+ locking disable
16
19
 
17
20
  save $::env(SAVE_MAG)
18
21
 
19
- puts "[INFO] Done exporting $::env(SAVE_MAG)."
22
+ puts "[INFO] Done exporting $::env(SAVE_MAG)."
@@ -18,6 +18,7 @@
18
18
  source $::env(SCRIPTS_DIR)/magic/common/read.tcl
19
19
  drc off
20
20
  crashbackups disable
21
+ locking disable
21
22
 
22
23
  gds noduplicates true
23
24
  gds readonly true
@@ -17,6 +17,7 @@
17
17
  # limitations under the License.
18
18
 
19
19
  crashbackups disable
20
+ locking disable
20
21
  units internal
21
22
 
22
23
  # Read in maglef views in order to blackbox cells
@@ -20,6 +20,9 @@ puts $f [expr {((round([magic::cif scale output] * 10000)) / 10000.0) * 1}]
20
20
  close $f
21
21
 
22
22
  source $::env(SCRIPTS_DIR)/magic/common/read.tcl
23
+ drc off
24
+ crashbackups disable
25
+ locking disable
23
26
 
24
27
  if { $::env(MAGIC_EXT_USE_GDS) } {
25
28
  gds read $::env(CURRENT_GDS)
@@ -12,6 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ crashbackups disable
16
+ locking disable
17
+
15
18
  if { [info exists ::env(TECH)] } {
16
19
  tech load $::env(TECH)
17
20
  }
@@ -12,6 +12,10 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ drc off
16
+ crashbackups disable
17
+ locking disable
18
+
15
19
  tech unlock *
16
20
 
17
21
  gds read $::env(CURRENT_GDS)
@@ -17,6 +17,8 @@
17
17
  # corresponding maglefs
18
18
 
19
19
  drc off
20
+ crashbackups disable
21
+ locking disable
20
22
 
21
23
  gds readonly true
22
24
  gds rescale false
@@ -13,6 +13,8 @@
13
13
  # limitations under the License.
14
14
 
15
15
  drc off
16
+ crashbackups disable
17
+ locking disable
16
18
 
17
19
  gds readonly true
18
20
  gds rescale false
@@ -1,3 +1,7 @@
1
+ drc off
2
+ crashbackups disable
3
+ locking disable
4
+
1
5
  gds read $::env(_GDS_IN)
2
6
  load $::env(_MACRO_NAME_IN)
3
7
  set curunits [units]
@@ -15,6 +15,8 @@
15
15
  # convert all external macros to maglef views with GDS_* pointers
16
16
 
17
17
  drc off
18
+ crashbackups disable
19
+ locking disable
18
20
 
19
21
  if { [info exist ::env(EXTRA_LEFS)] } {
20
22
  foreach lef_file $::env(EXTRA_LEFS) {
@@ -13,6 +13,8 @@
13
13
  # limitations under the License.
14
14
 
15
15
  drc off
16
+ crashbackups disable
17
+ locking disable
16
18
 
17
19
  lef read $::env(signoff_results)/$::env(DESIGN_NAME).lef
18
20
 
@@ -16,6 +16,9 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
  drc off
19
+ crashbackups disable
20
+ locking disable
21
+
19
22
  if { $::env(MAGIC_LEF_WRITE_USE_GDS) } {
20
23
  gds read $::env(CURRENT_GDS)
21
24
  } else {
@@ -16,6 +16,10 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
 
19
+ drc off
20
+ crashbackups disable
21
+ locking disable
22
+
19
23
  # we do always want to read the GDS for this
20
24
  gds read $::env(CURRENT_GDS)
21
25
 
@@ -602,7 +602,11 @@ proc write_libs {} {
602
602
  foreach corner_name [lln::get_corner_names] {
603
603
  set target $::env(_LIB_SAVE_DIR)/$::env(DESIGN_NAME)__$corner_name.lib
604
604
  puts "Writing timing models for the $corner_name corner to $target…"
605
- write_timing_model -corner $corner_name $target
605
+ if {[string length [namespace which sta::scenes]] != 0} {
606
+ write_timing_model -scene $corner_name $target
607
+ } else {
608
+ write_timing_model -corner $corner_name $target
609
+ }
606
610
  }
607
611
  }
608
612
  }
@@ -280,7 +280,7 @@ pdn_variables = [
280
280
  Variable(
281
281
  "PDN_RAIL_WIDTH",
282
282
  Decimal,
283
- "Defines the width of PDN rails on the `FP_PDN_RAILS_LAYER` layer.",
283
+ "Defines the width of PDN rails on the `PDN_RAIL_LAYER` layer.",
284
284
  units="µm",
285
285
  pdk=True,
286
286
  deprecated_names=["FP_PDN_RAIL_WIDTH"],
@@ -77,6 +77,12 @@ class Lint(Step):
77
77
  "When a latch is inferred by an `always` block that is not explicitly marked as `always_latch`, report this as a linter error.",
78
78
  default=True,
79
79
  ),
80
+ Variable(
81
+ "LINTER_ERROR_ON_MULTIDRIVEN",
82
+ bool,
83
+ "When a net has multiple drivers, report this as a linter error.",
84
+ default=True,
85
+ ),
80
86
  Variable(
81
87
  "VERILOG_DEFINES",
82
88
  Optional[List[str]],
@@ -197,6 +203,10 @@ class Lint(Step):
197
203
  if self.config["LINTER_ERROR_ON_LATCH"]:
198
204
  extra_args.append("--Werror-LATCH")
199
205
 
206
+ # It's more user-friendly to catch multiple-driver conflicts here in Verilator (if possible) than later in Yosys.
207
+ if self.config["LINTER_ERROR_ON_MULTIDRIVEN"]:
208
+ extra_args.append("--Werror-MULTIDRIVEN")
209
+
200
210
  if include_dirs := self.config["VERILOG_INCLUDE_DIRS"]:
201
211
  extra_args.extend([f"-I{dir}" for dir in include_dirs])
202
212
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "librelane"
3
- version = "3.0.2"
3
+ version = "3.0.4"
4
4
  description = "An infrastructure for implementing chip design flows"
5
5
  maintainers = [
6
6
  {name = "Mohamed Gaber", email = "donn@fossi-foundation.org"},
File without changes
File without changes