siliconcompiler 0.31.0__tar.gz → 0.31.1__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 (482) hide show
  1. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/Changes +14 -0
  2. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/PKG-INFO +15 -17
  3. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/README.md +14 -16
  4. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/pyproject.toml +4 -0
  5. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/_metadata.py +1 -1
  6. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/sc_install.py +19 -1
  7. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/core.py +1 -1
  8. siliconcompiler-0.31.0/siliconcompiler/package.py → siliconcompiler-0.31.1/siliconcompiler/package/__init__.py +62 -176
  9. siliconcompiler-0.31.1/siliconcompiler/package/git.py +81 -0
  10. siliconcompiler-0.31.1/siliconcompiler/package/https.py +93 -0
  11. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/scheduler/__init__.py +19 -10
  12. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/scheduler/docker_runner.py +3 -3
  13. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/scheduler/run_node.py +3 -3
  14. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/schema/schema_obj.py +7 -11
  15. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/tcl/manifest.tcl.j2 +1 -1
  16. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +3 -5
  17. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/genfasm/genfasm.py +1 -1
  18. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/rdlroute.py +4 -0
  19. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +3 -3
  20. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +3 -13
  21. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vpr/vpr.py +86 -6
  22. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/_tools.json +3 -3
  23. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler.egg-info/PKG-INFO +15 -17
  24. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler.egg-info/SOURCES.txt +3 -1
  25. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler.egg-info/entry_points.txt +4 -0
  26. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/.dockerignore +0 -0
  27. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/.flake8 +0 -0
  28. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/.gitattributes +0 -0
  29. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/.gitignore +0 -0
  30. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/.readthedocs.yaml +0 -0
  31. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/CONTRIBUTING.md +0 -0
  32. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/LICENSE +0 -0
  33. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/MANIFEST.in +0 -0
  34. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/SECURITY.md +0 -0
  35. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/scripts/.gitignore +0 -0
  36. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/scripts/check_library.py +0 -0
  37. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/scripts/profile_sc.py +0 -0
  38. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/scripts/report_library.py +0 -0
  39. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/setup.cfg +0 -0
  40. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/__init__.py +0 -0
  41. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/__main__.py +0 -0
  42. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/_common.py +0 -0
  43. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/__init__.py +0 -0
  44. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/_common.py +0 -0
  45. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/sc.py +0 -0
  46. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/sc_dashboard.py +0 -0
  47. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/sc_issue.py +0 -0
  48. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/sc_remote.py +0 -0
  49. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/sc_server.py +0 -0
  50. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/sc_show.py +0 -0
  51. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/smake.py +0 -0
  52. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/utils/replay.py +0 -0
  53. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/apps/utils/summarize.py +0 -0
  54. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/checklists/__init__.py +0 -0
  55. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/checklists/oh_tapeout.py +0 -0
  56. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/data/RobotoMono/LICENSE.txt +0 -0
  57. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/data/RobotoMono/RobotoMono-Regular.ttf +0 -0
  58. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/data/RobotoMono/__init__.py +0 -0
  59. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/data/__init__.py +0 -0
  60. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/data/heartbeat.v +0 -0
  61. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/data/logo.png +0 -0
  62. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flowgraph.py +0 -0
  63. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/__init__.py +0 -0
  64. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/_common.py +0 -0
  65. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/asicflow.py +0 -0
  66. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/asictopflow.py +0 -0
  67. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/drcflow.py +0 -0
  68. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/dvflow.py +0 -0
  69. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/fpgaflow.py +0 -0
  70. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/generate_openroad_rcx.py +0 -0
  71. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/interposerflow.py +0 -0
  72. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/lintflow.py +0 -0
  73. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/screenshotflow.py +0 -0
  74. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/showflow.py +0 -0
  75. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/signoffflow.py +0 -0
  76. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/flows/synflow.py +0 -0
  77. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/fpgas/__init__.py +0 -0
  78. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/fpgas/lattice_ice40.py +0 -0
  79. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/fpgas/vpr_example.py +0 -0
  80. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/issue.py +0 -0
  81. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/libs/__init__.py +0 -0
  82. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/optimizer/__init__.py +0 -0
  83. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/optimizer/vizier.py +0 -0
  84. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/pdks/__init__.py +0 -0
  85. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/__init__.py +0 -0
  86. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/client.py +0 -0
  87. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/schema.py +0 -0
  88. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server.py +0 -0
  89. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/__init__.py +0 -0
  90. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/requests/__init__.py +0 -0
  91. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/requests/cancel_job.json +0 -0
  92. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/requests/check_progress.json +0 -0
  93. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/requests/check_server.json +0 -0
  94. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/requests/delete_job.json +0 -0
  95. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/requests/get_results.json +0 -0
  96. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/requests/remote_run.json +0 -0
  97. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/responses/__init__.py +0 -0
  98. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/responses/cancel_job.json +0 -0
  99. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/responses/check_progress.json +0 -0
  100. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/responses/check_server.json +0 -0
  101. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/responses/delete_job.json +0 -0
  102. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/responses/get_results.json +0 -0
  103. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/remote/server_schema/responses/remote_run.json +0 -0
  104. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/__init__.py +0 -0
  105. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/__init__.py +0 -0
  106. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/components/__init__.py +0 -0
  107. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/components/flowgraph.py +0 -0
  108. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/components/graph.py +0 -0
  109. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/layouts/__init__.py +0 -0
  110. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/layouts/_common.py +0 -0
  111. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py +0 -0
  112. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py +0 -0
  113. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py +0 -0
  114. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/state.py +0 -0
  115. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/utils/__init__.py +0 -0
  116. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/utils/file_utils.py +0 -0
  117. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/dashboard/viewer.py +0 -0
  118. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/html_report.py +0 -0
  119. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/report.py +0 -0
  120. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/summary_image.py +0 -0
  121. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/summary_table.py +0 -0
  122. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/report/utils.py +0 -0
  123. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/scheduler/send_messages.py +0 -0
  124. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/scheduler/slurm.py +0 -0
  125. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/scheduler/validation/__init__.py +0 -0
  126. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/scheduler/validation/email_credentials.json +0 -0
  127. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/schema/__init__.py +0 -0
  128. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/schema/schema_cfg.py +0 -0
  129. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/schema/utils.py +0 -0
  130. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/sphinx_ext/__init__.py +0 -0
  131. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/sphinx_ext/dynamicgen.py +0 -0
  132. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/sphinx_ext/schemagen.py +0 -0
  133. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/sphinx_ext/utils.py +0 -0
  134. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/targets/__init__.py +0 -0
  135. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/targets/asap7_demo.py +0 -0
  136. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/targets/asic_demo.py +0 -0
  137. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/targets/fpgaflow_demo.py +0 -0
  138. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/targets/freepdk45_demo.py +0 -0
  139. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/targets/gf180_demo.py +0 -0
  140. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/targets/ihp130_demo.py +0 -0
  141. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/targets/interposer_demo.py +0 -0
  142. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/targets/skywater130_demo.py +0 -0
  143. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/__init__.py +0 -0
  144. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/email/__init__.py +0 -0
  145. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/email/general.j2 +0 -0
  146. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/email/summary.j2 +0 -0
  147. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/issue/README.txt +0 -0
  148. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/issue/__init__.py +0 -0
  149. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/issue/run.sh +0 -0
  150. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/replay/replay.py.j2 +0 -0
  151. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/replay/replay.sh.j2 +0 -0
  152. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/replay/requirements.txt +0 -0
  153. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/replay/setup.sh +0 -0
  154. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/report/__init__.py +0 -0
  155. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/report/bootstrap.min.css +0 -0
  156. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/report/bootstrap.min.js +0 -0
  157. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/report/bootstrap_LICENSE.md +0 -0
  158. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/report/sc_report.j2 +0 -0
  159. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/slurm/__init__.py +0 -0
  160. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/slurm/run.sh +0 -0
  161. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/templates/tcl/__init__.py +0 -0
  162. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/__init__.py +0 -0
  163. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/_common/__init__.py +0 -0
  164. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/_common/asic.py +0 -0
  165. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/_common/asic_clock.py +0 -0
  166. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/_common/sdc/__init__.py +0 -0
  167. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/_common/sdc/sc_constraints.sdc +0 -0
  168. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/_common/tcl/__init__.py +0 -0
  169. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/bambu/__init__.py +0 -0
  170. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/bambu/convert.py +0 -0
  171. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/bluespec/__init__.py +0 -0
  172. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/bluespec/convert.py +0 -0
  173. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/__init__.py +0 -0
  174. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/_common.py +0 -0
  175. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/builtin.py +0 -0
  176. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/concatenate.py +0 -0
  177. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/join.py +0 -0
  178. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/maximum.py +0 -0
  179. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/minimum.py +0 -0
  180. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/mux.py +0 -0
  181. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/nop.py +0 -0
  182. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/builtin/verify.py +0 -0
  183. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/chisel/SCDriver.scala +0 -0
  184. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/chisel/__init__.py +0 -0
  185. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/chisel/build.sbt +0 -0
  186. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/chisel/chisel.py +0 -0
  187. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/chisel/convert.py +0 -0
  188. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/execute/__init__.py +0 -0
  189. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/execute/exec_input.py +0 -0
  190. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/execute/execute.py +0 -0
  191. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/genfasm/__init__.py +0 -0
  192. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/genfasm/bitstream.py +0 -0
  193. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/ghdl/__init__.py +0 -0
  194. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/ghdl/convert.py +0 -0
  195. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/ghdl/ghdl.py +0 -0
  196. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/graphviz/__init__.py +0 -0
  197. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/graphviz/screenshot.py +0 -0
  198. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/graphviz/show.py +0 -0
  199. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/gtkwave/__init__.py +0 -0
  200. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/gtkwave/scripts/sc_show.tcl +0 -0
  201. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/gtkwave/show.py +0 -0
  202. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/icarus/__init__.py +0 -0
  203. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/icarus/compile.py +0 -0
  204. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/icarus/icarus.py +0 -0
  205. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/icepack/__init__.py +0 -0
  206. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/icepack/bitstream.py +0 -0
  207. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/icepack/icepack.py +0 -0
  208. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/__init__.py +0 -0
  209. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/convert_drc_db.py +0 -0
  210. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/drc.py +0 -0
  211. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/export.py +0 -0
  212. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/klayout.py +0 -0
  213. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/klayout_convert_drc_db.py +0 -0
  214. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/klayout_export.py +0 -0
  215. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/klayout_operations.py +0 -0
  216. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/klayout_show.py +0 -0
  217. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/klayout_utils.py +0 -0
  218. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/operations.py +0 -0
  219. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/screenshot.py +0 -0
  220. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/klayout/show.py +0 -0
  221. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/magic/__init__.py +0 -0
  222. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/magic/drc.py +0 -0
  223. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/magic/extspice.py +0 -0
  224. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/magic/magic.py +0 -0
  225. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/magic/sc_drc.tcl +0 -0
  226. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/magic/sc_extspice.tcl +0 -0
  227. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/magic/sc_magic.tcl +0 -0
  228. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/montage/__init__.py +0 -0
  229. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/montage/montage.py +0 -0
  230. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/montage/tile.py +0 -0
  231. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/netgen/__init__.py +0 -0
  232. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/netgen/count_lvs.py +0 -0
  233. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/netgen/lvs.py +0 -0
  234. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/netgen/netgen.py +0 -0
  235. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/netgen/sc_lvs.tcl +0 -0
  236. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/nextpnr/__init__.py +0 -0
  237. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/nextpnr/apr.py +0 -0
  238. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/nextpnr/nextpnr.py +0 -0
  239. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/__init__.py +0 -0
  240. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/_apr.py +0 -0
  241. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/antenna_repair.py +0 -0
  242. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/clock_tree_synthesis.py +0 -0
  243. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/detailed_placement.py +0 -0
  244. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/detailed_route.py +0 -0
  245. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/endcap_tapcell_insertion.py +0 -0
  246. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/fillercell_insertion.py +0 -0
  247. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/fillmetal_insertion.py +0 -0
  248. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/global_placement.py +0 -0
  249. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/global_route.py +0 -0
  250. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/init_floorplan.py +0 -0
  251. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/macro_placement.py +0 -0
  252. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/metrics.py +0 -0
  253. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/pin_placement.py +0 -0
  254. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/power_grid.py +0 -0
  255. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/rcx_bench.py +0 -0
  256. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/rcx_extract.py +0 -0
  257. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/repair_design.py +0 -0
  258. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/repair_timing.py +0 -0
  259. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/screenshot.py +0 -0
  260. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +0 -0
  261. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +0 -0
  262. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +0 -0
  263. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +0 -0
  264. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +0 -0
  265. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +0 -0
  266. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +0 -0
  267. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +0 -0
  268. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +0 -0
  269. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +0 -0
  270. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +0 -0
  271. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +0 -0
  272. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +0 -0
  273. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +0 -0
  274. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +0 -0
  275. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +0 -0
  276. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +0 -0
  277. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +0 -0
  278. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/debugging.tcl +0 -0
  279. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/procs.tcl +0 -0
  280. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +0 -0
  281. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl +0 -0
  282. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl +0 -0
  283. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/reports.tcl +0 -0
  284. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +0 -0
  285. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/write_data.tcl +0 -0
  286. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/write_data_physical.tcl +0 -0
  287. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/write_data_timing.tcl +0 -0
  288. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/common/write_images.tcl +0 -0
  289. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_bench.tcl +0 -0
  290. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_extract.tcl +0 -0
  291. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +0 -0
  292. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/scripts/sc_show.tcl +0 -0
  293. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/show.py +0 -0
  294. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/templates/__init__.py +0 -0
  295. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/templates/pex.tcl +0 -0
  296. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/openroad/write_data.py +0 -0
  297. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/opensta/__init__.py +0 -0
  298. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/opensta/check_library.py +0 -0
  299. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/opensta/report_libraries.py +0 -0
  300. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/opensta/scripts/__init__.py +0 -0
  301. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/opensta/scripts/sc_check_library.tcl +0 -0
  302. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/opensta/scripts/sc_procs.tcl +0 -0
  303. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl +0 -0
  304. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/opensta/scripts/sc_timing.tcl +0 -0
  305. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/opensta/timing.py +0 -0
  306. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/slang/__init__.py +0 -0
  307. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/slang/elaborate.py +0 -0
  308. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/slang/lint.py +0 -0
  309. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/surelog/__init__.py +0 -0
  310. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/surelog/parse.py +0 -0
  311. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/surelog/templates/__init__.py +0 -0
  312. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/surelog/templates/output.v +0 -0
  313. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/sv2v/__init__.py +0 -0
  314. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/sv2v/convert.py +0 -0
  315. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/sv2v/sv2v.py +0 -0
  316. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/template/__init__.py +0 -0
  317. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/template/template.py +0 -0
  318. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/verilator/__init__.py +0 -0
  319. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/verilator/compile.py +0 -0
  320. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/verilator/lint.py +0 -0
  321. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/verilator/parse.py +0 -0
  322. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/verilator/verilator.py +0 -0
  323. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/__init__.py +0 -0
  324. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/bitstream.py +0 -0
  325. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/place.py +0 -0
  326. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/route.py +0 -0
  327. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/scripts/__init__.py +0 -0
  328. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +0 -0
  329. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/scripts/sc_place.tcl +0 -0
  330. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/scripts/sc_route.tcl +0 -0
  331. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/scripts/sc_run.tcl +0 -0
  332. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl +0 -0
  333. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/syn_fpga.py +0 -0
  334. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vivado/vivado.py +0 -0
  335. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vpr/__init__.py +0 -0
  336. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vpr/_json_constraint.py +0 -0
  337. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vpr/_xml_constraint.py +0 -0
  338. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vpr/place.py +0 -0
  339. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vpr/route.py +0 -0
  340. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vpr/screenshot.py +0 -0
  341. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/vpr/show.py +0 -0
  342. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/xdm/__init__.py +0 -0
  343. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/xdm/convert.py +0 -0
  344. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/xyce/__init__.py +0 -0
  345. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/xyce/simulate.py +0 -0
  346. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/__init__.py +0 -0
  347. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/lec.py +0 -0
  348. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/prepareLib.py +0 -0
  349. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/procs.tcl +0 -0
  350. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/sc_lec.tcl +0 -0
  351. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/sc_screenshot.tcl +0 -0
  352. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/sc_syn.tcl +0 -0
  353. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/screenshot.py +0 -0
  354. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/syn_asic.py +0 -0
  355. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/syn_asic.tcl +0 -0
  356. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/syn_fpga.py +0 -0
  357. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/syn_fpga.tcl +0 -0
  358. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/syn_strategies.tcl +0 -0
  359. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/techmaps/__init__.py +0 -0
  360. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v +0 -0
  361. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/templates/__init__.py +0 -0
  362. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/tools/yosys/templates/abc.const +0 -0
  363. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/_tools.py +0 -0
  364. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-chisel.sh +0 -0
  365. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-ghdl.sh +0 -0
  366. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-icarus.sh +0 -0
  367. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-klayout.sh +0 -0
  368. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-magic.sh +0 -0
  369. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-montage.sh +0 -0
  370. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-netgen.sh +0 -0
  371. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-slang.sh +0 -0
  372. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-surelog.sh +0 -0
  373. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-sv2v.sh +0 -0
  374. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-verible.sh +0 -0
  375. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-verilator.sh +0 -0
  376. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-xyce.sh +0 -0
  377. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-yosys-moosic.sh +0 -0
  378. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-yosys-slang.sh +0 -0
  379. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel8/install-yosys.sh +0 -0
  380. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-chisel.sh +0 -0
  381. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-ghdl.sh +0 -0
  382. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +0 -0
  383. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-icarus.sh +0 -0
  384. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-klayout.sh +0 -0
  385. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-magic.sh +0 -0
  386. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-montage.sh +0 -0
  387. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-netgen.sh +0 -0
  388. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-openroad.sh +0 -0
  389. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-slang.sh +0 -0
  390. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-surelog.sh +0 -0
  391. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-sv2v.sh +0 -0
  392. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-verible.sh +0 -0
  393. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-verilator.sh +0 -0
  394. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-xdm.sh +0 -0
  395. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-xyce.sh +0 -0
  396. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-yosys-moosic.sh +0 -0
  397. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-yosys-slang.sh +0 -0
  398. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/rhel9/install-yosys.sh +0 -0
  399. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +0 -0
  400. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +0 -0
  401. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +0 -0
  402. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +0 -0
  403. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +0 -0
  404. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +0 -0
  405. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +0 -0
  406. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +0 -0
  407. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-magic.sh +0 -0
  408. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-montage.sh +0 -0
  409. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +0 -0
  410. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +0 -0
  411. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-openroad.sh +0 -0
  412. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-slang.sh +0 -0
  413. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +0 -0
  414. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +0 -0
  415. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +0 -0
  416. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-verible.sh +0 -0
  417. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +0 -0
  418. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +0 -0
  419. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +0 -0
  420. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +0 -0
  421. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-yosys-moosic.sh +0 -0
  422. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-yosys-slang.sh +0 -0
  423. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu20/install-yosys.sh +0 -0
  424. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +0 -0
  425. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +0 -0
  426. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +0 -0
  427. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +0 -0
  428. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +0 -0
  429. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +0 -0
  430. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +0 -0
  431. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +0 -0
  432. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-magic.sh +0 -0
  433. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-montage.sh +0 -0
  434. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +0 -0
  435. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +0 -0
  436. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-openroad.sh +0 -0
  437. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
  438. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +0 -0
  439. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +0 -0
  440. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +0 -0
  441. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-verible.sh +0 -0
  442. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +0 -0
  443. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +0 -0
  444. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +0 -0
  445. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +0 -0
  446. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-yosys-moosic.sh +0 -0
  447. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-yosys-slang.sh +0 -0
  448. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu22/install-yosys.sh +0 -0
  449. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +0 -0
  450. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +0 -0
  451. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +0 -0
  452. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +0 -0
  453. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +0 -0
  454. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +0 -0
  455. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +0 -0
  456. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +0 -0
  457. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-magic.sh +0 -0
  458. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-montage.sh +0 -0
  459. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +0 -0
  460. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +0 -0
  461. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +0 -0
  462. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-slang.sh +0 -0
  463. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +0 -0
  464. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +0 -0
  465. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +0 -0
  466. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-verible.sh +0 -0
  467. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +0 -0
  468. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +0 -0
  469. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +0 -0
  470. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +0 -0
  471. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-yosys-moosic.sh +0 -0
  472. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-yosys-slang.sh +0 -0
  473. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/toolscripts/ubuntu24/install-yosys.sh +0 -0
  474. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/units.py +0 -0
  475. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/use.py +0 -0
  476. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/utils/__init__.py +0 -0
  477. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/utils/asic.py +0 -0
  478. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/utils/logging.py +0 -0
  479. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler/utils/showtools.py +0 -0
  480. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler.egg-info/dependency_links.txt +0 -0
  481. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler.egg-info/requires.txt +0 -0
  482. {siliconcompiler-0.31.0 → siliconcompiler-0.31.1}/siliconcompiler.egg-info/top_level.txt +0 -0
@@ -8,6 +8,20 @@ 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.31.1 (2025-03-06)
12
+ =========================================
13
+
14
+ **Minor:**
15
+
16
+ * Fixed tcl manifest to correctly reflect the data types from the schema.
17
+ * Added end of install status message to `sc-install`.
18
+
19
+
20
+ * Tools:
21
+
22
+ * vpr: updated to v9.0 and added timing metrics extraction.
23
+
24
+
11
25
  SiliconCompiler 0.31.0 (2025-03-03)
12
26
  =========================================
13
27
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: siliconcompiler
3
- Version: 0.31.0
3
+ Version: 0.31.1
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
@@ -99,19 +99,19 @@ SiliconCompiler is a modular hardware build system ("make for silicon"). The pro
99
99
 
100
100
  | Type | Supported|
101
101
  |------|----------|
102
- |**Design Languages**| C, Verilog, SV, VHDL, Chisel, Migen/Amaranth, Bluespec
102
+ |**Design Languages**| C, Verilog, SV, VHDL, Chisel, Migen/Amaranth, Bluespec, [MLIR](https://en.wikipedia.org/wiki/MLIR_(software))
103
103
  |**Simulation Tools**| Verilator, Icarus, GHDL, Xyce
104
104
  |**Synthesis**| Yosys, Vivado, Synopsys, Cadence
105
- |**ASIC APR**| OpenRoad, Synopsys, Cadence
105
+ |**ASIC APR**| OpenROAD, Synopsys, Cadence
106
106
  |**FPGA APR**| VPR, nextpnr, Vivado
107
- |**Layout Viewer**| Klayout, OpenRoad, Cadence, Synopsys
108
- |**DRC/LVS**| Magic, Synopsys, Siemens
109
- |**PDKs**| sky130, gf180, asap7, freepdk45, gf12lp, gf22fdx, intel16, ihp130
107
+ |**Layout Viewer**| Klayout, OpenROAD, Cadence, Synopsys
108
+ |**DRC/LVS**| Klayout, Magic, Synopsys, Siemens
109
+ |**PDKs**| sky130, ihp130, gf180, asap7, freepdk45, gf12lp, gf22fdx, intel16
110
110
 
111
111
  # Getting Started
112
112
 
113
113
  SiliconCompiler is available as wheel packages on PyPI for macOS, Windows and
114
- Linux platforms. For working Python 3.8-3.12 environment, just use pip.
114
+ Linux platforms. For working Python 3.8-3.13 environment, just use pip.
115
115
 
116
116
  ```sh
117
117
  python3 -m pip install --upgrade siliconcompiler
@@ -166,17 +166,15 @@ A. Olofsson, W. Ransohoff, N. Moroze, "[Invited: A Distributed Approach to Silic
166
166
  Bibtex:
167
167
  ```
168
168
  @inproceedings{10.1145/3489517.3530673,
169
- author = {Olofsson, Andreas and Ransohoff, William and Moroze, Noah},
170
- title = {A Distributed Approach to Silicon Compilation: Invited},
171
- year = {2022},
172
- booktitle = {Proceedings of the 59th ACM/IEEE Design Automation Conference},
173
- pages = {1343–1346},
174
- location = {San Francisco, California}
169
+ author = {Olofsson, Andreas and Ransohoff, William and Moroze, Noah},
170
+ title = {A Distributed Approach to Silicon Compilation: Invited},
171
+ year = {2022},
172
+ booktitle = {Proceedings of the 59th ACM/IEEE Design Automation Conference},
173
+ pages = {1343–1346},
174
+ location = {San Francisco, California}
175
175
  }
176
176
  ```
177
177
 
178
-
179
-
180
178
  # Installation
181
179
 
182
180
  Complete installation instructions are available in the [Installation Guide](https://docs.siliconcompiler.com/en/stable/user_guide/installation.html).
@@ -194,14 +192,14 @@ python3 -m pip install -e .[docs,test] # Optional install step for generating d
194
192
 
195
193
  Installation instructions for all external tools can be found in the
196
194
  [External Tools](https://docs.siliconcompiler.com/en/stable/user_guide/installation.html#external-tools) section
197
- of the user guide. We have included shell setup scripts (Ubuntu) for most of the supported tools.
195
+ of the user guide. We have included shell setup scripts (Ubuntu) for most of the supported tools, which can be accessed via [sc-install](https://docs.siliconcompiler.com/en/latest/reference_manual/apps.html#apps-sc-install-ref).
198
196
  See the [./siliconcompiler/toolscripts](./siliconcompiler/toolscripts) directory for a complete set of scripts and [./siliconcompiler/toolscripts/_tools.json](./siliconcompiler/toolscripts/_tools.json) for the currently recommended tool versions.
199
197
 
200
198
  # Contributing
201
199
 
202
200
  SiliconCompiler is an open-source project and welcomes contributions. To find out
203
201
  how to contribute to the project, see our
204
- [Contributing Guidelines.](./CONTRIBUTING.md)
202
+ [Contributing Guidelines](./CONTRIBUTING.md).
205
203
 
206
204
  # Issues / Bugs
207
205
 
@@ -17,19 +17,19 @@ SiliconCompiler is a modular hardware build system ("make for silicon"). The pro
17
17
 
18
18
  | Type | Supported|
19
19
  |------|----------|
20
- |**Design Languages**| C, Verilog, SV, VHDL, Chisel, Migen/Amaranth, Bluespec
20
+ |**Design Languages**| C, Verilog, SV, VHDL, Chisel, Migen/Amaranth, Bluespec, [MLIR](https://en.wikipedia.org/wiki/MLIR_(software))
21
21
  |**Simulation Tools**| Verilator, Icarus, GHDL, Xyce
22
22
  |**Synthesis**| Yosys, Vivado, Synopsys, Cadence
23
- |**ASIC APR**| OpenRoad, Synopsys, Cadence
23
+ |**ASIC APR**| OpenROAD, Synopsys, Cadence
24
24
  |**FPGA APR**| VPR, nextpnr, Vivado
25
- |**Layout Viewer**| Klayout, OpenRoad, Cadence, Synopsys
26
- |**DRC/LVS**| Magic, Synopsys, Siemens
27
- |**PDKs**| sky130, gf180, asap7, freepdk45, gf12lp, gf22fdx, intel16, ihp130
25
+ |**Layout Viewer**| Klayout, OpenROAD, Cadence, Synopsys
26
+ |**DRC/LVS**| Klayout, Magic, Synopsys, Siemens
27
+ |**PDKs**| sky130, ihp130, gf180, asap7, freepdk45, gf12lp, gf22fdx, intel16
28
28
 
29
29
  # Getting Started
30
30
 
31
31
  SiliconCompiler is available as wheel packages on PyPI for macOS, Windows and
32
- Linux platforms. For working Python 3.8-3.12 environment, just use pip.
32
+ Linux platforms. For working Python 3.8-3.13 environment, just use pip.
33
33
 
34
34
  ```sh
35
35
  python3 -m pip install --upgrade siliconcompiler
@@ -84,17 +84,15 @@ A. Olofsson, W. Ransohoff, N. Moroze, "[Invited: A Distributed Approach to Silic
84
84
  Bibtex:
85
85
  ```
86
86
  @inproceedings{10.1145/3489517.3530673,
87
- author = {Olofsson, Andreas and Ransohoff, William and Moroze, Noah},
88
- title = {A Distributed Approach to Silicon Compilation: Invited},
89
- year = {2022},
90
- booktitle = {Proceedings of the 59th ACM/IEEE Design Automation Conference},
91
- pages = {1343–1346},
92
- location = {San Francisco, California}
87
+ author = {Olofsson, Andreas and Ransohoff, William and Moroze, Noah},
88
+ title = {A Distributed Approach to Silicon Compilation: Invited},
89
+ year = {2022},
90
+ booktitle = {Proceedings of the 59th ACM/IEEE Design Automation Conference},
91
+ pages = {1343–1346},
92
+ location = {San Francisco, California}
93
93
  }
94
94
  ```
95
95
 
96
-
97
-
98
96
  # Installation
99
97
 
100
98
  Complete installation instructions are available in the [Installation Guide](https://docs.siliconcompiler.com/en/stable/user_guide/installation.html).
@@ -112,14 +110,14 @@ python3 -m pip install -e .[docs,test] # Optional install step for generating d
112
110
 
113
111
  Installation instructions for all external tools can be found in the
114
112
  [External Tools](https://docs.siliconcompiler.com/en/stable/user_guide/installation.html#external-tools) section
115
- of the user guide. We have included shell setup scripts (Ubuntu) for most of the supported tools.
113
+ of the user guide. We have included shell setup scripts (Ubuntu) for most of the supported tools, which can be accessed via [sc-install](https://docs.siliconcompiler.com/en/latest/reference_manual/apps.html#apps-sc-install-ref).
116
114
  See the [./siliconcompiler/toolscripts](./siliconcompiler/toolscripts) directory for a complete set of scripts and [./siliconcompiler/toolscripts/_tools.json](./siliconcompiler/toolscripts/_tools.json) for the currently recommended tool versions.
117
115
 
118
116
  # Contributing
119
117
 
120
118
  SiliconCompiler is an open-source project and welcomes contributions. To find out
121
119
  how to contribute to the project, see our
122
- [Contributing Guidelines.](./CONTRIBUTING.md)
120
+ [Contributing Guidelines](./CONTRIBUTING.md).
123
121
 
124
122
  # Issues / Bugs
125
123
 
@@ -90,6 +90,10 @@ scsetup = "siliconcompiler.utils.showtools:setup"
90
90
  [project.entry-points."siliconcompiler.target"]
91
91
  targets = "siliconcompiler.targets:get_targets"
92
92
 
93
+ [project.entry-points."siliconcompiler.path_resolver"]
94
+ https = "siliconcompiler.package.https:get_resolver"
95
+ git = "siliconcompiler.package.git:get_resolver"
96
+
93
97
  [project.entry-points."siliconcompiler.docs"]
94
98
  linkcode = "siliconcompiler.sphinx_ext:get_codeurl"
95
99
  targets = "siliconcompiler.sphinx_ext:targets"
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.31.0'
2
+ version = '0.31.1'
3
3
 
4
4
  # Default server address for remote runs, if unspecified.
5
5
  default_server = 'https://server.siliconcompiler.com'
@@ -101,6 +101,19 @@ def print_machine_info():
101
101
  print("Scripts: ", _get_tool_script_dir())
102
102
 
103
103
 
104
+ def __print_summary(successful, failed):
105
+ max_len = 64
106
+ print("#"*max_len)
107
+ if successful:
108
+ msg = f"Installed: {', '.join(sorted(successful))}"
109
+ print(f"# {msg}")
110
+
111
+ if failed:
112
+ msg = f"Failed to install: {failed}"
113
+ print(f"# {msg}")
114
+ print("#"*max_len)
115
+
116
+
104
117
  def _get_tool_script_dir():
105
118
  return Path(siliconcompiler.__file__).parent / "toolscripts"
106
119
 
@@ -242,6 +255,7 @@ To system debugging information (this should only be used to debug):
242
255
  args.tool.extend(tool_groups[group])
243
256
 
244
257
  tools_handled = set()
258
+ tools_completed = set()
245
259
  for tool in args.tool:
246
260
  if tool in tools_handled:
247
261
  continue
@@ -250,9 +264,14 @@ To system debugging information (this should only be used to debug):
250
264
  show_tool(tool, tools[tool])
251
265
  else:
252
266
  if not install_tool(tool, tools[tool], args.build_dir, args.prefix):
267
+ __print_summary(tools_completed, tool)
253
268
  return 1
269
+ else:
270
+ tools_completed.add(tool)
254
271
 
255
272
  if not args.show:
273
+ __print_summary(tools_completed, None)
274
+
256
275
  msgs = []
257
276
  for env, path in (
258
277
  ("PATH", "bin"),
@@ -262,7 +281,6 @@ To system debugging information (this should only be used to debug):
262
281
  os.path.expandvars(os.path.expanduser(p))
263
282
  for p in os.getenv(env, "").split(":")
264
283
  ]
265
- print(envs)
266
284
  if check_path not in envs:
267
285
  msgs.extend([
268
286
  "",
@@ -2950,7 +2950,7 @@ class Chip:
2950
2950
  elif os.path.isfile(results_html):
2951
2951
  _open_html_report(self, results_html)
2952
2952
  else:
2953
- self._dashboard(wait=False)
2953
+ self.dashboard(wait=False)
2954
2954
 
2955
2955
  ###########################################################################
2956
2956
  def clock(self, pin, period, jitter=0, mode='global'):
@@ -1,25 +1,20 @@
1
1
  import os
2
- import requests
3
- import tarfile
4
- import zipfile
5
- from git import Repo, GitCommandError
6
2
  from urllib.parse import urlparse
7
3
  import importlib
8
- import shutil
9
4
  import re
10
5
  from siliconcompiler import SiliconCompilerError
11
6
  from siliconcompiler.utils import default_cache_dir, _resolve_env_vars
12
7
  import json
13
8
  from importlib.metadata import distributions, distribution
14
9
  import functools
15
- import fasteners
16
10
  import time
17
11
  from pathlib import Path
18
- from io import BytesIO
19
12
 
20
13
  from github import Github
21
14
  import github.Auth
22
15
 
16
+ from siliconcompiler.utils import get_plugins
17
+
23
18
 
24
19
  def get_cache_path(chip):
25
20
  cache_path = chip.get('option', 'cachedir')
@@ -33,10 +28,45 @@ def get_cache_path(chip):
33
28
  return cache_path
34
29
 
35
30
 
36
- def _path(chip, package, download_handler):
37
- if package in chip._packages:
38
- return chip._packages[package]
31
+ def get_download_cache_path(chip, package, ref):
32
+ cache_path = get_cache_path(chip)
33
+ if not os.path.exists(cache_path):
34
+ os.makedirs(cache_path, exist_ok=True)
35
+
36
+ if ref is None:
37
+ raise SiliconCompilerError(f'Reference is required for cached data: {package}', chip=chip)
38
+
39
+ return \
40
+ os.path.join(cache_path, f'{package}-{ref}'), \
41
+ os.path.join(cache_path, f'{package}-{ref}.lock')
42
+
43
+
44
+ def _file_path_resolver(chip, package, path, ref, url):
45
+ return os.path.abspath(path.replace('file://', ''))
46
+
47
+
48
+ def _python_path_resolver(chip, package, path, ref, url):
49
+ return path_from_python(chip, url.netloc)
39
50
 
51
+
52
+ def _get_path_resolver(path):
53
+ url = urlparse(path)
54
+
55
+ for resolver in get_plugins("path_resolver"):
56
+ func = resolver(url)
57
+ if func:
58
+ return func, url
59
+
60
+ if url.scheme == "file":
61
+ return _file_path_resolver, url
62
+
63
+ if url.scheme == "python":
64
+ return _python_path_resolver, url
65
+
66
+ raise ValueError(f"{path} is not supported")
67
+
68
+
69
+ def _path(chip, package):
40
70
  # Initially try retrieving data source from schema
41
71
  data = {}
42
72
  data['path'] = chip.get('package', 'source', package, 'path')
@@ -48,48 +78,13 @@ def _path(chip, package, download_handler):
48
78
 
49
79
  data['path'] = _resolve_env_vars(chip, data['path'], None, None)
50
80
 
51
- url = urlparse(data['path'])
52
-
53
- # check network drive for package data source
54
- if data['path'].startswith('file://') or os.path.exists(data['path']):
55
- path = os.path.abspath(data['path'].replace('file://', ''))
56
- chip.logger.info(f'Found {package} data at {path}')
57
- chip._packages[package] = path
58
- return path
59
- elif data['path'].startswith('python://'):
60
- path = path_from_python(chip, url.netloc)
61
- chip.logger.info(f'Found {package} data at {path}')
62
- chip._packages[package] = path
63
- return path
64
-
65
- # location of the python package
66
- cache_path = get_cache_path(chip)
67
- if not os.path.exists(cache_path):
68
- os.makedirs(cache_path, exist_ok=True)
69
- project_id = f'{package}-{data.get("ref")}'
70
- if url.scheme not in ['git', 'git+https', 'https', 'git+ssh', 'ssh'] or not project_id:
71
- raise SiliconCompilerError(
72
- f'Could not find data path in package {package}: {data["path"]}',
73
- chip=chip)
74
-
75
- data_path = os.path.join(cache_path, project_id)
76
-
77
- if download_handler:
78
- download_handler(chip,
79
- package,
80
- data,
81
- url,
82
- data_path,
83
- os.path.join(cache_path, f'{project_id}.lock'))
84
-
85
- if os.path.exists(data_path):
86
- if package not in chip._packages:
87
- chip.logger.info(f'Saved {package} data to {data_path}')
88
- chip._packages[package] = data_path
89
- return data_path
81
+ if os.path.exists(data['path']):
82
+ # Path is already a path
83
+ return os.path.abspath(data['path'])
90
84
 
91
- raise SiliconCompilerError(f'Extracting {package} data to {data_path} failed',
92
- chip=chip)
85
+ path_resolver, url = _get_path_resolver(data['path'])
86
+
87
+ return path_resolver(chip, package, data['path'], data['ref'], url)
93
88
 
94
89
 
95
90
  def path(chip, package):
@@ -102,40 +97,25 @@ def path(chip, package):
102
97
  path: Location of data source on the local system
103
98
  """
104
99
 
105
- return _path(chip, package, __download_data)
106
-
100
+ if package not in chip._packages:
101
+ changed = False
102
+ data_path = _path(chip, package)
107
103
 
108
- def __download_data(chip, package, data, url, data_path, data_path_lock):
109
- data_lock = fasteners.InterProcessLock(data_path_lock)
104
+ if isinstance(data_path, tuple) and len(data_path) == 2:
105
+ data_path, changed = data_path
110
106
 
111
- _aquire_data_lock(data_path, data_lock)
107
+ if os.path.exists(data_path):
108
+ if package not in chip._packages and changed:
109
+ chip.logger.info(f'Saved {package} data to {data_path}')
110
+ else:
111
+ chip.logger.info(f'Found {package} data at {data_path}')
112
112
 
113
- # check cached package data source
114
- if os.path.exists(data_path):
115
- chip.logger.info(f'Found cached {package} data at {data_path}')
116
- if url.scheme in ['git', 'git+https', 'ssh', 'git+ssh']:
117
- try:
118
- repo = Repo(data_path)
119
- if repo.untracked_files or repo.index.diff("HEAD"):
120
- chip.logger.warning('The repo of the cached data is dirty.')
121
- _release_data_lock(data_lock)
122
- chip._packages[package] = data_path
123
- return
124
- except GitCommandError:
125
- chip.logger.warning('Deleting corrupted cache data.')
126
- shutil.rmtree(path)
127
- else:
128
- _release_data_lock(data_lock)
129
113
  chip._packages[package] = data_path
130
- return
131
-
132
- # download package data source
133
- if url.scheme in ['git', 'git+https', 'ssh', 'git+ssh']:
134
- clone_synchronized(chip, package, data, data_path)
135
- elif url.scheme == 'https':
136
- extract_from_url(chip, package, data, data_path)
114
+ else:
115
+ raise SiliconCompilerError(f'Unable to locate {package} data in {data_path}',
116
+ chip=chip)
137
117
 
138
- _release_data_lock(data_lock)
118
+ return chip._packages[package]
139
119
 
140
120
 
141
121
  def __get_filebased_lock(data_lock):
@@ -143,7 +123,7 @@ def __get_filebased_lock(data_lock):
143
123
  return Path(f'{base}.sc_lock')
144
124
 
145
125
 
146
- def _aquire_data_lock(data_path, data_lock):
126
+ def aquire_data_lock(data_path, data_lock):
147
127
  # Wait a maximum of 10 minutes for other processes to finish
148
128
  max_seconds = 10 * 60
149
129
  try:
@@ -168,7 +148,7 @@ def _aquire_data_lock(data_path, data_lock):
168
148
  'please delete it.')
169
149
 
170
150
 
171
- def _release_data_lock(data_lock):
151
+ def release_data_lock(data_lock):
172
152
  # Check if file based locking method was used
173
153
  lock_file = __get_filebased_lock(data_lock)
174
154
  if lock_file.exists():
@@ -178,100 +158,6 @@ def _release_data_lock(data_lock):
178
158
  data_lock.release()
179
159
 
180
160
 
181
- def clone_synchronized(chip, package, data, data_path):
182
- url = urlparse(data['path'])
183
- try:
184
- clone_from_git(chip, package, data, data_path)
185
- except GitCommandError as e:
186
- if 'Permission denied' in repr(e):
187
- if url.scheme in ['ssh', 'git+ssh']:
188
- chip.logger.error('Failed to authenticate. Please setup your git ssh.')
189
- elif url.scheme in ['git', 'git+https']:
190
- chip.logger.error('Failed to authenticate. Please use a token or ssh.')
191
- else:
192
- chip.logger.error(str(e))
193
-
194
-
195
- def clone_from_git(chip, package, data, repo_path):
196
- url = urlparse(data['path'])
197
- if url.scheme in ['git', 'git+https'] and url.username:
198
- chip.logger.warning('Your token is in the data source path and will be stored in the '
199
- 'schema. If you do not want this set the env variable GIT_TOKEN '
200
- 'or use ssh for authentication.')
201
- if url.scheme in ['git+ssh', 'ssh']:
202
- chip.logger.info(f'Cloning {package} data from {url.netloc}:{url.path[1:]}')
203
- # Git requires the format git@github.com:org/repo instead of git@github.com/org/repo
204
- repo = Repo.clone_from(f'{url.netloc}:{url.path[1:]}',
205
- repo_path,
206
- recurse_submodules=True)
207
- else:
208
- if os.environ.get('GIT_TOKEN') and not url.username:
209
- url = url._replace(netloc=f'{os.environ.get("GIT_TOKEN")}@{url.hostname}')
210
- url = url._replace(scheme='https')
211
- chip.logger.info(f'Cloning {package} data from {url.geturl()}')
212
- repo = Repo.clone_from(url.geturl(), repo_path, recurse_submodules=True)
213
- chip.logger.info(f'Checking out {data["ref"]}')
214
- repo.git.checkout(data["ref"])
215
- for submodule in repo.submodules:
216
- submodule.update(init=True)
217
-
218
-
219
- def extract_from_url(chip, package, data, data_path):
220
- url = urlparse(data['path'])
221
- data_url = data.get('path')
222
- headers = {}
223
- if os.environ.get('GIT_TOKEN') or url.username:
224
- headers['Authorization'] = f'token {os.environ.get("GIT_TOKEN") or url.username}'
225
- if "github" in data_url:
226
- headers['Accept'] = 'application/octet-stream'
227
- data_url = data['path']
228
- if data_url.endswith('/'):
229
- data_url = f"{data_url}{data['ref']}.tar.gz"
230
- chip.logger.info(f'Downloading {package} data from {data_url}')
231
- response = requests.get(data_url, stream=True, headers=headers)
232
- if not response.ok:
233
- raise SiliconCompilerError(f'Failed to download {package} data source.', chip=chip)
234
-
235
- fileobj = BytesIO(response.content)
236
- try:
237
- with tarfile.open(fileobj=fileobj, mode='r|gz') as tar_ref:
238
- tar_ref.extractall(path=data_path)
239
- except tarfile.ReadError:
240
- fileobj.seek(0)
241
- # Try as zip
242
- with zipfile.ZipFile(fileobj) as zip_ref:
243
- zip_ref.extractall(path=data_path)
244
-
245
- if 'github' in url.netloc and len(os.listdir(data_path)) == 1:
246
- # Github inserts one folder at the highest level of the tar file
247
- # this compensates for this behavior
248
- gh_url = urlparse(data_url)
249
-
250
- repo = gh_url.path.split('/')[2]
251
-
252
- ref = gh_url.path.split('/')[-1]
253
- if repo.endswith('.git'):
254
- ref = data['ref']
255
- elif ref.endswith('.tar.gz'):
256
- ref = ref[0:-7]
257
- elif ref.endswith('.tgz'):
258
- ref = ref[0:-4]
259
- else:
260
- ref = ref.split('.')[0]
261
-
262
- if ref.startswith('v'):
263
- ref = ref[1:]
264
-
265
- github_folder = f"{repo}-{ref}"
266
-
267
- if github_folder in os.listdir(data_path):
268
- # This moves all files one level up
269
- git_path = os.path.join(data_path, github_folder)
270
- for data_file in os.listdir(git_path):
271
- shutil.move(os.path.join(git_path, data_file), data_path)
272
- os.removedirs(git_path)
273
-
274
-
275
161
  def path_from_python(chip, python_package, append_path=None):
276
162
  try:
277
163
  module = importlib.import_module(python_package)
@@ -0,0 +1,81 @@
1
+ import shutil
2
+
3
+ import os.path
4
+
5
+ from git import Repo, GitCommandError
6
+ from fasteners import InterProcessLock
7
+
8
+ from siliconcompiler.package import get_download_cache_path
9
+ from siliconcompiler.package import aquire_data_lock, release_data_lock
10
+
11
+
12
+ def get_resolver(url):
13
+ if url.scheme in ("git", "git+https", "git+ssh", "ssh"):
14
+ return git_resolver
15
+ return None
16
+
17
+
18
+ def git_resolver(chip, package, path, ref, url):
19
+ data_path, data_path_lock = get_download_cache_path(chip, package, ref)
20
+
21
+ # Acquire lock
22
+ data_lock = InterProcessLock(data_path_lock)
23
+ aquire_data_lock(data_path, data_lock)
24
+
25
+ if os.path.exists(data_path):
26
+ try:
27
+ repo = Repo(data_path)
28
+ if repo.untracked_files or repo.index.diff("HEAD"):
29
+ chip.logger.warning('The repo of the cached data is dirty.')
30
+ release_data_lock(data_lock)
31
+ return data_path, False
32
+ except GitCommandError:
33
+ chip.logger.warning('Deleting corrupted cache data.')
34
+ shutil.rmtree(data_path)
35
+
36
+ clone_synchronized(chip, package, path, ref, url, data_path)
37
+
38
+ release_data_lock(data_lock)
39
+
40
+ return data_path, True
41
+
42
+
43
+ def clone_synchronized(chip, package, path, ref, url, data_path):
44
+ try:
45
+ clone_from_git(chip, package, path, ref, url, data_path)
46
+ except GitCommandError as e:
47
+ if 'Permission denied' in repr(e):
48
+ if url.scheme in ['ssh', 'git+ssh']:
49
+ chip.logger.error('Failed to authenticate. Please setup your git ssh.')
50
+ elif url.scheme in ['git', 'git+https']:
51
+ chip.logger.error('Failed to authenticate. Please use a token or ssh.')
52
+ else:
53
+ chip.logger.error(str(e))
54
+
55
+
56
+ def clone_from_git(chip, package, path, ref, url, data_path):
57
+ if url.scheme in ['git', 'git+https'] and url.username:
58
+ chip.logger.warning('Your token is in the data source path and will be stored in the '
59
+ 'schema. If you do not want this set the env variable GIT_TOKEN '
60
+ 'or use ssh for authentication.')
61
+ if url.scheme in ['git+ssh']:
62
+ chip.logger.info(f'Cloning {package} data from {url.netloc}:{url.path[1:]}')
63
+ # Git requires the format git@github.com:org/repo instead of git@github.com/org/repo
64
+ repo = Repo.clone_from(f'{url.netloc}/{url.path[1:]}',
65
+ data_path,
66
+ recurse_submodules=True)
67
+ elif url.scheme in ['ssh']:
68
+ chip.logger.info(f'Cloning {package} data from {path}')
69
+ repo = Repo.clone_from(path,
70
+ data_path,
71
+ recurse_submodules=True)
72
+ else:
73
+ if os.environ.get('GIT_TOKEN') and not url.username:
74
+ url = url._replace(netloc=f'{os.environ.get("GIT_TOKEN")}@{url.hostname}')
75
+ url = url._replace(scheme='https')
76
+ chip.logger.info(f'Cloning {package} data from {url.geturl()}')
77
+ repo = Repo.clone_from(url.geturl(), data_path, recurse_submodules=True)
78
+ chip.logger.info(f'Checking out {ref}')
79
+ repo.git.checkout(ref)
80
+ for submodule in repo.submodules:
81
+ submodule.update(init=True)