siliconcompiler 0.29.3__tar.gz → 0.29.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 (469) hide show
  1. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/Changes +16 -0
  2. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/PKG-INFO +5 -5
  3. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/README.md +1 -1
  4. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/pyproject.toml +3 -3
  5. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/_metadata.py +1 -1
  6. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_install.py +18 -3
  7. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/client.py +3 -0
  8. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/__init__.py +9 -3
  9. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/__init__.py +1 -1
  10. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/asic.py +3 -0
  11. siliconcompiler-0.29.4/siliconcompiler/tools/_common/asic_clock.py +101 -0
  12. siliconcompiler-0.29.4/siliconcompiler/tools/bambu/convert.py +159 -0
  13. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/_apr.py +11 -0
  14. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/fillmetal_insertion.py +0 -1
  15. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/init_floorplan.py +7 -1
  16. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/macro_placement.py +1 -2
  17. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/pin_placement.py +0 -1
  18. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +3 -2
  19. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +1 -0
  20. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +1 -0
  21. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +24 -0
  22. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/procs.tcl +2 -1
  23. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +1 -0
  24. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/reports.tcl +0 -13
  25. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/slang/__init__.py +1 -0
  26. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/verilator/verilator.py +1 -0
  27. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/__init__.py +26 -23
  28. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/procs.tcl +17 -0
  29. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_asic.py +12 -65
  30. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_asic.tcl +6 -51
  31. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/_tools.json +2 -2
  32. {siliconcompiler-0.29.3/siliconcompiler/toolscripts/rhel9 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/rhel8}/install-yosys.sh +1 -1
  33. siliconcompiler-0.29.4/siliconcompiler/toolscripts/rhel9/install-openroad.sh +34 -0
  34. {siliconcompiler-0.29.3/siliconcompiler/toolscripts/rhel8 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/rhel9}/install-yosys.sh +1 -1
  35. {siliconcompiler-0.29.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu20}/install-yosys.sh +1 -1
  36. {siliconcompiler-0.29.3/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu22}/install-yosys.sh +1 -1
  37. {siliconcompiler-0.29.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu24}/install-yosys.sh +1 -1
  38. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/utils/__init__.py +2 -0
  39. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/PKG-INFO +5 -5
  40. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/SOURCES.txt +2 -1
  41. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/requires.txt +3 -3
  42. siliconcompiler-0.29.3/siliconcompiler/tools/bambu/convert.py +0 -78
  43. siliconcompiler-0.29.3/siliconcompiler/tools/yosys/templates/__init__.py +0 -0
  44. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/.dockerignore +0 -0
  45. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/.flake8 +0 -0
  46. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/.gitattributes +0 -0
  47. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/.gitignore +0 -0
  48. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/.readthedocs.yaml +0 -0
  49. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/CONTRIBUTING.md +0 -0
  50. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/LICENSE +0 -0
  51. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/MANIFEST.in +0 -0
  52. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/SECURITY.md +0 -0
  53. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/scripts/.gitignore +0 -0
  54. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/scripts/check_library.py +0 -0
  55. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/scripts/profile_sc.py +0 -0
  56. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/scripts/report_library.py +0 -0
  57. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/setup.cfg +0 -0
  58. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/__init__.py +0 -0
  59. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/__main__.py +0 -0
  60. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/_common.py +0 -0
  61. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/__init__.py +0 -0
  62. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/_common.py +0 -0
  63. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc.py +0 -0
  64. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_dashboard.py +0 -0
  65. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_issue.py +0 -0
  66. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_remote.py +0 -0
  67. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_server.py +0 -0
  68. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_show.py +0 -0
  69. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/smake.py +0 -0
  70. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/utils/replay.py +0 -0
  71. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/apps/utils/summarize.py +0 -0
  72. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/checklists/__init__.py +0 -0
  73. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/checklists/oh_tapeout.py +0 -0
  74. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/core.py +0 -0
  75. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/data/RobotoMono/LICENSE.txt +0 -0
  76. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/data/RobotoMono/RobotoMono-Regular.ttf +0 -0
  77. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/data/RobotoMono/__init__.py +0 -0
  78. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/data/__init__.py +0 -0
  79. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/data/heartbeat.v +0 -0
  80. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/data/logo.png +0 -0
  81. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flowgraph.py +0 -0
  82. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/__init__.py +0 -0
  83. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/_common.py +0 -0
  84. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/asicflow.py +0 -0
  85. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/asictopflow.py +0 -0
  86. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/drcflow.py +0 -0
  87. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/dvflow.py +0 -0
  88. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/fpgaflow.py +0 -0
  89. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/generate_openroad_rcx.py +0 -0
  90. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/interposerflow.py +0 -0
  91. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/lintflow.py +0 -0
  92. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/screenshotflow.py +0 -0
  93. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/showflow.py +0 -0
  94. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/signoffflow.py +0 -0
  95. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/flows/synflow.py +0 -0
  96. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/fpgas/__init__.py +0 -0
  97. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/fpgas/lattice_ice40.py +0 -0
  98. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/fpgas/vpr_example.py +0 -0
  99. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/issue.py +0 -0
  100. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/libs/__init__.py +0 -0
  101. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/optimizer/__init__.py +0 -0
  102. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/optimizer/vizier.py +0 -0
  103. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/package.py +0 -0
  104. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/pdks/__init__.py +0 -0
  105. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/__init__.py +0 -0
  106. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/schema.py +0 -0
  107. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server.py +0 -0
  108. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/__init__.py +0 -0
  109. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/__init__.py +0 -0
  110. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/cancel_job.json +0 -0
  111. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/check_progress.json +0 -0
  112. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/check_server.json +0 -0
  113. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/delete_job.json +0 -0
  114. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/get_results.json +0 -0
  115. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/remote_run.json +0 -0
  116. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/__init__.py +0 -0
  117. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/cancel_job.json +0 -0
  118. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/check_progress.json +0 -0
  119. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/check_server.json +0 -0
  120. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/delete_job.json +0 -0
  121. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/get_results.json +0 -0
  122. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/remote_run.json +0 -0
  123. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/__init__.py +0 -0
  124. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/__init__.py +0 -0
  125. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/components/__init__.py +0 -0
  126. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/components/flowgraph.py +0 -0
  127. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/components/graph.py +0 -0
  128. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/__init__.py +0 -0
  129. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/_common.py +0 -0
  130. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py +0 -0
  131. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py +0 -0
  132. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py +0 -0
  133. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/state.py +0 -0
  134. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/utils/__init__.py +0 -0
  135. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/utils/file_utils.py +0 -0
  136. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/viewer.py +0 -0
  137. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/html_report.py +0 -0
  138. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/report.py +0 -0
  139. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/summary_image.py +0 -0
  140. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/summary_table.py +0 -0
  141. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/report/utils.py +0 -0
  142. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/docker_runner.py +0 -0
  143. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/run_node.py +0 -0
  144. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/send_messages.py +0 -0
  145. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/slurm.py +0 -0
  146. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/validation/__init__.py +0 -0
  147. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/validation/email_credentials.json +0 -0
  148. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/schema/__init__.py +0 -0
  149. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/schema/schema_cfg.py +0 -0
  150. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/schema/schema_obj.py +0 -0
  151. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/schema/utils.py +0 -0
  152. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/sphinx_ext/__init__.py +0 -0
  153. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/sphinx_ext/dynamicgen.py +0 -0
  154. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/sphinx_ext/schemagen.py +0 -0
  155. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/sphinx_ext/utils.py +0 -0
  156. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/targets/__init__.py +0 -0
  157. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/targets/asap7_demo.py +0 -0
  158. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/targets/asic_demo.py +0 -0
  159. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/targets/fpgaflow_demo.py +0 -0
  160. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/targets/freepdk45_demo.py +0 -0
  161. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/targets/gf180_demo.py +0 -0
  162. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/targets/ihp130_demo.py +0 -0
  163. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/targets/interposer_demo.py +0 -0
  164. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/targets/skywater130_demo.py +0 -0
  165. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/__init__.py +0 -0
  166. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/email/__init__.py +0 -0
  167. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/email/general.j2 +0 -0
  168. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/email/summary.j2 +0 -0
  169. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/issue/README.txt +0 -0
  170. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/issue/__init__.py +0 -0
  171. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/issue/run.sh +0 -0
  172. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/replay/replay.py.j2 +0 -0
  173. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/replay/requirements.txt +0 -0
  174. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/replay/setup.sh +0 -0
  175. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/__init__.py +0 -0
  176. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/bootstrap.min.css +0 -0
  177. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/bootstrap.min.js +0 -0
  178. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/bootstrap_LICENSE.md +0 -0
  179. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/sc_report.j2 +0 -0
  180. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/slurm/__init__.py +0 -0
  181. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/slurm/run.sh +0 -0
  182. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/tcl/__init__.py +0 -0
  183. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/templates/tcl/manifest.tcl.j2 +0 -0
  184. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/__init__.py +0 -0
  185. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/sdc/__init__.py +0 -0
  186. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/sdc/sc_constraints.sdc +0 -0
  187. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/tcl/__init__.py +0 -0
  188. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +0 -0
  189. /siliconcompiler-0.29.3/siliconcompiler/tools/bambu/bambu.py → /siliconcompiler-0.29.4/siliconcompiler/tools/bambu/__init__.py +0 -0
  190. {siliconcompiler-0.29.3/siliconcompiler/tools/bambu → siliconcompiler-0.29.4/siliconcompiler/tools/bluespec}/__init__.py +0 -0
  191. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/bluespec/bluespec.py +0 -0
  192. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/bluespec/convert.py +0 -0
  193. {siliconcompiler-0.29.3/siliconcompiler/tools/bluespec → siliconcompiler-0.29.4/siliconcompiler/tools/builtin}/__init__.py +0 -0
  194. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/_common.py +0 -0
  195. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/builtin.py +0 -0
  196. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/concatenate.py +0 -0
  197. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/join.py +0 -0
  198. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/maximum.py +0 -0
  199. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/minimum.py +0 -0
  200. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/mux.py +0 -0
  201. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/nop.py +0 -0
  202. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/verify.py +0 -0
  203. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/chisel/SCDriver.scala +0 -0
  204. {siliconcompiler-0.29.3/siliconcompiler/tools/builtin → siliconcompiler-0.29.4/siliconcompiler/tools/chisel}/__init__.py +0 -0
  205. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/chisel/build.sbt +0 -0
  206. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/chisel/chisel.py +0 -0
  207. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/chisel/convert.py +0 -0
  208. {siliconcompiler-0.29.3/siliconcompiler/tools/chisel → siliconcompiler-0.29.4/siliconcompiler/tools/execute}/__init__.py +0 -0
  209. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/execute/exec_input.py +0 -0
  210. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/execute/execute.py +0 -0
  211. {siliconcompiler-0.29.3/siliconcompiler/tools/execute → siliconcompiler-0.29.4/siliconcompiler/tools/genfasm}/__init__.py +0 -0
  212. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/genfasm/bitstream.py +0 -0
  213. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/genfasm/genfasm.py +0 -0
  214. {siliconcompiler-0.29.3/siliconcompiler/tools/genfasm → siliconcompiler-0.29.4/siliconcompiler/tools/ghdl}/__init__.py +0 -0
  215. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/ghdl/convert.py +0 -0
  216. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/ghdl/ghdl.py +0 -0
  217. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/gtkwave/__init__.py +0 -0
  218. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/gtkwave/scripts/sc_show.tcl +0 -0
  219. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/gtkwave/show.py +0 -0
  220. {siliconcompiler-0.29.3/siliconcompiler/tools/ghdl → siliconcompiler-0.29.4/siliconcompiler/tools/icarus}/__init__.py +0 -0
  221. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/icarus/compile.py +0 -0
  222. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/icarus/icarus.py +0 -0
  223. {siliconcompiler-0.29.3/siliconcompiler/tools/icarus → siliconcompiler-0.29.4/siliconcompiler/tools/icepack}/__init__.py +0 -0
  224. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/icepack/bitstream.py +0 -0
  225. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/icepack/icepack.py +0 -0
  226. {siliconcompiler-0.29.3/siliconcompiler/tools/icepack → siliconcompiler-0.29.4/siliconcompiler/tools/klayout}/__init__.py +0 -0
  227. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/convert_drc_db.py +0 -0
  228. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/drc.py +0 -0
  229. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/export.py +0 -0
  230. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout.py +0 -0
  231. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_convert_drc_db.py +0 -0
  232. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_export.py +0 -0
  233. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_operations.py +0 -0
  234. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_show.py +0 -0
  235. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_utils.py +0 -0
  236. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/operations.py +0 -0
  237. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/screenshot.py +0 -0
  238. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/show.py +0 -0
  239. {siliconcompiler-0.29.3/siliconcompiler/tools/klayout → siliconcompiler-0.29.4/siliconcompiler/tools/magic}/__init__.py +0 -0
  240. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/drc.py +0 -0
  241. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/extspice.py +0 -0
  242. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/magic.py +0 -0
  243. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/sc_drc.tcl +0 -0
  244. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/sc_extspice.tcl +0 -0
  245. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/sc_magic.tcl +0 -0
  246. {siliconcompiler-0.29.3/siliconcompiler/tools/magic → siliconcompiler-0.29.4/siliconcompiler/tools/montage}/__init__.py +0 -0
  247. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/montage/montage.py +0 -0
  248. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/montage/tile.py +0 -0
  249. {siliconcompiler-0.29.3/siliconcompiler/tools/montage → siliconcompiler-0.29.4/siliconcompiler/tools/netgen}/__init__.py +0 -0
  250. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/netgen/count_lvs.py +0 -0
  251. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/netgen/lvs.py +0 -0
  252. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/netgen/netgen.py +0 -0
  253. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/netgen/sc_lvs.tcl +0 -0
  254. {siliconcompiler-0.29.3/siliconcompiler/tools/netgen → siliconcompiler-0.29.4/siliconcompiler/tools/nextpnr}/__init__.py +0 -0
  255. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/nextpnr/apr.py +0 -0
  256. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/nextpnr/nextpnr.py +0 -0
  257. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/__init__.py +0 -0
  258. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/antenna_repair.py +0 -0
  259. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/clock_tree_synthesis.py +0 -0
  260. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/detailed_placement.py +0 -0
  261. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/detailed_route.py +0 -0
  262. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/endcap_tapcell_insertion.py +0 -0
  263. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/fillercell_insertion.py +0 -0
  264. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/global_placement.py +0 -0
  265. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/global_route.py +0 -0
  266. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/metrics.py +0 -0
  267. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/power_grid.py +0 -0
  268. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/rcx_bench.py +0 -0
  269. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/rcx_extract.py +0 -0
  270. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/rdlroute.py +0 -0
  271. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/repair_design.py +0 -0
  272. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/repair_timing.py +0 -0
  273. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/screenshot.py +0 -0
  274. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +0 -0
  275. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +0 -0
  276. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +0 -0
  277. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +0 -0
  278. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +0 -0
  279. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +0 -0
  280. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +0 -0
  281. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +0 -0
  282. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +0 -0
  283. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +0 -0
  284. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +0 -0
  285. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +0 -0
  286. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +0 -0
  287. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +0 -0
  288. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +0 -0
  289. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/debugging.tcl +0 -0
  290. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl +0 -0
  291. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl +0 -0
  292. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +0 -0
  293. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/write_data.tcl +0 -0
  294. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/write_data_physical.tcl +0 -0
  295. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/write_data_timing.tcl +0 -0
  296. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/write_images.tcl +0 -0
  297. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_bench.tcl +0 -0
  298. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_extract.tcl +0 -0
  299. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +0 -0
  300. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +0 -0
  301. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/sc_show.tcl +0 -0
  302. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/show.py +0 -0
  303. {siliconcompiler-0.29.3/siliconcompiler/tools/nextpnr → siliconcompiler-0.29.4/siliconcompiler/tools/openroad/templates}/__init__.py +0 -0
  304. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/templates/pex.tcl +0 -0
  305. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/write_data.py +0 -0
  306. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/__init__.py +0 -0
  307. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/check_library.py +0 -0
  308. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/report_libraries.py +0 -0
  309. {siliconcompiler-0.29.3/siliconcompiler/tools/openroad/templates → siliconcompiler-0.29.4/siliconcompiler/tools/opensta/scripts}/__init__.py +0 -0
  310. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/scripts/sc_check_library.tcl +0 -0
  311. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/scripts/sc_procs.tcl +0 -0
  312. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl +0 -0
  313. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/scripts/sc_timing.tcl +0 -0
  314. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/timing.py +0 -0
  315. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/slang/elaborate.py +0 -0
  316. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/slang/lint.py +0 -0
  317. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/surelog/__init__.py +0 -0
  318. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/surelog/parse.py +0 -0
  319. {siliconcompiler-0.29.3/siliconcompiler/tools/opensta/scripts → siliconcompiler-0.29.4/siliconcompiler/tools/surelog/templates}/__init__.py +0 -0
  320. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/surelog/templates/output.v +0 -0
  321. {siliconcompiler-0.29.3/siliconcompiler/tools/surelog/templates → siliconcompiler-0.29.4/siliconcompiler/tools/sv2v}/__init__.py +0 -0
  322. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/sv2v/convert.py +0 -0
  323. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/sv2v/sv2v.py +0 -0
  324. {siliconcompiler-0.29.3/siliconcompiler/tools/sv2v → siliconcompiler-0.29.4/siliconcompiler/tools/template}/__init__.py +0 -0
  325. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/template/template.py +0 -0
  326. {siliconcompiler-0.29.3/siliconcompiler/tools/template → siliconcompiler-0.29.4/siliconcompiler/tools/verilator}/__init__.py +0 -0
  327. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/verilator/compile.py +0 -0
  328. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/verilator/lint.py +0 -0
  329. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/verilator/parse.py +0 -0
  330. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/__init__.py +0 -0
  331. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/bitstream.py +0 -0
  332. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/place.py +0 -0
  333. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/route.py +0 -0
  334. {siliconcompiler-0.29.3/siliconcompiler/tools/verilator → siliconcompiler-0.29.4/siliconcompiler/tools/vivado/scripts}/__init__.py +0 -0
  335. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +0 -0
  336. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_place.tcl +0 -0
  337. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_route.tcl +0 -0
  338. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_run.tcl +0 -0
  339. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl +0 -0
  340. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/syn_fpga.py +0 -0
  341. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/vivado.py +0 -0
  342. {siliconcompiler-0.29.3/siliconcompiler/tools/vivado/scripts → siliconcompiler-0.29.4/siliconcompiler/tools/vpr}/__init__.py +0 -0
  343. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/_json_constraint.py +0 -0
  344. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/_xml_constraint.py +0 -0
  345. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/place.py +0 -0
  346. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/route.py +0 -0
  347. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/screenshot.py +0 -0
  348. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/show.py +0 -0
  349. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/vpr.py +0 -0
  350. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/xdm/__init__.py +0 -0
  351. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/xdm/convert.py +0 -0
  352. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/xyce/__init__.py +0 -0
  353. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/xyce/simulate.py +0 -0
  354. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/lec.py +0 -0
  355. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/prepareLib.py +0 -0
  356. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/sc_lec.tcl +0 -0
  357. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/sc_screenshot.tcl +0 -0
  358. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/sc_syn.tcl +0 -0
  359. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/screenshot.py +0 -0
  360. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_fpga.py +0 -0
  361. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_fpga.tcl +0 -0
  362. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_strategies.tcl +0 -0
  363. {siliconcompiler-0.29.3/siliconcompiler/tools/vpr → siliconcompiler-0.29.4/siliconcompiler/tools/yosys/techmaps}/__init__.py +0 -0
  364. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v +0 -0
  365. {siliconcompiler-0.29.3/siliconcompiler/tools/yosys/techmaps → siliconcompiler-0.29.4/siliconcompiler/tools/yosys/templates}/__init__.py +0 -0
  366. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/templates/abc.const +0 -0
  367. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/_tools.py +0 -0
  368. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-chisel.sh +0 -0
  369. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-ghdl.sh +0 -0
  370. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-icarus.sh +0 -0
  371. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-klayout.sh +0 -0
  372. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-magic.sh +0 -0
  373. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-montage.sh +0 -0
  374. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-netgen.sh +0 -0
  375. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-slang.sh +0 -0
  376. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-surelog.sh +0 -0
  377. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-sv2v.sh +0 -0
  378. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-verible.sh +0 -0
  379. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-verilator.sh +0 -0
  380. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-xyce.sh +0 -0
  381. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-chisel.sh +0 -0
  382. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-ghdl.sh +0 -0
  383. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +0 -0
  384. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-icarus.sh +0 -0
  385. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-klayout.sh +0 -0
  386. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-magic.sh +0 -0
  387. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-montage.sh +0 -0
  388. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-netgen.sh +0 -0
  389. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-slang.sh +0 -0
  390. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-surelog.sh +0 -0
  391. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-sv2v.sh +0 -0
  392. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-verible.sh +0 -0
  393. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-verilator.sh +0 -0
  394. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-xdm.sh +0 -0
  395. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-xyce.sh +0 -0
  396. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +0 -0
  397. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +0 -0
  398. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +0 -0
  399. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +0 -0
  400. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +0 -0
  401. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +0 -0
  402. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +0 -0
  403. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +0 -0
  404. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-magic.sh +0 -0
  405. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-montage.sh +0 -0
  406. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +0 -0
  407. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +0 -0
  408. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-openroad.sh +0 -0
  409. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-slang.sh +0 -0
  410. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +0 -0
  411. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +0 -0
  412. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +0 -0
  413. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-verible.sh +0 -0
  414. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +0 -0
  415. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +0 -0
  416. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +0 -0
  417. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +0 -0
  418. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +0 -0
  419. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +0 -0
  420. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +0 -0
  421. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +0 -0
  422. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +0 -0
  423. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +0 -0
  424. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +0 -0
  425. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +0 -0
  426. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-magic.sh +0 -0
  427. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-montage.sh +0 -0
  428. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +0 -0
  429. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +0 -0
  430. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-openroad.sh +0 -0
  431. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
  432. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +0 -0
  433. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +0 -0
  434. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +0 -0
  435. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-verible.sh +0 -0
  436. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +0 -0
  437. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +0 -0
  438. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +0 -0
  439. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +0 -0
  440. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +0 -0
  441. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +0 -0
  442. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +0 -0
  443. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +0 -0
  444. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +0 -0
  445. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +0 -0
  446. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +0 -0
  447. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +0 -0
  448. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-magic.sh +0 -0
  449. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-montage.sh +0 -0
  450. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +0 -0
  451. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +0 -0
  452. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +0 -0
  453. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-slang.sh +0 -0
  454. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +0 -0
  455. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +0 -0
  456. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +0 -0
  457. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-verible.sh +0 -0
  458. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +0 -0
  459. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +0 -0
  460. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +0 -0
  461. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +0 -0
  462. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/units.py +0 -0
  463. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/use.py +0 -0
  464. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/utils/asic.py +0 -0
  465. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/utils/logging.py +0 -0
  466. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler/utils/showtools.py +0 -0
  467. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/dependency_links.txt +0 -0
  468. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/entry_points.txt +0 -0
  469. {siliconcompiler-0.29.3 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/top_level.txt +0 -0
@@ -8,6 +8,22 @@ The changes in each SiliconCompiler release version are described below. Commit
8
8
  version shown in (). Where applicable, the contributors that suggested a given
9
9
  feature are shown in [].
10
10
 
11
+ SiliconCompiler 0.29.4 (2025-02-06)
12
+ =========================================
13
+
14
+ **Minor:**
15
+
16
+ * Added helper function to allow tasks to handle clock information in a uniform method.
17
+ * Improved feedback on unsupported platforms during `sc-install`.
18
+
19
+
20
+ * Tools:
21
+
22
+ * bambu: updates to better handle platform and clock information.
23
+ * openroad: added recover_power option support.
24
+ * yosys: switch to use builtin `keep_hierarchy` to speedup compile times.
25
+
26
+
11
27
  SiliconCompiler 0.29.3 (2025-01-28)
12
28
  =========================================
13
29
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: siliconcompiler
3
- Version: 0.29.3
3
+ Version: 0.29.4
4
4
  Summary: A compiler framework that automates translation from source code to silicon.
5
5
  Author-email: Andreas Olofsson <andreas.d.olofsson@gmail.com>
6
6
  License: Apache License 2.0
@@ -38,7 +38,7 @@ Requires-Dist: psutil>=5.8.0
38
38
  Requires-Dist: Pillow==10.4.0; python_version <= "3.8"
39
39
  Requires-Dist: Pillow==11.1.0; python_version >= "3.9"
40
40
  Requires-Dist: GitPython==3.1.44
41
- Requires-Dist: lambdapdk>=0.1.46
41
+ Requires-Dist: lambdapdk>=0.1.47
42
42
  Requires-Dist: PyGithub==2.5.0
43
43
  Requires-Dist: urllib3>=1.26.0
44
44
  Requires-Dist: fasteners==0.19
@@ -58,7 +58,7 @@ Requires-Dist: pytest==8.3.4; extra == "test"
58
58
  Requires-Dist: pytest-xdist==3.6.1; extra == "test"
59
59
  Requires-Dist: pytest-timeout==2.3.1; extra == "test"
60
60
  Requires-Dist: pytest-asyncio==0.24.0; python_version <= "3.8" and extra == "test"
61
- Requires-Dist: pytest-asyncio==0.25.2; python_version >= "3.9" and extra == "test"
61
+ Requires-Dist: pytest-asyncio==0.25.3; python_version >= "3.9" and extra == "test"
62
62
  Requires-Dist: pytest-cov==5.0.0; python_version <= "3.8" and extra == "test"
63
63
  Requires-Dist: pytest-cov==6.0.0; python_version >= "3.9" and extra == "test"
64
64
  Requires-Dist: responses==0.25.6; extra == "test"
@@ -66,7 +66,7 @@ Requires-Dist: PyVirtualDisplay==3.0; extra == "test"
66
66
  Provides-Extra: lint
67
67
  Requires-Dist: flake8==7.1.1; extra == "lint"
68
68
  Requires-Dist: tclint==0.5.0; extra == "lint"
69
- Requires-Dist: codespell==2.4.0; extra == "lint"
69
+ Requires-Dist: codespell==2.4.1; extra == "lint"
70
70
  Provides-Extra: docs
71
71
  Requires-Dist: Sphinx==8.1.3; extra == "docs"
72
72
  Requires-Dist: pip-licenses==5.0.0; extra == "docs"
@@ -195,7 +195,7 @@ python3 -m pip install -e .[docs,test] # Optional install step for generating d
195
195
  Installation instructions for all external tools can be found in the
196
196
  [External Tools](https://docs.siliconcompiler.com/en/stable/user_guide/installation.html#external-tools) section
197
197
  of the user guide. We have included shell setup scripts (Ubuntu) for most of the supported tools.
198
- See the [./setup](./setup) directory for a complete set of scripts and [./setup/_tools.json](./setup/_tools.json) for the currently recommended tool versions.
198
+ See the [./siliconcompiler/toolscripts](./siliconcompiler/toolscripts) directory for a complete set of scripts and [./siliconcompiler/toolscripts/_tools.json](./siliconcompiler/toolscripts/_tools.json) for the currently recommended tool versions.
199
199
 
200
200
  # Contributing
201
201
 
@@ -113,7 +113,7 @@ python3 -m pip install -e .[docs,test] # Optional install step for generating d
113
113
  Installation instructions for all external tools can be found in the
114
114
  [External Tools](https://docs.siliconcompiler.com/en/stable/user_guide/installation.html#external-tools) section
115
115
  of the user guide. We have included shell setup scripts (Ubuntu) for most of the supported tools.
116
- See the [./setup](./setup) directory for a complete set of scripts and [./setup/_tools.json](./setup/_tools.json) for the currently recommended tool versions.
116
+ See the [./siliconcompiler/toolscripts](./siliconcompiler/toolscripts) directory for a complete set of scripts and [./siliconcompiler/toolscripts/_tools.json](./siliconcompiler/toolscripts/_tools.json) for the currently recommended tool versions.
117
117
 
118
118
  # Contributing
119
119
 
@@ -45,7 +45,7 @@ dependencies = [
45
45
  "Pillow == 10.4.0; python_version <= '3.8'",
46
46
  "Pillow == 11.1.0; python_version >= '3.9'",
47
47
  "GitPython == 3.1.44",
48
- "lambdapdk >= 0.1.46",
48
+ "lambdapdk >= 0.1.47",
49
49
  "PyGithub == 2.5.0",
50
50
  "urllib3 >= 1.26.0", # Required for PyGithub
51
51
  "fasteners == 0.19",
@@ -106,7 +106,7 @@ test = [
106
106
  "pytest-xdist == 3.6.1",
107
107
  "pytest-timeout == 2.3.1",
108
108
  "pytest-asyncio == 0.24.0; python_version <= '3.8'",
109
- "pytest-asyncio == 0.25.2; python_version >= '3.9'",
109
+ "pytest-asyncio == 0.25.3; python_version >= '3.9'",
110
110
  "pytest-cov == 5.0.0; python_version <= '3.8'",
111
111
  "pytest-cov == 6.0.0; python_version >= '3.9'",
112
112
  "responses == 0.25.6",
@@ -115,7 +115,7 @@ test = [
115
115
  lint = [
116
116
  "flake8 == 7.1.1",
117
117
  "tclint == 0.5.0",
118
- "codespell == 2.4.0"
118
+ "codespell == 2.4.1"
119
119
  ]
120
120
  docs = [
121
121
  "Sphinx == 8.1.3",
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.29.3'
2
+ version = '0.29.4'
3
3
 
4
4
  # Default server address for remote runs, if unspecified.
5
5
  default_server = 'https://server.siliconcompiler.com'
@@ -73,16 +73,18 @@ def show_tool(tool, script):
73
73
  def _get_os_name():
74
74
  machine_info = _get_machine_info()
75
75
  system = machine_info.get('system', "").lower()
76
- distro = machine_info.get('distro', "").lower()
77
- osversion = machine_info.get('osversion', "").lower()
78
76
  if system == 'linux':
77
+ distro = machine_info.get('distro', "").lower()
79
78
  if distro == 'ubuntu':
79
+ osversion = machine_info.get('osversion', "").lower()
80
80
  version, _ = osversion.split('.')
81
81
  return f"{distro}{version}"
82
82
  elif distro == 'rocky':
83
+ osversion = machine_info.get('osversion', "").lower()
83
84
  version, _ = osversion.split('.')
84
85
  return f"rhel{version}"
85
86
  elif distro == 'rhel':
87
+ osversion = machine_info.get('osversion', "").lower()
86
88
  version, _ = osversion.split('.')
87
89
  return f"rhel{version}"
88
90
  return None
@@ -134,6 +136,10 @@ def _recommended_tool_groups(tools):
134
136
  for group, group_tools in groups.items():
135
137
  if all([tool in tools for tool in group_tools]):
136
138
  filter_groups[group] = group_tools
139
+ else:
140
+ missing = sorted([tool for tool in group_tools if tool not in tools])
141
+ filter_groups[group] = f"{group} group is not available for {_get_os_name()} " \
142
+ f"due to lack of support for the following tools: {', '.join(missing)}"
137
143
  return filter_groups
138
144
 
139
145
 
@@ -172,6 +178,11 @@ To system debugging information (this should only be used to debug):
172
178
 
173
179
  tools = _get_tools_list()
174
180
 
181
+ if _get_os_name() is None:
182
+ print("Unsupported operating system", file=sys.stderr)
183
+ print_machine_info()
184
+ return 1
185
+
175
186
  tool_choices = ChoiceOptional(tools.keys())
176
187
  parser.add_argument(
177
188
  "tool",
@@ -220,7 +231,11 @@ To system debugging information (this should only be used to debug):
220
231
  args.tool = list(args.tool)
221
232
  if args.group:
222
233
  for group in args.group:
223
- args.tool.extend(tool_groups[group])
234
+ if isinstance(tool_groups[group], str):
235
+ print(tool_groups[group], file=sys.stderr)
236
+ return 1
237
+ else:
238
+ args.tool.extend(tool_groups[group])
224
239
 
225
240
  tools_handled = set()
226
241
  for tool in args.tool:
@@ -477,6 +477,9 @@ service, provided by SiliconCompiler, is not intended to process proprietary IP.
477
477
  # Flush file to ensure everything is written
478
478
  upload_file.flush()
479
479
 
480
+ # We no longer need the collected files
481
+ shutil.rmtree(self.__chip._getcollectdir(jobname=self.__chip.get('option', 'jobname')))
482
+
480
483
  if 'pre_upload' in remote_status:
481
484
  self.__logger.info(remote_status['pre_upload']['message'])
482
485
  time.sleep(remote_status['pre_upload']['delay'])
@@ -1628,8 +1628,14 @@ def _launch_nodes(chip, nodes_to_run, processes, local_processes):
1628
1628
  # Update dashboard if the manifest changed
1629
1629
  chip._dash.update_manifest()
1630
1630
 
1631
- # TODO: exponential back-off with max?
1632
- time.sleep(0.1)
1631
+ if len(running_nodes) == 1:
1632
+ # if there is only one node running, just join the thread
1633
+ running_node = list(running_nodes.keys())[0]
1634
+ processes[running_node]["proc"].join()
1635
+ elif len(running_nodes) > 1:
1636
+ # if there are more than 1, join the first with a timeout
1637
+ running_node = list(running_nodes.keys())[0]
1638
+ processes[running_node]["proc"].join(timeout=0.1)
1633
1639
 
1634
1640
 
1635
1641
  def _process_completed_nodes(chip, processes, running_nodes):
@@ -1949,7 +1955,7 @@ def check_node_inputs(chip, step, index):
1949
1955
  step=check_step, index=check_index)
1950
1956
 
1951
1957
  if check_hash != prev_hash:
1952
- print_warning(key)
1958
+ print_warning(key, "file hash")
1953
1959
  return False
1954
1960
  else:
1955
1961
  # check timestamps on current files
@@ -1,4 +1,4 @@
1
- from siliconcompiler.tools.bambu import bambu
1
+ from siliconcompiler.tools import bambu
2
2
  from siliconcompiler.tools.bluespec import bluespec
3
3
  from siliconcompiler.tools.builtin import builtin
4
4
  from siliconcompiler.tools.chisel import chisel
@@ -194,6 +194,9 @@ def set_tool_task_lib_var(chip,
194
194
 
195
195
  values.update(chip.get(*lib_key, step=get_step, index=get_index))
196
196
 
197
+ if default_value and not check_value(values):
198
+ values = default_value
199
+
197
200
  if check_value(values):
198
201
  chip.set('tool', tool, 'task', task, 'var', param_key, values,
199
202
  step=step, index=index, clobber=False)
@@ -0,0 +1,101 @@
1
+ import re
2
+ from siliconcompiler.utils import sc_open
3
+ from siliconcompiler.tools._common.asic import get_tool_task
4
+
5
+
6
+ def __get_clock_data(chip, clock_units_multiplier=1):
7
+ step = chip.get('arg', 'step')
8
+ index = chip.get('arg', 'index')
9
+
10
+ period = None
11
+ # get clock information from sdc files
12
+ if chip.valid('input', 'constraint', 'sdc'):
13
+ for sdc in chip.find_files('input', 'constraint', 'sdc', step=step, index=index):
14
+ lines = []
15
+ with sc_open(sdc) as f:
16
+ lines = f.read().splitlines()
17
+
18
+ # collect simple variables in case clock is specified with a variable
19
+ re_var = r"[A-Za-z0-9_]+"
20
+ re_num = r"[0-9\.]+"
21
+ sdc_vars = {}
22
+ for line in lines:
23
+ tcl_variable = re.findall(fr"^\s*set\s+({re_var})\s+({re_num}|\${re_var})", line)
24
+ if tcl_variable:
25
+ var_name, var_value = tcl_variable[0]
26
+ sdc_vars[f'${var_name}'] = var_value
27
+
28
+ # TODO: handle line continuations
29
+ for line in lines:
30
+ clock_period = re.findall(fr"create_clock\s.*-period\s+({re_num}|\${re_var})",
31
+ line)
32
+ if clock_period:
33
+ convert_period = clock_period[0]
34
+ while isinstance(convert_period, str) and convert_period[0] == "$":
35
+ if convert_period in sdc_vars:
36
+ convert_period = sdc_vars[convert_period]
37
+ else:
38
+ break
39
+ if isinstance(convert_period, str) and convert_period[0] == "$":
40
+ chip.logger.warning('Unable to identify clock period from '
41
+ f'{clock_period[0]}.')
42
+ continue
43
+ else:
44
+ try:
45
+ clock_period = float(convert_period)
46
+ except TypeError:
47
+ continue
48
+
49
+ clock_period = clock_period * clock_units_multiplier
50
+
51
+ if period is None:
52
+ period = clock_period
53
+ else:
54
+ period = min(period, clock_period)
55
+
56
+ if period is not None:
57
+ return period, None, [('input', 'constraint', 'sdc')]
58
+
59
+ if period is None:
60
+ keys = []
61
+ key_pin = None
62
+ # get clock information from defined clocks
63
+ for pin in chip.getkeys('datasheet', 'pin'):
64
+ for mode in chip.getkeys('datasheet', 'pin', pin, 'type'):
65
+ if chip.get('datasheet', 'pin', pin, 'type', mode) == 'clock':
66
+ clock_period = min(chip.get('datasheet', 'pin', pin, 'tperiod', mode)) * 1e9
67
+
68
+ if period is None:
69
+ period = clock_period
70
+ keys = [
71
+ ('datasheet', 'pin', pin, 'type', mode),
72
+ ('datasheet', 'pin', pin, 'tperiod', mode)
73
+ ]
74
+ key_pin = pin
75
+ else:
76
+ if clock_period < period:
77
+ period = clock_period
78
+ keys = [
79
+ ('datasheet', 'pin', pin, 'type', mode),
80
+ ('datasheet', 'pin', pin, 'tperiod', mode)
81
+ ]
82
+ key_pin = pin
83
+ return period, key_pin, keys
84
+
85
+ return None, None, []
86
+
87
+
88
+ def add_clock_requirements(chip):
89
+ _, _, keys = __get_clock_data(chip)
90
+
91
+ step = chip.get('arg', 'step')
92
+ index = chip.get('arg', 'index')
93
+ tool, task = get_tool_task(chip, step, index)
94
+ for key in keys:
95
+ chip.add('tool', tool, 'task', task, 'require', ','.join(key),
96
+ step=step, index=index)
97
+
98
+
99
+ def get_clock_period(chip, clock_units_multiplier=1):
100
+ period, name, _ = __get_clock_data(chip, clock_units_multiplier=clock_units_multiplier)
101
+ return name, period
@@ -0,0 +1,159 @@
1
+ import os
2
+ import re
3
+ import shutil
4
+ from siliconcompiler.utils import sc_open
5
+ from siliconcompiler.tools._common.asic import set_tool_task_var, set_tool_task_lib_var, get_mainlib
6
+ from siliconcompiler.tools._common.asic_clock import get_clock_period, add_clock_requirements
7
+ from siliconcompiler.tools._common import \
8
+ add_frontend_requires, add_require_input, get_frontend_options, get_input_files, \
9
+ get_tool_task, has_input_files, record_metric
10
+
11
+
12
+ def make_docs(chip):
13
+ from siliconcompiler.targets import freepdk45_demo
14
+ chip.use(freepdk45_demo)
15
+ chip.input('<design>.c')
16
+ return setup(chip)
17
+
18
+
19
+ def setup(chip):
20
+ '''
21
+ Performs high level synthesis to generate a verilog output
22
+ '''
23
+
24
+ if not has_input_files(chip, 'input', 'hll', 'c') and \
25
+ not has_input_files(chip, 'input', 'hll', 'llvm'):
26
+ return "no files in [input,hll,c] or [input,hll,llvm]"
27
+
28
+ step = chip.get('arg', 'step')
29
+ index = chip.get('arg', 'index')
30
+ tool, task = get_tool_task(chip, step, index)
31
+
32
+ # Standard Setup
33
+ refdir = 'tools/' + tool
34
+ chip.set('tool', tool, 'exe', 'bambu')
35
+ chip.set('tool', tool, 'vswitch', '--version')
36
+ chip.set('tool', tool, 'version', '>=2024.03', clobber=False)
37
+
38
+ chip.set('tool', tool, 'task', task, 'refdir', refdir,
39
+ step=step, index=index,
40
+ package='siliconcompiler', clobber=False)
41
+
42
+ # Input/Output requirements
43
+ chip.add('tool', tool, 'task', task, 'output', chip.top() + '.v', step=step, index=index)
44
+
45
+ add_clock_requirements(chip)
46
+
47
+ # Schema requirements
48
+ add_require_input(chip, 'input', 'hll', 'c')
49
+ add_require_input(chip, 'input', 'hll', 'llvm')
50
+ add_frontend_requires(chip, ['idir', 'define'])
51
+
52
+ set_tool_task_var(chip, 'device',
53
+ schelp="Device to use during bambu synthesis")
54
+ set_tool_task_lib_var(chip, 'memorychannels', default_value=1,
55
+ schelp="Number of memory channels available")
56
+
57
+ # Require clock conversion factor, from library units to ns
58
+ mainlib = get_mainlib(chip)
59
+ chip.add('tool', tool, 'task', task, 'require',
60
+ ','.join(['library', mainlib, 'option', 'var', 'bambu_clock_multiplier']),
61
+ step=step, index=index)
62
+
63
+ set_tool_task_var(chip, 'clock_multiplier',
64
+ schelp="Clock multiplier used to convert library units to ns")
65
+
66
+
67
+ ################################
68
+ # Custom runtime options
69
+ ################################
70
+ def runtime_options(chip):
71
+ step = chip.get('arg', 'step')
72
+ index = chip.get('arg', 'index')
73
+ tool, task = get_tool_task(chip, step, index)
74
+
75
+ cmdlist = []
76
+
77
+ opts = get_frontend_options(chip, ['idir', 'define'])
78
+
79
+ for value in opts['idir']:
80
+ cmdlist.append('-I' + value)
81
+ for value in opts['define']:
82
+ cmdlist.append('-D' + value)
83
+ for value in get_input_files(chip, 'input', 'hll', 'c'):
84
+ cmdlist.append(value)
85
+ if not has_input_files(chip, 'input', 'hll', 'c'):
86
+ # Only use llvm if C is empty
87
+ for value in get_input_files(chip, 'input', 'hll', 'llvm'):
88
+ cmdlist.append(value)
89
+
90
+ cmdlist.append('--soft-float')
91
+ cmdlist.append('--memory-allocation-policy=NO_BRAM')
92
+
93
+ mem_channels = int(chip.get('tool', tool, 'task', task, 'var', 'memorychannels',
94
+ step=step, index=index)[0])
95
+ if mem_channels > 0:
96
+ cmdlist.append(f'--channels-number={mem_channels}')
97
+
98
+ mainlib = get_mainlib(chip)
99
+ clock_multiplier = float(chip.get('library', mainlib, 'option', 'var',
100
+ 'bambu_clock_multiplier')[0])
101
+ clock_name, period = get_clock_period(chip, clock_units_multiplier=clock_multiplier)
102
+ if clock_name:
103
+ cmdlist.append(f'--clock-name={clock_name}')
104
+ if period:
105
+ cmdlist.append(f'--clock-period={period}')
106
+
107
+ cmdlist.append('--disable-function-proxy')
108
+
109
+ device = chip.get('tool', tool, 'task', task, 'var', 'device',
110
+ step=step, index=index)
111
+ if device:
112
+ cmdlist.append(f'--device={device[0]}')
113
+
114
+ cmdlist.append(f'--top-fname={chip.top(step, index)}')
115
+
116
+ return cmdlist
117
+
118
+
119
+ ################################
120
+ # Post_process (post executable)
121
+ ################################
122
+ def post_process(chip):
123
+ ''' Tool specific function to run after step execution
124
+ '''
125
+ step = chip.get('arg', 'step')
126
+ index = chip.get('arg', 'index')
127
+
128
+ shutil.copy2(f'{chip.top(step, index)}.v', os.path.join('outputs', f'{chip.top()}.v'))
129
+
130
+ ff = re.compile(fr"Total number of flip-flops in function {chip.top(step, index)}: (\d+)")
131
+ area = re.compile(r"Total estimated area: (\d+)")
132
+ fmax = re.compile(r"Estimated max frequency \(MHz\): (\d+\.?\d*)")
133
+ slack = re.compile(r"Minimum slack: (\d+\.?\d*)")
134
+
135
+ log_file = f"{step}.log"
136
+ with sc_open(log_file) as log:
137
+ for line in log:
138
+ ff_match = ff.findall(line)
139
+ area_match = area.findall(line)
140
+ fmax_match = fmax.findall(line)
141
+ slack_match = slack.findall(line)
142
+ if ff_match:
143
+ record_metric(chip, step, index, "registers", int(ff_match[0]), log_file)
144
+ if area_match:
145
+ record_metric(chip, step, index, "cellarea", float(area_match[0]), log_file,
146
+ source_unit='um^2')
147
+ if fmax_match:
148
+ record_metric(chip, step, index, "fmax", float(fmax_match[0]), log_file,
149
+ source_unit='MHz')
150
+ if slack_match:
151
+ slack_ns = float(slack_match[0])
152
+ if slack_ns >= 0:
153
+ record_metric(chip, step, index, "setupwns", 0, log_file,
154
+ source_unit='ns')
155
+ else:
156
+ record_metric(chip, step, index, "setupwns", slack_ns, log_file,
157
+ source_unit='ns')
158
+ record_metric(chip, step, index, "setupslack", slack_ns, log_file,
159
+ source_unit='ns')
@@ -148,6 +148,10 @@ def extract_metrics(chip):
148
148
 
149
149
  metrics_file = "reports/metrics.json"
150
150
 
151
+ if not os.path.exists(metrics_file):
152
+ chip.logger.warning("OpenROAD metrics file is missing")
153
+ return
154
+
151
155
  def get_metric_sources(metric):
152
156
  metric_sources = [metrics_file]
153
157
  if metric in metric_reports:
@@ -572,6 +576,13 @@ def define_rsz_params(chip):
572
576
  default_value='100',
573
577
  schelp='percentage of violating nets to attempt to repair (0 - 100)')
574
578
 
579
+ set_tool_task_var(chip, param_key='rsz_skip_recover_power',
580
+ default_value=False,
581
+ schelp='skip power recovery')
582
+ set_tool_task_var(chip, param_key='rsz_recover_power',
583
+ default_value=100,
584
+ schelp='percentage of paths to attempt to recover power (0 - 100)')
585
+
575
586
  step = chip.get('arg', 'step')
576
587
  index = chip.get('arg', 'index')
577
588
  tool, task = get_tool_task(chip, step, index)
@@ -43,7 +43,6 @@ def setup(chip):
43
43
  'hold',
44
44
  'unconstrained',
45
45
  'clock_skew',
46
- 'power',
47
46
  'drv_violations',
48
47
  'fmax',
49
48
 
@@ -1,5 +1,5 @@
1
1
  from siliconcompiler.tools._common import input_provides, add_common_file, get_tool_task
2
- from siliconcompiler.tools._common.asic import set_tool_task_var
2
+ from siliconcompiler.tools._common.asic import set_tool_task_var, get_mainlib
3
3
 
4
4
  from siliconcompiler.tools.openroad._apr import setup as apr_setup
5
5
  from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
@@ -74,6 +74,8 @@ def setup(chip):
74
74
  'power'
75
75
  ])
76
76
 
77
+ mainlib = get_mainlib(chip)
78
+
77
79
  # Setup required
78
80
  for component in chip.getkeys('constraint', 'component'):
79
81
  for key in chip.getkeys('constraint', 'component', component):
@@ -92,6 +94,10 @@ def setup(chip):
92
94
  chip.add('tool', tool, 'task', task, 'require',
93
95
  ','.join(['constraint', ifp]),
94
96
  step=step, index=index)
97
+ if chip.valid('library', mainlib, 'option', 'file', 'openroad_tracks'):
98
+ chip.add('tool', tool, 'task', task, 'require',
99
+ ','.join(['library', mainlib, 'option', 'file', 'openroad_tracks']),
100
+ step=step, index=index)
95
101
 
96
102
 
97
103
  def pre_process(chip):
@@ -40,8 +40,7 @@ def setup(chip):
40
40
 
41
41
  set_reports(chip, [
42
42
  'setup',
43
- 'unconstrained',
44
- 'power'
43
+ 'unconstrained'
45
44
  ])
46
45
 
47
46
 
@@ -38,7 +38,6 @@ def setup(chip):
38
38
  set_reports(chip, [
39
39
  'setup',
40
40
  'unconstrained',
41
- 'power',
42
41
 
43
42
  # Images
44
43
  'placement_density',
@@ -91,5 +91,6 @@ if { [llength $openroad_dont_touch] > 0 } {
91
91
  # set don't touch list
92
92
  set_dont_touch $openroad_dont_touch
93
93
  }
94
- tee -file reports/dont_touch.start.rpt {report_dont_touch}
95
- tee -file reports/dont_use.start.rpt {report_dont_use}
94
+ tee -quiet -file reports/dont_touch.start.rpt {report_dont_touch}
95
+ tee -quiet -file reports/dont_use.start.rpt {report_dont_use}
96
+ tee -file reports/global_connections.start.rpt {report_global_connect}
@@ -25,6 +25,7 @@ if { [sc_cfg_tool_task_exists {file} global_connect] } {
25
25
  source $global_connect
26
26
  }
27
27
  }
28
+ tee -file reports/global_connections.rpt {report_global_connect}
28
29
 
29
30
  ###############################
30
31
  # Initialize floorplan
@@ -33,6 +33,7 @@ foreach pdnconfig [sc_cfg_tool_task_get {file} pdn_config] {
33
33
 
34
34
  lappend pdn_files $pdnconfig
35
35
  }
36
+ tee -quiet -file reports/power_grid_configuration.rpt {pdngen -report_only}
36
37
  pdngen -failed_via_report "reports/${sc_design}_pdngen_failed_vias.rpt"
37
38
 
38
39
  ###############################
@@ -20,6 +20,7 @@ set rsz_hold_slack_margin [lindex [sc_cfg_tool_task_get {var} rsz_hold_slack_mar
20
20
  set rsz_slew_margin [lindex [sc_cfg_tool_task_get {var} rsz_slew_margin] 0]
21
21
  set rsz_cap_margin [lindex [sc_cfg_tool_task_get {var} rsz_cap_margin] 0]
22
22
  set rsz_repair_tns [lindex [sc_cfg_tool_task_get {var} rsz_repair_tns] 0]
23
+ set rsz_recover_power [lindex [sc_cfg_tool_task_get {var} rsz_recover_power] 0]
23
24
 
24
25
  set repair_timing_args []
25
26
  if { [lindex [sc_cfg_tool_task_get {var} rsz_skip_pin_swap] 0] == "true" } {
@@ -77,6 +78,29 @@ if { [lindex [sc_cfg_tool_task_get var rsz_skip_hold_repair] 0] != "true" } {
77
78
  sc_set_dont_use
78
79
  }
79
80
 
81
+ if { [lindex [sc_cfg_tool_task_get var rsz_skip_recover_power] 0] != "true" } {
82
+ ###############################
83
+ # Recover power
84
+ ###############################
85
+
86
+ estimate_parasitics -placement
87
+
88
+ # Enable cells
89
+ sc_set_dont_use -hold -scanchain -multibit -report dont_use.repair_timing.power
90
+
91
+ repair_timing \
92
+ -recover_power $rsz_recover_power \
93
+ -verbose \
94
+ -setup_margin $rsz_setup_slack_margin \
95
+ -hold_margin $rsz_hold_slack_margin \
96
+ {*}$repair_timing_args
97
+
98
+ sc_detailed_placement
99
+
100
+ # Restore dont use
101
+ sc_set_dont_use
102
+ }
103
+
80
104
  global_connect
81
105
 
82
106
  # estimate for metrics
@@ -758,6 +758,7 @@ proc sc_set_dont_use { args } {
758
758
  }
759
759
 
760
760
  if { [info exists keys(-report)] } {
761
- tee -file reports/$keys(-report).rpt {report_dont_use}
761
+ puts "Dont use report: reports/$keys(-report).rpt"
762
+ tee -quiet -file reports/$keys(-report).rpt {report_dont_use}
762
763
  }
763
764
  }
@@ -56,4 +56,5 @@ if { [sc_has_input_files odb "input layout odb"] } {
56
56
  source $global_connect
57
57
  }
58
58
  }
59
+ tee -file reports/global_connections.rpt {report_global_connect}
59
60
  }