siliconcompiler 0.28.7__tar.gz → 0.28.8__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 (438) hide show
  1. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/Changes +13 -0
  2. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/PKG-INFO +4 -3
  3. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/pyproject.toml +3 -2
  4. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/_metadata.py +1 -1
  5. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/components/graph.py +11 -6
  6. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py +1 -1
  7. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py +1 -1
  8. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py +1 -1
  9. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/report.py +20 -1
  10. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/_common/asic.py +47 -0
  11. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/klayout_show.py +53 -13
  12. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/openroad.py +121 -4
  13. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_procs.tcl +9 -0
  14. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_report.tcl +19 -0
  15. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vpr/vpr.py +6 -0
  16. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/syn_asic.tcl +3 -0
  17. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/_tools.json +1 -1
  18. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/utils/__init__.py +12 -5
  19. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/utils/showtools.py +2 -0
  20. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler.egg-info/PKG-INFO +4 -3
  21. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler.egg-info/SOURCES.txt +0 -1
  22. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler.egg-info/requires.txt +3 -2
  23. siliconcompiler-0.28.7/siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +0 -31
  24. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/.dockerignore +0 -0
  25. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/.flake8 +0 -0
  26. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/.gitattributes +0 -0
  27. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/.gitignore +0 -0
  28. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/.readthedocs.yaml +0 -0
  29. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/CONTRIBUTING.md +0 -0
  30. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/LICENSE +0 -0
  31. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/MANIFEST.in +0 -0
  32. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/README.md +0 -0
  33. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/SECURITY.md +0 -0
  34. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/scripts/.gitignore +0 -0
  35. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/scripts/profile_sc.py +0 -0
  36. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/scripts/report_library.py +0 -0
  37. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/setup.cfg +0 -0
  38. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/__init__.py +0 -0
  39. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/__main__.py +0 -0
  40. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/_common.py +0 -0
  41. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/__init__.py +0 -0
  42. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/_common.py +0 -0
  43. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/sc.py +0 -0
  44. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/sc_dashboard.py +0 -0
  45. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/sc_install.py +0 -0
  46. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/sc_issue.py +0 -0
  47. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/sc_remote.py +0 -0
  48. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/sc_server.py +0 -0
  49. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/sc_show.py +0 -0
  50. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/smake.py +0 -0
  51. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/apps/utils/summarize.py +0 -0
  52. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/checklists/__init__.py +0 -0
  53. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/checklists/oh_tapeout.py +0 -0
  54. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/core.py +0 -0
  55. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/data/RobotoMono/LICENSE.txt +0 -0
  56. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/data/RobotoMono/RobotoMono-Regular.ttf +0 -0
  57. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/data/RobotoMono/__init__.py +0 -0
  58. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/data/__init__.py +0 -0
  59. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/data/heartbeat.v +0 -0
  60. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/data/logo.png +0 -0
  61. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flowgraph.py +0 -0
  62. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/__init__.py +0 -0
  63. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/_common.py +0 -0
  64. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/asicflow.py +0 -0
  65. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/asictopflow.py +0 -0
  66. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/drcflow.py +0 -0
  67. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/dvflow.py +0 -0
  68. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/fpgaflow.py +0 -0
  69. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/generate_openroad_rcx.py +0 -0
  70. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/interposerflow.py +0 -0
  71. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/lintflow.py +0 -0
  72. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/screenshotflow.py +0 -0
  73. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/showflow.py +0 -0
  74. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/signoffflow.py +0 -0
  75. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/flows/synflow.py +0 -0
  76. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/fpgas/__init__.py +0 -0
  77. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/fpgas/lattice_ice40.py +0 -0
  78. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/fpgas/vpr_example.py +0 -0
  79. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/issue.py +0 -0
  80. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/libs/__init__.py +0 -0
  81. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/libs/asap7sc7p5t.py +0 -0
  82. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/libs/gf180mcu.py +0 -0
  83. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/libs/interposer.py +0 -0
  84. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/libs/nangate45.py +0 -0
  85. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/libs/sg13g2_stdcell.py +0 -0
  86. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/libs/sky130hd.py +0 -0
  87. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/libs/sky130io.py +0 -0
  88. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/package.py +0 -0
  89. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/pdks/__init__.py +0 -0
  90. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/pdks/asap7.py +0 -0
  91. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/pdks/freepdk45.py +0 -0
  92. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/pdks/gf180.py +0 -0
  93. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/pdks/ihp130.py +0 -0
  94. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/pdks/interposer.py +0 -0
  95. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/pdks/skywater130.py +0 -0
  96. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/__init__.py +0 -0
  97. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/client.py +0 -0
  98. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/schema.py +0 -0
  99. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server.py +0 -0
  100. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/__init__.py +0 -0
  101. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/requests/__init__.py +0 -0
  102. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/requests/cancel_job.json +0 -0
  103. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/requests/check_progress.json +0 -0
  104. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/requests/check_server.json +0 -0
  105. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/requests/delete_job.json +0 -0
  106. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/requests/get_results.json +0 -0
  107. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/requests/remote_run.json +0 -0
  108. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/responses/__init__.py +0 -0
  109. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/responses/cancel_job.json +0 -0
  110. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/responses/check_progress.json +0 -0
  111. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/responses/check_server.json +0 -0
  112. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/responses/delete_job.json +0 -0
  113. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/responses/get_results.json +0 -0
  114. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/remote/server_schema/responses/remote_run.json +0 -0
  115. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/__init__.py +0 -0
  116. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/__init__.py +0 -0
  117. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/components/__init__.py +0 -0
  118. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/components/flowgraph.py +0 -0
  119. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/layouts/__init__.py +0 -0
  120. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/layouts/_common.py +0 -0
  121. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/state.py +0 -0
  122. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/utils/__init__.py +0 -0
  123. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/utils/file_utils.py +0 -0
  124. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/dashboard/viewer.py +0 -0
  125. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/html_report.py +0 -0
  126. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/summary_image.py +0 -0
  127. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/summary_table.py +0 -0
  128. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/report/utils.py +0 -0
  129. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/scheduler/__init__.py +0 -0
  130. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/scheduler/docker_runner.py +0 -0
  131. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/scheduler/run_node.py +0 -0
  132. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/scheduler/send_messages.py +0 -0
  133. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/scheduler/slurm.py +0 -0
  134. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/scheduler/validation/__init__.py +0 -0
  135. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/scheduler/validation/email_credentials.json +0 -0
  136. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/schema/__init__.py +0 -0
  137. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/schema/schema_cfg.py +0 -0
  138. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/schema/schema_obj.py +0 -0
  139. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/schema/utils.py +0 -0
  140. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/sphinx_ext/__init__.py +0 -0
  141. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/sphinx_ext/dynamicgen.py +0 -0
  142. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/sphinx_ext/schemagen.py +0 -0
  143. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/sphinx_ext/utils.py +0 -0
  144. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/targets/__init__.py +0 -0
  145. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/targets/asap7_demo.py +0 -0
  146. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/targets/asic_demo.py +0 -0
  147. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/targets/fpgaflow_demo.py +0 -0
  148. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/targets/freepdk45_demo.py +0 -0
  149. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/targets/gf180_demo.py +0 -0
  150. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/targets/ihp130_demo.py +0 -0
  151. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/targets/interposer_demo.py +0 -0
  152. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/targets/skywater130_demo.py +0 -0
  153. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/__init__.py +0 -0
  154. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/email/__init__.py +0 -0
  155. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/email/general.j2 +0 -0
  156. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/email/summary.j2 +0 -0
  157. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/issue/README.txt +0 -0
  158. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/issue/__init__.py +0 -0
  159. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/issue/run.sh +0 -0
  160. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/report/__init__.py +0 -0
  161. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/report/bootstrap.min.css +0 -0
  162. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/report/bootstrap.min.js +0 -0
  163. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/report/bootstrap_LICENSE.md +0 -0
  164. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/report/sc_report.j2 +0 -0
  165. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/slurm/__init__.py +0 -0
  166. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/slurm/run.sh +0 -0
  167. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/tcl/__init__.py +0 -0
  168. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/templates/tcl/manifest.tcl.j2 +0 -0
  169. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/__init__.py +0 -0
  170. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/_common/__init__.py +0 -0
  171. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/_common/sdc/__init__.py +0 -0
  172. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/_common/sdc/sc_constraints.sdc +0 -0
  173. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/_common/tcl/__init__.py +0 -0
  174. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +0 -0
  175. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/bambu/__init__.py +0 -0
  176. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/bambu/bambu.py +0 -0
  177. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/bambu/convert.py +0 -0
  178. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/bluespec/__init__.py +0 -0
  179. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/bluespec/bluespec.py +0 -0
  180. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/bluespec/convert.py +0 -0
  181. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/__init__.py +0 -0
  182. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/_common.py +0 -0
  183. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/builtin.py +0 -0
  184. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/concatenate.py +0 -0
  185. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/join.py +0 -0
  186. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/maximum.py +0 -0
  187. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/minimum.py +0 -0
  188. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/mux.py +0 -0
  189. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/nop.py +0 -0
  190. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/builtin/verify.py +0 -0
  191. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/chisel/SCDriver.scala +0 -0
  192. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/chisel/__init__.py +0 -0
  193. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/chisel/build.sbt +0 -0
  194. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/chisel/chisel.py +0 -0
  195. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/chisel/convert.py +0 -0
  196. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/execute/__init__.py +0 -0
  197. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/execute/exec_input.py +0 -0
  198. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/execute/execute.py +0 -0
  199. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/genfasm/__init__.py +0 -0
  200. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/genfasm/bitstream.py +0 -0
  201. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/genfasm/genfasm.py +0 -0
  202. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/ghdl/__init__.py +0 -0
  203. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/ghdl/convert.py +0 -0
  204. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/ghdl/ghdl.py +0 -0
  205. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/icarus/__init__.py +0 -0
  206. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/icarus/compile.py +0 -0
  207. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/icarus/icarus.py +0 -0
  208. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/icepack/__init__.py +0 -0
  209. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/icepack/bitstream.py +0 -0
  210. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/icepack/icepack.py +0 -0
  211. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/__init__.py +0 -0
  212. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/convert_drc_db.py +0 -0
  213. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/drc.py +0 -0
  214. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/export.py +0 -0
  215. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/klayout.py +0 -0
  216. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/klayout_convert_drc_db.py +0 -0
  217. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/klayout_export.py +0 -0
  218. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/klayout_operations.py +0 -0
  219. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/klayout_utils.py +0 -0
  220. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/operations.py +0 -0
  221. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/screenshot.py +0 -0
  222. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/klayout/show.py +0 -0
  223. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/magic/__init__.py +0 -0
  224. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/magic/drc.py +0 -0
  225. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/magic/extspice.py +0 -0
  226. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/magic/magic.py +0 -0
  227. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/magic/sc_drc.tcl +0 -0
  228. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/magic/sc_extspice.tcl +0 -0
  229. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/magic/sc_magic.tcl +0 -0
  230. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/montage/__init__.py +0 -0
  231. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/montage/montage.py +0 -0
  232. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/montage/tile.py +0 -0
  233. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/netgen/__init__.py +0 -0
  234. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/netgen/count_lvs.py +0 -0
  235. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/netgen/lvs.py +0 -0
  236. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/netgen/netgen.py +0 -0
  237. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/netgen/sc_lvs.tcl +0 -0
  238. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/nextpnr/__init__.py +0 -0
  239. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/nextpnr/apr.py +0 -0
  240. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/nextpnr/nextpnr.py +0 -0
  241. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/__init__.py +0 -0
  242. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/cts.py +0 -0
  243. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/dfm.py +0 -0
  244. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/export.py +0 -0
  245. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/floorplan.py +0 -0
  246. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/metrics.py +0 -0
  247. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/physyn.py +0 -0
  248. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/place.py +0 -0
  249. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/rcx_bench.py +0 -0
  250. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/rcx_extract.py +0 -0
  251. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/rdlroute.py +0 -0
  252. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/route.py +0 -0
  253. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/screenshot.py +0 -0
  254. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/__init__.py +0 -0
  255. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_apr.tcl +0 -0
  256. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_cts.tcl +0 -0
  257. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +0 -0
  258. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_export.tcl +0 -0
  259. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +0 -0
  260. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +0 -0
  261. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +0 -0
  262. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_place.tcl +0 -0
  263. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +0 -0
  264. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_rcx_bench.tcl +0 -0
  265. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_rcx_extract.tcl +0 -0
  266. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +0 -0
  267. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_route.tcl +0 -0
  268. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +0 -0
  269. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_write.tcl +0 -0
  270. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +0 -0
  271. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/show.py +0 -0
  272. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/templates/__init__.py +0 -0
  273. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/openroad/templates/pex.tcl +0 -0
  274. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/opensta/__init__.py +0 -0
  275. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/opensta/report_libraries.py +0 -0
  276. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/opensta/scripts/__init__.py +0 -0
  277. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/opensta/scripts/sc_procs.tcl +0 -0
  278. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl +0 -0
  279. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/opensta/scripts/sc_timing.tcl +0 -0
  280. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/opensta/timing.py +0 -0
  281. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/slang/__init__.py +0 -0
  282. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/slang/lint.py +0 -0
  283. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/surelog/__init__.py +0 -0
  284. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/surelog/parse.py +0 -0
  285. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/surelog/templates/__init__.py +0 -0
  286. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/surelog/templates/output.v +0 -0
  287. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/sv2v/__init__.py +0 -0
  288. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/sv2v/convert.py +0 -0
  289. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/sv2v/sv2v.py +0 -0
  290. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/template/__init__.py +0 -0
  291. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/template/template.py +0 -0
  292. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/verilator/__init__.py +0 -0
  293. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/verilator/compile.py +0 -0
  294. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/verilator/lint.py +0 -0
  295. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/verilator/parse.py +0 -0
  296. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/verilator/verilator.py +0 -0
  297. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/__init__.py +0 -0
  298. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/bitstream.py +0 -0
  299. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/place.py +0 -0
  300. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/route.py +0 -0
  301. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/scripts/__init__.py +0 -0
  302. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +0 -0
  303. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/scripts/sc_place.tcl +0 -0
  304. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/scripts/sc_route.tcl +0 -0
  305. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/scripts/sc_run.tcl +0 -0
  306. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl +0 -0
  307. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/syn_fpga.py +0 -0
  308. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vivado/vivado.py +0 -0
  309. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vpr/__init__.py +0 -0
  310. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vpr/_json_constraint.py +0 -0
  311. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vpr/_xml_constraint.py +0 -0
  312. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vpr/place.py +0 -0
  313. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vpr/route.py +0 -0
  314. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vpr/screenshot.py +0 -0
  315. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/vpr/show.py +0 -0
  316. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/xdm/__init__.py +0 -0
  317. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/xdm/convert.py +0 -0
  318. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/xyce/__init__.py +0 -0
  319. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/xyce/simulate.py +0 -0
  320. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/__init__.py +0 -0
  321. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/lec.py +0 -0
  322. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/prepareLib.py +0 -0
  323. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/procs.tcl +0 -0
  324. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/sc_lec.tcl +0 -0
  325. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/sc_screenshot.tcl +0 -0
  326. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/sc_syn.tcl +0 -0
  327. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/screenshot.py +0 -0
  328. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/syn_asic.py +0 -0
  329. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/syn_fpga.py +0 -0
  330. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/syn_fpga.tcl +0 -0
  331. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/syn_strategies.tcl +0 -0
  332. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/techmaps/__init__.py +0 -0
  333. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v +0 -0
  334. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/templates/__init__.py +0 -0
  335. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/templates/abc.const +0 -0
  336. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/tools/yosys/yosys.py +0 -0
  337. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/_tools.py +0 -0
  338. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-chisel.sh +0 -0
  339. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-ghdl.sh +0 -0
  340. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-icarus.sh +0 -0
  341. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-klayout.sh +0 -0
  342. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-magic.sh +0 -0
  343. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-montage.sh +0 -0
  344. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-netgen.sh +0 -0
  345. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-slang.sh +0 -0
  346. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-surelog.sh +0 -0
  347. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-sv2v.sh +0 -0
  348. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-verible.sh +0 -0
  349. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-verilator.sh +0 -0
  350. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-xyce.sh +0 -0
  351. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel8/install-yosys.sh +0 -0
  352. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-chisel.sh +0 -0
  353. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-ghdl.sh +0 -0
  354. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-icarus.sh +0 -0
  355. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-klayout.sh +0 -0
  356. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-magic.sh +0 -0
  357. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-montage.sh +0 -0
  358. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-netgen.sh +0 -0
  359. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-slang.sh +0 -0
  360. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-surelog.sh +0 -0
  361. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-sv2v.sh +0 -0
  362. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-verible.sh +0 -0
  363. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-verilator.sh +0 -0
  364. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-xdm.sh +0 -0
  365. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-xyce.sh +0 -0
  366. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/rhel9/install-yosys.sh +0 -0
  367. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +0 -0
  368. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +0 -0
  369. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +0 -0
  370. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +0 -0
  371. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +0 -0
  372. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +0 -0
  373. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +0 -0
  374. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-magic.sh +0 -0
  375. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-montage.sh +0 -0
  376. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +0 -0
  377. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +0 -0
  378. {siliconcompiler-0.28.7/siliconcompiler/toolscripts/rhel8 → siliconcompiler-0.28.8/siliconcompiler/toolscripts/ubuntu20}/install-openroad.sh +0 -0
  379. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-slang.sh +0 -0
  380. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +0 -0
  381. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +0 -0
  382. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +0 -0
  383. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-verible.sh +0 -0
  384. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +0 -0
  385. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +0 -0
  386. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +0 -0
  387. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +0 -0
  388. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu20/install-yosys.sh +0 -0
  389. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +0 -0
  390. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +0 -0
  391. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +0 -0
  392. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +0 -0
  393. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +0 -0
  394. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +0 -0
  395. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +0 -0
  396. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-magic.sh +0 -0
  397. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-montage.sh +0 -0
  398. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +0 -0
  399. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +0 -0
  400. {siliconcompiler-0.28.7/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.28.8/siliconcompiler/toolscripts/ubuntu22}/install-openroad.sh +0 -0
  401. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
  402. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +0 -0
  403. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +0 -0
  404. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +0 -0
  405. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-verible.sh +0 -0
  406. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +0 -0
  407. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +0 -0
  408. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +0 -0
  409. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +0 -0
  410. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu22/install-yosys.sh +0 -0
  411. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +0 -0
  412. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +0 -0
  413. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +0 -0
  414. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +0 -0
  415. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +0 -0
  416. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +0 -0
  417. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +0 -0
  418. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-magic.sh +0 -0
  419. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-montage.sh +0 -0
  420. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +0 -0
  421. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +0 -0
  422. {siliconcompiler-0.28.7/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.28.8/siliconcompiler/toolscripts/ubuntu24}/install-openroad.sh +0 -0
  423. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-slang.sh +0 -0
  424. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +0 -0
  425. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +0 -0
  426. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +0 -0
  427. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-verible.sh +0 -0
  428. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +0 -0
  429. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +0 -0
  430. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +0 -0
  431. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +0 -0
  432. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/toolscripts/ubuntu24/install-yosys.sh +0 -0
  433. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/units.py +0 -0
  434. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/use.py +0 -0
  435. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler/utils/asic.py +0 -0
  436. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler.egg-info/dependency_links.txt +0 -0
  437. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler.egg-info/entry_points.txt +0 -0
  438. {siliconcompiler-0.28.7 → siliconcompiler-0.28.8}/siliconcompiler.egg-info/top_level.txt +0 -0
@@ -8,6 +8,19 @@ 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.8 (2024-11-20)
12
+ =========================================
13
+
14
+ **Minor:**
15
+
16
+ * Fixed dashboard handling of graph metrics when job history contains different sets.
17
+
18
+ * Tools:
19
+
20
+ * openroad: added reporting of module cell areas.
21
+ * vpr: added options to prevent crashing in designed with dangling ports.
22
+
23
+
11
24
  SiliconCompiler 0.28.7 (2024-11-12)
12
25
  =========================================
13
26
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siliconcompiler
3
- Version: 0.28.7
3
+ Version: 0.28.8
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.8'
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
 
@@ -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
+ }
@@ -168,3 +168,22 @@ foreach markerdb [[ord::get_db_block] getMarkerCategories] {
168
168
  $markerdb writeTR "reports/markers/${sc_design}.[$markerdb getName].rpt"
169
169
  $markerdb writeJSON "reports/markers/${sc_design}.[$markerdb getName].json"
170
170
  }
171
+
172
+ if { [sc_check_version 17038] } {
173
+ utl::push_metrics_stage "sc__cellarea__{}"
174
+ tee -file reports/cell_usage.rpt {report_cell_usage -verbose}
175
+
176
+ foreach modinst [[ord::get_db_block] getModInsts] {
177
+ tee -quiet -append -file reports/cell_usage.rpt { puts "" }
178
+ tee -quiet -append -file reports/cell_usage.rpt {
179
+ puts "########################################################"
180
+ }
181
+ tee -quiet -append -file reports/cell_usage.rpt { puts "" }
182
+
183
+ utl::metric "design__instance__name__in_module:[[$modinst getMaster] getName]" \
184
+ [$modinst getHierarchicalName]
185
+ tee -quiet -append -file reports/cell_usage.rpt \
186
+ "report_cell_usage -verbose [$modinst getHierarchicalName]"
187
+ }
188
+ utl::pop_metrics_stage
189
+ }
@@ -128,6 +128,12 @@ def runtime_options(chip):
128
128
  # If we allow VPR to sweep dangling primary I/Os and logic blocks
129
129
  # it can interfere with circuit debugging; so disable that
130
130
  options.append('--sweep_dangling_primary_ios off')
131
+ # If you don't sweep dangling primary I/Os, but sweeping nets
132
+ # VPR can crash:
133
+ options.append('--sweep_dangling_nets off')
134
+ # If you don't sweep dangling nets then the timing engine requires
135
+ # you to set an option allowing dangling nodes
136
+ options.append('--allow_dangling_combinational_nodes on')
131
137
  options.append('--sweep_constant_primary_outputs off')
132
138
  options.append('--sweep_dangling_blocks off')
133
139
 
@@ -231,6 +231,8 @@ sc_map_memory $sc_memory_libmap_files $sc_memory_techmap_files 0
231
231
 
232
232
  # Perform hierarchy flattening
233
233
  if { !$flatten_design && [lindex [sc_cfg_tool_task_get var auto_flatten] 0] == "true" } {
234
+ yosys log -push
235
+ yosys log -header "SC Auto flattening"
234
236
  set sc_hier_iterations \
235
237
  [lindex [sc_cfg_tool_task_get var hier_iterations] 0]
236
238
  set sc_hier_threshold \
@@ -240,6 +242,7 @@ if { !$flatten_design && [lindex [sc_cfg_tool_task_get var auto_flatten] 0] == "
240
242
  break
241
243
  }
242
244
  }
245
+ yosys log -pop
243
246
  }
244
247
 
245
248
  # Finish synthesis
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "openroad": {
3
3
  "git-url": "https://github.com/The-OpenROAD-Project/OpenROAD.git",
4
- "git-commit": "dcba5786c8e714e3b7682a98d73de40e875699b1",
4
+ "git-commit": "c3e802e73aa2ca2974874e487ae481fc4f2cb8c3",
5
5
  "docker-cmds": [
6
6
  "# Remove OR-Tools files",
7
7
  "RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
@@ -84,7 +84,7 @@ def get_default_iomap():
84
84
  # Record extensions:
85
85
 
86
86
  # High level languages
87
- hll_c = ('c', 'cc', 'cpp', 'c++', 'cp', 'cxx', 'hpp')
87
+ hll_c = ('c', 'cc', 'cpp', 'c++', 'cp', 'cxx', 'hpp', 'h')
88
88
  hll_bsv = ('bsv',)
89
89
  hll_scala = ('scala',)
90
90
  hll_python = ('py',)
@@ -92,8 +92,8 @@ def get_default_iomap():
92
92
  config_chisel = ('sbt',)
93
93
 
94
94
  # Register transfer languages
95
- rtl_verilog = ('v', 'verilog')
96
- rtl_systemverilog = ('sv',)
95
+ rtl_verilog = ('v', 'verilog', 'vh')
96
+ rtl_systemverilog = ('sv', 'svh')
97
97
  rtl_vhdl = ('vhd', 'vhdl')
98
98
 
99
99
  # Timing libraries
@@ -116,8 +116,8 @@ def get_default_iomap():
116
116
  waveform_vcd = ('vcd',)
117
117
 
118
118
  # Constraint
119
- constraint_sdc = ('sdc', )
120
- constraint_upf = ('upf', )
119
+ constraint_sdc = ('sdc',)
120
+ constraint_upf = ('upf',)
121
121
 
122
122
  # FPGA constraints
123
123
  fpga_xdc = ('xdc',)
@@ -125,6 +125,10 @@ def get_default_iomap():
125
125
  fpga_vpr_place = ('place',)
126
126
  fpga_vpr_route = ('route',)
127
127
 
128
+ # Reports
129
+ report_drc = ('lyrdb', 'ascii')
130
+ report_log = ('log',)
131
+
128
132
  # Build default map with fileset and type
129
133
  default_iomap = {}
130
134
  default_iomap.update({ext: ('hll', 'c') for ext in hll_c})
@@ -160,6 +164,9 @@ def get_default_iomap():
160
164
  default_iomap.update({ext: ('fpga', 'vpr_place') for ext in fpga_vpr_place})
161
165
  default_iomap.update({ext: ('fpga', 'vpr_route') for ext in fpga_vpr_route})
162
166
 
167
+ default_iomap.update({ext: ('report', 'drc') for ext in report_drc})
168
+ default_iomap.update({ext: ('report', 'log') for ext in report_log})
169
+
163
170
  return default_iomap
164
171
 
165
172
 
@@ -14,6 +14,8 @@ def setup(chip):
14
14
  chip.register_showtool('oas', klayout_screenshot)
15
15
  chip.register_showtool('lef', klayout_show)
16
16
  chip.register_showtool('lef', klayout_screenshot)
17
+ chip.register_showtool('lyrdb', klayout_show)
18
+ chip.register_showtool('ascii', klayout_show)
17
19
 
18
20
  chip.register_showtool('odb', openroad_show)
19
21
  chip.register_showtool('odb', openroad_screenshot)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siliconcompiler
3
- Version: 0.28.7
3
+ Version: 0.28.8
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"
@@ -342,7 +342,6 @@ siliconcompiler/toolscripts/rhel8/install-klayout.sh
342
342
  siliconcompiler/toolscripts/rhel8/install-magic.sh
343
343
  siliconcompiler/toolscripts/rhel8/install-montage.sh
344
344
  siliconcompiler/toolscripts/rhel8/install-netgen.sh
345
- siliconcompiler/toolscripts/rhel8/install-openroad.sh
346
345
  siliconcompiler/toolscripts/rhel8/install-slang.sh
347
346
  siliconcompiler/toolscripts/rhel8/install-surelog.sh
348
347
  siliconcompiler/toolscripts/rhel8/install-sv2v.sh