siliconcompiler 0.32.3__py3-none-any.whl → 0.33.1__py3-none-any.whl

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 (280) hide show
  1. siliconcompiler/__init__.py +19 -2
  2. siliconcompiler/_common.py +5 -0
  3. siliconcompiler/_metadata.py +1 -1
  4. siliconcompiler/apps/sc.py +2 -2
  5. siliconcompiler/apps/sc_install.py +10 -3
  6. siliconcompiler/apps/sc_issue.py +1 -1
  7. siliconcompiler/apps/sc_remote.py +10 -5
  8. siliconcompiler/apps/sc_show.py +2 -2
  9. siliconcompiler/apps/utils/replay.py +5 -3
  10. siliconcompiler/asic.py +120 -0
  11. siliconcompiler/checklist.py +150 -0
  12. siliconcompiler/core.py +299 -299
  13. siliconcompiler/flowgraph.py +803 -515
  14. siliconcompiler/fpga.py +84 -0
  15. siliconcompiler/metric.py +479 -0
  16. siliconcompiler/optimizer/vizier.py +2 -3
  17. siliconcompiler/package/__init__.py +29 -6
  18. siliconcompiler/pdk.py +415 -0
  19. siliconcompiler/record.py +453 -0
  20. siliconcompiler/remote/client.py +15 -5
  21. siliconcompiler/remote/schema.py +116 -112
  22. siliconcompiler/remote/server.py +9 -6
  23. siliconcompiler/report/dashboard/cli/__init__.py +14 -721
  24. siliconcompiler/report/dashboard/cli/board.py +899 -0
  25. siliconcompiler/report/dashboard/web/__init__.py +10 -10
  26. siliconcompiler/report/dashboard/web/components/__init__.py +5 -4
  27. siliconcompiler/report/dashboard/web/components/flowgraph.py +3 -3
  28. siliconcompiler/report/dashboard/web/components/graph.py +6 -3
  29. siliconcompiler/report/dashboard/web/state.py +1 -1
  30. siliconcompiler/report/dashboard/web/utils/__init__.py +4 -3
  31. siliconcompiler/report/html_report.py +2 -3
  32. siliconcompiler/report/report.py +22 -11
  33. siliconcompiler/report/summary_image.py +1 -1
  34. siliconcompiler/report/summary_table.py +3 -3
  35. siliconcompiler/report/utils.py +21 -14
  36. siliconcompiler/scheduler/__init__.py +234 -1206
  37. siliconcompiler/scheduler/run_node.py +2 -1
  38. siliconcompiler/scheduler/send_messages.py +11 -5
  39. siliconcompiler/scheduler/slurm.py +11 -44
  40. siliconcompiler/scheduler/taskscheduler.py +320 -0
  41. siliconcompiler/schema/__init__.py +19 -2
  42. siliconcompiler/schema/baseschema.py +493 -0
  43. siliconcompiler/schema/cmdlineschema.py +250 -0
  44. siliconcompiler/{sphinx_ext → schema/docs}/__init__.py +3 -1
  45. siliconcompiler/{sphinx_ext → schema/docs}/dynamicgen.py +63 -81
  46. siliconcompiler/{sphinx_ext → schema/docs}/schemagen.py +73 -85
  47. siliconcompiler/{sphinx_ext → schema/docs}/utils.py +12 -13
  48. siliconcompiler/schema/editableschema.py +136 -0
  49. siliconcompiler/schema/journalingschema.py +238 -0
  50. siliconcompiler/schema/namedschema.py +41 -0
  51. siliconcompiler/schema/packageschema.py +101 -0
  52. siliconcompiler/schema/parameter.py +791 -0
  53. siliconcompiler/schema/parametertype.py +323 -0
  54. siliconcompiler/schema/parametervalue.py +736 -0
  55. siliconcompiler/schema/safeschema.py +37 -0
  56. siliconcompiler/schema/schema_cfg.py +109 -1789
  57. siliconcompiler/schema/utils.py +5 -68
  58. siliconcompiler/schema_obj.py +119 -0
  59. siliconcompiler/tool.py +1416 -0
  60. siliconcompiler/tools/_common/__init__.py +6 -10
  61. siliconcompiler/tools/_common/asic.py +5 -5
  62. siliconcompiler/tools/_common/sdc/sc_constraints.sdc +1 -1
  63. siliconcompiler/tools/bluespec/convert.py +9 -8
  64. siliconcompiler/tools/builtin/_common.py +9 -2
  65. siliconcompiler/tools/builtin/concatenate.py +7 -3
  66. siliconcompiler/tools/builtin/minimum.py +7 -2
  67. siliconcompiler/tools/builtin/mux.py +8 -2
  68. siliconcompiler/tools/builtin/nop.py +7 -2
  69. siliconcompiler/tools/builtin/verify.py +11 -5
  70. siliconcompiler/tools/chisel/convert.py +10 -10
  71. siliconcompiler/tools/genfasm/bitstream.py +3 -3
  72. siliconcompiler/tools/ghdl/convert.py +1 -1
  73. siliconcompiler/tools/icarus/compile.py +4 -4
  74. siliconcompiler/tools/icepack/bitstream.py +6 -1
  75. siliconcompiler/tools/klayout/convert_drc_db.py +5 -0
  76. siliconcompiler/tools/klayout/drc.py +2 -2
  77. siliconcompiler/tools/klayout/klayout_export.py +0 -1
  78. siliconcompiler/tools/klayout/klayout_show.py +6 -6
  79. siliconcompiler/tools/klayout/klayout_utils.py +15 -22
  80. siliconcompiler/tools/netgen/count_lvs.py +2 -2
  81. siliconcompiler/tools/netgen/lvs.py +1 -1
  82. siliconcompiler/tools/nextpnr/apr.py +6 -1
  83. siliconcompiler/tools/nextpnr/nextpnr.py +4 -4
  84. siliconcompiler/tools/openroad/_apr.py +15 -2
  85. siliconcompiler/tools/openroad/rdlroute.py +3 -3
  86. siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +1 -1
  87. siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +5 -5
  88. siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +2 -2
  89. siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +2 -2
  90. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +2 -2
  91. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +2 -2
  92. siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +2 -2
  93. siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +2 -2
  94. siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +2 -2
  95. siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +2 -2
  96. siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +2 -2
  97. siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +3 -9
  98. siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +3 -3
  99. siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +2 -2
  100. siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +2 -2
  101. siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +2 -2
  102. siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +2 -2
  103. siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +2 -2
  104. siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +2 -2
  105. siliconcompiler/tools/openroad/scripts/common/procs.tcl +75 -1
  106. siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +1 -7
  107. siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +2 -2
  108. siliconcompiler/tools/openroad/scripts/common/write_images.tcl +28 -3
  109. siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +1 -1
  110. siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +3 -3
  111. siliconcompiler/tools/openroad/scripts/sc_show.tcl +6 -6
  112. siliconcompiler/tools/opensta/scripts/sc_timing.tcl +10 -0
  113. siliconcompiler/tools/opensta/timing.py +11 -0
  114. siliconcompiler/tools/slang/__init__.py +13 -13
  115. siliconcompiler/tools/slang/elaborate.py +6 -6
  116. siliconcompiler/tools/slang/lint.py +1 -3
  117. siliconcompiler/tools/surelog/parse.py +4 -4
  118. siliconcompiler/tools/sv2v/convert.py +20 -3
  119. siliconcompiler/tools/verilator/compile.py +2 -2
  120. siliconcompiler/tools/verilator/verilator.py +3 -3
  121. siliconcompiler/tools/vpr/_xml_constraint.py +8 -8
  122. siliconcompiler/tools/vpr/place.py +1 -1
  123. siliconcompiler/tools/vpr/route.py +4 -4
  124. siliconcompiler/tools/vpr/screenshot.py +1 -1
  125. siliconcompiler/tools/vpr/show.py +5 -5
  126. siliconcompiler/tools/vpr/vpr.py +24 -24
  127. siliconcompiler/tools/xdm/convert.py +2 -2
  128. siliconcompiler/tools/xyce/simulate.py +1 -1
  129. siliconcompiler/tools/yosys/prepareLib.py +2 -2
  130. siliconcompiler/tools/yosys/sc_synth_asic.tcl +111 -63
  131. siliconcompiler/tools/yosys/screenshot.py +1 -1
  132. siliconcompiler/tools/yosys/syn_asic.py +7 -7
  133. siliconcompiler/toolscripts/_tools.json +12 -10
  134. siliconcompiler/toolscripts/rhel8/install-chisel.sh +9 -2
  135. siliconcompiler/toolscripts/rhel8/install-icarus.sh +10 -3
  136. siliconcompiler/toolscripts/rhel8/install-klayout.sh +8 -1
  137. siliconcompiler/toolscripts/rhel8/install-magic.sh +9 -2
  138. siliconcompiler/toolscripts/rhel8/install-montage.sh +1 -1
  139. siliconcompiler/toolscripts/rhel8/install-netgen.sh +9 -2
  140. siliconcompiler/toolscripts/rhel8/install-slang.sh +11 -4
  141. siliconcompiler/toolscripts/rhel8/install-surelog.sh +9 -2
  142. siliconcompiler/toolscripts/rhel8/install-sv2v.sh +11 -4
  143. siliconcompiler/toolscripts/rhel8/install-verible.sh +11 -3
  144. siliconcompiler/toolscripts/rhel8/install-verilator.sh +10 -3
  145. siliconcompiler/toolscripts/rhel8/install-xyce.sh +15 -10
  146. siliconcompiler/toolscripts/rhel9/install-chisel.sh +9 -2
  147. siliconcompiler/toolscripts/rhel9/install-ghdl.sh +9 -2
  148. siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +10 -3
  149. siliconcompiler/toolscripts/rhel9/install-icarus.sh +10 -3
  150. siliconcompiler/toolscripts/rhel9/install-klayout.sh +8 -1
  151. siliconcompiler/toolscripts/rhel9/install-magic.sh +9 -2
  152. siliconcompiler/toolscripts/rhel9/install-montage.sh +1 -1
  153. siliconcompiler/toolscripts/rhel9/install-netgen.sh +9 -2
  154. siliconcompiler/toolscripts/rhel9/install-openroad.sh +16 -3
  155. siliconcompiler/toolscripts/rhel9/install-opensta.sh +17 -5
  156. siliconcompiler/toolscripts/rhel9/install-slang.sh +11 -4
  157. siliconcompiler/toolscripts/rhel9/install-surelog.sh +9 -2
  158. siliconcompiler/toolscripts/rhel9/install-sv2v.sh +11 -4
  159. siliconcompiler/toolscripts/rhel9/install-verible.sh +11 -3
  160. siliconcompiler/toolscripts/rhel9/install-verilator.sh +10 -3
  161. siliconcompiler/toolscripts/rhel9/install-vpr.sh +9 -2
  162. siliconcompiler/toolscripts/rhel9/install-xdm.sh +10 -2
  163. siliconcompiler/toolscripts/rhel9/install-xyce.sh +15 -10
  164. siliconcompiler/toolscripts/rhel9/install-yosys-moosic.sh +9 -2
  165. siliconcompiler/toolscripts/rhel9/install-yosys-parmys.sh +10 -3
  166. siliconcompiler/toolscripts/rhel9/install-yosys-slang.sh +10 -2
  167. siliconcompiler/toolscripts/rhel9/install-yosys.sh +9 -2
  168. siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +10 -2
  169. siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +10 -3
  170. siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +9 -2
  171. siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +9 -2
  172. siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +9 -2
  173. siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +9 -2
  174. siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +9 -2
  175. siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +8 -1
  176. siliconcompiler/toolscripts/ubuntu20/install-magic.sh +9 -2
  177. siliconcompiler/toolscripts/ubuntu20/install-montage.sh +1 -1
  178. siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +9 -2
  179. siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +9 -2
  180. siliconcompiler/toolscripts/ubuntu20/install-openroad.sh +16 -3
  181. siliconcompiler/toolscripts/ubuntu20/install-opensta.sh +16 -5
  182. siliconcompiler/toolscripts/ubuntu20/install-slang.sh +11 -4
  183. siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +9 -2
  184. siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +10 -2
  185. siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +11 -4
  186. siliconcompiler/toolscripts/ubuntu20/install-verible.sh +11 -3
  187. siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +9 -2
  188. siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +10 -2
  189. siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +13 -8
  190. siliconcompiler/toolscripts/ubuntu20/install-yosys-moosic.sh +9 -2
  191. siliconcompiler/toolscripts/ubuntu20/install-yosys.sh +9 -2
  192. siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +10 -2
  193. siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +10 -3
  194. siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +9 -2
  195. siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +9 -2
  196. siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +9 -2
  197. siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +9 -2
  198. siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +9 -2
  199. siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +8 -1
  200. siliconcompiler/toolscripts/ubuntu22/install-magic.sh +9 -2
  201. siliconcompiler/toolscripts/ubuntu22/install-montage.sh +1 -1
  202. siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +9 -2
  203. siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +9 -2
  204. siliconcompiler/toolscripts/ubuntu22/install-openroad.sh +16 -3
  205. siliconcompiler/toolscripts/ubuntu22/install-opensta.sh +17 -5
  206. siliconcompiler/toolscripts/ubuntu22/install-slang.sh +11 -4
  207. siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +9 -2
  208. siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +10 -2
  209. siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +11 -4
  210. siliconcompiler/toolscripts/ubuntu22/install-verible.sh +11 -3
  211. siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +9 -2
  212. siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +9 -4
  213. siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +10 -2
  214. siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +13 -8
  215. siliconcompiler/toolscripts/ubuntu22/install-yosys-moosic.sh +9 -2
  216. siliconcompiler/toolscripts/ubuntu22/install-yosys-parmys.sh +10 -3
  217. siliconcompiler/toolscripts/ubuntu22/install-yosys-slang.sh +10 -2
  218. siliconcompiler/toolscripts/ubuntu22/install-yosys.sh +9 -2
  219. siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +12 -4
  220. siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +10 -3
  221. siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +9 -2
  222. siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +9 -2
  223. siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +9 -2
  224. siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +9 -2
  225. siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +9 -2
  226. siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +8 -1
  227. siliconcompiler/toolscripts/ubuntu24/install-magic.sh +9 -2
  228. siliconcompiler/toolscripts/ubuntu24/install-montage.sh +1 -1
  229. siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +9 -2
  230. siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +9 -2
  231. siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +16 -3
  232. siliconcompiler/toolscripts/ubuntu24/install-opensta.sh +17 -5
  233. siliconcompiler/toolscripts/ubuntu24/install-slang.sh +11 -4
  234. siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +9 -2
  235. siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +10 -2
  236. siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +11 -4
  237. siliconcompiler/toolscripts/ubuntu24/install-verible.sh +11 -3
  238. siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +9 -2
  239. siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +9 -4
  240. siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +10 -2
  241. siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +13 -8
  242. siliconcompiler/toolscripts/ubuntu24/install-yosys-moosic.sh +9 -2
  243. siliconcompiler/toolscripts/ubuntu24/install-yosys-parmys.sh +10 -3
  244. siliconcompiler/toolscripts/ubuntu24/install-yosys-slang.sh +10 -2
  245. siliconcompiler/toolscripts/ubuntu24/install-yosys.sh +9 -2
  246. siliconcompiler/utils/__init__.py +19 -112
  247. siliconcompiler/utils/flowgraph.py +244 -0
  248. siliconcompiler/{issue.py → utils/issue.py} +18 -25
  249. siliconcompiler/utils/logging.py +3 -4
  250. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/METADATA +9 -8
  251. siliconcompiler-0.33.1.dist-info/RECORD +488 -0
  252. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/WHEEL +1 -1
  253. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/entry_points.txt +8 -8
  254. siliconcompiler/schema/schema_obj.py +0 -1936
  255. siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +0 -29
  256. siliconcompiler/toolscripts/ubuntu20/install-yosys-parmys.sh +0 -61
  257. siliconcompiler-0.32.3.dist-info/RECORD +0 -470
  258. /siliconcompiler/{templates → data/templates}/__init__.py +0 -0
  259. /siliconcompiler/{templates → data/templates}/email/__init__.py +0 -0
  260. /siliconcompiler/{templates → data/templates}/email/general.j2 +0 -0
  261. /siliconcompiler/{templates → data/templates}/email/summary.j2 +0 -0
  262. /siliconcompiler/{templates → data/templates}/issue/README.txt +0 -0
  263. /siliconcompiler/{templates → data/templates}/issue/__init__.py +0 -0
  264. /siliconcompiler/{templates → data/templates}/issue/run.sh +0 -0
  265. /siliconcompiler/{templates → data/templates}/replay/replay.py.j2 +0 -0
  266. /siliconcompiler/{templates → data/templates}/replay/replay.sh.j2 +0 -0
  267. /siliconcompiler/{templates → data/templates}/replay/requirements.txt +0 -0
  268. /siliconcompiler/{templates → data/templates}/replay/setup.sh +0 -0
  269. /siliconcompiler/{templates → data/templates}/report/__init__.py +0 -0
  270. /siliconcompiler/{templates → data/templates}/report/bootstrap.min.css +0 -0
  271. /siliconcompiler/{templates → data/templates}/report/bootstrap.min.js +0 -0
  272. /siliconcompiler/{templates → data/templates}/report/bootstrap_LICENSE.md +0 -0
  273. /siliconcompiler/{templates → data/templates}/report/sc_report.j2 +0 -0
  274. /siliconcompiler/{templates → data/templates}/slurm/__init__.py +0 -0
  275. /siliconcompiler/{templates → data/templates}/slurm/run.sh +0 -0
  276. /siliconcompiler/{templates → data/templates}/tcl/__init__.py +0 -0
  277. /siliconcompiler/{templates → data/templates}/tcl/manifest.tcl.j2 +0 -0
  278. /siliconcompiler/{units.py → utils/units.py} +0 -0
  279. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/licenses/LICENSE +0 -0
  280. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/top_level.txt +0 -0
@@ -1,117 +1,121 @@
1
- from siliconcompiler.schema.schema_cfg import scparam
2
- from siliconcompiler.schema import Schema
3
- from siliconcompiler.schema.utils import PerNode, Scope
1
+ from siliconcompiler.schema import BaseSchema
2
+ from siliconcompiler.schema import CommandLineSchema
3
+ from siliconcompiler.schema import EditableSchema
4
+ from siliconcompiler.schema import Parameter, Scope
4
5
 
5
6
 
6
7
  SCHEMA_VERSION = '0.0.2'
7
8
 
8
9
 
9
- def schema_cfg():
10
- # Basic schema setup
11
- cfg = {}
12
-
13
- scparam(cfg, ['schemaversion'],
14
- sctype='str',
15
- scope=Scope.GLOBAL,
16
- defvalue=SCHEMA_VERSION,
17
- require='all',
18
- shorthelp="Schema version number",
19
- lock=True,
20
- switch="-schemaversion <str>",
21
- example=["api: server.get('schemaversion')"],
22
- schelp="""SiliconCompiler server schema version number.""")
23
-
24
- scparam(cfg, ['option', 'port'],
25
- sctype='int',
26
- scope=Scope.GLOBAL,
27
- defvalue=8080,
28
- require='all',
29
- shorthelp="Port number to run the server on.",
30
- switch="-port <int>",
31
- example=["cli: -port 8000",
32
- "api: server.set('option', 'port', 8080)"],
33
- schelp="""Port number to run the server on.""")
34
-
35
- scparam(cfg, ['option', 'cluster'],
36
- sctype='enum',
37
- enum=['local', 'slurm'],
38
- scope=Scope.GLOBAL,
39
- defvalue='local',
40
- require='all',
41
- shorthelp="Type of compute cluster to use.",
42
- switch="-cluster <str>",
43
- example=["cli: -cluster slurm",
44
- "api: server.set('option', 'clister', 'slurm')"],
45
- schelp="""Type of compute cluster to use.""")
46
-
47
- scparam(cfg, ['option', 'nfsmount'],
48
- sctype='dir',
49
- scope=Scope.GLOBAL,
50
- defvalue='/nfs/sc_compute',
51
- require='all',
52
- shorthelp="Directory of mounted shared NFS storage.",
53
- switch="-nfsmount <dir>",
54
- example=["cli: -nfsmount ~/sc_server",
55
- "api: server.set('option', 'server', '~/sc_server')"],
56
- schelp="""Directory of mounted shared NFS storage.""")
57
-
58
- scparam(cfg, ['option', 'auth'],
59
- sctype='bool',
60
- scope=Scope.GLOBAL,
61
- defvalue=False,
62
- require='all',
63
- shorthelp="Flag determining whether to enable authenticated and encrypted jobs.",
64
- switch="-auth <bool>",
65
- example=["cli: -auth true",
66
- "api: server.set('option', 'auth', True)"],
67
- schelp="""Flag determining whether to enable authenticated and encrypted jobs.""")
68
-
69
- scparam(cfg, ['option', 'cfg'],
70
- sctype='[file]',
71
- scope=Scope.JOB,
72
- shorthelp="Configuration manifest",
73
- switch="-cfg <file>",
74
- example=["cli: -cfg mypdk.json",
75
- "api: chip.set('option', 'cfg', 'mypdk.json')"],
76
- schelp="""
77
- List of filepaths to JSON formatted schema configuration
78
- manifests. The files are read in automatically when using the
79
- command line application. In Python programs, JSON manifests
80
- can be merged into the current working manifest using the
81
- read_manifest() method.""")
82
-
83
- scparam(cfg, ['option', 'loglevel'],
84
- sctype='enum',
85
- enum=["info", "warning", "error", "critical", "debug"],
86
- pernode=PerNode.OPTIONAL,
87
- scope=Scope.JOB,
88
- defvalue='info',
89
- shorthelp="Logging level",
90
- switch="-loglevel <str>",
91
- example=[
92
- "cli: -loglevel info",
93
- "api: server.set('option', 'loglevel', 'info')"],
94
- schelp="""
95
- Provides explicit control over the level of debug logging printed.""")
96
-
97
- scparam(cfg, ['option', 'checkinterval'],
98
- sctype='int',
99
- defvalue=30,
100
- shorthelp="Interval for client",
101
- switch="-checkinterval <int>",
102
- example=["cli: -checkinterval 10",
103
- "api: chip.set('option', 'checkinterval', 10)"],
104
- schelp="""
105
- Interval between checks to announce to clients""")
106
-
107
- return cfg
108
-
109
-
110
- class ServerSchema(Schema):
111
- def __init__(self, cfg=None, manifest=None, logger=None):
112
- super().__init__(cfg=cfg,
113
- manifest=manifest,
114
- logger=logger)
115
-
116
- def _init_schema_cfg(self):
117
- return schema_cfg()
10
+ class ServerSchema(BaseSchema, CommandLineSchema):
11
+ def __init__(self):
12
+ super().__init__()
13
+
14
+ schema = EditableSchema(self)
15
+
16
+ schema.insert(
17
+ 'schemaversion',
18
+ Parameter(
19
+ 'str',
20
+ scope=Scope.GLOBAL,
21
+ defvalue=SCHEMA_VERSION,
22
+ require='all',
23
+ shorthelp="Schema version number",
24
+ lock=True,
25
+ switch="-schemaversion <str>",
26
+ example=["api: server.get('schemaversion')"],
27
+ help="""SiliconCompiler server schema version number."""))
28
+
29
+ schema.insert(
30
+ 'option', 'port',
31
+ Parameter(
32
+ 'int',
33
+ scope=Scope.GLOBAL,
34
+ defvalue=8080,
35
+ require='all',
36
+ shorthelp="Port number to run the server on.",
37
+ switch="-port <int>",
38
+ example=["cli: -port 8000",
39
+ "api: server.set('option', 'port', 8080)"],
40
+ help="""Port number to run the server on."""))
41
+
42
+ schema.insert(
43
+ 'option', 'cluster',
44
+ Parameter(
45
+ '<local,slurm>',
46
+ scope=Scope.GLOBAL,
47
+ defvalue='local',
48
+ require='all',
49
+ shorthelp="Type of compute cluster to use.",
50
+ switch="-cluster <str>",
51
+ example=["cli: -cluster slurm",
52
+ "api: server.set('option', 'clister', 'slurm')"],
53
+ help="""Type of compute cluster to use."""))
54
+
55
+ schema.insert(
56
+ 'option', 'nfsmount',
57
+ Parameter(
58
+ 'dir',
59
+ scope=Scope.GLOBAL,
60
+ defvalue='/nfs/sc_compute',
61
+ require='all',
62
+ shorthelp="Directory of mounted shared NFS storage.",
63
+ switch="-nfsmount <dir>",
64
+ example=["cli: -nfsmount ~/sc_server",
65
+ "api: server.set('option', 'server', '~/sc_server')"],
66
+ help="""Directory of mounted shared NFS storage."""))
67
+
68
+ schema.insert(
69
+ 'option', 'auth',
70
+ Parameter(
71
+ 'bool',
72
+ scope=Scope.GLOBAL,
73
+ defvalue=False,
74
+ require='all',
75
+ shorthelp="Flag determining whether to enable authenticated and encrypted jobs.",
76
+ switch="-auth <bool>",
77
+ example=["cli: -auth true",
78
+ "api: server.set('option', 'auth', True)"],
79
+ help="""Flag determining whether to enable authenticated and encrypted jobs."""))
80
+
81
+ schema.insert(
82
+ 'option', 'cfg',
83
+ Parameter(
84
+ '[file]',
85
+ scope=Scope.JOB,
86
+ shorthelp="Configuration manifest",
87
+ switch="-cfg <file>",
88
+ example=["cli: -cfg mypdk.json",
89
+ "api: chip.set('option', 'cfg', 'mypdk.json')"],
90
+ help="""
91
+ List of filepaths to JSON formatted schema configuration
92
+ manifests. The files are read in automatically when using the
93
+ command line application. In Python programs, JSON manifests
94
+ can be merged into the current working manifest using the
95
+ read_manifest() method."""))
96
+
97
+ schema.insert(
98
+ 'option', 'loglevel',
99
+ Parameter(
100
+ '<info,warning,error,critical,debug>',
101
+ scope=Scope.JOB,
102
+ defvalue='info',
103
+ shorthelp="Logging level",
104
+ switch="-loglevel <str>",
105
+ example=[
106
+ "cli: -loglevel info",
107
+ "api: server.set('option', 'loglevel', 'info')"],
108
+ help="""
109
+ Provides explicit control over the level of debug logging printed."""))
110
+
111
+ schema.insert(
112
+ 'option', 'checkinterval',
113
+ Parameter(
114
+ 'int',
115
+ defvalue=30,
116
+ shorthelp="Interval for client",
117
+ switch="-checkinterval <int>",
118
+ example=["cli: -checkinterval 10",
119
+ "api: chip.set('option', 'checkinterval', 10)"],
120
+ help="""
121
+ Interval between checks to announce to clients"""))
@@ -21,7 +21,7 @@ from siliconcompiler.schema import SCHEMA_VERSION as sc_schema_version
21
21
  from siliconcompiler.remote.schema import ServerSchema
22
22
  from siliconcompiler.remote import banner, JobStatus
23
23
  from siliconcompiler.scheduler.slurm import get_configuration_directory
24
- from siliconcompiler.flowgraph import nodes_to_execute
24
+ from siliconcompiler.flowgraph import RuntimeFlowgraph
25
25
 
26
26
 
27
27
  # Compile validation code for API request bodies.
@@ -78,7 +78,7 @@ class Server:
78
78
  self.logger.addHandler(handler)
79
79
  self.logger.setLevel(schema_utils.translate_loglevel(loglevel))
80
80
 
81
- self.schema = ServerSchema(logger=self.logger)
81
+ self.schema = ServerSchema()
82
82
 
83
83
  # Set up a dictionary to track running jobs.
84
84
  self.sc_jobs = {}
@@ -146,7 +146,6 @@ class Server:
146
146
  progname=progname,
147
147
  description=description,
148
148
  switchlist=switchlist,
149
- input_map=None,
150
149
  additional_args=additional_args,
151
150
  version=Server.__version__,
152
151
  print_banner=print_banner,
@@ -423,7 +422,12 @@ class Server:
423
422
  chip.run()
424
423
 
425
424
  # Archive each task.
426
- for (step, index) in nodes_to_execute(chip):
425
+ runtime = RuntimeFlowgraph(
426
+ chip.schema.get("flowgraph", chip.get('option', 'flow'), field='schema'),
427
+ from_steps=chip.get('option', 'from'),
428
+ to_steps=chip.get('option', 'to'),
429
+ prune_nodes=chip.get('option', 'prune'))
430
+ for (step, index) in runtime.get_nodes():
427
431
  chip.cwd = os.path.join(chip.get('option', 'builddir'), '..')
428
432
  tf = tarfile.open(os.path.join(self.nfs_mount,
429
433
  job_hash,
@@ -508,5 +512,4 @@ class Server:
508
512
  self.schema.set(*keypath, value, field=field, clobber=clobber)
509
513
 
510
514
  def write_configuration(self, filepath):
511
- with open(filepath, 'w') as f:
512
- self.schema.write_json(f)
515
+ self.schema.write_manifest(filepath)