siliconcompiler 0.36.3__tar.gz → 0.36.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 (517) hide show
  1. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/.readthedocs.yaml +1 -0
  2. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/Changes +17 -0
  3. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/PKG-INFO +3 -1
  4. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/pyproject.toml +3 -0
  5. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/_metadata.py +1 -1
  6. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/sc_install.py +23 -2
  7. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/sc_issue.py +4 -0
  8. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/dvflow.py +13 -0
  9. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/package/__init__.py +17 -12
  10. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/package/git.py +2 -1
  11. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/baseschema.py +11 -2
  12. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema_support/cmdlineschema.py +3 -2
  13. siliconcompiler-0.36.4/siliconcompiler/tools/_common/cocotb/cocotb_task.py +286 -0
  14. siliconcompiler-0.36.4/siliconcompiler/tools/builtin/wait.py +152 -0
  15. siliconcompiler-0.36.4/siliconcompiler/tools/icarus/cocotb_exec.py +53 -0
  16. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/icarus/compile.py +47 -1
  17. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/_apr.py +13 -0
  18. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +9 -2
  19. siliconcompiler-0.36.4/siliconcompiler/tools/verilator/cocotb_compile.py +55 -0
  20. siliconcompiler-0.36.4/siliconcompiler/tools/verilator/cocotb_exec.py +52 -0
  21. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/verilator/compile.py +12 -8
  22. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vpr/__init__.py +1 -1
  23. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/scripts/sc_synth_asic.tcl +1 -1
  24. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/syn_asic.py +3 -3
  25. siliconcompiler-0.36.4/siliconcompiler/tools/yosys/templates/__init__.py +0 -0
  26. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/_tools.json +4 -4
  27. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/rhel9 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/rhel8}/install-icarus.sh +2 -2
  28. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/rhel9 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/rhel8}/install-magic.sh +1 -1
  29. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel8/install-netgen.sh +1 -1
  30. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel8/install-surelog.sh +1 -1
  31. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel8/install-sv2v.sh +1 -1
  32. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel8/install-verilator.sh +2 -2
  33. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/rhel9 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/rhel8}/install-xyce.sh +5 -5
  34. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-ghdl.sh +1 -1
  35. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +2 -2
  36. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/rhel8 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/rhel9}/install-icarus.sh +2 -2
  37. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/rhel8 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/rhel9}/install-magic.sh +1 -1
  38. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-netgen.sh +1 -1
  39. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-openroad.sh +1 -1
  40. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-opensta.sh +5 -5
  41. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-surelog.sh +1 -1
  42. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-sv2v.sh +1 -1
  43. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-verilator.sh +2 -2
  44. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-vpr.sh +1 -1
  45. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-wildebeest.sh +1 -1
  46. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/rhel8 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/rhel9}/install-xyce.sh +5 -5
  47. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-yosys-moosic.sh +1 -1
  48. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-yosys-slang.sh +1 -1
  49. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-yosys.sh +1 -1
  50. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +1 -1
  51. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu20}/install-bluespec.sh +1 -1
  52. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +1 -1
  53. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +1 -1
  54. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu20}/install-icarus.sh +1 -1
  55. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +1 -1
  56. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu20}/install-magic.sh +1 -1
  57. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +1 -1
  58. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu20}/install-openroad.sh +1 -1
  59. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-opensta.sh +5 -5
  60. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu20}/install-slurm.sh +3 -3
  61. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +1 -1
  62. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu20}/install-sv2v.sh +1 -1
  63. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu20}/install-verilator.sh +1 -1
  64. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu20}/install-xyce.sh +3 -3
  65. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +1 -1
  66. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +1 -1
  67. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +1 -1
  68. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +1 -1
  69. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-icarus.sh +1 -1
  70. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +1 -1
  71. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-keplerformal.sh +1 -1
  72. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-magic.sh +1 -1
  73. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +1 -1
  74. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-nextpnr.sh +1 -1
  75. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-openroad.sh +1 -1
  76. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-opensta.sh +5 -5
  77. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-slurm.sh +3 -3
  78. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-surelog.sh +1 -1
  79. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-surfer.sh +1 -1
  80. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +1 -1
  81. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-verilator.sh +1 -1
  82. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +1 -1
  83. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-wildebeest.sh +1 -1
  84. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-xyce.sh +3 -3
  85. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-yosys-moosic.sh +1 -1
  86. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu24 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu22}/install-yosys-slang.sh +1 -1
  87. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-yosys.sh +1 -1
  88. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +1 -1
  89. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-bluespec.sh +1 -1
  90. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +1 -1
  91. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +1 -1
  92. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +1 -1
  93. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +1 -1
  94. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-keplerformal.sh +1 -1
  95. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-magic.sh +1 -1
  96. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +1 -1
  97. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-nextpnr.sh +1 -1
  98. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-openroad.sh +1 -1
  99. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-opensta.sh +5 -5
  100. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +1 -1
  101. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-surelog.sh +1 -1
  102. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-surfer.sh +1 -1
  103. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu20 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-sv2v.sh +1 -1
  104. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-verilator.sh +1 -1
  105. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +1 -1
  106. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-wildebeest.sh +1 -1
  107. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-xyce.sh +3 -3
  108. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-yosys-moosic.sh +1 -1
  109. {siliconcompiler-0.36.3/siliconcompiler/toolscripts/ubuntu22 → siliconcompiler-0.36.4/siliconcompiler/toolscripts/ubuntu24}/install-yosys-slang.sh +1 -1
  110. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-yosys.sh +1 -1
  111. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler.egg-info/PKG-INFO +3 -1
  112. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler.egg-info/SOURCES.txt +5 -0
  113. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler.egg-info/requires.txt +5 -0
  114. siliconcompiler-0.36.3/siliconcompiler/tools/builtin/wait.py +0 -16
  115. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/.dockerignore +0 -0
  116. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/.flake8 +0 -0
  117. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/.gitattributes +0 -0
  118. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/.gitignore +0 -0
  119. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/CONTRIBUTING.md +0 -0
  120. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/LICENSE +0 -0
  121. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/MANIFEST.in +0 -0
  122. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/README.md +0 -0
  123. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/SECURITY.md +0 -0
  124. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/scripts/.gitignore +0 -0
  125. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/scripts/class_hierarchy.py +0 -0
  126. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/scripts/methods.py +0 -0
  127. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/scripts/profile_sc.py +0 -0
  128. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/scripts/requirements.txt +0 -0
  129. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/setup.cfg +0 -0
  130. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/__init__.py +0 -0
  131. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/_common.py +0 -0
  132. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/__init__.py +0 -0
  133. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/_common.py +0 -0
  134. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/sc_dashboard.py +0 -0
  135. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/sc_remote.py +0 -0
  136. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/sc_server.py +0 -0
  137. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/sc_show.py +0 -0
  138. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/smake.py +0 -0
  139. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/utils/replay.py +0 -0
  140. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/apps/utils/summarize.py +0 -0
  141. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/asic.py +0 -0
  142. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/checklist.py +0 -0
  143. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/checklists/__init__.py +0 -0
  144. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/checklists/oh_tapeout.py +0 -0
  145. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/constraints/__init__.py +0 -0
  146. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/constraints/asic_component.py +0 -0
  147. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/constraints/asic_floorplan.py +0 -0
  148. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/constraints/asic_pins.py +0 -0
  149. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/constraints/asic_timing.py +0 -0
  150. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/constraints/fpga_timing.py +0 -0
  151. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/constraints/timing_mode.py +0 -0
  152. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/RobotoMono/LICENSE.txt +0 -0
  153. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/RobotoMono/RobotoMono-Regular.ttf +0 -0
  154. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/RobotoMono/__init__.py +0 -0
  155. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/__init__.py +0 -0
  156. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/demo_fpga/heartbeat.pcf +0 -0
  157. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/demo_fpga/heartbeat.sdc +0 -0
  158. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/demo_fpga/tech_flops.lib +0 -0
  159. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/demo_fpga/tech_flops.v +0 -0
  160. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/demo_fpga/vtr_primitives.lib +0 -0
  161. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/demo_fpga/z1000.xml +0 -0
  162. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/demo_fpga/z1000_constraint_map.json +0 -0
  163. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/demo_fpga/z1000_rr_graph.xml +0 -0
  164. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/demo_fpga/z1000_yosys_config.json +0 -0
  165. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/heartbeat.sdc +0 -0
  166. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/heartbeat.v +0 -0
  167. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/logo.png +0 -0
  168. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/__init__.py +0 -0
  169. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/email/__init__.py +0 -0
  170. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/email/general.j2 +0 -0
  171. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/email/summary.j2 +0 -0
  172. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/issue/README.txt +0 -0
  173. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/issue/__init__.py +0 -0
  174. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/issue/run.sh +0 -0
  175. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/replay/replay.py.j2 +0 -0
  176. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/replay/replay.sh.j2 +0 -0
  177. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/replay/requirements.txt +0 -0
  178. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/replay/setup.sh +0 -0
  179. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/slurm/__init__.py +0 -0
  180. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/slurm/run.sh +0 -0
  181. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/tcl/__init__.py +0 -0
  182. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/data/templates/tcl/manifest.tcl.j2 +0 -0
  183. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/demos/__init__.py +0 -0
  184. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/demos/asic_demo.py +0 -0
  185. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/demos/fpga_demo.py +0 -0
  186. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/design.py +0 -0
  187. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flowgraph.py +0 -0
  188. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/__init__.py +0 -0
  189. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/asicflow.py +0 -0
  190. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/drcflow.py +0 -0
  191. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/fpgaflow.py +0 -0
  192. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/generate_openroad_rcx.py +0 -0
  193. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/highresscreenshotflow.py +0 -0
  194. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/interposerflow.py +0 -0
  195. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/lintflow.py +0 -0
  196. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/showflow.py +0 -0
  197. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/signoffflow.py +0 -0
  198. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/flows/synflow.py +0 -0
  199. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/fpga.py +0 -0
  200. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/fpgas/__init__.py +0 -0
  201. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/fpgas/lattice_ice40.py +0 -0
  202. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/library.py +0 -0
  203. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/metrics/__init__.py +0 -0
  204. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/metrics/asic.py +0 -0
  205. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/metrics/fpga.py +0 -0
  206. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/optimizer/__init__.py +0 -0
  207. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/optimizer/vizier.py +0 -0
  208. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/package/github.py +0 -0
  209. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/package/https.py +0 -0
  210. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/pdk.py +0 -0
  211. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/project.py +0 -0
  212. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/__init__.py +0 -0
  213. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/client.py +0 -0
  214. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/schema.py +0 -0
  215. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server.py +0 -0
  216. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/__init__.py +0 -0
  217. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/requests/__init__.py +0 -0
  218. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/requests/cancel_job.json +0 -0
  219. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/requests/check_progress.json +0 -0
  220. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/requests/check_server.json +0 -0
  221. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/requests/delete_job.json +0 -0
  222. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/requests/get_results.json +0 -0
  223. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/requests/remote_run.json +0 -0
  224. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/responses/__init__.py +0 -0
  225. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/responses/cancel_job.json +0 -0
  226. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/responses/check_progress.json +0 -0
  227. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/responses/check_server.json +0 -0
  228. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/responses/delete_job.json +0 -0
  229. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/responses/get_results.json +0 -0
  230. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/remote/server_schema/responses/remote_run.json +0 -0
  231. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/__init__.py +0 -0
  232. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/__init__.py +0 -0
  233. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/cli/__init__.py +0 -0
  234. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/cli/board.py +0 -0
  235. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/__init__.py +0 -0
  236. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/components/__init__.py +0 -0
  237. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/components/flowgraph.py +0 -0
  238. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/components/graph.py +0 -0
  239. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/layouts/__init__.py +0 -0
  240. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/layouts/_common.py +0 -0
  241. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/layouts/vertical_flowgraph.py +0 -0
  242. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/layouts/vertical_flowgraph_node_tab.py +0 -0
  243. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/layouts/vertical_flowgraph_sac_tabs.py +0 -0
  244. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/state.py +0 -0
  245. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/utils/__init__.py +0 -0
  246. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/utils/file_utils.py +0 -0
  247. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/dashboard/web/viewer.py +0 -0
  248. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/report.py +0 -0
  249. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/summary_image.py +0 -0
  250. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/report/utils.py +0 -0
  251. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/__init__.py +0 -0
  252. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/docker.py +0 -0
  253. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/error.py +0 -0
  254. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/run_node.py +0 -0
  255. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/scheduler.py +0 -0
  256. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/schedulernode.py +0 -0
  257. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/send_messages.py +0 -0
  258. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/slurm.py +0 -0
  259. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/taskscheduler.py +0 -0
  260. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/validation/__init__.py +0 -0
  261. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/scheduler/validation/email_credentials.json +0 -0
  262. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/__init__.py +0 -0
  263. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/_metadata.py +0 -0
  264. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/docs/__init__.py +0 -0
  265. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/docs/schemagen.py +0 -0
  266. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/docs/utils.py +0 -0
  267. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/docschema.py +0 -0
  268. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/editableschema.py +0 -0
  269. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/journal.py +0 -0
  270. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/namedschema.py +0 -0
  271. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/parameter.py +0 -0
  272. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/parametertype.py +0 -0
  273. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/parametervalue.py +0 -0
  274. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/safeschema.py +0 -0
  275. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema/utils.py +0 -0
  276. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema_support/__init__.py +0 -0
  277. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema_support/dependencyschema.py +0 -0
  278. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema_support/filesetschema.py +0 -0
  279. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema_support/metric.py +0 -0
  280. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema_support/option.py +0 -0
  281. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema_support/packageschema.py +0 -0
  282. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema_support/pathschema.py +0 -0
  283. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schema_support/record.py +0 -0
  284. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/schematic.py +0 -0
  285. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/targets/__init__.py +0 -0
  286. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/targets/asap7_demo.py +0 -0
  287. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/targets/freepdk45_demo.py +0 -0
  288. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/targets/gf180_demo.py +0 -0
  289. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/targets/ihp130_demo.py +0 -0
  290. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/targets/interposer_demo.py +0 -0
  291. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/targets/skywater130_demo.py +0 -0
  292. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tool.py +0 -0
  293. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/__init__.py +0 -0
  294. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/_common/__init__.py +0 -0
  295. {siliconcompiler-0.36.3/siliconcompiler/tools/_common/sdc → siliconcompiler-0.36.4/siliconcompiler/tools/_common/cocotb}/__init__.py +0 -0
  296. {siliconcompiler-0.36.3/siliconcompiler/tools/_common/tcl → siliconcompiler-0.36.4/siliconcompiler/tools/_common/sdc}/__init__.py +0 -0
  297. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/_common/sdc/sc_constraints.sdc +0 -0
  298. {siliconcompiler-0.36.3/siliconcompiler/tools/openroad/templates → siliconcompiler-0.36.4/siliconcompiler/tools/_common/tcl}/__init__.py +0 -0
  299. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +0 -0
  300. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/_common/tcl/sc_schema_access.tcl +0 -0
  301. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/bambu/__init__.py +0 -0
  302. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/bambu/convert.py +0 -0
  303. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/bluespec/__init__.py +0 -0
  304. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/bluespec/convert.py +0 -0
  305. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/builtin/__init__.py +0 -0
  306. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/builtin/filter.py +0 -0
  307. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/builtin/importfiles.py +0 -0
  308. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/builtin/join.py +0 -0
  309. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/builtin/maximum.py +0 -0
  310. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/builtin/minimum.py +0 -0
  311. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/builtin/mux.py +0 -0
  312. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/builtin/nop.py +0 -0
  313. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/builtin/verify.py +0 -0
  314. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/chisel/__init__.py +0 -0
  315. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/chisel/convert.py +0 -0
  316. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/chisel/template/SCDriver.scala +0 -0
  317. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/chisel/template/build.sbt +0 -0
  318. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/execute/__init__.py +0 -0
  319. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/execute/exec_input.py +0 -0
  320. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/genfasm/__init__.py +0 -0
  321. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/genfasm/bitstream.py +0 -0
  322. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/ghdl/__init__.py +0 -0
  323. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/ghdl/convert.py +0 -0
  324. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/graphviz/__init__.py +0 -0
  325. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/graphviz/screenshot.py +0 -0
  326. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/graphviz/show.py +0 -0
  327. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/gtkwave/__init__.py +0 -0
  328. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/gtkwave/scripts/sc_show.tcl +0 -0
  329. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/gtkwave/show.py +0 -0
  330. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/icarus/__init__.py +0 -0
  331. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/icepack/__init__.py +0 -0
  332. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/icepack/bitstream.py +0 -0
  333. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/keplerformal/__init__.py +0 -0
  334. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/keplerformal/lec.py +0 -0
  335. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/__init__.py +0 -0
  336. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/convert_drc_db.py +0 -0
  337. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/drc.py +0 -0
  338. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/export.py +0 -0
  339. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/merge.py +0 -0
  340. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/operations.py +0 -0
  341. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/screenshot.py +0 -0
  342. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/scripts/klayout_convert_drc_db.py +0 -0
  343. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/scripts/klayout_export.py +0 -0
  344. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/scripts/klayout_merge.py +0 -0
  345. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/scripts/klayout_operations.py +0 -0
  346. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/scripts/klayout_show.py +0 -0
  347. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/scripts/klayout_utils.py +0 -0
  348. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/klayout/show.py +0 -0
  349. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/magic/__init__.py +0 -0
  350. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/magic/drc.py +0 -0
  351. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/magic/extspice.py +0 -0
  352. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/magic/scripts/sc_drc.tcl +0 -0
  353. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/magic/scripts/sc_extspice.tcl +0 -0
  354. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/magic/scripts/sc_magic.tcl +0 -0
  355. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/montage/__init__.py +0 -0
  356. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/montage/tile.py +0 -0
  357. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/netgen/__init__.py +0 -0
  358. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/netgen/count_lvs.py +0 -0
  359. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/netgen/lvs.py +0 -0
  360. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/netgen/scripts/sc_lvs.tcl +0 -0
  361. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/nextpnr/__init__.py +0 -0
  362. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/nextpnr/apr.py +0 -0
  363. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/__init__.py +0 -0
  364. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/antenna_repair.py +0 -0
  365. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/clock_tree_synthesis.py +0 -0
  366. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/detailed_placement.py +0 -0
  367. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/detailed_route.py +0 -0
  368. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/endcap_tapcell_insertion.py +0 -0
  369. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/fillercell_insertion.py +0 -0
  370. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/fillmetal_insertion.py +0 -0
  371. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/global_placement.py +0 -0
  372. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/global_route.py +0 -0
  373. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/init_floorplan.py +0 -0
  374. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/macro_placement.py +0 -0
  375. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/metrics.py +0 -0
  376. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/pin_placement.py +0 -0
  377. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/power_grid.py +0 -0
  378. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/power_grid_analysis.py +0 -0
  379. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/rcx_bench.py +0 -0
  380. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/rcx_extract.py +0 -0
  381. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/rdlroute.py +0 -0
  382. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/repair_design.py +0 -0
  383. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/repair_timing.py +0 -0
  384. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/screenshot.py +0 -0
  385. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +0 -0
  386. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +0 -0
  387. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +0 -0
  388. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +0 -0
  389. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +0 -0
  390. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +0 -0
  391. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +0 -0
  392. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +0 -0
  393. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +0 -0
  394. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +0 -0
  395. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +0 -0
  396. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +0 -0
  397. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_irdrop.tcl +0 -0
  398. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +0 -0
  399. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +0 -0
  400. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +0 -0
  401. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +0 -0
  402. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +0 -0
  403. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +0 -0
  404. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/debugging.tcl +0 -0
  405. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/procs.tcl +0 -0
  406. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +0 -0
  407. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl +0 -0
  408. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl +0 -0
  409. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/reports.tcl +0 -0
  410. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +0 -0
  411. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/write_data.tcl +0 -0
  412. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/write_data_physical.tcl +0 -0
  413. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/write_data_timing.tcl +0 -0
  414. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/common/write_images.tcl +0 -0
  415. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_bench.tcl +0 -0
  416. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_extract.tcl +0 -0
  417. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +0 -0
  418. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +0 -0
  419. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/scripts/sc_show.tcl +0 -0
  420. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/show.py +0 -0
  421. {siliconcompiler-0.36.3/siliconcompiler/tools/opensta/scripts → siliconcompiler-0.36.4/siliconcompiler/tools/openroad/templates}/__init__.py +0 -0
  422. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/templates/pex.tcl +0 -0
  423. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/openroad/write_data.py +0 -0
  424. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/opensta/__init__.py +0 -0
  425. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/opensta/check_library.py +0 -0
  426. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/opensta/report_libraries.py +0 -0
  427. {siliconcompiler-0.36.3/siliconcompiler/tools/surelog/templates → siliconcompiler-0.36.4/siliconcompiler/tools/opensta/scripts}/__init__.py +0 -0
  428. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/opensta/scripts/sc_check_library.tcl +0 -0
  429. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/opensta/scripts/sc_procs.tcl +0 -0
  430. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl +0 -0
  431. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/opensta/scripts/sc_timing.tcl +0 -0
  432. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/opensta/timing.py +0 -0
  433. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/slang/__init__.py +0 -0
  434. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/slang/elaborate.py +0 -0
  435. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/slang/lint.py +0 -0
  436. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/surelog/__init__.py +0 -0
  437. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/surelog/parse.py +0 -0
  438. {siliconcompiler-0.36.3/siliconcompiler/tools/vivado/scripts → siliconcompiler-0.36.4/siliconcompiler/tools/surelog/templates}/__init__.py +0 -0
  439. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/surelog/templates/output.v +0 -0
  440. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/surfer/__init__.py +0 -0
  441. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/surfer/show.py +0 -0
  442. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/sv2v/__init__.py +0 -0
  443. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/sv2v/convert.py +0 -0
  444. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/verilator/__init__.py +0 -0
  445. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/verilator/lint.py +0 -0
  446. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/__init__.py +0 -0
  447. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/bitstream.py +0 -0
  448. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/place.py +0 -0
  449. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/route.py +0 -0
  450. {siliconcompiler-0.36.3/siliconcompiler/tools/yosys/techmaps → siliconcompiler-0.36.4/siliconcompiler/tools/vivado/scripts}/__init__.py +0 -0
  451. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +0 -0
  452. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/scripts/sc_place.tcl +0 -0
  453. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/scripts/sc_route.tcl +0 -0
  454. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/scripts/sc_run.tcl +0 -0
  455. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl +0 -0
  456. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vivado/syn_fpga.py +0 -0
  457. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vpr/_json_constraint.py +0 -0
  458. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vpr/_xml_constraint.py +0 -0
  459. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vpr/place.py +0 -0
  460. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vpr/route.py +0 -0
  461. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vpr/screenshot.py +0 -0
  462. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/vpr/show.py +0 -0
  463. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/xdm/__init__.py +0 -0
  464. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/xdm/convert.py +0 -0
  465. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/xyce/__init__.py +0 -0
  466. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/xyce/simulate.py +0 -0
  467. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/__init__.py +0 -0
  468. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/lec_asic.py +0 -0
  469. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/prepareLib.py +0 -0
  470. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/scripts/procs.tcl +0 -0
  471. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/scripts/sc_lec.tcl +0 -0
  472. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/scripts/sc_screenshot.tcl +0 -0
  473. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/scripts/sc_synth_fpga.tcl +0 -0
  474. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/scripts/syn_strategies.tcl +0 -0
  475. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/syn_fpga.py +0 -0
  476. {siliconcompiler-0.36.3/siliconcompiler/tools/yosys/templates → siliconcompiler-0.36.4/siliconcompiler/tools/yosys/techmaps}/__init__.py +0 -0
  477. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v +0 -0
  478. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/tools/yosys/templates/abc.const +0 -0
  479. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/_tools.py +0 -0
  480. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel8/install-chisel.sh +0 -0
  481. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel8/install-klayout.sh +0 -0
  482. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel8/install-montage.sh +0 -0
  483. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel8/install-verible.sh +0 -0
  484. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel8/install-xdm.sh +0 -0
  485. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-chisel.sh +0 -0
  486. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-klayout.sh +0 -0
  487. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-montage.sh +0 -0
  488. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-verible.sh +0 -0
  489. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/rhel9/install-xdm.sh +0 -0
  490. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +0 -0
  491. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +0 -0
  492. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-montage.sh +0 -0
  493. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +0 -0
  494. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-verible.sh +0 -0
  495. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +0 -0
  496. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +0 -0
  497. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +0 -0
  498. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-montage.sh +0 -0
  499. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-verible.sh +0 -0
  500. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +0 -0
  501. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +0 -0
  502. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +0 -0
  503. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-montage.sh +0 -0
  504. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-verible.sh +0 -0
  505. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +0 -0
  506. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/utils/__init__.py +0 -0
  507. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/utils/curation.py +0 -0
  508. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/utils/issue.py +0 -0
  509. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/utils/logging.py +0 -0
  510. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/utils/multiprocessing.py +0 -0
  511. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/utils/paths.py +0 -0
  512. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/utils/settings.py +0 -0
  513. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/utils/showtools.py +0 -0
  514. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler/utils/units.py +0 -0
  515. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler.egg-info/dependency_links.txt +0 -0
  516. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler.egg-info/entry_points.txt +0 -0
  517. {siliconcompiler-0.36.3 → siliconcompiler-0.36.4}/siliconcompiler.egg-info/top_level.txt +0 -0
@@ -28,3 +28,4 @@ python:
28
28
  - lint
29
29
  - docs
30
30
  - optimizer
31
+ - cocotb
@@ -8,6 +8,23 @@ 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.36.4 (2026-01-31)
12
+ =========================================
13
+
14
+ **Minor:**
15
+
16
+ * Fixed commandline handling of `sc-issue` when `-cfg` is missing.
17
+ * Added support for `-jobs` to `sc-install` to control number of build jobs.
18
+ * Updated detection of editable python installs.
19
+ * Fixed json serialization bug when journal is active.
20
+
21
+ * Tools:
22
+
23
+ * yosys: removed default use of kogge-stone techmap pass.
24
+ * openroad: correctly include lefs in floorplanning required keys.
25
+ * icarus, verilator: added support for cocotb plugins.
26
+
27
+
11
28
  SiliconCompiler 0.36.3 (2026-01-21)
12
29
  =========================================
13
30
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: siliconcompiler
3
- Version: 0.36.3
3
+ Version: 0.36.4
4
4
  Summary: A compiler framework that automates translation from source code to silicon.
5
5
  Author: Zero ASIC
6
6
  License: Apache License 2.0
@@ -70,6 +70,8 @@ Requires-Dist: pydata-sphinx-theme==0.16.1; extra == "docs"
70
70
  Requires-Dist: sc-leflib>=0.2.0; extra == "docs"
71
71
  Provides-Extra: optimizer
72
72
  Requires-Dist: google-vizier[jax]==0.1.21; python_version >= "3.10" and extra == "optimizer"
73
+ Provides-Extra: cocotb
74
+ Requires-Dist: cocotb<2.1.0,>=2.0.1; (python_version >= "3.7" and python_version <= "3.13") and extra == "cocotb"
73
75
  Dynamic: license-file
74
76
 
75
77
  ![SiliconCompiler](https://raw.githubusercontent.com/siliconcompiler/siliconcompiler/main/docs/_static/sc_logo_with_text.png)
@@ -124,6 +124,9 @@ docs = [
124
124
  optimizer = [
125
125
  "google-vizier[jax] == 0.1.21; python_version >= '3.10'"
126
126
  ]
127
+ cocotb = [
128
+ "cocotb >= 2.0.1, < 2.1.0; python_version >= '3.7' and python_version <= '3.13'"
129
+ ]
127
130
 
128
131
  [tool.setuptools]
129
132
  include-package-data = true
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.36.3'
2
+ version = '0.36.4'
3
3
 
4
4
  # Default server address for remote runs, if unspecified.
5
5
  default_server = 'https://server.siliconcompiler.com'
@@ -92,7 +92,8 @@ class ChoiceOptional(Container):
92
92
  return sorted(items)
93
93
 
94
94
 
95
- def install_tool(tool: str, script: str, build_dir: str, prefix: str) -> bool:
95
+ def install_tool(tool: str, script: str, build_dir: str, prefix: str,
96
+ jobs: Optional[int] = None) -> bool:
96
97
  """
97
98
  Prepare a build directory, configure the environment, and execute an install script for a tool.
98
99
 
@@ -102,6 +103,8 @@ def install_tool(tool: str, script: str, build_dir: str, prefix: str) -> bool:
102
103
  build_dir (str): Base directory where a per-tool build directory will be created.
103
104
  prefix (str): Installation prefix; added to PATH and used to determine whether
104
105
  sudo is required.
106
+ jobs (Optional[int]): Maximum number of parallel jobs to use during build. If None,
107
+ defaults to the number of CPU cores.
105
108
 
106
109
  Returns:
107
110
  bool: `True` if the install script exited with status 0, `False` otherwise.
@@ -117,6 +120,8 @@ def install_tool(tool: str, script: str, build_dir: str, prefix: str) -> bool:
117
120
  env["PATH"] = ":".join(path)
118
121
  env["PREFIX"] = prefix
119
122
  env["USE_SUDO_INSTALL"] = "no"
123
+ if jobs is not None:
124
+ env["NPROC"] = str(jobs)
120
125
  try:
121
126
  os.makedirs(prefix, exist_ok=True)
122
127
  except PermissionError:
@@ -312,6 +317,12 @@ To install tools in a different location:
312
317
  To build tools in a different location:
313
318
  sc-install -build_dir /tmp yosys
314
319
 
320
+ To limit parallel build jobs (useful for memory-constrained systems):
321
+ sc-install yosys -jobs 4
322
+
323
+ To combine options (custom location with limited parallelism):
324
+ sc-install -prefix /opt/tools -jobs 8 openroad yosys
325
+
315
326
  To show the install script:
316
327
  sc-install -show openroad
317
328
 
@@ -359,6 +370,13 @@ Tool groups:
359
370
  help="Directory to build the tool in",
360
371
  metavar="<path>")
361
372
 
373
+ parser.add_argument(
374
+ "-jobs",
375
+ type=int,
376
+ default=None,
377
+ help="Maximum number of parallel build jobs (default: number of CPU cores)",
378
+ metavar="<int>")
379
+
362
380
  parser.add_argument(
363
381
  "-show",
364
382
  action="store_true",
@@ -389,6 +407,9 @@ Tool groups:
389
407
 
390
408
  tools_handled = set()
391
409
  tools_completed = set()
410
+ if args.jobs is not None and args.jobs < 1:
411
+ print("Error: -jobs must be a positive integer", file=sys.stderr)
412
+ return 1
392
413
  for tool in args.tool:
393
414
  if tool in tools_handled:
394
415
  continue
@@ -396,7 +417,7 @@ Tool groups:
396
417
  if args.show:
397
418
  show_tool(tool, tools[tool])
398
419
  else:
399
- if not install_tool(tool, tools[tool], args.build_dir, args.prefix):
420
+ if not install_tool(tool, tools[tool], args.build_dir, args.prefix, args.jobs):
400
421
  notstarted = set(args.tool) - tools_completed - tools_handled
401
422
  __print_summary(tools_completed, tool, notstarted)
402
423
  return 1
@@ -70,6 +70,10 @@ To run a testcase, use:
70
70
  switchlist=switchlist)
71
71
 
72
72
  if not issue.get("cmdarg", "run"):
73
+ if not issue.get("cmdarg", "cfg"):
74
+ issue.logger.error('-cfg must be provided')
75
+ return 1
76
+
73
77
  project: Project = Project.from_manifest(filepath=issue.get("cmdarg", "cfg"))
74
78
 
75
79
  # Determine abs path for build dir
@@ -1,5 +1,8 @@
1
1
  from siliconcompiler.tools.icarus import compile as icarus_compile
2
+ from siliconcompiler.tools.icarus import cocotb_exec as icarus_cocotb
2
3
  from siliconcompiler.tools.verilator import compile as verilator_compile
4
+ from siliconcompiler.tools.verilator import cocotb_compile as verilator_cocotb_compile
5
+ from siliconcompiler.tools.verilator import cocotb_exec as verilator_cocotb
3
6
  from siliconcompiler.tools.execute import exec_input
4
7
  from siliconcompiler.tools.xyce import simulate as xyce_simulate
5
8
  from siliconcompiler.tools.xdm import convert as xdm_convert
@@ -24,7 +27,9 @@ class DVFlow(Flowgraph):
24
27
  Supported tools are:
25
28
 
26
29
  * 'icarus': Compiles and simulates with the Icarus Verilog simulator.
30
+ * 'icarus-cocotb': Compiles with Icarus and runs cocotb Python testbenches.
27
31
  * 'verilator': Compiles and simulates with Verilator.
32
+ * 'verilator-cocotb': Compiles with Verilator and runs cocotb Python testbenches.
28
33
  * 'xyce': Simulates a netlist with the Xyce circuit simulator.
29
34
  * 'xdm-xyce': Converts a design to a Xyce-compatible format and simulates.
30
35
  '''
@@ -50,10 +55,18 @@ class DVFlow(Flowgraph):
50
55
  self.node("compile", icarus_compile.CompileTask())
51
56
  sim_task = exec_input.ExecInputTask()
52
57
  com_name = "compile"
58
+ elif tool == "icarus-cocotb":
59
+ self.node("compile", icarus_compile.CompileTask())
60
+ sim_task = icarus_cocotb.CocotbExecTask()
61
+ com_name = "compile"
53
62
  elif tool == "verilator":
54
63
  self.node("compile", verilator_compile.CompileTask())
55
64
  sim_task = exec_input.ExecInputTask()
56
65
  com_name = "compile"
66
+ elif tool == "verilator-cocotb":
67
+ self.node("compile", verilator_cocotb_compile.CocotbCompileTask())
68
+ sim_task = verilator_cocotb.CocotbExecTask()
69
+ com_name = "compile"
57
70
  elif tool == "xyce":
58
71
  sim_task = xyce_simulate.SimulateTask()
59
72
  com_name = None
@@ -16,6 +16,7 @@ import logging
16
16
  import os
17
17
  import random
18
18
  import re
19
+ import site
19
20
  import shutil
20
21
  import time
21
22
  import threading
@@ -27,7 +28,7 @@ from typing import Optional, List, Dict, Type, Union, TYPE_CHECKING, Final
27
28
 
28
29
  from fasteners import InterProcessLock
29
30
  from importlib.metadata import distributions, distribution
30
- from pathlib import Path
31
+ from pathlib import Path, PureWindowsPath
31
32
  from urllib import parse as url_parse
32
33
 
33
34
  from siliconcompiler.utils import get_plugins, default_cache_dir
@@ -647,21 +648,25 @@ class PythonPathResolver(Resolver):
647
648
  return False
648
649
  dist_name = dist_map[module_name][0]
649
650
 
650
- is_editable = False
651
651
  dist_obj = distribution(dist_name)
652
- if not dist_obj or not dist_obj.files:
652
+ if not dist_obj:
653
653
  return False
654
654
 
655
- for f in dist_obj.files:
656
- if f.name == 'direct_url.json':
657
- info = None
658
- with open(f.locate(), 'r') as fp:
659
- info = json.load(fp)
660
-
661
- if "dir_info" in info:
662
- is_editable = info["dir_info"].get("editable", False)
655
+ direct_url_content = dist_obj.read_text('direct_url.json')
656
+ if direct_url_content:
657
+ direct_url = json.loads(direct_url_content)
658
+ return direct_url.get('dir_info', {}).get('editable', False)
659
+
660
+ dist_loc = dist_obj.locate_file('')
661
+ site_paths = site.getsitepackages()
662
+ user_site_path = site.getusersitepackages()
663
+ if user_site_path:
664
+ site_paths.append(user_site_path)
665
+ if not dist_loc or not site_paths:
666
+ return False
663
667
 
664
- return is_editable
668
+ dist_loc = PureWindowsPath(dist_loc).as_posix()
669
+ return dist_loc not in [PureWindowsPath(site_path).as_posix() for site_path in site_paths]
665
670
 
666
671
  @staticmethod
667
672
  def set_dataroot(root: "PathSchema",
@@ -151,7 +151,8 @@ class GitResolver(RemoteResolver):
151
151
  for submodule in repo.submodules:
152
152
  submodule.update(recursive=True, init=True, force=True)
153
153
  except GitCommandError as e:
154
- if 'Permission denied' in repr(e) or 'could not read Username' in repr(e):
154
+ error_msg = str(e)
155
+ if 'Permission denied' in error_msg or 'could not read Username' in error_msg:
155
156
  if self.urlscheme in ('ssh', 'git+ssh'):
156
157
  raise RuntimeError('Failed to authenticate with Git. Please ensure your SSH '
157
158
  'keys are set up correctly.')
@@ -8,6 +8,7 @@ import contextlib
8
8
  import copy
9
9
  import importlib
10
10
  import logging
11
+ import pathlib
11
12
 
12
13
  try:
13
14
  import gzip
@@ -385,10 +386,18 @@ class BaseSchema:
385
386
  fout = BaseSchema.__open_file(filepath, is_read=False)
386
387
 
387
388
  try:
389
+ def default(obj: Any) -> Any:
390
+ if isinstance(obj, pathlib.PurePath):
391
+ # Cast everything to a windows path and convert to posix.
392
+ # https://stackoverflow.com/questions/73682260
393
+ return pathlib.PureWindowsPath(obj).as_posix()
394
+ raise TypeError
395
+
388
396
  if _has_orjson:
389
- manifest_str = json.dumps(self.getdict(), option=json.OPT_INDENT_2).decode()
397
+ manifest_str = json.dumps(self.getdict(), option=json.OPT_INDENT_2,
398
+ default=default).decode()
390
399
  else:
391
- manifest_str = json.dumps(self.getdict(), indent=2)
400
+ manifest_str = json.dumps(self.getdict(), indent=2, default=default)
392
401
  fout.write(manifest_str)
393
402
  finally:
394
403
  fout.close()
@@ -143,7 +143,7 @@ class CommandLineSchema(BaseSchema):
143
143
  # Grab config from argv
144
144
  try:
145
145
  cfg_index = sys.argv.index("-cfg", 1)
146
- if cfg_index < len(sys.argv):
146
+ if cfg_index + 1 < len(sys.argv):
147
147
  cfg_file = sys.argv[cfg_index + 1]
148
148
  except ValueError:
149
149
  pass
@@ -161,7 +161,8 @@ class CommandLineSchema(BaseSchema):
161
161
  # Add commandline key for input files
162
162
  if not isinstance(schema, CommandLineSchema):
163
163
  raise TypeError("Schema is not a commandline class")
164
- if "cmdarg" not in schema.getkeys() or "file" not in schema.getkeys("cmdarg"):
164
+
165
+ if not schema.valid("cmdarg", "input"):
165
166
  schema._add_commandline_argument("input", "[file]", "input files", ...)
166
167
  keyschema._add_commandline_argument("input", "[file]", "input files", ...)
167
168
 
@@ -0,0 +1,286 @@
1
+ import os
2
+ import sys
3
+ from pathlib import Path
4
+ from typing import Optional, Union, Dict
5
+ import xml.etree.ElementTree as ET
6
+
7
+ from siliconcompiler import Task
8
+
9
+ try:
10
+ import cocotb_tools.config
11
+ from cocotb_tools.runner import Runner
12
+ _has_cocotb = True
13
+ except ModuleNotFoundError:
14
+ _has_cocotb = False
15
+ Runner = object
16
+
17
+
18
+ def get_cocotb_config(sim="icarus"):
19
+ if not _has_cocotb:
20
+ raise NotImplementedError("COCOTB must be installed to use get_cocotb_config")
21
+
22
+ libs_dir = cocotb_tools.config.libs_dir
23
+ lib_name = cocotb_tools.config.lib_name("vpi", sim)
24
+ share_dir = cocotb_tools.config.share_dir
25
+
26
+ return libs_dir, lib_name, share_dir
27
+
28
+
29
+ class CocotbRunnerDummy(Runner):
30
+ """
31
+ A minimal Runner subclass used solely to retrieve the libpython path.
32
+
33
+ This class provides access to the libpython shared library location
34
+ without adding ``find_libpython`` as a direct dependency. It leverages
35
+ cocotb's existing Runner infrastructure, which handles libpython
36
+ discovery internally via the ``_set_env()`` method.
37
+
38
+ The abstract methods required by the Runner base class are implemented
39
+ as no-ops or raise NotImplementedError, as they are not intended to be
40
+ called. This class should only be instantiated to call
41
+ ``get_libpython_path()``.
42
+
43
+ Example:
44
+ >>> libpython = CocotbRunnerDummy().get_libpython_path()
45
+ >>> print(libpython)
46
+ /usr/lib/x86_64-linux-gnu/libpython3.10.so
47
+ """
48
+
49
+ def __init__(self):
50
+ if not _has_cocotb:
51
+ raise NotImplementedError("COCOTB must be installed to use get_cocotb_config")
52
+
53
+ super().__init__()
54
+ # These attributes are required by _set_env() which uses them to
55
+ # populate environment variables.
56
+ self.sim_hdl_toplevel = ""
57
+ self.test_module = ""
58
+ self.hdl_toplevel_lang = ""
59
+
60
+ def _simulator_in_path(self):
61
+ # No-op: This dummy class doesn't require any simulator executable.
62
+ pass
63
+
64
+ def _build_command(self):
65
+ raise NotImplementedError(
66
+ "CocotbRunnerDummy is not intended for building HDL sources")
67
+
68
+ def _test_command(self):
69
+ raise NotImplementedError(
70
+ "CocotbRunnerDummy is not intended for running tests")
71
+
72
+ def _get_define_options(self, defines):
73
+ raise NotImplementedError(
74
+ "CocotbRunnerDummy is not intended for HDL compilation")
75
+
76
+ def _get_include_options(self, includes):
77
+ raise NotImplementedError(
78
+ "CocotbRunnerDummy is not intended for HDL compilation")
79
+
80
+ def _get_parameter_options(self, parameters):
81
+ raise NotImplementedError(
82
+ "CocotbRunnerDummy is not intended for HDL compilation")
83
+
84
+ def get_libpython_path(self):
85
+ """
86
+ Retrieve the path to the libpython shared library.
87
+
88
+ This method uses cocotb's ``Runner._set_env()`` which internally
89
+ calls ``find_libpython.find_libpython()`` to locate the library.
90
+
91
+ Returns:
92
+ str: Absolute path to the libpython shared library.
93
+
94
+ Raises:
95
+ ValueError: If libpython cannot be found.
96
+ """
97
+ self._set_env()
98
+ return self.env["LIBPYTHON_LOC"]
99
+
100
+
101
+ class CocotbTask(Task):
102
+
103
+ def __init__(self):
104
+ super().__init__()
105
+
106
+ self.add_parameter("cocotb_random_seed", "int",
107
+ 'Random seed for cocotb test reproducibility. '
108
+ 'If not set, cocotb will generate a random seed.')
109
+
110
+ def set_cocotb_randomseed(
111
+ self, seed: int,
112
+ step: Optional[str] = None,
113
+ index: Optional[Union[str, int]] = None
114
+ ):
115
+ """
116
+ Sets the random seed for cocotb tests.
117
+
118
+ Args:
119
+ seed (int): The random seed value.
120
+ step (str, optional): The specific step to apply this configuration to.
121
+ index (str, optional): The specific index to apply this configuration to.
122
+ """
123
+ self.set("var", "cocotb_random_seed", seed, step=step, index=index)
124
+
125
+ def task(self):
126
+ return "exec_cocotb"
127
+
128
+ def _get_test_modules(self):
129
+ """
130
+ Get cocotb test module names from Python files in filesets.
131
+
132
+ Returns:
133
+ tuple: (module_names, module_dirs) where module_names is a
134
+ comma-separated string and module_dirs is a list of
135
+ directories containing the modules.
136
+ """
137
+ module_names = []
138
+ module_dirs = []
139
+ seen_dirs = set()
140
+
141
+ for lib, fileset in self.project.get_filesets():
142
+ for pyfile in lib.get_file(fileset=fileset, filetype="python"):
143
+ path = Path(pyfile)
144
+ # Module name is the filename without .py extension
145
+ module_name = path.stem
146
+ module_names.append(module_name)
147
+ # Track the directory for PYTHONPATH
148
+ dir_path = str(path.parent.resolve())
149
+ if dir_path not in seen_dirs:
150
+ seen_dirs.add(dir_path)
151
+ module_dirs.append(dir_path)
152
+
153
+ return ",".join(module_names), module_dirs
154
+
155
+ def _get_toplevel_lang(self):
156
+ """
157
+ Determine the HDL toplevel language from the design schema.
158
+
159
+ For Icarus Verilog, this is always "verilog" since Icarus
160
+ doesn't support VHDL. SystemVerilog is treated as Verilog
161
+ for cocotb's TOPLEVEL_LANG.
162
+
163
+ Returns:
164
+ str: The toplevel language ("verilog").
165
+ """
166
+ # Icarus only supports Verilog/SystemVerilog, not VHDL
167
+ # cocotb uses "verilog" for both Verilog and SystemVerilog
168
+ return "verilog"
169
+
170
+ def __setup_cocotb_environment(self):
171
+ """
172
+ Set up all required environment variables for cocotb execution.
173
+ """
174
+
175
+ test_modules, _ = self._get_test_modules()
176
+ libpython_path = CocotbRunnerDummy().get_libpython_path()
177
+
178
+ # LIBPYTHON_LOC: path to libpython shared library
179
+ self.set_environmentalvariable("LIBPYTHON_LOC", libpython_path)
180
+ self.add_required_key("env", "LIBPYTHON_LOC")
181
+
182
+ # COCOTB_TOPLEVEL: the HDL toplevel module name
183
+ self.set_environmentalvariable("COCOTB_TOPLEVEL", self.design_topmodule)
184
+ self.add_required_key("env", "COCOTB_TOPLEVEL")
185
+
186
+ # COCOTB_TEST_MODULES: comma-separated list of Python test modules
187
+ self.set_environmentalvariable("COCOTB_TEST_MODULES", test_modules)
188
+ self.add_required_key("env", "COCOTB_TEST_MODULES")
189
+
190
+ # TOPLEVEL_LANG: HDL language of the toplevel
191
+ self.set_environmentalvariable("TOPLEVEL_LANG", self._get_toplevel_lang())
192
+ self.add_required_key("env", "TOPLEVEL_LANG")
193
+
194
+ # COCOTB_RESULTS_FILE: path to xUnit XML results
195
+ self.set_environmentalvariable("COCOTB_RESULTS_FILE", "outputs/results.xml")
196
+ self.add_required_key("env", "COCOTB_RESULTS_FILE")
197
+
198
+ # COCOTB_RANDOM_SEED: optional random seed for reproducibility
199
+ random_seed = self.get("var", "cocotb_random_seed")
200
+ if random_seed is not None:
201
+ self.set_environmentalvariable("COCOTB_RANDOM_SEED", str(random_seed))
202
+ self.add_required_key("env", "COCOTB_RANDOM_SEED")
203
+
204
+ def setup(self):
205
+ super().setup()
206
+
207
+ if not _has_cocotb:
208
+ raise RuntimeError("Cocotb is not installed; cannot run test.")
209
+
210
+ # Output: xUnit XML results file
211
+ self.add_output_file(file="results.xml")
212
+
213
+ self.add_required_key("option", "design")
214
+ self.add_required_key("option", "fileset")
215
+ if self.project.get("option", "alias"):
216
+ self.add_required_key("option", "alias")
217
+
218
+ # Require Python test modules
219
+ for lib, fileset in self.project.get_filesets():
220
+ if lib.has_file(fileset=fileset, filetype="python"):
221
+ self.add_required_key(lib, "fileset", fileset, "file", "python")
222
+
223
+ if self.get("var", "cocotb_random_seed") is not None:
224
+ self.add_required_key("var", "cocotb_random_seed")
225
+
226
+ # Set up cocotb environment variables
227
+ self.__setup_cocotb_environment()
228
+
229
+ def get_runtime_environmental_variables(self, include_path: bool = True) -> Dict[str, str]:
230
+ envs = super().get_runtime_environmental_variables(include_path)
231
+
232
+ _, module_dirs = self._get_test_modules()
233
+ libs_dir = cocotb_tools.config.libs_dir
234
+
235
+ # PATH: add cocotb libs directory
236
+ current_path = os.environ.get("PATH", "")
237
+ new_path = f"{libs_dir}{os.pathsep}{current_path}"
238
+ envs["PATH"] = new_path
239
+
240
+ # PYTHONPATH: add directories containing test modules
241
+ current_pythonpath = os.environ.get("PYTHONPATH", "")
242
+ pythonpath_parts = module_dirs + ([current_pythonpath] if current_pythonpath else [])
243
+ envs["PYTHONPATH"] = os.pathsep.join(pythonpath_parts)
244
+
245
+ # PYGPI_PYTHON_BIN: Python executable
246
+ envs["PYGPI_PYTHON_BIN"] = sys.executable
247
+
248
+ return envs
249
+
250
+ def _parse_cocotb_results(self, results_file: Path):
251
+ """
252
+ Parse the cocotb xUnit XML results file and extract metrics.
253
+
254
+ Args:
255
+ results_file: Path to the results.xml file.
256
+ """
257
+ try:
258
+ tree = ET.parse(results_file)
259
+ root = tree.getroot()
260
+
261
+ # Count testcases and failures/errors
262
+ testcases = root.findall(".//testcase")
263
+ tests = len(testcases)
264
+ failures = len(root.findall(".//failure"))
265
+ errors = len(root.findall(".//error"))
266
+
267
+ passed = tests - failures - errors
268
+
269
+ self.logger.info(f"Cocotb results: {passed}/{tests} tests passed")
270
+ if failures > 0:
271
+ self.logger.warning(f"Cocotb: {failures} test(s) failed")
272
+ if errors > 0:
273
+ self.logger.warning(f"Cocotb: {errors} test(s) had errors")
274
+
275
+ self.record_metric("errors", errors + failures, source_file=results_file)
276
+
277
+ except Exception as e:
278
+ self.logger.warning(f"Failed to parse cocotb results: {e}")
279
+
280
+ def post_process(self):
281
+ super().post_process()
282
+
283
+ # Parse cocotb results XML and report metrics
284
+ results_file = Path("outputs/results.xml")
285
+ if results_file.exists():
286
+ self._parse_cocotb_results(results_file)