siliconcompiler 0.29.2__tar.gz → 0.29.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/Changes +34 -0
  2. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/PKG-INFO +8 -8
  3. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/README.md +1 -1
  4. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/pyproject.toml +11 -6
  5. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/_metadata.py +1 -1
  6. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_install.py +19 -4
  7. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/core.py +8 -3
  8. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flowgraph.py +23 -5
  9. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/client.py +3 -0
  10. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/__init__.py +30 -12
  11. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/__init__.py +1 -1
  12. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/asic.py +3 -0
  13. siliconcompiler-0.29.4/siliconcompiler/tools/_common/asic_clock.py +101 -0
  14. siliconcompiler-0.29.4/siliconcompiler/tools/bambu/convert.py +159 -0
  15. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/bluespec/convert.py +2 -1
  16. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/chisel/convert.py +2 -1
  17. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/genfasm/bitstream.py +2 -2
  18. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/ghdl/convert.py +2 -2
  19. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/gtkwave/show.py +2 -1
  20. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/icarus/compile.py +2 -2
  21. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/drc.py +2 -1
  22. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/magic.py +1 -1
  23. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/netgen/lvs.py +2 -1
  24. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/_apr.py +16 -4
  25. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/fillmetal_insertion.py +0 -1
  26. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/init_floorplan.py +7 -1
  27. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/macro_placement.py +1 -2
  28. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/pin_placement.py +0 -1
  29. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/rdlroute.py +2 -2
  30. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +3 -2
  31. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +1 -0
  32. siliconcompiler-0.29.4/siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +107 -0
  33. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +12 -1
  34. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +24 -0
  35. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/procs.tcl +3 -2
  36. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +1 -0
  37. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/reports.tcl +4 -13
  38. siliconcompiler-0.29.4/siliconcompiler/tools/openroad/scripts/common/write_data.tcl +2 -0
  39. siliconcompiler-0.29.2/siliconcompiler/tools/openroad/scripts/common/write_data.tcl → siliconcompiler-0.29.4/siliconcompiler/tools/openroad/scripts/common/write_data_physical.tcl +0 -2
  40. siliconcompiler-0.29.4/siliconcompiler/tools/openroad/scripts/common/write_data_timing.tcl +1 -0
  41. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +1 -1
  42. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/__init__.py +2 -2
  43. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/report_libraries.py +2 -2
  44. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/timing.py +2 -1
  45. siliconcompiler-0.29.2/siliconcompiler/tools/slang/lint.py → siliconcompiler-0.29.4/siliconcompiler/tools/slang/__init__.py +43 -18
  46. siliconcompiler-0.29.4/siliconcompiler/tools/slang/elaborate.py +46 -0
  47. siliconcompiler-0.29.4/siliconcompiler/tools/slang/lint.py +35 -0
  48. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/surelog/parse.py +1 -1
  49. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/sv2v/convert.py +2 -2
  50. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/template/template.py +2 -2
  51. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/verilator/verilator.py +3 -1
  52. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/vivado.py +2 -1
  53. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/place.py +2 -2
  54. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/route.py +2 -2
  55. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/show.py +2 -1
  56. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/__init__.py +26 -23
  57. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/procs.tcl +17 -0
  58. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_asic.py +20 -65
  59. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_asic.tcl +10 -51
  60. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/_tools.json +4 -4
  61. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-slang.sh +0 -0
  62. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-sv2v.sh +7 -1
  63. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/rhel9 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/rhel8}/install-yosys.sh +1 -1
  64. siliconcompiler-0.29.4/siliconcompiler/toolscripts/rhel9/install-openroad.sh +34 -0
  65. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-slang.sh +0 -0
  66. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-sv2v.sh +7 -1
  67. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/rhel8 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/rhel9}/install-yosys.sh +1 -1
  68. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-slang.sh +0 -0
  69. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +1 -0
  70. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu20}/install-sv2v.sh +7 -1
  71. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu20}/install-yosys.sh +1 -1
  72. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu22}/install-surelog.sh +7 -1
  73. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu22}/install-sv2v.sh +7 -1
  74. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu22}/install-yosys.sh +1 -1
  75. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +3 -4
  76. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-slang.sh +0 -0
  77. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu24}/install-surelog.sh +7 -1
  78. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu24}/install-sv2v.sh +7 -1
  79. {siliconcompiler-0.29.2/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.29.4/siliconcompiler/toolscripts/ubuntu24}/install-yosys.sh +1 -1
  80. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/utils/__init__.py +24 -0
  81. siliconcompiler-0.29.4/siliconcompiler/utils/logging.py +67 -0
  82. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/PKG-INFO +8 -8
  83. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/SOURCES.txt +6 -1
  84. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/requires.txt +6 -6
  85. siliconcompiler-0.29.2/siliconcompiler/tools/bambu/convert.py +0 -77
  86. siliconcompiler-0.29.2/siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +0 -123
  87. siliconcompiler-0.29.2/siliconcompiler/tools/slang/__init__.py +0 -49
  88. siliconcompiler-0.29.2/siliconcompiler/tools/yosys/templates/__init__.py +0 -0
  89. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/.dockerignore +0 -0
  90. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/.flake8 +0 -0
  91. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/.gitattributes +0 -0
  92. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/.gitignore +0 -0
  93. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/.readthedocs.yaml +0 -0
  94. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/CONTRIBUTING.md +0 -0
  95. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/LICENSE +0 -0
  96. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/MANIFEST.in +0 -0
  97. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/SECURITY.md +0 -0
  98. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/scripts/.gitignore +0 -0
  99. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/scripts/check_library.py +0 -0
  100. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/scripts/profile_sc.py +0 -0
  101. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/scripts/report_library.py +0 -0
  102. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/setup.cfg +0 -0
  103. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/__init__.py +0 -0
  104. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/__main__.py +0 -0
  105. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/_common.py +0 -0
  106. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/__init__.py +0 -0
  107. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/_common.py +0 -0
  108. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc.py +0 -0
  109. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_dashboard.py +0 -0
  110. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_issue.py +0 -0
  111. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_remote.py +0 -0
  112. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_server.py +0 -0
  113. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/sc_show.py +0 -0
  114. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/smake.py +0 -0
  115. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/utils/replay.py +0 -0
  116. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/apps/utils/summarize.py +0 -0
  117. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/checklists/__init__.py +0 -0
  118. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/checklists/oh_tapeout.py +0 -0
  119. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/data/RobotoMono/LICENSE.txt +0 -0
  120. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/data/RobotoMono/RobotoMono-Regular.ttf +0 -0
  121. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/data/RobotoMono/__init__.py +0 -0
  122. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/data/__init__.py +0 -0
  123. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/data/heartbeat.v +0 -0
  124. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/data/logo.png +0 -0
  125. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/__init__.py +0 -0
  126. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/_common.py +0 -0
  127. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/asicflow.py +0 -0
  128. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/asictopflow.py +0 -0
  129. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/drcflow.py +0 -0
  130. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/dvflow.py +0 -0
  131. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/fpgaflow.py +0 -0
  132. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/generate_openroad_rcx.py +0 -0
  133. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/interposerflow.py +0 -0
  134. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/lintflow.py +0 -0
  135. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/screenshotflow.py +0 -0
  136. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/showflow.py +0 -0
  137. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/signoffflow.py +0 -0
  138. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/flows/synflow.py +0 -0
  139. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/fpgas/__init__.py +0 -0
  140. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/fpgas/lattice_ice40.py +0 -0
  141. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/fpgas/vpr_example.py +0 -0
  142. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/issue.py +0 -0
  143. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/libs/__init__.py +0 -0
  144. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/optimizer/__init__.py +0 -0
  145. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/optimizer/vizier.py +0 -0
  146. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/package.py +0 -0
  147. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/pdks/__init__.py +0 -0
  148. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/__init__.py +0 -0
  149. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/schema.py +0 -0
  150. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server.py +0 -0
  151. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/__init__.py +0 -0
  152. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/__init__.py +0 -0
  153. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/cancel_job.json +0 -0
  154. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/check_progress.json +0 -0
  155. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/check_server.json +0 -0
  156. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/delete_job.json +0 -0
  157. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/get_results.json +0 -0
  158. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/requests/remote_run.json +0 -0
  159. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/__init__.py +0 -0
  160. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/cancel_job.json +0 -0
  161. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/check_progress.json +0 -0
  162. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/check_server.json +0 -0
  163. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/delete_job.json +0 -0
  164. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/get_results.json +0 -0
  165. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/remote/server_schema/responses/remote_run.json +0 -0
  166. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/__init__.py +0 -0
  167. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/__init__.py +0 -0
  168. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/components/__init__.py +0 -0
  169. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/components/flowgraph.py +0 -0
  170. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/components/graph.py +0 -0
  171. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/__init__.py +0 -0
  172. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/_common.py +0 -0
  173. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py +0 -0
  174. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py +0 -0
  175. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py +0 -0
  176. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/state.py +0 -0
  177. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/utils/__init__.py +0 -0
  178. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/utils/file_utils.py +0 -0
  179. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/dashboard/viewer.py +0 -0
  180. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/html_report.py +0 -0
  181. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/report.py +0 -0
  182. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/summary_image.py +0 -0
  183. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/summary_table.py +0 -0
  184. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/report/utils.py +0 -0
  185. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/docker_runner.py +0 -0
  186. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/run_node.py +0 -0
  187. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/send_messages.py +0 -0
  188. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/slurm.py +0 -0
  189. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/validation/__init__.py +0 -0
  190. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/scheduler/validation/email_credentials.json +0 -0
  191. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/schema/__init__.py +0 -0
  192. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/schema/schema_cfg.py +0 -0
  193. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/schema/schema_obj.py +0 -0
  194. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/schema/utils.py +0 -0
  195. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/sphinx_ext/__init__.py +0 -0
  196. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/sphinx_ext/dynamicgen.py +0 -0
  197. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/sphinx_ext/schemagen.py +0 -0
  198. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/sphinx_ext/utils.py +0 -0
  199. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/targets/__init__.py +0 -0
  200. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/targets/asap7_demo.py +0 -0
  201. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/targets/asic_demo.py +0 -0
  202. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/targets/fpgaflow_demo.py +0 -0
  203. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/targets/freepdk45_demo.py +0 -0
  204. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/targets/gf180_demo.py +0 -0
  205. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/targets/ihp130_demo.py +0 -0
  206. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/targets/interposer_demo.py +0 -0
  207. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/targets/skywater130_demo.py +0 -0
  208. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/__init__.py +0 -0
  209. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/email/__init__.py +0 -0
  210. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/email/general.j2 +0 -0
  211. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/email/summary.j2 +0 -0
  212. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/issue/README.txt +0 -0
  213. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/issue/__init__.py +0 -0
  214. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/issue/run.sh +0 -0
  215. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/replay/replay.py.j2 +0 -0
  216. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/replay/requirements.txt +0 -0
  217. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/replay/setup.sh +0 -0
  218. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/__init__.py +0 -0
  219. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/bootstrap.min.css +0 -0
  220. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/bootstrap.min.js +0 -0
  221. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/bootstrap_LICENSE.md +0 -0
  222. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/report/sc_report.j2 +0 -0
  223. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/slurm/__init__.py +0 -0
  224. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/slurm/run.sh +0 -0
  225. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/tcl/__init__.py +0 -0
  226. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/templates/tcl/manifest.tcl.j2 +0 -0
  227. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/__init__.py +0 -0
  228. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/sdc/__init__.py +0 -0
  229. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/sdc/sc_constraints.sdc +0 -0
  230. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/tcl/__init__.py +0 -0
  231. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +0 -0
  232. /siliconcompiler-0.29.2/siliconcompiler/tools/bambu/bambu.py → /siliconcompiler-0.29.4/siliconcompiler/tools/bambu/__init__.py +0 -0
  233. {siliconcompiler-0.29.2/siliconcompiler/tools/bambu → siliconcompiler-0.29.4/siliconcompiler/tools/bluespec}/__init__.py +0 -0
  234. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/bluespec/bluespec.py +0 -0
  235. {siliconcompiler-0.29.2/siliconcompiler/tools/bluespec → siliconcompiler-0.29.4/siliconcompiler/tools/builtin}/__init__.py +0 -0
  236. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/_common.py +0 -0
  237. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/builtin.py +0 -0
  238. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/concatenate.py +0 -0
  239. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/join.py +0 -0
  240. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/maximum.py +0 -0
  241. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/minimum.py +0 -0
  242. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/mux.py +0 -0
  243. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/nop.py +0 -0
  244. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/builtin/verify.py +0 -0
  245. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/chisel/SCDriver.scala +0 -0
  246. {siliconcompiler-0.29.2/siliconcompiler/tools/builtin → siliconcompiler-0.29.4/siliconcompiler/tools/chisel}/__init__.py +0 -0
  247. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/chisel/build.sbt +0 -0
  248. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/chisel/chisel.py +0 -0
  249. {siliconcompiler-0.29.2/siliconcompiler/tools/chisel → siliconcompiler-0.29.4/siliconcompiler/tools/execute}/__init__.py +0 -0
  250. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/execute/exec_input.py +0 -0
  251. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/execute/execute.py +0 -0
  252. {siliconcompiler-0.29.2/siliconcompiler/tools/execute → siliconcompiler-0.29.4/siliconcompiler/tools/genfasm}/__init__.py +0 -0
  253. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/genfasm/genfasm.py +0 -0
  254. {siliconcompiler-0.29.2/siliconcompiler/tools/genfasm → siliconcompiler-0.29.4/siliconcompiler/tools/ghdl}/__init__.py +0 -0
  255. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/ghdl/ghdl.py +0 -0
  256. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/gtkwave/__init__.py +0 -0
  257. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/gtkwave/scripts/sc_show.tcl +0 -0
  258. {siliconcompiler-0.29.2/siliconcompiler/tools/ghdl → siliconcompiler-0.29.4/siliconcompiler/tools/icarus}/__init__.py +0 -0
  259. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/icarus/icarus.py +0 -0
  260. {siliconcompiler-0.29.2/siliconcompiler/tools/icarus → siliconcompiler-0.29.4/siliconcompiler/tools/icepack}/__init__.py +0 -0
  261. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/icepack/bitstream.py +0 -0
  262. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/icepack/icepack.py +0 -0
  263. {siliconcompiler-0.29.2/siliconcompiler/tools/icepack → siliconcompiler-0.29.4/siliconcompiler/tools/klayout}/__init__.py +0 -0
  264. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/convert_drc_db.py +0 -0
  265. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/export.py +0 -0
  266. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout.py +0 -0
  267. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_convert_drc_db.py +0 -0
  268. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_export.py +0 -0
  269. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_operations.py +0 -0
  270. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_show.py +0 -0
  271. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/klayout_utils.py +0 -0
  272. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/operations.py +0 -0
  273. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/screenshot.py +0 -0
  274. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/klayout/show.py +0 -0
  275. {siliconcompiler-0.29.2/siliconcompiler/tools/klayout → siliconcompiler-0.29.4/siliconcompiler/tools/magic}/__init__.py +0 -0
  276. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/drc.py +0 -0
  277. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/extspice.py +0 -0
  278. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/sc_drc.tcl +0 -0
  279. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/sc_extspice.tcl +0 -0
  280. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/magic/sc_magic.tcl +0 -0
  281. {siliconcompiler-0.29.2/siliconcompiler/tools/magic → siliconcompiler-0.29.4/siliconcompiler/tools/montage}/__init__.py +0 -0
  282. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/montage/montage.py +0 -0
  283. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/montage/tile.py +0 -0
  284. {siliconcompiler-0.29.2/siliconcompiler/tools/montage → siliconcompiler-0.29.4/siliconcompiler/tools/netgen}/__init__.py +0 -0
  285. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/netgen/count_lvs.py +0 -0
  286. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/netgen/netgen.py +0 -0
  287. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/netgen/sc_lvs.tcl +0 -0
  288. {siliconcompiler-0.29.2/siliconcompiler/tools/netgen → siliconcompiler-0.29.4/siliconcompiler/tools/nextpnr}/__init__.py +0 -0
  289. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/nextpnr/apr.py +0 -0
  290. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/nextpnr/nextpnr.py +0 -0
  291. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/__init__.py +0 -0
  292. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/antenna_repair.py +0 -0
  293. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/clock_tree_synthesis.py +0 -0
  294. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/detailed_placement.py +0 -0
  295. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/detailed_route.py +0 -0
  296. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/endcap_tapcell_insertion.py +0 -0
  297. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/fillercell_insertion.py +0 -0
  298. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/global_placement.py +0 -0
  299. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/global_route.py +0 -0
  300. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/metrics.py +0 -0
  301. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/power_grid.py +0 -0
  302. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/rcx_bench.py +0 -0
  303. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/rcx_extract.py +0 -0
  304. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/repair_design.py +0 -0
  305. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/repair_timing.py +0 -0
  306. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/screenshot.py +0 -0
  307. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +0 -0
  308. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +0 -0
  309. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +0 -0
  310. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +0 -0
  311. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +0 -0
  312. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +0 -0
  313. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +0 -0
  314. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +0 -0
  315. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +0 -0
  316. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +0 -0
  317. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +0 -0
  318. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +0 -0
  319. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +0 -0
  320. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +0 -0
  321. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/debugging.tcl +0 -0
  322. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl +0 -0
  323. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl +0 -0
  324. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +0 -0
  325. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/common/write_images.tcl +0 -0
  326. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_bench.tcl +0 -0
  327. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_extract.tcl +0 -0
  328. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +0 -0
  329. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/scripts/sc_show.tcl +0 -0
  330. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/show.py +0 -0
  331. {siliconcompiler-0.29.2/siliconcompiler/tools/nextpnr → siliconcompiler-0.29.4/siliconcompiler/tools/openroad/templates}/__init__.py +0 -0
  332. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/templates/pex.tcl +0 -0
  333. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/openroad/write_data.py +0 -0
  334. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/check_library.py +0 -0
  335. {siliconcompiler-0.29.2/siliconcompiler/tools/openroad/templates → siliconcompiler-0.29.4/siliconcompiler/tools/opensta/scripts}/__init__.py +0 -0
  336. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/scripts/sc_check_library.tcl +0 -0
  337. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/scripts/sc_procs.tcl +0 -0
  338. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl +0 -0
  339. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/opensta/scripts/sc_timing.tcl +0 -0
  340. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/surelog/__init__.py +0 -0
  341. {siliconcompiler-0.29.2/siliconcompiler/tools/opensta/scripts → siliconcompiler-0.29.4/siliconcompiler/tools/surelog/templates}/__init__.py +0 -0
  342. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/surelog/templates/output.v +0 -0
  343. {siliconcompiler-0.29.2/siliconcompiler/tools/surelog/templates → siliconcompiler-0.29.4/siliconcompiler/tools/sv2v}/__init__.py +0 -0
  344. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/sv2v/sv2v.py +0 -0
  345. {siliconcompiler-0.29.2/siliconcompiler/tools/sv2v → siliconcompiler-0.29.4/siliconcompiler/tools/template}/__init__.py +0 -0
  346. {siliconcompiler-0.29.2/siliconcompiler/tools/template → siliconcompiler-0.29.4/siliconcompiler/tools/verilator}/__init__.py +0 -0
  347. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/verilator/compile.py +0 -0
  348. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/verilator/lint.py +0 -0
  349. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/verilator/parse.py +0 -0
  350. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/__init__.py +0 -0
  351. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/bitstream.py +0 -0
  352. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/place.py +0 -0
  353. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/route.py +0 -0
  354. {siliconcompiler-0.29.2/siliconcompiler/tools/verilator → siliconcompiler-0.29.4/siliconcompiler/tools/vivado/scripts}/__init__.py +0 -0
  355. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +0 -0
  356. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_place.tcl +0 -0
  357. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_route.tcl +0 -0
  358. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_run.tcl +0 -0
  359. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl +0 -0
  360. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vivado/syn_fpga.py +0 -0
  361. {siliconcompiler-0.29.2/siliconcompiler/tools/vivado/scripts → siliconcompiler-0.29.4/siliconcompiler/tools/vpr}/__init__.py +0 -0
  362. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/_json_constraint.py +0 -0
  363. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/_xml_constraint.py +0 -0
  364. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/screenshot.py +0 -0
  365. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/vpr/vpr.py +0 -0
  366. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/xdm/__init__.py +0 -0
  367. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/xdm/convert.py +0 -0
  368. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/xyce/__init__.py +0 -0
  369. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/xyce/simulate.py +0 -0
  370. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/lec.py +0 -0
  371. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/prepareLib.py +0 -0
  372. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/sc_lec.tcl +0 -0
  373. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/sc_screenshot.tcl +0 -0
  374. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/sc_syn.tcl +0 -0
  375. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/screenshot.py +0 -0
  376. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_fpga.py +0 -0
  377. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_fpga.tcl +0 -0
  378. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/syn_strategies.tcl +0 -0
  379. {siliconcompiler-0.29.2/siliconcompiler/tools/vpr → siliconcompiler-0.29.4/siliconcompiler/tools/yosys/techmaps}/__init__.py +0 -0
  380. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v +0 -0
  381. {siliconcompiler-0.29.2/siliconcompiler/tools/yosys/techmaps → siliconcompiler-0.29.4/siliconcompiler/tools/yosys/templates}/__init__.py +0 -0
  382. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/tools/yosys/templates/abc.const +0 -0
  383. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/_tools.py +0 -0
  384. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-chisel.sh +0 -0
  385. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-ghdl.sh +0 -0
  386. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-icarus.sh +0 -0
  387. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-klayout.sh +0 -0
  388. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-magic.sh +0 -0
  389. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-montage.sh +0 -0
  390. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-netgen.sh +0 -0
  391. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-surelog.sh +0 -0
  392. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-verible.sh +0 -0
  393. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-verilator.sh +0 -0
  394. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel8/install-xyce.sh +0 -0
  395. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-chisel.sh +0 -0
  396. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-ghdl.sh +0 -0
  397. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +0 -0
  398. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-icarus.sh +0 -0
  399. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-klayout.sh +0 -0
  400. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-magic.sh +0 -0
  401. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-montage.sh +0 -0
  402. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-netgen.sh +0 -0
  403. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-surelog.sh +0 -0
  404. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-verible.sh +0 -0
  405. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-verilator.sh +0 -0
  406. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-xdm.sh +0 -0
  407. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/rhel9/install-xyce.sh +0 -0
  408. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +0 -0
  409. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +0 -0
  410. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +0 -0
  411. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +0 -0
  412. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +0 -0
  413. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +0 -0
  414. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +0 -0
  415. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +0 -0
  416. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-magic.sh +0 -0
  417. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-montage.sh +0 -0
  418. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +0 -0
  419. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +0 -0
  420. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-openroad.sh +0 -0
  421. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +0 -0
  422. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-verible.sh +0 -0
  423. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +0 -0
  424. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +0 -0
  425. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +0 -0
  426. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +0 -0
  427. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +0 -0
  428. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +0 -0
  429. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +0 -0
  430. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +0 -0
  431. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +0 -0
  432. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +0 -0
  433. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +0 -0
  434. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +0 -0
  435. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-magic.sh +0 -0
  436. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-montage.sh +0 -0
  437. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +0 -0
  438. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +0 -0
  439. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-openroad.sh +0 -0
  440. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
  441. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +0 -0
  442. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-verible.sh +0 -0
  443. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +0 -0
  444. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +0 -0
  445. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +0 -0
  446. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +0 -0
  447. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +0 -0
  448. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +0 -0
  449. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +0 -0
  450. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +0 -0
  451. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +0 -0
  452. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +0 -0
  453. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +0 -0
  454. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-magic.sh +0 -0
  455. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-montage.sh +0 -0
  456. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +0 -0
  457. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +0 -0
  458. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +0 -0
  459. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +0 -0
  460. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-verible.sh +0 -0
  461. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +0 -0
  462. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +0 -0
  463. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +0 -0
  464. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +0 -0
  465. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/units.py +0 -0
  466. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/use.py +0 -0
  467. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/utils/asic.py +0 -0
  468. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler/utils/showtools.py +0 -0
  469. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/dependency_links.txt +0 -0
  470. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/entry_points.txt +0 -0
  471. {siliconcompiler-0.29.2 → siliconcompiler-0.29.4}/siliconcompiler.egg-info/top_level.txt +0 -0
@@ -8,6 +8,40 @@ The changes in each SiliconCompiler release version are described below. Commit
8
8
  version shown in (). Where applicable, the contributors that suggested a given
9
9
  feature are shown in [].
10
10
 
11
+ SiliconCompiler 0.29.4 (2025-02-06)
12
+ =========================================
13
+
14
+ **Minor:**
15
+
16
+ * Added helper function to allow tasks to handle clock information in a uniform method.
17
+ * Improved feedback on unsupported platforms during `sc-install`.
18
+
19
+
20
+ * Tools:
21
+
22
+ * bambu: updates to better handle platform and clock information.
23
+ * openroad: added recover_power option support.
24
+ * yosys: switch to use builtin `keep_hierarchy` to speedup compile times.
25
+
26
+
27
+ SiliconCompiler 0.29.3 (2025-01-28)
28
+ =========================================
29
+
30
+ **Major:**
31
+
32
+ * Added color support to logger to allow for easier identification of warnings and errors.
33
+
34
+ **Minor:**
35
+
36
+ * Corrected install scripts for surelog and bambu.
37
+ * Fixed task setup order to avoid setting up tasks before the input nodes have been setup.
38
+
39
+ * Tools:
40
+
41
+ * slang: added elaboration task.
42
+ * yosys: added controls for separator used during flattening via `['tool', 'yosys', 'task', 'syn_asic', 'var', 'hierarchy_separator']`.
43
+
44
+
11
45
  SiliconCompiler 0.29.2 (2025-01-16)
12
46
  =========================================
13
47
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: siliconcompiler
3
- Version: 0.29.2
3
+ Version: 0.29.4
4
4
  Summary: A compiler framework that automates translation from source code to silicon.
5
5
  Author-email: Andreas Olofsson <andreas.d.olofsson@gmail.com>
6
6
  License: Apache License 2.0
@@ -38,7 +38,7 @@ Requires-Dist: psutil>=5.8.0
38
38
  Requires-Dist: Pillow==10.4.0; python_version <= "3.8"
39
39
  Requires-Dist: Pillow==11.1.0; python_version >= "3.9"
40
40
  Requires-Dist: GitPython==3.1.44
41
- Requires-Dist: lambdapdk>=0.1.44
41
+ Requires-Dist: lambdapdk>=0.1.47
42
42
  Requires-Dist: PyGithub==2.5.0
43
43
  Requires-Dist: urllib3>=1.26.0
44
44
  Requires-Dist: fasteners==0.19
@@ -46,7 +46,7 @@ Requires-Dist: fastjsonschema==2.21.1
46
46
  Requires-Dist: docker==7.1.0
47
47
  Requires-Dist: importlib_metadata; python_version < "3.10"
48
48
  Requires-Dist: sc-surelog==1.84.1
49
- Requires-Dist: orjson==3.10.14
49
+ Requires-Dist: orjson==3.10.15
50
50
  Requires-Dist: streamlit==1.40.1; python_version <= "3.8"
51
51
  Requires-Dist: streamlit==1.41.1; python_version >= "3.9" and python_full_version != "3.9.7"
52
52
  Requires-Dist: streamlit_agraph==0.0.45; python_full_version != "3.9.7"
@@ -58,15 +58,15 @@ Requires-Dist: pytest==8.3.4; extra == "test"
58
58
  Requires-Dist: pytest-xdist==3.6.1; extra == "test"
59
59
  Requires-Dist: pytest-timeout==2.3.1; extra == "test"
60
60
  Requires-Dist: pytest-asyncio==0.24.0; python_version <= "3.8" and extra == "test"
61
- Requires-Dist: pytest-asyncio==0.25.2; python_version >= "3.9" and extra == "test"
61
+ Requires-Dist: pytest-asyncio==0.25.3; python_version >= "3.9" and extra == "test"
62
62
  Requires-Dist: pytest-cov==5.0.0; python_version <= "3.8" and extra == "test"
63
63
  Requires-Dist: pytest-cov==6.0.0; python_version >= "3.9" and extra == "test"
64
- Requires-Dist: responses==0.25.5; extra == "test"
64
+ Requires-Dist: responses==0.25.6; extra == "test"
65
65
  Requires-Dist: PyVirtualDisplay==3.0; extra == "test"
66
66
  Provides-Extra: lint
67
67
  Requires-Dist: flake8==7.1.1; extra == "lint"
68
68
  Requires-Dist: tclint==0.5.0; extra == "lint"
69
- Requires-Dist: codespell==2.3.0; extra == "lint"
69
+ Requires-Dist: codespell==2.4.1; extra == "lint"
70
70
  Provides-Extra: docs
71
71
  Requires-Dist: Sphinx==8.1.3; extra == "docs"
72
72
  Requires-Dist: pip-licenses==5.0.0; extra == "docs"
@@ -76,7 +76,7 @@ Provides-Extra: profile
76
76
  Requires-Dist: gprof2dot==2024.6.6; extra == "profile"
77
77
  Provides-Extra: examples
78
78
  Requires-Dist: migen==0.9.2; extra == "examples"
79
- Requires-Dist: lambdalib==0.3.2; extra == "examples"
79
+ Requires-Dist: lambdalib==0.3.3; extra == "examples"
80
80
  Provides-Extra: optimizer
81
81
  Requires-Dist: google-vizier[jax]==0.1.21; python_version >= "3.10" and extra == "optimizer"
82
82
 
@@ -195,7 +195,7 @@ python3 -m pip install -e .[docs,test] # Optional install step for generating d
195
195
  Installation instructions for all external tools can be found in the
196
196
  [External Tools](https://docs.siliconcompiler.com/en/stable/user_guide/installation.html#external-tools) section
197
197
  of the user guide. We have included shell setup scripts (Ubuntu) for most of the supported tools.
198
- See the [./setup](./setup) directory for a complete set of scripts and [./setup/_tools.json](./setup/_tools.json) for the currently recommended tool versions.
198
+ See the [./siliconcompiler/toolscripts](./siliconcompiler/toolscripts) directory for a complete set of scripts and [./siliconcompiler/toolscripts/_tools.json](./siliconcompiler/toolscripts/_tools.json) for the currently recommended tool versions.
199
199
 
200
200
  # Contributing
201
201
 
@@ -113,7 +113,7 @@ python3 -m pip install -e .[docs,test] # Optional install step for generating d
113
113
  Installation instructions for all external tools can be found in the
114
114
  [External Tools](https://docs.siliconcompiler.com/en/stable/user_guide/installation.html#external-tools) section
115
115
  of the user guide. We have included shell setup scripts (Ubuntu) for most of the supported tools.
116
- See the [./setup](./setup) directory for a complete set of scripts and [./setup/_tools.json](./setup/_tools.json) for the currently recommended tool versions.
116
+ See the [./siliconcompiler/toolscripts](./siliconcompiler/toolscripts) directory for a complete set of scripts and [./siliconcompiler/toolscripts/_tools.json](./siliconcompiler/toolscripts/_tools.json) for the currently recommended tool versions.
117
117
 
118
118
  # Contributing
119
119
 
@@ -45,7 +45,7 @@ dependencies = [
45
45
  "Pillow == 10.4.0; python_version <= '3.8'",
46
46
  "Pillow == 11.1.0; python_version >= '3.9'",
47
47
  "GitPython == 3.1.44",
48
- "lambdapdk >= 0.1.44",
48
+ "lambdapdk >= 0.1.47",
49
49
  "PyGithub == 2.5.0",
50
50
  "urllib3 >= 1.26.0", # Required for PyGithub
51
51
  "fasteners == 0.19",
@@ -53,7 +53,7 @@ dependencies = [
53
53
  "docker == 7.1.0",
54
54
  "importlib_metadata; python_version < '3.10'",
55
55
  "sc-surelog == 1.84.1",
56
- "orjson == 3.10.14",
56
+ "orjson == 3.10.15",
57
57
 
58
58
  # dashboard, streamlit does not support 3.9.7
59
59
  "streamlit == 1.40.1; python_version <= '3.8'",
@@ -106,16 +106,16 @@ test = [
106
106
  "pytest-xdist == 3.6.1",
107
107
  "pytest-timeout == 2.3.1",
108
108
  "pytest-asyncio == 0.24.0; python_version <= '3.8'",
109
- "pytest-asyncio == 0.25.2; python_version >= '3.9'",
109
+ "pytest-asyncio == 0.25.3; python_version >= '3.9'",
110
110
  "pytest-cov == 5.0.0; python_version <= '3.8'",
111
111
  "pytest-cov == 6.0.0; python_version >= '3.9'",
112
- "responses == 0.25.5",
112
+ "responses == 0.25.6",
113
113
  "PyVirtualDisplay == 3.0"
114
114
  ]
115
115
  lint = [
116
116
  "flake8 == 7.1.1",
117
117
  "tclint == 0.5.0",
118
- "codespell == 2.3.0"
118
+ "codespell == 2.4.1"
119
119
  ]
120
120
  docs = [
121
121
  "Sphinx == 8.1.3",
@@ -128,7 +128,7 @@ profile = [
128
128
  ]
129
129
  examples = [
130
130
  "migen == 0.9.2",
131
- "lambdalib == 0.3.2"
131
+ "lambdalib == 0.3.3"
132
132
  ]
133
133
  optimizer = [
134
134
  "google-vizier[jax] == 0.1.21; python_version >= '3.10'"
@@ -156,6 +156,11 @@ testpaths = [
156
156
  ]
157
157
  timeout = "180"
158
158
  asyncio_default_fixture_loop_scope = "function"
159
+ filterwarnings = [
160
+ "ignore:pkg_resources is deprecated as an API:DeprecationWarning",
161
+ 'ignore:Deprecated call to `pkg_resources.declare_namespace.*:DeprecationWarning',
162
+ 'ignore:.* is multi-threaded, use of fork\(\) may lead to deadlocks in the child.:DeprecationWarning'
163
+ ]
159
164
 
160
165
  [tool.tclint]
161
166
  exclude = [
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.29.2'
2
+ version = '0.29.4'
3
3
 
4
4
  # Default server address for remote runs, if unspecified.
5
5
  default_server = 'https://server.siliconcompiler.com'
@@ -73,16 +73,18 @@ def show_tool(tool, script):
73
73
  def _get_os_name():
74
74
  machine_info = _get_machine_info()
75
75
  system = machine_info.get('system', "").lower()
76
- distro = machine_info.get('distro', "").lower()
77
- osversion = machine_info.get('osversion', "").lower()
78
76
  if system == 'linux':
77
+ distro = machine_info.get('distro', "").lower()
79
78
  if distro == 'ubuntu':
79
+ osversion = machine_info.get('osversion', "").lower()
80
80
  version, _ = osversion.split('.')
81
81
  return f"{distro}{version}"
82
82
  elif distro == 'rocky':
83
+ osversion = machine_info.get('osversion', "").lower()
83
84
  version, _ = osversion.split('.')
84
85
  return f"rhel{version}"
85
86
  elif distro == 'rhel':
87
+ osversion = machine_info.get('osversion', "").lower()
86
88
  version, _ = osversion.split('.')
87
89
  return f"rhel{version}"
88
90
  return None
@@ -134,6 +136,10 @@ def _recommended_tool_groups(tools):
134
136
  for group, group_tools in groups.items():
135
137
  if all([tool in tools for tool in group_tools]):
136
138
  filter_groups[group] = group_tools
139
+ else:
140
+ missing = sorted([tool for tool in group_tools if tool not in tools])
141
+ filter_groups[group] = f"{group} group is not available for {_get_os_name()} " \
142
+ f"due to lack of support for the following tools: {', '.join(missing)}"
137
143
  return filter_groups
138
144
 
139
145
 
@@ -168,10 +174,15 @@ To system debugging information (this should only be used to debug):
168
174
  parser = argparse.ArgumentParser(
169
175
  prog=progname,
170
176
  description=description,
171
- formatter_class=argparse.RawDescriptionHelpFormatter)
177
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
172
178
 
173
179
  tools = _get_tools_list()
174
180
 
181
+ if _get_os_name() is None:
182
+ print("Unsupported operating system", file=sys.stderr)
183
+ print_machine_info()
184
+ return 1
185
+
175
186
  tool_choices = ChoiceOptional(tools.keys())
176
187
  parser.add_argument(
177
188
  "tool",
@@ -220,7 +231,11 @@ To system debugging information (this should only be used to debug):
220
231
  args.tool = list(args.tool)
221
232
  if args.group:
222
233
  for group in args.group:
223
- args.tool.extend(tool_groups[group])
234
+ if isinstance(tool_groups[group], str):
235
+ print(tool_groups[group], file=sys.stderr)
236
+ return 1
237
+ else:
238
+ args.tool.extend(tool_groups[group])
224
239
 
225
240
  tools_handled = set()
226
241
  for tool in args.tool:
@@ -21,6 +21,7 @@ from siliconcompiler.remote import client
21
21
  from siliconcompiler.schema import Schema, SCHEMA_VERSION
22
22
  from siliconcompiler.schema import utils as schema_utils
23
23
  from siliconcompiler import utils
24
+ from siliconcompiler.utils.logging import LoggerFormatter, ColorStreamFormatter
24
25
  from siliconcompiler import _metadata
25
26
  from siliconcompiler import NodeStatus, SiliconCompilerError
26
27
  from siliconcompiler.report import _show_summary_table
@@ -225,7 +226,8 @@ class Chip:
225
226
  else:
226
227
  in_run = False
227
228
 
228
- log_format = ['%(levelname)-7s']
229
+ level_format = '%(levelname)-7s'
230
+ log_format = [level_format]
229
231
  if loglevel == 'debug':
230
232
  log_format.append('%(funcName)-10s')
231
233
  log_format.append('%(lineno)-4s')
@@ -261,14 +263,17 @@ class Chip:
261
263
  log_formatprefix = ""
262
264
 
263
265
  log_format.append('%(message)s')
264
- logformat = log_formatprefix + ' | '.join(log_format)
266
+ stream_logformat = log_formatprefix + ' | '.join(log_format[1:])
265
267
 
266
268
  if not self.logger.hasHandlers():
267
269
  stream_handler = logging.StreamHandler(stream=sys.stdout)
268
270
  self.logger.addHandler(stream_handler)
269
271
 
270
272
  for handler in self.logger.handlers:
271
- formatter = logging.Formatter(logformat)
273
+ if ColorStreamFormatter.supports_color(handler):
274
+ formatter = ColorStreamFormatter(log_formatprefix, level_format, stream_logformat)
275
+ else:
276
+ formatter = LoggerFormatter(log_formatprefix, level_format, stream_logformat)
272
277
  handler.setFormatter(formatter)
273
278
 
274
279
  self.logger.setLevel(schema_utils.translate_loglevel(loglevel))
@@ -205,18 +205,36 @@ def _get_flowgraph_execution_order(chip, flow, reverse=False):
205
205
  else:
206
206
  ex_map.setdefault((istep, iindex), set()).add((step, index))
207
207
 
208
+ rev_ex_map = {}
209
+ for node, edges in ex_map.items():
210
+ for step, index in edges:
211
+ rev_ex_map.setdefault((step, index), set()).add(node)
212
+
208
213
  # Collect execution order of nodes
209
214
  if reverse:
210
215
  order = [set(_get_flowgraph_exit_nodes(chip, flow))]
211
216
  else:
212
217
  order = [set(_get_flowgraph_entry_nodes(chip, flow))]
213
218
 
219
+ visited = set()
214
220
  while True:
215
221
  next_level = set()
216
- for step, index in order[-1]:
217
- if (step, index) in ex_map and \
218
- not any([(step, index) in v for v in ex_map.values()]):
219
- next_level.update(ex_map.pop((step, index)))
222
+ next_visited = set()
223
+ for step, index in sorted(order[-1]):
224
+ if (step, index) not in rev_ex_map:
225
+ # No edges so assume inputs are okay
226
+ inputs_valid = True
227
+ else:
228
+ inputs_valid = all([node in visited for node in rev_ex_map[(step, index)]])
229
+
230
+ if inputs_valid:
231
+ next_visited.add((step, index))
232
+ if (step, index) in ex_map:
233
+ next_level.update(ex_map.pop((step, index)))
234
+ else:
235
+ next_level.add((step, index))
236
+
237
+ visited.update(next_visited)
220
238
 
221
239
  if not next_level:
222
240
  break
@@ -233,7 +251,7 @@ def _get_flowgraph_execution_order(chip, flow, reverse=False):
233
251
 
234
252
  exec_order.reverse()
235
253
 
236
- return exec_order
254
+ return [sorted(level) for level in exec_order]
237
255
 
238
256
 
239
257
  def get_executed_nodes(chip, flow):
@@ -477,6 +477,9 @@ service, provided by SiliconCompiler, is not intended to process proprietary IP.
477
477
  # Flush file to ensure everything is written
478
478
  upload_file.flush()
479
479
 
480
+ # We no longer need the collected files
481
+ shutil.rmtree(self.__chip._getcollectdir(jobname=self.__chip.get('option', 'jobname')))
482
+
480
483
  if 'pre_upload' in remote_status:
481
484
  self.__logger.info(remote_status['pre_upload']['message'])
482
485
  time.sleep(remote_status['pre_upload']['delay'])
@@ -55,6 +55,10 @@ def _get_callback(hook):
55
55
  return None
56
56
 
57
57
 
58
+ # Max lines to print from failed node log
59
+ _failed_log_lines = 20
60
+
61
+
58
62
  ###############################################################################
59
63
  class SiliconCompilerTimeout(Exception):
60
64
  ''' Minimal Exception wrapper used to raise sc timeout errors.
@@ -833,6 +837,8 @@ def _run_executable_or_builtin(chip, step, index, version, toolpath, workdir, ru
833
837
  is_stderr_log = chip.get('tool', tool, 'task', task, 'stderr', 'destination',
834
838
  step=step, index=index) == 'log' and stderr_file != stdout_file
835
839
 
840
+ chip.logger.info(f'Running in {workdir}')
841
+
836
842
  retcode = 0
837
843
  cmdlist = []
838
844
  cmd_args = []
@@ -877,7 +883,6 @@ def _run_executable_or_builtin(chip, step, index, version, toolpath, workdir, ru
877
883
  # Make record of tool options
878
884
  __record_tool(chip, step, index, version, toolpath, cmd_args)
879
885
 
880
- chip.logger.info('Running in %s', workdir)
881
886
  chip.logger.info('%s', printable_cmd)
882
887
  timeout = chip.get('option', 'timeout', step=step, index=index)
883
888
  logfile = step + '.log'
@@ -988,10 +993,10 @@ def _run_executable_or_builtin(chip, step, index, version, toolpath, workdir, ru
988
993
  msg = f'Command failed with code {retcode}.'
989
994
  if logfile:
990
995
  if quiet:
991
- # Print last 10 lines of log when in quiet mode
996
+ # Print last N lines of log when in quiet mode
992
997
  with sc_open(logfile) as logfd:
993
998
  loglines = logfd.read().splitlines()
994
- for logline in loglines[-10:]:
999
+ for logline in loglines[-_failed_log_lines:]:
995
1000
  chip.logger.error(logline)
996
1001
  # No log file for pure-Python tools.
997
1002
  msg += f' See log file {os.path.abspath(logfile)}'
@@ -1239,6 +1244,13 @@ def _finalizenode(chip, step, index, replay):
1239
1244
 
1240
1245
  if not is_skipped:
1241
1246
  _check_logfile(chip, step, index, quiet, run_func)
1247
+
1248
+ # Report metrics
1249
+ for metric in ['errors', 'warnings']:
1250
+ val = chip.get('metric', metric, step=step, index=index)
1251
+ if val is not None:
1252
+ chip.logger.info(f'Number of {metric}: {val}')
1253
+
1242
1254
  _hash_files(chip, step, index)
1243
1255
 
1244
1256
  # Capture wall runtime and cpu cores
@@ -1535,12 +1547,13 @@ def _check_node_dependencies(chip, node, deps, deps_was_successful):
1535
1547
  def _launch_nodes(chip, nodes_to_run, processes, local_processes):
1536
1548
  running_nodes = {}
1537
1549
  max_parallel_run = chip.get('option', 'scheduler', 'maxnodes')
1538
- max_threads = os.cpu_count()
1550
+ max_cores = utils.get_cores(chip)
1551
+ max_threads = utils.get_cores(chip)
1539
1552
  if not max_parallel_run:
1540
- max_parallel_run = max_threads
1553
+ max_parallel_run = utils.get_cores(chip)
1541
1554
 
1542
- # clip max parallel jobs to 1 <= jobs <= max_threads
1543
- max_parallel_run = max(1, min(max_parallel_run, max_threads))
1555
+ # clip max parallel jobs to 1 <= jobs <= max_cores
1556
+ max_parallel_run = max(1, min(max_parallel_run, max_cores))
1544
1557
 
1545
1558
  def allow_start(node):
1546
1559
  if node not in local_processes:
@@ -1561,7 +1574,7 @@ def _launch_nodes(chip, nodes_to_run, processes, local_processes):
1561
1574
  # clamp to max_parallel to avoid getting locked up
1562
1575
  requested_threads = max(1, min(requested_threads, max_threads))
1563
1576
 
1564
- if requested_threads + sum(running_nodes.values()) > max_threads:
1577
+ if requested_threads + sum(running_nodes.values()) > max_cores:
1565
1578
  # delay until there are enough core available
1566
1579
  return False, 0
1567
1580
 
@@ -1615,8 +1628,14 @@ def _launch_nodes(chip, nodes_to_run, processes, local_processes):
1615
1628
  # Update dashboard if the manifest changed
1616
1629
  chip._dash.update_manifest()
1617
1630
 
1618
- # TODO: exponential back-off with max?
1619
- time.sleep(0.1)
1631
+ if len(running_nodes) == 1:
1632
+ # if there is only one node running, just join the thread
1633
+ running_node = list(running_nodes.keys())[0]
1634
+ processes[running_node]["proc"].join()
1635
+ elif len(running_nodes) > 1:
1636
+ # if there are more than 1, join the first with a timeout
1637
+ running_node = list(running_nodes.keys())[0]
1638
+ processes[running_node]["proc"].join(timeout=0.1)
1620
1639
 
1621
1640
 
1622
1641
  def _process_completed_nodes(chip, processes, running_nodes):
@@ -1936,7 +1955,7 @@ def check_node_inputs(chip, step, index):
1936
1955
  step=check_step, index=check_index)
1937
1956
 
1938
1957
  if check_hash != prev_hash:
1939
- print_warning(key)
1958
+ print_warning(key, "file hash")
1940
1959
  return False
1941
1960
  else:
1942
1961
  # check timestamps on current files
@@ -2062,7 +2081,6 @@ def check_logfile(chip, jobname=None, step=None, index='0',
2062
2081
  chip.logger.info(f'{suffix}: {line_with_num}')
2063
2082
 
2064
2083
  for suffix in ordered_suffixes:
2065
- chip.logger.info(f'Number of {suffix}: {matches[suffix]}')
2066
2084
  checks[suffix]['report'].close()
2067
2085
 
2068
2086
  return matches
@@ -1,4 +1,4 @@
1
- from siliconcompiler.tools.bambu import bambu
1
+ from siliconcompiler.tools import bambu
2
2
  from siliconcompiler.tools.bluespec import bluespec
3
3
  from siliconcompiler.tools.builtin import builtin
4
4
  from siliconcompiler.tools.chisel import chisel
@@ -194,6 +194,9 @@ def set_tool_task_lib_var(chip,
194
194
 
195
195
  values.update(chip.get(*lib_key, step=get_step, index=get_index))
196
196
 
197
+ if default_value and not check_value(values):
198
+ values = default_value
199
+
197
200
  if check_value(values):
198
201
  chip.set('tool', tool, 'task', task, 'var', param_key, values,
199
202
  step=step, index=index, clobber=False)
@@ -0,0 +1,101 @@
1
+ import re
2
+ from siliconcompiler.utils import sc_open
3
+ from siliconcompiler.tools._common.asic import get_tool_task
4
+
5
+
6
+ def __get_clock_data(chip, clock_units_multiplier=1):
7
+ step = chip.get('arg', 'step')
8
+ index = chip.get('arg', 'index')
9
+
10
+ period = None
11
+ # get clock information from sdc files
12
+ if chip.valid('input', 'constraint', 'sdc'):
13
+ for sdc in chip.find_files('input', 'constraint', 'sdc', step=step, index=index):
14
+ lines = []
15
+ with sc_open(sdc) as f:
16
+ lines = f.read().splitlines()
17
+
18
+ # collect simple variables in case clock is specified with a variable
19
+ re_var = r"[A-Za-z0-9_]+"
20
+ re_num = r"[0-9\.]+"
21
+ sdc_vars = {}
22
+ for line in lines:
23
+ tcl_variable = re.findall(fr"^\s*set\s+({re_var})\s+({re_num}|\${re_var})", line)
24
+ if tcl_variable:
25
+ var_name, var_value = tcl_variable[0]
26
+ sdc_vars[f'${var_name}'] = var_value
27
+
28
+ # TODO: handle line continuations
29
+ for line in lines:
30
+ clock_period = re.findall(fr"create_clock\s.*-period\s+({re_num}|\${re_var})",
31
+ line)
32
+ if clock_period:
33
+ convert_period = clock_period[0]
34
+ while isinstance(convert_period, str) and convert_period[0] == "$":
35
+ if convert_period in sdc_vars:
36
+ convert_period = sdc_vars[convert_period]
37
+ else:
38
+ break
39
+ if isinstance(convert_period, str) and convert_period[0] == "$":
40
+ chip.logger.warning('Unable to identify clock period from '
41
+ f'{clock_period[0]}.')
42
+ continue
43
+ else:
44
+ try:
45
+ clock_period = float(convert_period)
46
+ except TypeError:
47
+ continue
48
+
49
+ clock_period = clock_period * clock_units_multiplier
50
+
51
+ if period is None:
52
+ period = clock_period
53
+ else:
54
+ period = min(period, clock_period)
55
+
56
+ if period is not None:
57
+ return period, None, [('input', 'constraint', 'sdc')]
58
+
59
+ if period is None:
60
+ keys = []
61
+ key_pin = None
62
+ # get clock information from defined clocks
63
+ for pin in chip.getkeys('datasheet', 'pin'):
64
+ for mode in chip.getkeys('datasheet', 'pin', pin, 'type'):
65
+ if chip.get('datasheet', 'pin', pin, 'type', mode) == 'clock':
66
+ clock_period = min(chip.get('datasheet', 'pin', pin, 'tperiod', mode)) * 1e9
67
+
68
+ if period is None:
69
+ period = clock_period
70
+ keys = [
71
+ ('datasheet', 'pin', pin, 'type', mode),
72
+ ('datasheet', 'pin', pin, 'tperiod', mode)
73
+ ]
74
+ key_pin = pin
75
+ else:
76
+ if clock_period < period:
77
+ period = clock_period
78
+ keys = [
79
+ ('datasheet', 'pin', pin, 'type', mode),
80
+ ('datasheet', 'pin', pin, 'tperiod', mode)
81
+ ]
82
+ key_pin = pin
83
+ return period, key_pin, keys
84
+
85
+ return None, None, []
86
+
87
+
88
+ def add_clock_requirements(chip):
89
+ _, _, keys = __get_clock_data(chip)
90
+
91
+ step = chip.get('arg', 'step')
92
+ index = chip.get('arg', 'index')
93
+ tool, task = get_tool_task(chip, step, index)
94
+ for key in keys:
95
+ chip.add('tool', tool, 'task', task, 'require', ','.join(key),
96
+ step=step, index=index)
97
+
98
+
99
+ def get_clock_period(chip, clock_units_multiplier=1):
100
+ period, name, _ = __get_clock_data(chip, clock_units_multiplier=clock_units_multiplier)
101
+ return name, period