siliconcompiler 0.28.7__tar.gz → 0.28.9__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 (440) hide show
  1. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/Changes +27 -0
  2. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/PKG-INFO +4 -3
  3. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/pyproject.toml +3 -2
  4. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/_metadata.py +1 -1
  5. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/components/graph.py +11 -6
  6. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py +1 -1
  7. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py +1 -1
  8. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py +1 -1
  9. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/report.py +20 -1
  10. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/scheduler/send_messages.py +37 -33
  11. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/scheduler/validation/email_credentials.json +7 -0
  12. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/targets/fpgaflow_demo.py +6 -7
  13. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/_common/__init__.py +2 -2
  14. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/_common/asic.py +47 -0
  15. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/klayout_show.py +53 -13
  16. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/openroad.py +121 -4
  17. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_procs.tcl +9 -0
  18. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_report.tcl +19 -0
  19. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/bitstream.py +8 -2
  20. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/place.py +6 -2
  21. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/route.py +6 -2
  22. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +1 -1
  23. siliconcompiler-0.28.9/siliconcompiler/tools/vivado/scripts/sc_place.tcl +2 -0
  24. siliconcompiler-0.28.9/siliconcompiler/tools/vivado/scripts/sc_route.tcl +4 -0
  25. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/scripts/sc_run.tcl +4 -2
  26. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/syn_fpga.py +5 -1
  27. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/vivado.py +26 -10
  28. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vpr/vpr.py +11 -0
  29. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/syn_asic.tcl +3 -0
  30. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/_tools.json +2 -2
  31. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/utils/__init__.py +12 -5
  32. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/utils/showtools.py +2 -0
  33. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler.egg-info/PKG-INFO +4 -3
  34. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler.egg-info/SOURCES.txt +0 -1
  35. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler.egg-info/requires.txt +3 -2
  36. siliconcompiler-0.28.7/siliconcompiler/tools/vivado/scripts/sc_place.tcl +0 -2
  37. siliconcompiler-0.28.7/siliconcompiler/tools/vivado/scripts/sc_route.tcl +0 -4
  38. siliconcompiler-0.28.7/siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +0 -31
  39. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/.dockerignore +0 -0
  40. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/.flake8 +0 -0
  41. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/.gitattributes +0 -0
  42. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/.gitignore +0 -0
  43. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/.readthedocs.yaml +0 -0
  44. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/CONTRIBUTING.md +0 -0
  45. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/LICENSE +0 -0
  46. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/MANIFEST.in +0 -0
  47. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/README.md +0 -0
  48. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/SECURITY.md +0 -0
  49. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/scripts/.gitignore +0 -0
  50. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/scripts/profile_sc.py +0 -0
  51. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/scripts/report_library.py +0 -0
  52. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/setup.cfg +0 -0
  53. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/__init__.py +0 -0
  54. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/__main__.py +0 -0
  55. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/_common.py +0 -0
  56. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/__init__.py +0 -0
  57. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/_common.py +0 -0
  58. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/sc.py +0 -0
  59. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/sc_dashboard.py +0 -0
  60. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/sc_install.py +0 -0
  61. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/sc_issue.py +0 -0
  62. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/sc_remote.py +0 -0
  63. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/sc_server.py +0 -0
  64. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/sc_show.py +0 -0
  65. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/smake.py +0 -0
  66. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/apps/utils/summarize.py +0 -0
  67. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/checklists/__init__.py +0 -0
  68. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/checklists/oh_tapeout.py +0 -0
  69. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/core.py +0 -0
  70. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/data/RobotoMono/LICENSE.txt +0 -0
  71. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/data/RobotoMono/RobotoMono-Regular.ttf +0 -0
  72. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/data/RobotoMono/__init__.py +0 -0
  73. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/data/__init__.py +0 -0
  74. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/data/heartbeat.v +0 -0
  75. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/data/logo.png +0 -0
  76. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flowgraph.py +0 -0
  77. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/__init__.py +0 -0
  78. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/_common.py +0 -0
  79. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/asicflow.py +0 -0
  80. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/asictopflow.py +0 -0
  81. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/drcflow.py +0 -0
  82. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/dvflow.py +0 -0
  83. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/fpgaflow.py +0 -0
  84. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/generate_openroad_rcx.py +0 -0
  85. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/interposerflow.py +0 -0
  86. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/lintflow.py +0 -0
  87. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/screenshotflow.py +0 -0
  88. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/showflow.py +0 -0
  89. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/signoffflow.py +0 -0
  90. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/flows/synflow.py +0 -0
  91. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/fpgas/__init__.py +0 -0
  92. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/fpgas/lattice_ice40.py +0 -0
  93. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/fpgas/vpr_example.py +0 -0
  94. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/issue.py +0 -0
  95. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/libs/__init__.py +0 -0
  96. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/libs/asap7sc7p5t.py +0 -0
  97. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/libs/gf180mcu.py +0 -0
  98. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/libs/interposer.py +0 -0
  99. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/libs/nangate45.py +0 -0
  100. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/libs/sg13g2_stdcell.py +0 -0
  101. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/libs/sky130hd.py +0 -0
  102. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/libs/sky130io.py +0 -0
  103. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/package.py +0 -0
  104. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/pdks/__init__.py +0 -0
  105. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/pdks/asap7.py +0 -0
  106. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/pdks/freepdk45.py +0 -0
  107. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/pdks/gf180.py +0 -0
  108. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/pdks/ihp130.py +0 -0
  109. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/pdks/interposer.py +0 -0
  110. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/pdks/skywater130.py +0 -0
  111. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/__init__.py +0 -0
  112. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/client.py +0 -0
  113. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/schema.py +0 -0
  114. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server.py +0 -0
  115. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/__init__.py +0 -0
  116. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/requests/__init__.py +0 -0
  117. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/requests/cancel_job.json +0 -0
  118. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/requests/check_progress.json +0 -0
  119. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/requests/check_server.json +0 -0
  120. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/requests/delete_job.json +0 -0
  121. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/requests/get_results.json +0 -0
  122. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/requests/remote_run.json +0 -0
  123. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/responses/__init__.py +0 -0
  124. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/responses/cancel_job.json +0 -0
  125. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/responses/check_progress.json +0 -0
  126. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/responses/check_server.json +0 -0
  127. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/responses/delete_job.json +0 -0
  128. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/responses/get_results.json +0 -0
  129. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/remote/server_schema/responses/remote_run.json +0 -0
  130. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/__init__.py +0 -0
  131. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/__init__.py +0 -0
  132. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/components/__init__.py +0 -0
  133. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/components/flowgraph.py +0 -0
  134. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/layouts/__init__.py +0 -0
  135. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/layouts/_common.py +0 -0
  136. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/state.py +0 -0
  137. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/utils/__init__.py +0 -0
  138. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/utils/file_utils.py +0 -0
  139. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/dashboard/viewer.py +0 -0
  140. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/html_report.py +0 -0
  141. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/summary_image.py +0 -0
  142. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/summary_table.py +0 -0
  143. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/report/utils.py +0 -0
  144. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/scheduler/__init__.py +0 -0
  145. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/scheduler/docker_runner.py +0 -0
  146. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/scheduler/run_node.py +0 -0
  147. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/scheduler/slurm.py +0 -0
  148. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/scheduler/validation/__init__.py +0 -0
  149. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/schema/__init__.py +0 -0
  150. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/schema/schema_cfg.py +0 -0
  151. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/schema/schema_obj.py +0 -0
  152. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/schema/utils.py +0 -0
  153. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/sphinx_ext/__init__.py +0 -0
  154. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/sphinx_ext/dynamicgen.py +0 -0
  155. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/sphinx_ext/schemagen.py +0 -0
  156. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/sphinx_ext/utils.py +0 -0
  157. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/targets/__init__.py +0 -0
  158. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/targets/asap7_demo.py +0 -0
  159. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/targets/asic_demo.py +0 -0
  160. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/targets/freepdk45_demo.py +0 -0
  161. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/targets/gf180_demo.py +0 -0
  162. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/targets/ihp130_demo.py +0 -0
  163. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/targets/interposer_demo.py +0 -0
  164. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/targets/skywater130_demo.py +0 -0
  165. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/__init__.py +0 -0
  166. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/email/__init__.py +0 -0
  167. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/email/general.j2 +0 -0
  168. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/email/summary.j2 +0 -0
  169. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/issue/README.txt +0 -0
  170. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/issue/__init__.py +0 -0
  171. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/issue/run.sh +0 -0
  172. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/report/__init__.py +0 -0
  173. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/report/bootstrap.min.css +0 -0
  174. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/report/bootstrap.min.js +0 -0
  175. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/report/bootstrap_LICENSE.md +0 -0
  176. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/report/sc_report.j2 +0 -0
  177. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/slurm/__init__.py +0 -0
  178. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/slurm/run.sh +0 -0
  179. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/tcl/__init__.py +0 -0
  180. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/templates/tcl/manifest.tcl.j2 +0 -0
  181. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/__init__.py +0 -0
  182. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/_common/sdc/__init__.py +0 -0
  183. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/_common/sdc/sc_constraints.sdc +0 -0
  184. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/_common/tcl/__init__.py +0 -0
  185. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +0 -0
  186. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/bambu/__init__.py +0 -0
  187. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/bambu/bambu.py +0 -0
  188. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/bambu/convert.py +0 -0
  189. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/bluespec/__init__.py +0 -0
  190. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/bluespec/bluespec.py +0 -0
  191. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/bluespec/convert.py +0 -0
  192. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/__init__.py +0 -0
  193. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/_common.py +0 -0
  194. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/builtin.py +0 -0
  195. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/concatenate.py +0 -0
  196. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/join.py +0 -0
  197. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/maximum.py +0 -0
  198. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/minimum.py +0 -0
  199. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/mux.py +0 -0
  200. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/nop.py +0 -0
  201. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/builtin/verify.py +0 -0
  202. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/chisel/SCDriver.scala +0 -0
  203. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/chisel/__init__.py +0 -0
  204. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/chisel/build.sbt +0 -0
  205. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/chisel/chisel.py +0 -0
  206. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/chisel/convert.py +0 -0
  207. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/execute/__init__.py +0 -0
  208. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/execute/exec_input.py +0 -0
  209. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/execute/execute.py +0 -0
  210. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/genfasm/__init__.py +0 -0
  211. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/genfasm/bitstream.py +0 -0
  212. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/genfasm/genfasm.py +0 -0
  213. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/ghdl/__init__.py +0 -0
  214. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/ghdl/convert.py +0 -0
  215. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/ghdl/ghdl.py +0 -0
  216. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/icarus/__init__.py +0 -0
  217. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/icarus/compile.py +0 -0
  218. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/icarus/icarus.py +0 -0
  219. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/icepack/__init__.py +0 -0
  220. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/icepack/bitstream.py +0 -0
  221. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/icepack/icepack.py +0 -0
  222. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/__init__.py +0 -0
  223. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/convert_drc_db.py +0 -0
  224. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/drc.py +0 -0
  225. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/export.py +0 -0
  226. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/klayout.py +0 -0
  227. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/klayout_convert_drc_db.py +0 -0
  228. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/klayout_export.py +0 -0
  229. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/klayout_operations.py +0 -0
  230. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/klayout_utils.py +0 -0
  231. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/operations.py +0 -0
  232. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/screenshot.py +0 -0
  233. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/klayout/show.py +0 -0
  234. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/magic/__init__.py +0 -0
  235. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/magic/drc.py +0 -0
  236. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/magic/extspice.py +0 -0
  237. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/magic/magic.py +0 -0
  238. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/magic/sc_drc.tcl +0 -0
  239. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/magic/sc_extspice.tcl +0 -0
  240. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/magic/sc_magic.tcl +0 -0
  241. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/montage/__init__.py +0 -0
  242. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/montage/montage.py +0 -0
  243. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/montage/tile.py +0 -0
  244. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/netgen/__init__.py +0 -0
  245. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/netgen/count_lvs.py +0 -0
  246. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/netgen/lvs.py +0 -0
  247. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/netgen/netgen.py +0 -0
  248. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/netgen/sc_lvs.tcl +0 -0
  249. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/nextpnr/__init__.py +0 -0
  250. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/nextpnr/apr.py +0 -0
  251. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/nextpnr/nextpnr.py +0 -0
  252. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/__init__.py +0 -0
  253. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/cts.py +0 -0
  254. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/dfm.py +0 -0
  255. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/export.py +0 -0
  256. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/floorplan.py +0 -0
  257. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/metrics.py +0 -0
  258. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/physyn.py +0 -0
  259. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/place.py +0 -0
  260. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/rcx_bench.py +0 -0
  261. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/rcx_extract.py +0 -0
  262. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/rdlroute.py +0 -0
  263. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/route.py +0 -0
  264. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/screenshot.py +0 -0
  265. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/__init__.py +0 -0
  266. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_apr.tcl +0 -0
  267. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_cts.tcl +0 -0
  268. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +0 -0
  269. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_export.tcl +0 -0
  270. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +0 -0
  271. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +0 -0
  272. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +0 -0
  273. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_place.tcl +0 -0
  274. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +0 -0
  275. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_rcx_bench.tcl +0 -0
  276. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_rcx_extract.tcl +0 -0
  277. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +0 -0
  278. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_route.tcl +0 -0
  279. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +0 -0
  280. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_write.tcl +0 -0
  281. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +0 -0
  282. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/show.py +0 -0
  283. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/templates/__init__.py +0 -0
  284. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/openroad/templates/pex.tcl +0 -0
  285. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/opensta/__init__.py +0 -0
  286. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/opensta/report_libraries.py +0 -0
  287. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/opensta/scripts/__init__.py +0 -0
  288. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/opensta/scripts/sc_procs.tcl +0 -0
  289. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl +0 -0
  290. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/opensta/scripts/sc_timing.tcl +0 -0
  291. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/opensta/timing.py +0 -0
  292. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/slang/__init__.py +0 -0
  293. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/slang/lint.py +0 -0
  294. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/surelog/__init__.py +0 -0
  295. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/surelog/parse.py +0 -0
  296. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/surelog/templates/__init__.py +0 -0
  297. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/surelog/templates/output.v +0 -0
  298. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/sv2v/__init__.py +0 -0
  299. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/sv2v/convert.py +0 -0
  300. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/sv2v/sv2v.py +0 -0
  301. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/template/__init__.py +0 -0
  302. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/template/template.py +0 -0
  303. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/verilator/__init__.py +0 -0
  304. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/verilator/compile.py +0 -0
  305. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/verilator/lint.py +0 -0
  306. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/verilator/parse.py +0 -0
  307. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/verilator/verilator.py +0 -0
  308. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/__init__.py +0 -0
  309. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/scripts/__init__.py +0 -0
  310. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl +0 -0
  311. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vpr/__init__.py +0 -0
  312. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vpr/_json_constraint.py +0 -0
  313. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vpr/_xml_constraint.py +0 -0
  314. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vpr/place.py +0 -0
  315. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vpr/route.py +0 -0
  316. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vpr/screenshot.py +0 -0
  317. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/vpr/show.py +0 -0
  318. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/xdm/__init__.py +0 -0
  319. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/xdm/convert.py +0 -0
  320. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/xyce/__init__.py +0 -0
  321. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/xyce/simulate.py +0 -0
  322. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/__init__.py +0 -0
  323. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/lec.py +0 -0
  324. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/prepareLib.py +0 -0
  325. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/procs.tcl +0 -0
  326. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/sc_lec.tcl +0 -0
  327. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/sc_screenshot.tcl +0 -0
  328. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/sc_syn.tcl +0 -0
  329. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/screenshot.py +0 -0
  330. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/syn_asic.py +0 -0
  331. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/syn_fpga.py +0 -0
  332. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/syn_fpga.tcl +0 -0
  333. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/syn_strategies.tcl +0 -0
  334. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/techmaps/__init__.py +0 -0
  335. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v +0 -0
  336. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/templates/__init__.py +0 -0
  337. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/templates/abc.const +0 -0
  338. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/tools/yosys/yosys.py +0 -0
  339. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/_tools.py +0 -0
  340. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-chisel.sh +0 -0
  341. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-ghdl.sh +0 -0
  342. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-icarus.sh +0 -0
  343. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-klayout.sh +0 -0
  344. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-magic.sh +0 -0
  345. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-montage.sh +0 -0
  346. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-netgen.sh +0 -0
  347. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-slang.sh +0 -0
  348. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-surelog.sh +0 -0
  349. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-sv2v.sh +0 -0
  350. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-verible.sh +0 -0
  351. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-verilator.sh +0 -0
  352. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-xyce.sh +0 -0
  353. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel8/install-yosys.sh +0 -0
  354. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-chisel.sh +0 -0
  355. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-ghdl.sh +0 -0
  356. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-icarus.sh +0 -0
  357. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-klayout.sh +0 -0
  358. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-magic.sh +0 -0
  359. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-montage.sh +0 -0
  360. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-netgen.sh +0 -0
  361. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-slang.sh +0 -0
  362. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-surelog.sh +0 -0
  363. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-sv2v.sh +0 -0
  364. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-verible.sh +0 -0
  365. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-verilator.sh +0 -0
  366. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-xdm.sh +0 -0
  367. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-xyce.sh +0 -0
  368. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/rhel9/install-yosys.sh +0 -0
  369. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +0 -0
  370. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +0 -0
  371. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +0 -0
  372. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +0 -0
  373. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +0 -0
  374. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +0 -0
  375. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +0 -0
  376. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-magic.sh +0 -0
  377. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-montage.sh +0 -0
  378. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +0 -0
  379. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +0 -0
  380. {siliconcompiler-0.28.7/siliconcompiler/toolscripts/rhel8 → siliconcompiler-0.28.9/siliconcompiler/toolscripts/ubuntu20}/install-openroad.sh +0 -0
  381. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-slang.sh +0 -0
  382. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +0 -0
  383. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +0 -0
  384. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +0 -0
  385. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-verible.sh +0 -0
  386. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +0 -0
  387. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +0 -0
  388. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +0 -0
  389. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +0 -0
  390. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu20/install-yosys.sh +0 -0
  391. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +0 -0
  392. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +0 -0
  393. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +0 -0
  394. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +0 -0
  395. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +0 -0
  396. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +0 -0
  397. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +0 -0
  398. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-magic.sh +0 -0
  399. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-montage.sh +0 -0
  400. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +0 -0
  401. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +0 -0
  402. {siliconcompiler-0.28.7/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.28.9/siliconcompiler/toolscripts/ubuntu22}/install-openroad.sh +0 -0
  403. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
  404. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +0 -0
  405. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +0 -0
  406. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +0 -0
  407. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-verible.sh +0 -0
  408. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +0 -0
  409. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +0 -0
  410. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +0 -0
  411. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +0 -0
  412. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu22/install-yosys.sh +0 -0
  413. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +0 -0
  414. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +0 -0
  415. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +0 -0
  416. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +0 -0
  417. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +0 -0
  418. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +0 -0
  419. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +0 -0
  420. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-magic.sh +0 -0
  421. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-montage.sh +0 -0
  422. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +0 -0
  423. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +0 -0
  424. {siliconcompiler-0.28.7/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.28.9/siliconcompiler/toolscripts/ubuntu24}/install-openroad.sh +0 -0
  425. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-slang.sh +0 -0
  426. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +0 -0
  427. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +0 -0
  428. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +0 -0
  429. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-verible.sh +0 -0
  430. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +0 -0
  431. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +0 -0
  432. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +0 -0
  433. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +0 -0
  434. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/toolscripts/ubuntu24/install-yosys.sh +0 -0
  435. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/units.py +0 -0
  436. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/use.py +0 -0
  437. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler/utils/asic.py +0 -0
  438. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler.egg-info/dependency_links.txt +0 -0
  439. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler.egg-info/entry_points.txt +0 -0
  440. {siliconcompiler-0.28.7 → siliconcompiler-0.28.9}/siliconcompiler.egg-info/top_level.txt +0 -0
@@ -8,6 +8,33 @@ 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.9 (2024-11-27)
12
+ =========================================
13
+
14
+ **Minor:**
15
+
16
+ * Added option to limit size of emailed logs based on number of lines.
17
+ * Fixed handling of `find_files` in frontend tools
18
+ * Removed automatic error when FPGA is not loaded, as this can be handled by the tool/task drivers.
19
+
20
+ * Tools:
21
+
22
+ * vivado: update tool and task drivers to handle v2024.x and cleaned up output filenames.
23
+
24
+
25
+ SiliconCompiler 0.28.8 (2024-11-20)
26
+ =========================================
27
+
28
+ **Minor:**
29
+
30
+ * Fixed dashboard handling of graph metrics when job history contains different sets.
31
+
32
+ * Tools:
33
+
34
+ * openroad: added reporting of module cell areas.
35
+ * vpr: added options to prevent crashing in designed with dangling ports.
36
+
37
+
11
38
  SiliconCompiler 0.28.7 (2024-11-12)
12
39
  =========================================
13
40
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siliconcompiler
3
- Version: 0.28.7
3
+ Version: 0.28.9
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
@@ -25,7 +25,8 @@ Classifier: Topic :: Software Development :: Build Tools
25
25
  Requires-Python: >=3.8
26
26
  Description-Content-Type: text/markdown
27
27
  License-File: LICENSE
28
- Requires-Dist: aiohttp==3.10.10
28
+ Requires-Dist: aiohttp==3.10.11; python_version <= "3.8"
29
+ Requires-Dist: aiohttp==3.11.2; python_version >= "3.9"
29
30
  Requires-Dist: requests==2.32.3
30
31
  Requires-Dist: PyYAML==6.0.2
31
32
  Requires-Dist: pandas>=1.1.5
@@ -46,7 +47,7 @@ Requires-Dist: docker==7.1.0
46
47
  Requires-Dist: importlib_metadata; python_version < "3.10"
47
48
  Requires-Dist: sc-surelog==1.84.1
48
49
  Requires-Dist: orjson==3.10.11
49
- Requires-Dist: streamlit==1.40.0; python_full_version != "3.9.7"
50
+ Requires-Dist: streamlit==1.40.1; python_full_version != "3.9.7"
50
51
  Requires-Dist: streamlit_agraph==0.0.45; python_full_version != "3.9.7"
51
52
  Requires-Dist: streamlit-antd-components==0.3.2; python_full_version != "3.9.7"
52
53
  Requires-Dist: streamlit_javascript==0.1.5; python_full_version != "3.9.7"
@@ -32,7 +32,8 @@ classifiers = [
32
32
  ]
33
33
  requires-python = ">= 3.8"
34
34
  dependencies = [
35
- "aiohttp == 3.10.10",
35
+ "aiohttp == 3.10.11; python_version <= '3.8'",
36
+ "aiohttp == 3.11.2; python_version >= '3.9'",
36
37
  "requests == 2.32.3",
37
38
  "PyYAML == 6.0.2",
38
39
  "pandas >= 1.1.5",
@@ -55,7 +56,7 @@ dependencies = [
55
56
  "orjson == 3.10.11",
56
57
 
57
58
  # dashboard, streamlit does not support 3.9.7
58
- "streamlit == 1.40.0; python_full_version != '3.9.7'",
59
+ "streamlit == 1.40.1; python_full_version != '3.9.7'",
59
60
  "streamlit_agraph == 0.0.45; python_full_version != '3.9.7'",
60
61
  "streamlit-antd-components == 0.3.2; python_full_version != '3.9.7'",
61
62
  "streamlit_javascript == 0.1.5; python_full_version != '3.9.7'",
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.28.7'
2
+ version = '0.28.9'
3
3
 
4
4
  # Default server address for remote runs, if unspecified.
5
5
  default_server = 'https://server.siliconcompiler.com'
@@ -133,7 +133,7 @@ def graph(metrics, nodes, node_to_step_index_map, graph_number):
133
133
 
134
134
  data, metric_unit = report.get_chart_data(_get_report_chips(), metric, nodes_as_step_and_index)
135
135
  if metric_unit:
136
- y_axis_label = f'{metric}({metric_unit})'
136
+ y_axis_label = f'{metric} ({metric_unit})'
137
137
 
138
138
  # Prepare plot data
139
139
  filtered_data = {
@@ -142,7 +142,12 @@ def graph(metrics, nodes, node_to_step_index_map, graph_number):
142
142
  color_label: []
143
143
  }
144
144
 
145
- if not nodes.empty:
145
+ labels = {
146
+ "runs": state.get_key(state.GRAPH_JOBS),
147
+ "nodes": [f'{step}{index}' for step, index in data]
148
+ }
149
+
150
+ if nodes:
146
151
  # filtering through data
147
152
  for job_name in state.get_key(state.GRAPH_JOBS):
148
153
  for step, index in data:
@@ -154,7 +159,7 @@ def graph(metrics, nodes, node_to_step_index_map, graph_number):
154
159
  filtered_data[y_axis_label].append(data[(step, index)][job_name])
155
160
 
156
161
  # Setup chart
157
- x_axis = altair.X(x_axis_label, axis=altair.Axis(labelAngle=-75))
162
+ x_axis = altair.X(x_axis_label, axis=altair.Axis(labelAngle=-75), sort=labels[x_axis_label])
158
163
 
159
164
  y_axis = y_axis_label
160
165
  if log_scale and chart_type != 'bar':
@@ -183,9 +188,9 @@ def graph(metrics, nodes, node_to_step_index_map, graph_number):
183
188
  streamlit.altair_chart(chart, use_container_width=True, theme='streamlit')
184
189
 
185
190
 
186
- def viewer(metric_dataframe, node_to_step_index_map, metric_to_metric_unit_map):
187
- metrics = metric_dataframe.index.map(lambda x: metric_to_metric_unit_map[x])
188
- nodes = metric_dataframe.columns
191
+ def viewer(node_to_step_index_map):
192
+ nodes, metrics = report.get_chart_selection_options(_get_report_chips())
193
+ metrics = sorted(metrics)
189
194
 
190
195
  job_selector_col, graph_adder_col = streamlit.columns(2, gap='large')
191
196
  with job_selector_col:
@@ -91,6 +91,6 @@ def layout():
91
91
 
92
92
  if "Graphs" in tabs:
93
93
  with tabs["Graphs"]:
94
- graph.viewer(metric_dataframe, node_to_step_index_map, metric_to_metric_unit_map)
94
+ graph.viewer(node_to_step_index_map)
95
95
 
96
96
  _common.check_rerun()
@@ -112,6 +112,6 @@ def layout():
112
112
  components.file_viewer(chip, f'{chip.getworkdir()}/{chip.design}.png')
113
113
 
114
114
  if tab_selected == "Graphs":
115
- graph.viewer(metric_dataframe, node_to_step_index_map, metric_to_metric_unit_map)
115
+ graph.viewer(node_to_step_index_map)
116
116
 
117
117
  _common.check_rerun()
@@ -105,6 +105,6 @@ def layout():
105
105
  components.file_viewer(chip, f'{chip.getworkdir()}/{chip.design}.png')
106
106
 
107
107
  if tab_selected == "Graphs":
108
- graph.viewer(metric_dataframe, node_to_step_index_map, metric_to_metric_unit_map)
108
+ graph.viewer(node_to_step_index_map)
109
109
 
110
110
  _common.check_rerun()
@@ -335,9 +335,28 @@ def get_files(chip, step, index):
335
335
  return logs_and_reports
336
336
 
337
337
 
338
+ def get_chart_selection_options(chips):
339
+ '''
340
+ Returns all the nodes and metrics available in the provided chips
341
+
342
+ Args:
343
+ chips (list) : A list of dictionaries with the form
344
+ {'chip_object': chip, 'chip_name': name}.
345
+ '''
346
+ nodes = set()
347
+ metrics = set()
348
+ for chip_and_chip_name in chips:
349
+ chip = chip_and_chip_name['chip_object']
350
+ nodes_list, _, _, _, chip_metrics, _ = \
351
+ utils._collect_data(chip, format_as_string=False)
352
+ nodes.update(set([f'{step}{index}' for step, index in nodes_list]))
353
+ metrics.update(set(chip_metrics))
354
+ return nodes, metrics
355
+
356
+
338
357
  def get_chart_data(chips, metric, nodes):
339
358
  '''
340
- Returns returns a a tuple where the first element is a 2d dictionary of
359
+ Returns returns a tuple where the first element is a 2d dictionary of
341
360
  data points, following the forms {step+index: {chip_name: value}} where
342
361
  each dictionary can have many keys. The second element is a string that represents the unit.
343
362
 
@@ -81,40 +81,44 @@ def send(chip, msg_type, step, index):
81
81
  msg['To'] = ", ".join(to)
82
82
  msg['X-Entity-Ref-ID'] = uuid.uuid4().hex # keep emails from getting grouped
83
83
 
84
- if msg_type == "summary":
85
- layout_img = report_utils._find_summary_image(chip)
86
- if layout_img and os.path.isfile(layout_img):
87
- with open(layout_img, 'rb') as img_file:
88
- img_attach = MIMEApplication(img_file.read())
89
- img_attach.add_header('Content-Disposition',
90
- 'attachment',
91
- filename=os.path.basename(layout_img))
92
- msg.attach(img_attach)
93
-
94
- nodes_to_execute = get_executed_nodes(chip, flow)
95
- nodes, errors, metrics, metrics_unit, metrics_to_show, _ = \
96
- report_utils._collect_data(chip, flow=flow, flowgraph_nodes=nodes_to_execute)
97
-
98
- text_msg = get_file_template('email/summary.j2').render(
99
- design=chip.design,
100
- nodes=nodes,
101
- errors=errors,
102
- metrics=metrics,
103
- metrics_unit=metrics_unit,
104
- metric_keys=metrics_to_show)
105
- else:
106
- # Attach logs
107
- for log in (f'sc_{step}{index}.log', f'{step}.log'):
108
- log_file = f'{chip.getworkdir(step=step, index=index)}/{log}'
109
- if os.path.exists(log_file):
110
- with sc_open(log_file) as f:
111
- log_attach = MIMEApplication(f.read())
112
- log_name, _ = os.path.splitext(log)
113
- # Make attachment a txt file to avoid issues with tools not loading .log
114
- log_attach.add_header('Content-Disposition',
84
+ if cred["max_file_size"] > 0:
85
+ if msg_type == "summary":
86
+ layout_img = report_utils._find_summary_image(chip)
87
+ if layout_img and os.path.isfile(layout_img):
88
+ with open(layout_img, 'rb') as img_file:
89
+ img_attach = MIMEApplication(img_file.read())
90
+ img_attach.add_header('Content-Disposition',
115
91
  'attachment',
116
- filename=f'{log_name}.txt')
117
- msg.attach(log_attach)
92
+ filename=os.path.basename(layout_img))
93
+ msg.attach(img_attach)
94
+
95
+ nodes_to_execute = get_executed_nodes(chip, flow)
96
+ nodes, errors, metrics, metrics_unit, metrics_to_show, _ = \
97
+ report_utils._collect_data(chip, flow=flow, flowgraph_nodes=nodes_to_execute)
98
+
99
+ text_msg = get_file_template('email/summary.j2').render(
100
+ design=chip.design,
101
+ nodes=nodes,
102
+ errors=errors,
103
+ metrics=metrics,
104
+ metrics_unit=metrics_unit,
105
+ metric_keys=metrics_to_show)
106
+ else:
107
+ # Attach logs
108
+ for log in (f'sc_{step}{index}.log', f'{step}.log'):
109
+ log_file = f'{chip.getworkdir(step=step, index=index)}/{log}'
110
+ if os.path.exists(log_file):
111
+ with sc_open(log_file) as f:
112
+ file_content = f.read().splitlines()
113
+ # Limit to max_file_size
114
+ file_content = file_content[-cred["max_file_size"]:]
115
+ log_attach = MIMEApplication("\n".join(file_content))
116
+ log_name, _ = os.path.splitext(log)
117
+ # Make attachment a txt file to avoid issues with tools not loading .log
118
+ log_attach.add_header('Content-Disposition',
119
+ 'attachment',
120
+ filename=f'{log_name}.txt')
121
+ msg.attach(log_attach)
118
122
 
119
123
  records = {}
120
124
  for record in chip.getkeys('record'):
@@ -47,6 +47,13 @@
47
47
  "examples": [true],
48
48
  "type": "boolean",
49
49
  "default": true
50
+ },
51
+ "max_file_size": {
52
+ "title": "Max line in log file",
53
+ "description": "Maximum number of file lines to include in log",
54
+ "examples": [1000],
55
+ "type": "integer",
56
+ "default": 1000
50
57
  }
51
58
  },
52
59
 
@@ -16,25 +16,24 @@ def make_docs(chip):
16
16
  ####################################################
17
17
  # Target Setup
18
18
  ####################################################
19
- def setup(chip):
19
+ def setup(chip, partname=None):
20
20
  '''
21
21
  Demonstration target for running the open-source fpgaflow.
22
22
  '''
23
23
 
24
24
  # 1. Configure fpga part
25
- part_name = chip.get('fpga', 'partname')
26
- if not part_name:
25
+ if not partname:
26
+ partname = chip.get('fpga', 'partname')
27
+
28
+ if not partname:
27
29
  raise SiliconCompilerError('FPGA partname has not been set.', chip=chip)
28
30
 
29
31
  # 2. Load all available FPGAs
30
32
  chip.use(lattice_ice40)
31
33
  chip.use(vpr_example)
32
34
 
33
- if part_name not in chip.getkeys('fpga'):
34
- raise SiliconCompilerError(f'{part_name} has not been loaded', chip=chip)
35
-
36
35
  # 3. Load flow
37
- chip.use(fpgaflow, partname=part_name)
36
+ chip.use(fpgaflow, partname=partname)
38
37
 
39
38
  # 4. Select default flow
40
39
  chip.set('option', 'flow', 'fpgaflow', clobber=False)
@@ -115,17 +115,17 @@ def get_input_files(chip, *key, add_library_files=True):
115
115
  add_library_files (bool): When True, files from library keys
116
116
  will be included
117
117
  '''
118
- step = chip.get('arg', 'step')
119
- index = chip.get('arg', 'index')
120
118
 
121
119
  files = []
122
120
  for key in __get_keys(chip, *key, include_library_files=False):
121
+ step, index = __get_step_index(chip, *key)
123
122
  files.extend(chip.find_files(*key, step=step, index=index))
124
123
 
125
124
  if add_library_files:
126
125
  for item in get_libraries(chip, include_asic=False):
127
126
  lib_key = ('library', item, *key)
128
127
  if __is_key_valid(chip, *lib_key):
128
+ step, index = __get_step_index(chip, *lib_key)
129
129
  files.extend(chip.find_files(*lib_key, step=step, index=index))
130
130
 
131
131
  return __remove_duplicates(chip, files, list(key))
@@ -1,4 +1,5 @@
1
1
  from .. import _common
2
+ import json
2
3
 
3
4
 
4
5
  def get_mainlib(chip):
@@ -169,3 +170,49 @@ def get_tool_task_var(chip,
169
170
  _, value = _common.pick_key(chip, reversed(check_keys), step=step, index=index)
170
171
 
171
172
  return value
173
+
174
+
175
+ class CellArea:
176
+ def __init__(self):
177
+ self.__areas = {}
178
+
179
+ def addCell(self, name=None, module=None,
180
+ cellarea=None, cellcount=None,
181
+ macroarea=None, macrocount=None,
182
+ stdcellarea=None, stdcellcount=None):
183
+ if not name and not module:
184
+ return
185
+
186
+ if all([metric is None for metric in (
187
+ cellarea, cellcount,
188
+ macroarea, macrocount,
189
+ stdcellarea, stdcellcount)]):
190
+ return
191
+
192
+ if not name:
193
+ name = module
194
+
195
+ # ensure name is unique
196
+ check_name = name
197
+ idx = 0
198
+ while check_name in self.__areas:
199
+ check_name = f'{name}{idx}'
200
+ idx += 1
201
+ name = check_name
202
+
203
+ self.__areas[name] = {
204
+ "module": module,
205
+ "cellarea": cellarea,
206
+ "cellcount": cellcount,
207
+ "macroarea": macroarea,
208
+ "macrocount": macrocount,
209
+ "stdcellarea": stdcellarea,
210
+ "stdcellcount": stdcellcount
211
+ }
212
+
213
+ def size(self):
214
+ return len(self.__areas)
215
+
216
+ def writeReport(self, path):
217
+ with open(path, 'w') as f:
218
+ json.dump(self.__areas, f, indent=4)
@@ -3,7 +3,7 @@ import os
3
3
  import sys
4
4
 
5
5
 
6
- def show(schema, tech, input_path, output_path, screenshot=False):
6
+ def show(schema, tech, input_path, output_path, screenshot=False, report=None):
7
7
  # Extract info from manifest
8
8
  flow = schema.get('option', 'flow')
9
9
  step = schema.get('arg', 'step')
@@ -80,6 +80,14 @@ def show(schema, tech, input_path, output_path, screenshot=False):
80
80
  __screenshot(schema, layout_view, output_path)
81
81
  else:
82
82
  __screenshot_montage(schema, layout_view, xbins, ybins)
83
+ else:
84
+ if report:
85
+ rdb_id = layout_view.create_rdb(os.path.basename(report))
86
+ rdb = layout_view.rdb(rdb_id)
87
+ print(f"[INFO] reading DRC report: {report}")
88
+ rdb.load(report)
89
+
90
+ layout_view.show_rdb(rdb_id, cell_view.index())
83
91
 
84
92
 
85
93
  def __screenshot(schema, layout_view, output_path):
@@ -215,24 +223,56 @@ def main():
215
223
  if not design:
216
224
  design = schema.get('design')
217
225
 
218
- if 'show_filepath' in schema.getkeys('tool', 'klayout', 'task', task, 'var') and \
219
- schema.get('tool', 'klayout', 'task', task, 'var', 'show_filepath',
220
- step=step, index=index):
221
- sc_filename = schema.get('tool', 'klayout', 'task', task, 'var', 'show_filepath',
222
- step=step, index=index)[0]
223
- else:
224
- sc_fileext = schema.get('tool', 'klayout', 'task', task, 'var', 'show_filetype',
225
- step=step, index=index)[0]
226
- for ext in (f'{sc_fileext}.gz', sc_fileext):
227
- sc_filename = f"inputs/{design}.{ext}"
228
- if os.path.exists(sc_filename):
226
+ sc_fileext = schema.get('tool', 'klayout', 'task', task, 'var', 'show_filetype',
227
+ step=step, index=index)[0]
228
+ sc_report = None
229
+ if sc_fileext in ('lyrdb', 'ascii'):
230
+ sc_report = schema.get('tool', 'klayout', 'task', task, 'var', 'show_filepath',
231
+ step=step, index=index)[0]
232
+
233
+ sc_filename = None
234
+ for fileext in ('gds', 'oas'):
235
+ for ext in (f'{fileext}.gz', fileext):
236
+ sc_filename = f"inputs/{design}.{ext}"
237
+ if os.path.exists(sc_filename):
238
+ break
239
+ sc_filename = None
240
+ if sc_filename:
229
241
  break
230
242
 
243
+ if not sc_filename:
244
+ show_step = schema.get('arg', 'step')
245
+ if schema.valid('tool', 'klayout', 'task', task, 'var', 'show_step'):
246
+ show_index = schema.get('tool', 'klayout', 'task', task, 'var', 'show_step',
247
+ step=step, index=index)[0]
248
+ show_index = schema.get('arg', 'index')
249
+ if schema.valid('tool', 'klayout', 'task', task, 'var', 'show_index'):
250
+ show_index = schema.get('tool', 'klayout', 'task', task, 'var', 'show_index',
251
+ step=step, index=index)[0]
252
+ for fileext in ('gds', 'oas'):
253
+ if schema.valid('input', 'layout', fileext) and \
254
+ schema.get('input', 'layout', fileext, step=show_step, index=show_index):
255
+ sc_filename = schema.get('input', 'layout', fileext,
256
+ step=show_step, index=show_index)[0]
257
+ if sc_filename:
258
+ break
259
+ else:
260
+ if 'show_filepath' in schema.getkeys('tool', 'klayout', 'task', task, 'var') and \
261
+ schema.get('tool', 'klayout', 'task', task, 'var', 'show_filepath',
262
+ step=step, index=index):
263
+ sc_filename = schema.get('tool', 'klayout', 'task', task, 'var', 'show_filepath',
264
+ step=step, index=index)[0]
265
+ else:
266
+ for ext in (f'{sc_fileext}.gz', sc_fileext):
267
+ sc_filename = f"inputs/{design}.{ext}"
268
+ if os.path.exists(sc_filename):
269
+ break
270
+
231
271
  sc_exit = schema.get('tool', 'klayout', 'task', task, 'var', 'show_exit',
232
272
  step=step, index=index) == ["true"]
233
273
 
234
274
  show(schema, technology(design, schema), sc_filename, f'outputs/{design}.png',
235
- screenshot=(task == 'screenshot'))
275
+ screenshot=(task == 'screenshot'), report=sc_report)
236
276
 
237
277
  if sc_exit:
238
278
  pya.Application.instance().exit(0)
@@ -17,7 +17,8 @@ from siliconcompiler import sc_open
17
17
  from siliconcompiler import utils
18
18
  from siliconcompiler.tools._common import input_provides, add_common_file, \
19
19
  get_tool_task, record_metric
20
- from siliconcompiler.tools._common.asic import get_mainlib, set_tool_task_var, get_libraries
20
+ from siliconcompiler.tools._common.asic import get_mainlib, set_tool_task_var, get_libraries, \
21
+ CellArea
21
22
  from siliconcompiler.targets import asap7_demo
22
23
 
23
24
 
@@ -268,8 +269,12 @@ def post_process(chip):
268
269
  "timing/hold.rpt",
269
270
  "timing/hold.topN.rpt"],
270
271
  "holdpaths": ["timing/hold.topN.rpt"],
271
- "unconstrained": ["timing/unconstrained.topN.rpt"],
272
- "peakpower": [f"power/{corner}.rpt" for corner in chip.getkeys('constraint', 'timing')],
272
+ "unconstrained": ["timing/unconstrained.rpt", "timing/unconstrained.topN.rpt"],
273
+ "peakpower": [
274
+ *[f"power/{corner}.rpt" for corner in chip.getkeys('constraint', 'timing')],
275
+ *[f"images/heatmap/power_density/{corner}.png"
276
+ for corner in chip.getkeys('constraint', 'timing')]
277
+ ],
273
278
  "drvs": ["timing/drv_violators.rpt",
274
279
  "floating_nets.rpt",
275
280
  f"{chip.design}_antenna.rpt",
@@ -277,7 +282,9 @@ def post_process(chip):
277
282
  "drcs": [f"{chip.design}_drc.rpt",
278
283
  f"markers/{chip.design}.drc.rpt",
279
284
  f"markers/{chip.design}.drc.json",
280
- f"images/markers/{chip.design}.drc.png"]
285
+ f"images/markers/{chip.design}.drc.png"],
286
+ "utilization": ["images/heatmap/placement_density.png"],
287
+ "wirelength": [f"images/{chip.design}.routing.png"]
281
288
  }
282
289
  metric_reports["leakagepower"] = metric_reports["peakpower"]
283
290
 
@@ -300,6 +307,8 @@ def post_process(chip):
300
307
  chip.logger.error(f'Unable to parse metrics from OpenROAD: {e}')
301
308
  metrics = {}
302
309
 
310
+ _generate_cell_area_report(chip.top(), metrics)
311
+
303
312
  or_units = {}
304
313
  for unit, or_unit in [('time', 'run__flow__platform__time_units'),
305
314
  ('capacitance', 'run__flow__platform__capacitance_units'),
@@ -424,6 +433,114 @@ def post_process(chip):
424
433
  record_metric(chip, step, index, 'drcs', drcs, get_metric_sources('drcs'))
425
434
 
426
435
 
436
+ def _generate_cell_area_report(design, ord_metrics):
437
+ cellarea_report = CellArea()
438
+
439
+ prefix = "sc__cellarea__design__instance"
440
+
441
+ filtered_data = {}
442
+ for key, value in ord_metrics.items():
443
+ if key.startswith(prefix):
444
+ filtered_data[key[len(prefix)+2:]] = value
445
+
446
+ modules = set()
447
+ modules.add("")
448
+ for key in filtered_data.keys():
449
+ if "__in_module:" in key:
450
+ module = key[key.find("__in_module:"):]
451
+ modules.add(module)
452
+
453
+ def process_cell(group):
454
+ data = {}
455
+ for key, value in filtered_data.items():
456
+ if (group != "" and key.endswith(group)):
457
+ key = key[:key.find("__in_module:")]
458
+ data[key] = value
459
+ elif (group == "" and "__in_module" not in key):
460
+ data[key] = value
461
+
462
+ cell_type = None
463
+ cell_name = None
464
+
465
+ if not group:
466
+ cell_type = design
467
+ cell_name = design
468
+ else:
469
+ cell_type = group[len("__in_module:"):]
470
+
471
+ cellarea = None
472
+ cellcount = None
473
+
474
+ macroarea = None
475
+ macrocount = None
476
+
477
+ stdcell_types = (
478
+ 'tie_cell',
479
+ 'standard_cell',
480
+ 'buffer',
481
+ 'clock_buffer',
482
+ 'timing_repair_buffer',
483
+ 'inverter',
484
+ 'clock_inverter',
485
+ 'timing_Repair_inverter',
486
+ 'clock_gate_cell',
487
+ 'level_shifter_cell',
488
+ 'sequential_cell',
489
+ 'multi_input_combinational_cell',
490
+ 'other'
491
+ )
492
+
493
+ stdcell_info_area = []
494
+ stdcell_info_count = []
495
+ stdcellarea = None
496
+ stdcellcount = None
497
+
498
+ for key, value in data.items():
499
+ if key == 'name':
500
+ cell_name = value
501
+ elif key == 'count':
502
+ cellcount = value
503
+ elif key == 'area':
504
+ cellarea = value
505
+ elif key.startswith('count__class'):
506
+ _, cell_class = key.split(':')
507
+ if cell_class == 'macro':
508
+ macrocount = value
509
+ elif cell_class in stdcell_types:
510
+ stdcell_info_count.append(value)
511
+ elif key.startswith('area__class'):
512
+ _, cell_class = key.split(':')
513
+ if cell_class == 'macro':
514
+ macroarea = value
515
+ elif cell_class in stdcell_types:
516
+ stdcell_info_area.append(value)
517
+
518
+ if stdcell_info_count:
519
+ stdcellcount = sum(stdcell_info_count)
520
+ if stdcell_info_area:
521
+ stdcellarea = sum(stdcell_info_area)
522
+
523
+ cellarea_report.addCell(
524
+ name=cell_name,
525
+ module=cell_type,
526
+ cellarea=cellarea,
527
+ cellcount=cellcount,
528
+ macroarea=macroarea,
529
+ macrocount=macrocount,
530
+ stdcellarea=stdcellarea,
531
+ stdcellcount=stdcellcount)
532
+
533
+ if filtered_data:
534
+ return True
535
+ return False
536
+
537
+ for module in modules:
538
+ process_cell(module)
539
+
540
+ if cellarea_report.size() > 0:
541
+ cellarea_report.writeReport("reports/hierarchical_cell_area.json")
542
+
543
+
427
544
  ######
428
545
  def get_library_timing_keypaths(chip, lib):
429
546
  step = chip.get('arg', 'step')
@@ -483,3 +483,12 @@ proc sc_convert_rotation { rot } {
483
483
  default { utl::error FLW 1 "$rot not recognized" }
484
484
  }
485
485
  }
486
+
487
+ proc sc_check_version { min_required } {
488
+ set version [split [ord::openroad_version] "-"]
489
+ if { [lindex $version 0] != "v2.0" } {
490
+ return false
491
+ }
492
+
493
+ return [expr { [lindex $version 1] >= $min_required }]
494
+ }