siliconcompiler 0.28.2__tar.gz → 0.28.3__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 (424) hide show
  1. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/Changes +21 -0
  2. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/PKG-INFO +7 -6
  3. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/pyproject.toml +7 -6
  4. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/_common.py +12 -0
  5. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/_metadata.py +1 -1
  6. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/sc_dashboard.py +5 -1
  7. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/sc_install.py +61 -13
  8. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/sc_remote.py +1 -1
  9. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/core.py +39 -13
  10. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/client.py +41 -10
  11. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/report/__init__.py +1 -1
  12. siliconcompiler-0.28.2/siliconcompiler/report/streamlit_report.py → siliconcompiler-0.28.3/siliconcompiler/report/dashboard/__init__.py +47 -10
  13. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/components/__init__.py +534 -0
  14. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/components/flowgraph.py +114 -0
  15. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/components/graph.py +208 -0
  16. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/layouts/__init__.py +20 -0
  17. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/layouts/_common.py +43 -0
  18. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py +95 -0
  19. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py +114 -0
  20. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py +107 -0
  21. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/state.py +215 -0
  22. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/utils/__init__.py +73 -0
  23. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/utils/file_utils.py +120 -0
  24. siliconcompiler-0.28.3/siliconcompiler/report/dashboard/viewer.py +36 -0
  25. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/report/report.py +22 -4
  26. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/scheduler/__init__.py +43 -6
  27. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/schema/schema_obj.py +4 -2
  28. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/floorplan.py +5 -0
  29. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/openroad.py +12 -3
  30. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_cts.tcl +18 -13
  31. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +6 -1
  32. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_procs.tcl +28 -0
  33. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/_tools.json +8 -3
  34. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-ghdl.sh +25 -0
  35. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-icarus.sh +40 -0
  36. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-klayout.sh +17 -0
  37. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-magic.sh +26 -0
  38. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-montage.sh +5 -0
  39. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-netgen.sh +25 -0
  40. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-slang.sh +31 -0
  41. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-surelog.sh +32 -0
  42. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-sv2v.sh +27 -0
  43. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-verilator.sh +40 -0
  44. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-xyce.sh +64 -0
  45. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8/install-yosys.sh +23 -0
  46. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-ghdl.sh +25 -0
  47. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-icarus.sh +40 -0
  48. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-klayout.sh +17 -0
  49. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-magic.sh +26 -0
  50. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-montage.sh +5 -0
  51. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-netgen.sh +25 -0
  52. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-slang.sh +31 -0
  53. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-surelog.sh +32 -0
  54. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-sv2v.sh +27 -0
  55. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-verilator.sh +40 -0
  56. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-xdm.sh +43 -0
  57. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-xyce.sh +64 -0
  58. siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9/install-yosys.sh +23 -0
  59. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +1 -1
  60. siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +40 -0
  61. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu20}/install-yosys.sh +2 -2
  62. siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +26 -0
  63. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu22}/install-icepack.sh +1 -1
  64. siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu22/install-verible.sh +24 -0
  65. siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +40 -0
  66. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-yosys.sh +2 -2
  67. siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +26 -0
  68. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu24}/install-icepack.sh +1 -1
  69. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +2 -0
  70. siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +31 -0
  71. siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu24/install-verible.sh +24 -0
  72. siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +40 -0
  73. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu24}/install-yosys.sh +2 -2
  74. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler.egg-info/PKG-INFO +7 -6
  75. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler.egg-info/SOURCES.txt +46 -2
  76. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler.egg-info/requires.txt +6 -5
  77. siliconcompiler-0.28.2/siliconcompiler/report/streamlit_viewer.py +0 -944
  78. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/.dockerignore +0 -0
  79. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/.flake8 +0 -0
  80. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/.gitattributes +0 -0
  81. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/.gitignore +0 -0
  82. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/.readthedocs.yaml +0 -0
  83. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/CONTRIBUTING.md +0 -0
  84. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/LICENSE +0 -0
  85. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/MANIFEST.in +0 -0
  86. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/README.md +0 -0
  87. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/SECURITY.md +0 -0
  88. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/scripts/.gitignore +0 -0
  89. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/scripts/profile_sc.py +0 -0
  90. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/scripts/report_library.py +0 -0
  91. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/setup.cfg +0 -0
  92. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/__init__.py +0 -0
  93. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/__main__.py +0 -0
  94. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/__init__.py +0 -0
  95. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/_common.py +0 -0
  96. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/sc.py +0 -0
  97. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/sc_issue.py +0 -0
  98. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/sc_server.py +0 -0
  99. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/sc_show.py +0 -0
  100. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/apps/smake.py +0 -0
  101. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/checklists/__init__.py +0 -0
  102. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/checklists/oh_tapeout.py +0 -0
  103. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/data/RobotoMono/LICENSE.txt +0 -0
  104. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/data/RobotoMono/RobotoMono-Regular.ttf +0 -0
  105. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/data/RobotoMono/__init__.py +0 -0
  106. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/data/__init__.py +0 -0
  107. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/data/heartbeat.v +0 -0
  108. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/data/logo.png +0 -0
  109. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flowgraph.py +0 -0
  110. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/__init__.py +0 -0
  111. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/_common.py +0 -0
  112. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/asicflow.py +0 -0
  113. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/asictopflow.py +0 -0
  114. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/dvflow.py +0 -0
  115. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/fpgaflow.py +0 -0
  116. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/generate_openroad_rcx.py +0 -0
  117. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/lintflow.py +0 -0
  118. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/screenshotflow.py +0 -0
  119. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/showflow.py +0 -0
  120. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/signoffflow.py +0 -0
  121. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/flows/synflow.py +0 -0
  122. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/fpgas/__init__.py +0 -0
  123. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/fpgas/lattice_ice40.py +0 -0
  124. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/fpgas/vpr_example.py +0 -0
  125. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/issue.py +0 -0
  126. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/libs/__init__.py +0 -0
  127. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/libs/asap7sc7p5t.py +0 -0
  128. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/libs/gf180mcu.py +0 -0
  129. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/libs/nangate45.py +0 -0
  130. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/libs/sg13g2_stdcell.py +0 -0
  131. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/libs/sky130hd.py +0 -0
  132. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/libs/sky130io.py +0 -0
  133. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/package.py +0 -0
  134. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/pdks/__init__.py +0 -0
  135. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/pdks/asap7.py +0 -0
  136. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/pdks/freepdk45.py +0 -0
  137. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/pdks/gf180.py +0 -0
  138. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/pdks/ihp130.py +0 -0
  139. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/pdks/skywater130.py +0 -0
  140. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/__init__.py +0 -0
  141. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/schema.py +0 -0
  142. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server.py +0 -0
  143. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/__init__.py +0 -0
  144. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/requests/__init__.py +0 -0
  145. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/requests/cancel_job.json +0 -0
  146. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/requests/check_progress.json +0 -0
  147. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/requests/check_server.json +0 -0
  148. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/requests/delete_job.json +0 -0
  149. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/requests/get_results.json +0 -0
  150. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/requests/remote_run.json +0 -0
  151. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/responses/__init__.py +0 -0
  152. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/responses/cancel_job.json +0 -0
  153. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/responses/check_progress.json +0 -0
  154. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/responses/check_server.json +0 -0
  155. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/responses/delete_job.json +0 -0
  156. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/responses/get_results.json +0 -0
  157. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/remote/server_schema/responses/remote_run.json +0 -0
  158. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/report/html_report.py +0 -0
  159. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/report/summary_image.py +0 -0
  160. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/report/summary_table.py +0 -0
  161. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/report/utils.py +0 -0
  162. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/scheduler/docker_runner.py +0 -0
  163. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/scheduler/run_node.py +0 -0
  164. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/scheduler/send_messages.py +0 -0
  165. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/scheduler/slurm.py +0 -0
  166. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/scheduler/validation/__init__.py +0 -0
  167. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/scheduler/validation/email_credentials.json +0 -0
  168. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/schema/__init__.py +0 -0
  169. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/schema/schema_cfg.py +0 -0
  170. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/schema/utils.py +0 -0
  171. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/sphinx_ext/__init__.py +0 -0
  172. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/sphinx_ext/dynamicgen.py +0 -0
  173. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/sphinx_ext/schemagen.py +0 -0
  174. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/sphinx_ext/utils.py +0 -0
  175. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/targets/__init__.py +0 -0
  176. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/targets/asap7_demo.py +0 -0
  177. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/targets/asic_demo.py +0 -0
  178. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/targets/fpgaflow_demo.py +0 -0
  179. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/targets/freepdk45_demo.py +0 -0
  180. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/targets/gf180_demo.py +0 -0
  181. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/targets/ihp130_demo.py +0 -0
  182. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/targets/skywater130_demo.py +0 -0
  183. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/__init__.py +0 -0
  184. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/email/__init__.py +0 -0
  185. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/email/general.j2 +0 -0
  186. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/email/summary.j2 +0 -0
  187. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/issue/README.txt +0 -0
  188. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/issue/__init__.py +0 -0
  189. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/issue/run.sh +0 -0
  190. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/report/__init__.py +0 -0
  191. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/report/bootstrap.min.css +0 -0
  192. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/report/bootstrap.min.js +0 -0
  193. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/report/bootstrap_LICENSE.md +0 -0
  194. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/report/sc_report.j2 +0 -0
  195. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/slurm/__init__.py +0 -0
  196. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/slurm/run.sh +0 -0
  197. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/tcl/__init__.py +0 -0
  198. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/templates/tcl/manifest.tcl.j2 +0 -0
  199. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/__init__.py +0 -0
  200. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/_common/__init__.py +0 -0
  201. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/_common/asic.py +0 -0
  202. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/_common/sdc/__init__.py +0 -0
  203. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/_common/sdc/sc_constraints.sdc +0 -0
  204. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/_common/tcl/__init__.py +0 -0
  205. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +0 -0
  206. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/bambu/__init__.py +0 -0
  207. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/bambu/bambu.py +0 -0
  208. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/bambu/convert.py +0 -0
  209. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/bluespec/__init__.py +0 -0
  210. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/bluespec/bluespec.py +0 -0
  211. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/bluespec/convert.py +0 -0
  212. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/__init__.py +0 -0
  213. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/_common.py +0 -0
  214. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/builtin.py +0 -0
  215. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/concatenate.py +0 -0
  216. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/join.py +0 -0
  217. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/maximum.py +0 -0
  218. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/minimum.py +0 -0
  219. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/mux.py +0 -0
  220. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/nop.py +0 -0
  221. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/builtin/verify.py +0 -0
  222. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/chisel/SCDriver.scala +0 -0
  223. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/chisel/__init__.py +0 -0
  224. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/chisel/build.sbt +0 -0
  225. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/chisel/chisel.py +0 -0
  226. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/chisel/convert.py +0 -0
  227. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/execute/__init__.py +0 -0
  228. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/execute/exec_input.py +0 -0
  229. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/execute/execute.py +0 -0
  230. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/genfasm/__init__.py +0 -0
  231. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/genfasm/bitstream.py +0 -0
  232. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/genfasm/genfasm.py +0 -0
  233. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/ghdl/__init__.py +0 -0
  234. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/ghdl/convert.py +0 -0
  235. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/ghdl/ghdl.py +0 -0
  236. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/icarus/__init__.py +0 -0
  237. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/icarus/compile.py +0 -0
  238. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/icarus/icarus.py +0 -0
  239. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/icepack/__init__.py +0 -0
  240. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/icepack/bitstream.py +0 -0
  241. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/icepack/icepack.py +0 -0
  242. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/__init__.py +0 -0
  243. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/export.py +0 -0
  244. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/klayout.py +0 -0
  245. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/klayout_export.py +0 -0
  246. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/klayout_operations.py +0 -0
  247. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/klayout_show.py +0 -0
  248. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/klayout_utils.py +0 -0
  249. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/operations.py +0 -0
  250. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/screenshot.py +0 -0
  251. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/klayout/show.py +0 -0
  252. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/magic/__init__.py +0 -0
  253. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/magic/drc.py +0 -0
  254. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/magic/extspice.py +0 -0
  255. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/magic/magic.py +0 -0
  256. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/magic/sc_drc.tcl +0 -0
  257. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/magic/sc_extspice.tcl +0 -0
  258. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/magic/sc_magic.tcl +0 -0
  259. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/montage/__init__.py +0 -0
  260. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/montage/montage.py +0 -0
  261. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/montage/tile.py +0 -0
  262. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/netgen/__init__.py +0 -0
  263. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/netgen/count_lvs.py +0 -0
  264. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/netgen/lvs.py +0 -0
  265. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/netgen/netgen.py +0 -0
  266. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/netgen/sc_lvs.tcl +0 -0
  267. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/nextpnr/__init__.py +0 -0
  268. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/nextpnr/apr.py +0 -0
  269. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/nextpnr/nextpnr.py +0 -0
  270. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/__init__.py +0 -0
  271. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/cts.py +0 -0
  272. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/dfm.py +0 -0
  273. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/export.py +0 -0
  274. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/physyn.py +0 -0
  275. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/place.py +0 -0
  276. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/rcx_bench.py +0 -0
  277. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/rcx_extract.py +0 -0
  278. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/route.py +0 -0
  279. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/screenshot.py +0 -0
  280. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/__init__.py +0 -0
  281. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_apr.tcl +0 -0
  282. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +0 -0
  283. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_export.tcl +0 -0
  284. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +0 -0
  285. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +0 -0
  286. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_place.tcl +0 -0
  287. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +0 -0
  288. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_rcx_bench.tcl +0 -0
  289. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_rcx_extract.tcl +0 -0
  290. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_route.tcl +0 -0
  291. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +0 -0
  292. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_write.tcl +0 -0
  293. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +0 -0
  294. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/show.py +0 -0
  295. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/templates/__init__.py +0 -0
  296. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/openroad/templates/pex.tcl +0 -0
  297. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/opensta/__init__.py +0 -0
  298. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/opensta/report_libraries.py +0 -0
  299. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/opensta/scripts/__init__.py +0 -0
  300. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/opensta/scripts/sc_procs.tcl +0 -0
  301. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl +0 -0
  302. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/opensta/scripts/sc_timing.tcl +0 -0
  303. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/opensta/timing.py +0 -0
  304. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/slang/__init__.py +0 -0
  305. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/slang/lint.py +0 -0
  306. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/surelog/__init__.py +0 -0
  307. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/surelog/parse.py +0 -0
  308. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/surelog/templates/__init__.py +0 -0
  309. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/surelog/templates/output.v +0 -0
  310. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/sv2v/__init__.py +0 -0
  311. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/sv2v/convert.py +0 -0
  312. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/sv2v/sv2v.py +0 -0
  313. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/template/__init__.py +0 -0
  314. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/template/template.py +0 -0
  315. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/verilator/__init__.py +0 -0
  316. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/verilator/compile.py +0 -0
  317. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/verilator/lint.py +0 -0
  318. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/verilator/parse.py +0 -0
  319. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/verilator/verilator.py +0 -0
  320. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/__init__.py +0 -0
  321. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/bitstream.py +0 -0
  322. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/place.py +0 -0
  323. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/route.py +0 -0
  324. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/scripts/__init__.py +0 -0
  325. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +0 -0
  326. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/scripts/sc_place.tcl +0 -0
  327. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/scripts/sc_route.tcl +0 -0
  328. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/scripts/sc_run.tcl +0 -0
  329. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl +0 -0
  330. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/syn_fpga.py +0 -0
  331. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vivado/vivado.py +0 -0
  332. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vpr/__init__.py +0 -0
  333. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vpr/_json_constraint.py +0 -0
  334. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vpr/_xml_constraint.py +0 -0
  335. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vpr/place.py +0 -0
  336. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vpr/route.py +0 -0
  337. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vpr/screenshot.py +0 -0
  338. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vpr/show.py +0 -0
  339. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/vpr/vpr.py +0 -0
  340. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/xdm/__init__.py +0 -0
  341. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/xdm/convert.py +0 -0
  342. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/xyce/__init__.py +0 -0
  343. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/xyce/simulate.py +0 -0
  344. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/__init__.py +0 -0
  345. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/lec.py +0 -0
  346. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/prepareLib.py +0 -0
  347. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/sc_lec.tcl +0 -0
  348. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/sc_syn.tcl +0 -0
  349. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/syn_asic.py +0 -0
  350. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/syn_asic.tcl +0 -0
  351. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/syn_asic_fpga_shared.tcl +0 -0
  352. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/syn_fpga.py +0 -0
  353. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/syn_fpga.tcl +0 -0
  354. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/syn_strategies.tcl +0 -0
  355. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/techmaps/__init__.py +0 -0
  356. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v +0 -0
  357. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/templates/__init__.py +0 -0
  358. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/templates/abc.const +0 -0
  359. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/tools/yosys/yosys.py +0 -0
  360. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/_tools.py +0 -0
  361. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8}/install-chisel.sh +0 -0
  362. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8}/install-openroad.sh +0 -0
  363. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel8}/install-verible.sh +0 -0
  364. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9}/install-chisel.sh +0 -0
  365. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/rhel9}/install-verible.sh +0 -0
  366. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +0 -0
  367. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +0 -0
  368. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu20}/install-chisel.sh +0 -0
  369. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +0 -0
  370. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +0 -0
  371. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +0 -0
  372. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-magic.sh +0 -0
  373. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-montage.sh +0 -0
  374. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +0 -0
  375. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +0 -0
  376. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu20}/install-openroad.sh +0 -0
  377. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-slang.sh +0 -0
  378. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +0 -0
  379. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +0 -0
  380. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +0 -0
  381. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu20}/install-verible.sh +0 -0
  382. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +0 -0
  383. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +0 -0
  384. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +0 -0
  385. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +0 -0
  386. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +0 -0
  387. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +0 -0
  388. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +0 -0
  389. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +0 -0
  390. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-magic.sh +0 -0
  391. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-montage.sh +0 -0
  392. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +0 -0
  393. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +0 -0
  394. {siliconcompiler-0.28.2/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.28.3/siliconcompiler/toolscripts/ubuntu22}/install-openroad.sh +0 -0
  395. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
  396. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +0 -0
  397. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +0 -0
  398. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +0 -0
  399. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +0 -0
  400. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +0 -0
  401. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +0 -0
  402. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +0 -0
  403. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +0 -0
  404. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +0 -0
  405. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +0 -0
  406. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-magic.sh +0 -0
  407. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-montage.sh +0 -0
  408. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +0 -0
  409. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +0 -0
  410. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-slang.sh +0 -0
  411. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +0 -0
  412. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +0 -0
  413. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +0 -0
  414. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +0 -0
  415. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +0 -0
  416. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +0 -0
  417. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/units.py +0 -0
  418. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/use.py +0 -0
  419. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/utils/__init__.py +0 -0
  420. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/utils/asic.py +0 -0
  421. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler/utils/showtools.py +0 -0
  422. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler.egg-info/dependency_links.txt +0 -0
  423. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler.egg-info/entry_points.txt +0 -0
  424. {siliconcompiler-0.28.2 → siliconcompiler-0.28.3}/siliconcompiler.egg-info/top_level.txt +0 -0
@@ -8,6 +8,27 @@ 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.28.3 (2024-10-14)
12
+ =========================================
13
+
14
+ **Major:**
15
+
16
+ * Added `sc-install` utility application to help install tools on supported platforms.
17
+
18
+
19
+ **Minor:**
20
+
21
+ * Added rhel8 and rhel9 install scripts.
22
+ * Fixed bug in `sc-install` to account for different operating systems support.
23
+ * Ensure generated files `.errors` and `.warnings` are included in the metrics files.
24
+
25
+ * Tools:
26
+
27
+ * openroad: added options to control optimization (`remove_synth_buffers`, `rsz_skip_setup_repair`, and `rsz_skip_hold_repair`).
28
+ * xdm: added install script.
29
+
30
+
31
+
11
32
  SiliconCompiler 0.28.2 (2024-10-02)
12
33
  =========================================
13
34
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siliconcompiler
3
- Version: 0.28.2
3
+ Version: 0.28.3
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
@@ -12,7 +12,7 @@ Project-URL: Discussion, https://github.com/siliconcompiler/siliconcompiler/disc
12
12
  Requires-Python: >=3.8
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: aiohttp==3.10.8
15
+ Requires-Dist: aiohttp==3.10.10
16
16
  Requires-Dist: requests==2.32.3
17
17
  Requires-Dist: PyYAML==6.0.2
18
18
  Requires-Dist: pandas>=1.1.5
@@ -32,10 +32,11 @@ Requires-Dist: docker==7.1.0
32
32
  Requires-Dist: importlib_metadata; python_version < "3.10"
33
33
  Requires-Dist: sc-surelog==1.84.1
34
34
  Requires-Dist: orjson==3.10.7
35
- Requires-Dist: streamlit==1.38.0
35
+ Requires-Dist: streamlit==1.39.0
36
36
  Requires-Dist: streamlit_agraph==0.0.45
37
- Requires-Dist: streamlit_tree_select==0.0.5
37
+ Requires-Dist: streamlit-antd-components==0.3.2
38
38
  Requires-Dist: streamlit_javascript==0.1.5
39
+ Requires-Dist: streamlit-autorefresh==1.0.1
39
40
  Provides-Extra: test
40
41
  Requires-Dist: pytest==8.3.3; extra == "test"
41
42
  Requires-Dist: pytest-xdist==3.6.1; extra == "test"
@@ -45,10 +46,10 @@ Requires-Dist: pytest-cov==5.0.0; extra == "test"
45
46
  Requires-Dist: responses==0.25.3; extra == "test"
46
47
  Requires-Dist: PyVirtualDisplay==3.0; extra == "test"
47
48
  Requires-Dist: flake8==7.1.1; extra == "test"
48
- Requires-Dist: tclint==0.4.1; extra == "test"
49
+ Requires-Dist: tclint==0.4.2; extra == "test"
49
50
  Requires-Dist: codespell==2.3.0; extra == "test"
50
51
  Provides-Extra: docs
51
- Requires-Dist: Sphinx==8.0.2; extra == "docs"
52
+ Requires-Dist: Sphinx==8.1.3; extra == "docs"
52
53
  Requires-Dist: pip-licenses==5.0.0; extra == "docs"
53
54
  Requires-Dist: pydata-sphinx-theme==0.15.4; extra == "docs"
54
55
  Requires-Dist: sc-leflib>=0.2.0; extra == "docs"
@@ -17,7 +17,7 @@ description = "A compiler framework that automates translation from source code
17
17
  readme = {file = "README.md", content-type = "text/markdown"}
18
18
  requires-python = ">= 3.8"
19
19
  dependencies = [
20
- "aiohttp == 3.10.8",
20
+ "aiohttp == 3.10.10",
21
21
  "requests == 2.32.3",
22
22
  "PyYAML == 6.0.2",
23
23
  "pandas >= 1.1.5",
@@ -37,10 +37,11 @@ dependencies = [
37
37
  "importlib_metadata; python_version < '3.10'",
38
38
  "sc-surelog == 1.84.1",
39
39
  "orjson == 3.10.7",
40
- "streamlit == 1.38.0",
40
+ "streamlit == 1.39.0",
41
41
  "streamlit_agraph == 0.0.45",
42
- "streamlit_tree_select == 0.0.5",
43
- "streamlit_javascript == 0.1.5"
42
+ "streamlit-antd-components == 0.3.2",
43
+ "streamlit_javascript == 0.1.5",
44
+ "streamlit-autorefresh == 1.0.1"
44
45
  ]
45
46
  license = {text = "Apache License 2.0"}
46
47
  dynamic = ["version"]
@@ -76,11 +77,11 @@ test = [
76
77
  "responses == 0.25.3",
77
78
  "PyVirtualDisplay == 3.0",
78
79
  "flake8 == 7.1.1",
79
- "tclint == 0.4.1",
80
+ "tclint == 0.4.2",
80
81
  "codespell == 2.3.0"
81
82
  ]
82
83
  docs = [
83
- "Sphinx == 8.0.2",
84
+ "Sphinx == 8.1.3",
84
85
  "pip-licenses == 5.0.0",
85
86
  "pydata-sphinx-theme == 0.15.4",
86
87
  "sc-leflib >= 0.2.0"
@@ -33,6 +33,18 @@ class NodeStatus():
33
33
  NodeStatus.PENDING,
34
34
  )
35
35
 
36
+ def is_success(status):
37
+ return status in (
38
+ NodeStatus.SUCCESS,
39
+ NodeStatus.SKIPPED
40
+ )
41
+
42
+ def is_error(status):
43
+ return status in (
44
+ NodeStatus.ERROR,
45
+ NodeStatus.TIMEOUT
46
+ )
47
+
36
48
 
37
49
  ###############################################################################
38
50
  # Package Customization classes
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.28.2'
2
+ version = '0.28.3'
3
3
 
4
4
  # Default server address for remote runs, if unspecified.
5
5
  default_server = 'https://server.siliconcompiler.com'
@@ -82,7 +82,11 @@ To include another chip object to compare to:
82
82
  raise ValueError(f'not a valid file path : {file_path}')
83
83
  graph_chip = siliconcompiler.core.Chip(design='')
84
84
  graph_chip.read_manifest(file_path)
85
- graph_chips.append({'chip': graph_chip, 'name': name})
85
+ graph_chips.append({
86
+ 'chip': graph_chip,
87
+ 'name': name,
88
+ 'cfg_path': os.path.abspath(file_path)
89
+ })
86
90
 
87
91
  chip._dashboard(wait=True, port=switches['port'], graph_chips=graph_chips)
88
92
 
@@ -70,17 +70,46 @@ def show_tool(tool, script):
70
70
  print_header("end")
71
71
 
72
72
 
73
+ def _get_os_name():
74
+ machine_info = _get_machine_info()
75
+ system = machine_info.get('system', "").lower()
76
+ distro = machine_info.get('distro', "").lower()
77
+ osversion = machine_info.get('osversion', "").lower()
78
+ if system == 'linux':
79
+ if distro == 'ubuntu':
80
+ version, _ = osversion.split('.')
81
+ return f"{distro}{version}"
82
+ elif distro == 'rocky':
83
+ version, _ = osversion.split('.')
84
+ return f"rhel{version}"
85
+ elif distro == 'rhel':
86
+ version, _ = osversion.split('.')
87
+ return f"rhel{version}"
88
+ return None
89
+
90
+
91
+ def print_machine_info():
92
+ machine_info = _get_machine_info()
93
+ mapped_os = _get_os_name()
94
+
95
+ print("System: ", machine_info.get('system', None))
96
+ print("Distro: ", machine_info.get('distro', None))
97
+ print("Version: ", machine_info.get('osversion', None))
98
+ print("Mapped OS:", mapped_os)
99
+ print("Scripts: ", _get_tool_script_dir())
100
+
101
+
102
+ def _get_tool_script_dir():
103
+ return Path(siliconcompiler.__file__).parent / "toolscripts"
104
+
105
+
73
106
  def _get_tools_list():
74
- tools_root = Path(siliconcompiler.__file__).parent / "toolscripts"
107
+ tools_root = _get_tool_script_dir()
75
108
 
76
- machine_info = _get_machine_info()
77
109
  script_dir = None
78
- if machine_info['system'].lower() == 'linux':
79
- if machine_info['distro'].lower() == 'ubuntu':
80
- version, _ = machine_info['osversion'].split('.')
81
- script_dir = f"{machine_info['distro'].lower()}{version}"
82
- if script_dir:
83
- script_dir = tools_root / script_dir
110
+ os_dir = _get_os_name()
111
+ if os_dir:
112
+ script_dir = tools_root / os_dir
84
113
  if not script_dir.exists():
85
114
  script_dir = None
86
115
 
@@ -93,14 +122,20 @@ def _get_tools_list():
93
122
  return tools
94
123
 
95
124
 
96
- def _recommended_tool_groups():
97
- return {
125
+ def _recommended_tool_groups(tools):
126
+ groups = {
98
127
  "asic": {"surelog", "sv2v", "yosys", "openroad", "klayout"},
99
128
  "fpga": {"surelog", "sv2v", "yosys", "vpr"},
100
129
  "digital-simulation": {"verilator", "icarus"},
101
130
  "analog-simulation": {"xyce"}
102
131
  }
103
132
 
133
+ filter_groups = {}
134
+ for group, group_tools in groups.items():
135
+ if all([tool in tools for tool in group_tools]):
136
+ filter_groups[group] = group_tools
137
+ return filter_groups
138
+
104
139
 
105
140
  def main():
106
141
  progname = "sc-install"
@@ -125,6 +160,9 @@ To build tools in a different location:
125
160
 
126
161
  To show the install script:
127
162
  sc-install -show openroad
163
+
164
+ To system debugging information (this should only be used to debug):
165
+ sc-install -debug_machine
128
166
  -----------------------------------------------------------
129
167
  """
130
168
  parser = argparse.ArgumentParser(
@@ -141,11 +179,12 @@ To show the install script:
141
179
  choices=tool_choices,
142
180
  help="tool to install")
143
181
 
182
+ tool_groups = _recommended_tool_groups(tools)
144
183
  parser.add_argument(
145
184
  "-group",
146
185
  nargs="+",
147
- choices=_recommended_tool_groups().keys(),
148
- help="tool group to install")
186
+ choices=tool_groups.keys(),
187
+ help=f"tool group to install{' - not supported' if not tool_groups else ''}")
149
188
 
150
189
  parser.add_argument(
151
190
  "-prefix",
@@ -164,15 +203,24 @@ To show the install script:
164
203
  action="store_true",
165
204
  help="Show the install script and exit")
166
205
 
206
+ parser.add_argument(
207
+ "-debug_machine",
208
+ action="store_true",
209
+ help="Show information about this machine and exit")
210
+
167
211
  args = parser.parse_args()
168
212
 
213
+ if args.debug_machine:
214
+ print_machine_info()
215
+ return 0
216
+
169
217
  if not args.tool:
170
218
  args.tool = []
171
219
 
172
220
  args.tool = list(args.tool)
173
221
  if args.group:
174
222
  for group in args.group:
175
- args.tool.extend(_recommended_tool_groups()[group])
223
+ args.tool.extend(tool_groups[group])
176
224
 
177
225
  tools_handled = set()
178
226
  for tool in args.tool:
@@ -185,7 +185,7 @@ To delete a job, use:
185
185
  # If only a manifest is specified, make a 'check_progress/' request and report results:
186
186
  elif chip_cfg:
187
187
  try:
188
- check_progress(chip)
188
+ check_progress(chip, [], {})
189
189
  except SiliconCompilerError as e:
190
190
  chip.logger.error(f'{e}')
191
191
  return 1
@@ -88,6 +88,9 @@ class Chip:
88
88
  # Cache of file hashes
89
89
  self.__hashes = {}
90
90
 
91
+ # Dashboard
92
+ self._dash = None
93
+
91
94
  # Showtools
92
95
  self._showtools = {}
93
96
  for plugin in utils.get_plugins('show'):
@@ -758,7 +761,7 @@ class Chip:
758
761
  return fullstr
759
762
 
760
763
  ###########################################################################
761
- def valid(self, *keypath, default_valid=False, job=None):
764
+ def valid(self, *keypath, default_valid=False, job=None, check_complete=False):
762
765
  """
763
766
  Checks validity of a keypath.
764
767
 
@@ -770,6 +773,7 @@ class Chip:
770
773
  keypaths as a wildcard. Defaults to False.
771
774
  job (str): Jobname to use for dictionary access in place of the
772
775
  current active jobname.
776
+ check_complete (bool): Require the keypath be a complete path.
773
777
 
774
778
  Returns:
775
779
  Boolean indicating validity of keypath.
@@ -782,7 +786,10 @@ class Chip:
782
786
  >>> check = chip.valid('metric', 'foo', '0', 'tasktime', default_valid=True)
783
787
  Returns True, even if "foo" and "0" aren't in current configuration.
784
788
  """
785
- return self.schema.valid(*keypath, default_valid=default_valid, job=job)
789
+ return self.schema.valid(*keypath,
790
+ default_valid=default_valid,
791
+ job=job,
792
+ check_complete=check_complete)
786
793
 
787
794
  ###########################################################################
788
795
  def get(self, *keypath, field='value', job=None, step=None, index=None):
@@ -1123,6 +1130,9 @@ class Chip:
1123
1130
  quiet=quiet)
1124
1131
  return
1125
1132
 
1133
+ if filename is None:
1134
+ raise ValueError(f"{category} cannot process None")
1135
+
1126
1136
  # Normalize value to string in case we receive a pathlib.Path
1127
1137
  filename = str(filename)
1128
1138
 
@@ -1147,8 +1157,9 @@ class Chip:
1147
1157
  use_filetype = filetype
1148
1158
 
1149
1159
  if not use_fileset or not use_filetype:
1150
- self.logger.error(f'Unable to infer {category} fileset and/or filetype for '
1151
- f'{filename} based on file extension.')
1160
+ raise SiliconCompilerError(
1161
+ f'Unable to infer {category} fileset and/or filetype for '
1162
+ f'{filename} based on file extension.')
1152
1163
  elif not quiet:
1153
1164
  if not fileset and not filetype:
1154
1165
  self.logger.info(f'{filename} inferred as {use_fileset}/{use_filetype}')
@@ -2710,18 +2721,25 @@ class Chip:
2710
2721
  >>> chip._dashboard()
2711
2722
  Opens a sesison of the dashboard.
2712
2723
  '''
2713
- dash = Dashboard(self, port=port, graph_chips=graph_chips)
2714
- dash.open_dashboard()
2724
+ if self._dash:
2725
+ # Remove previous dashboard
2726
+ self._dash.stop()
2727
+ self._dash = None
2728
+
2729
+ self._dash = Dashboard(self, port=port, graph_chips=graph_chips)
2730
+ self._dash.open_dashboard()
2731
+
2715
2732
  if wait:
2716
2733
  try:
2717
- dash.wait()
2734
+ self._dash.wait()
2718
2735
  except KeyboardInterrupt:
2719
- dash._sleep()
2736
+ self._dash._sleep()
2720
2737
  finally:
2721
- dash.stop()
2738
+ self._dash.stop()
2739
+ self._dash = None
2722
2740
  return None
2723
2741
 
2724
- return dash
2742
+ return self._dash
2725
2743
 
2726
2744
  ###########################################################################
2727
2745
  def summary(self, show_all_indices=False, generate_image=True, generate_html=True):
@@ -2761,8 +2779,8 @@ class Chip:
2761
2779
  work_dir = self.getworkdir()
2762
2780
  if os.path.isdir(work_dir):
2763
2781
  # Mark file paths where the reports can be found if they were generated.
2764
- results_html = os.path.join(work_dir, 'report.html')
2765
2782
  results_img = os.path.join(work_dir, f'{self.design}.png')
2783
+ results_html = os.path.join(work_dir, 'report.html')
2766
2784
 
2767
2785
  if generate_image:
2768
2786
  _generate_summary_image(self, results_img)
@@ -2770,13 +2788,18 @@ class Chip:
2770
2788
  if generate_html:
2771
2789
  _generate_html_report(self, flow, nodes_to_execute, results_html)
2772
2790
 
2791
+ # dashboard does not generate any data
2792
+ self.logger.info(f'Dashboard at "sc-dashboard -cfg {work_dir}/{self.design}.pkg.json"')
2793
+
2773
2794
  # Try to open the results and layout only if '-nodisplay' is not set.
2774
- # Priority: PNG, PDF, HTML.
2775
- if (not self.get('option', 'nodisplay')):
2795
+ # Priority: PNG > HTML > dashboard.
2796
+ if not self.get('option', 'nodisplay'):
2776
2797
  if os.path.isfile(results_img):
2777
2798
  _open_summary_image(results_img)
2778
2799
  elif os.path.isfile(results_html):
2779
2800
  _open_html_report(self, results_html)
2801
+ else:
2802
+ self._dashboard(wait=False)
2780
2803
 
2781
2804
  ###########################################################################
2782
2805
  def clock(self, pin, period, jitter=0, mode='global'):
@@ -3273,6 +3296,9 @@ class Chip:
3273
3296
  # Modules are not serializable, so save without cache
3274
3297
  attributes['_showtools'] = {}
3275
3298
 
3299
+ # Dashboard is not serializable
3300
+ attributes['_dash'] = None
3301
+
3276
3302
  # We have to remove the chip's logger before serializing the object
3277
3303
  # since the logger object is not serializable.
3278
3304
  del attributes['logger']
@@ -178,7 +178,7 @@ def _log_truncated_stats(chip, status, nodes_with_status, nodes_to_print):
178
178
 
179
179
 
180
180
  ###################################
181
- def _process_progress_info(chip, progress_info, nodes_to_print=3):
181
+ def _process_progress_info(chip, progress_info, recorded_nodes, all_nodes, nodes_to_print=3):
182
182
  '''
183
183
  Helper method to log information about a remote run's progress,
184
184
  based on information returned from a 'check_progress/' call.
@@ -201,6 +201,11 @@ def _process_progress_info(chip, progress_info, nodes_to_print=3):
201
201
  # collect completed
202
202
  completed.append(node)
203
203
 
204
+ if node in all_nodes:
205
+ step, index = all_nodes[node]
206
+ if (step, index) not in recorded_nodes:
207
+ chip.set('record', 'status', status, step=step, index=index)
208
+
204
209
  nodes_to_log = {key: nodes_to_log[key] for key in sorted(nodes_to_log.keys())}
205
210
 
206
211
  # Log information about the job's progress.
@@ -360,11 +365,32 @@ def __remote_run_loop(chip, check_interval):
360
365
  completed = []
361
366
  result_procs = []
362
367
 
368
+ recorded = []
369
+
363
370
  for step, index in nodes_to_execute(chip):
364
371
  if SCNodeStatus.is_done(chip.get('record', 'status', step=step, index=index)):
365
372
  continue
366
373
  all_nodes[f'{step}{index}'] = (step, index)
367
374
 
375
+ def import_manifests():
376
+ changed = False
377
+ for step, index in all_nodes.values():
378
+ if (step, index) in recorded:
379
+ continue
380
+
381
+ manifest = os.path.join(chip.getworkdir(step=step, index=index),
382
+ 'outputs',
383
+ f'{chip.design}.pkg.json')
384
+ if os.path.exists(manifest):
385
+ try:
386
+ chip.schema.read_journal(manifest)
387
+ recorded.append((step, index))
388
+ changed = True
389
+ except: # noqa E722
390
+ # Import may fail if file is still getting written
391
+ pass
392
+ return changed
393
+
368
394
  def schedule_download(node):
369
395
  node_proc = multiprocessor.Process(target=fetch_results,
370
396
  args=(chip, node))
@@ -376,7 +402,12 @@ def __remote_run_loop(chip, check_interval):
376
402
 
377
403
  while is_busy:
378
404
  time.sleep(check_interval)
379
- new_completed, is_busy = check_progress(chip)
405
+ import_manifests()
406
+ new_completed, is_busy = check_progress(chip, recorded, all_nodes)
407
+
408
+ if chip._dash:
409
+ chip._dash.update_manifest()
410
+
380
411
  nodes_to_fetch = []
381
412
  for node in new_completed:
382
413
  if node not in completed:
@@ -400,26 +431,26 @@ def __remote_run_loop(chip, check_interval):
400
431
  proc.join()
401
432
 
402
433
  # Read in node manifests
403
- for step, index in all_nodes.values():
404
- manifest = os.path.join(chip.getworkdir(step=step, index=index),
405
- 'outputs',
406
- f'{chip.design}.pkg.json')
407
- if os.path.exists(manifest):
408
- chip.schema.read_journal(manifest)
434
+ import_manifests()
409
435
 
410
436
  # Un-set the 'remote' option to avoid from/to-based summary/show errors
411
437
  chip.unset('option', 'remote')
412
438
 
439
+ if chip._dash:
440
+ chip._dash.update_manifest()
441
+
413
442
 
414
443
  ###################################
415
- def check_progress(chip):
444
+ def check_progress(chip, recorded_nodes, all_nodes):
416
445
  try:
417
446
  is_busy_info = is_job_busy(chip)
418
447
  is_busy = is_busy_info['busy']
419
448
  completed = []
420
449
  if is_busy:
421
450
  completed = _process_progress_info(chip,
422
- is_busy_info)
451
+ is_busy_info,
452
+ recorded_nodes,
453
+ all_nodes)
423
454
  return completed, is_busy
424
455
  except Exception as e:
425
456
  # Sometimes an exception is raised if the request library cannot
@@ -1,7 +1,7 @@
1
1
  from .summary_image import _generate_summary_image, _open_summary_image
2
2
  from .html_report import _generate_html_report, _open_html_report
3
3
  from .summary_table import _show_summary_table
4
- from .streamlit_report import Dashboard
4
+ from .dashboard import Dashboard
5
5
 
6
6
  __all__ = [
7
7
  "_generate_summary_image",
@@ -10,11 +10,20 @@ import multiprocessing
10
10
  import subprocess
11
11
  import atexit
12
12
  import shutil
13
+ import fasteners
14
+ import signal
15
+
16
+ from siliconcompiler.report.dashboard import utils
13
17
 
14
18
 
15
19
  class Dashboard():
16
20
  __port = 8501
17
21
 
22
+ @staticmethod
23
+ def __signal_handler(signal, frame):
24
+ # used to avoid issues during shutdown
25
+ pass
26
+
18
27
  def __init__(self, chip, port=None, graph_chips=None):
19
28
  if not port:
20
29
  port = Dashboard.__port
@@ -24,16 +33,18 @@ class Dashboard():
24
33
  self.__directory = tempfile.mkdtemp(prefix='sc_dashboard_',
25
34
  suffix=f'_{self.__chip.design}')
26
35
  self.__manifest = os.path.join(self.__directory, 'manifest.json')
36
+ self.__manifest_lock = os.path.join(self.__directory, 'manifest.lock')
27
37
  self.__port = port
28
38
  dirname = os.path.dirname(__file__)
29
- self.__streamlit_file = os.path.join(dirname, 'streamlit_viewer.py')
39
+ self.__streamlit_file = os.path.join(dirname, 'viewer.py')
30
40
 
31
41
  self.__streamlit_args = [
32
42
  ("browser.gatherUsageStats", False),
33
43
  ("browser.serverPort", self.__port),
34
44
  ("logger.level", 'error'),
35
45
  ("runner.fastReruns", True),
36
- ("server.port", self.__port)
46
+ ("server.port", self.__port),
47
+ ("client.toolbarMode", "viewer")
37
48
  ]
38
49
 
39
50
  # pass in a json object called __graph_chips
@@ -42,20 +53,33 @@ class Dashboard():
42
53
 
43
54
  # use of list is to preserve order
44
55
  self.__graph_chips = []
45
- self.__graph_chips_names = []
56
+ graph_chips_config = []
46
57
  if graph_chips:
47
58
  for chip_object_and_name in graph_chips:
48
59
  chip_file_path = \
49
60
  os.path.join(self.__directory,
50
61
  f"{chip_object_and_name['name']}.json")
51
- self.__graph_chips.append({'chip': chip_object_and_name['chip'],
52
- 'name': chip_file_path})
53
- self.__graph_chips_names.append(chip_file_path)
54
-
55
- self.__config = {"manifest": self.__manifest,
56
- "graph_chips": self.__graph_chips_names}
62
+ self.__graph_chips.append({
63
+ 'chip': chip_object_and_name['chip'],
64
+ 'name': chip_file_path
65
+ })
66
+ graph_chips_config.append({
67
+ "path": chip_file_path,
68
+ "cwd": utils.get_chip_cwd(
69
+ chip_object_and_name['chip'],
70
+ chip_object_and_name['cfg_path'])
71
+ })
72
+
73
+ self.__config = {
74
+ "manifest": self.__manifest,
75
+ "lock": self.__manifest_lock,
76
+ "graph_chips": graph_chips_config
77
+ }
57
78
 
58
79
  self.__sleep_time = 0.5
80
+ self.__signal_handler = None
81
+
82
+ self.__lock = fasteners.InterProcessLock(self.__manifest_lock)
59
83
 
60
84
  atexit.register(self.__cleanup)
61
85
 
@@ -70,10 +94,19 @@ class Dashboard():
70
94
  self.__dashboard = multiprocessing.Process(
71
95
  target=self._run_streamlit_bootstrap)
72
96
 
97
+ self.__signal_handler = signal.signal(signal.SIGINT, Dashboard.__signal_handler)
98
+
73
99
  self.__dashboard.start()
74
100
 
75
101
  def update_manifest(self):
76
- self.__chip.write_manifest(self.__manifest)
102
+ if not self.__manifest:
103
+ return
104
+
105
+ new_file = f"{self.__manifest}.new.json"
106
+ self.__chip.write_manifest(new_file)
107
+
108
+ with self.__lock:
109
+ shutil.move(new_file, self.__manifest)
77
110
 
78
111
  def update_graph_manifests(self):
79
112
  for chip_object_and_name in self.__graph_chips:
@@ -103,8 +136,12 @@ class Dashboard():
103
136
  self.__dashboard.terminate()
104
137
  self._sleep()
105
138
 
139
+ if self.__signal_handler:
140
+ signal.signal(signal.SIGINT, self.__signal_handler)
141
+
106
142
  self.__dashboard = None
107
143
  self.__manifest = None
144
+ self.__signal_handler = None
108
145
 
109
146
  def wait(self):
110
147
  self.__dashboard.join()