siliconcompiler 0.24.1__cp39-cp39-win_amd64.whl → 0.26.0__cp39-cp39-win_amd64.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 (67) hide show
  1. siliconcompiler/_common.py +30 -2
  2. siliconcompiler/_metadata.py +1 -1
  3. siliconcompiler/apps/sc.py +3 -0
  4. siliconcompiler/apps/sc_issue.py +1 -1
  5. siliconcompiler/apps/sc_remote.py +50 -10
  6. siliconcompiler/core.py +309 -74
  7. siliconcompiler/flowgraph.py +107 -59
  8. siliconcompiler/flows/_common.py +7 -76
  9. siliconcompiler/issue.py +29 -20
  10. siliconcompiler/remote/__init__.py +18 -5
  11. siliconcompiler/remote/client.py +132 -90
  12. siliconcompiler/remote/schema.py +4 -4
  13. siliconcompiler/remote/server.py +24 -15
  14. siliconcompiler/report/report.py +10 -8
  15. siliconcompiler/report/streamlit_viewer.py +1 -2
  16. siliconcompiler/report/summary_image.py +24 -20
  17. siliconcompiler/report/summary_table.py +16 -13
  18. siliconcompiler/report/utils.py +14 -6
  19. siliconcompiler/scheduler/__init__.py +214 -180
  20. siliconcompiler/scheduler/docker_runner.py +7 -2
  21. siliconcompiler/scheduler/run_node.py +0 -1
  22. siliconcompiler/scheduler/send_messages.py +4 -3
  23. siliconcompiler/scheduler/slurm.py +20 -1
  24. siliconcompiler/schema/schema_cfg.py +52 -90
  25. siliconcompiler/schema/schema_obj.py +5 -5
  26. siliconcompiler/schema/utils.py +4 -0
  27. siliconcompiler/targets/asap7_demo.py +0 -1
  28. siliconcompiler/targets/fpgaflow_demo.py +0 -1
  29. siliconcompiler/targets/freepdk45_demo.py +0 -1
  30. siliconcompiler/targets/gf180_demo.py +0 -1
  31. siliconcompiler/targets/skywater130_demo.py +0 -1
  32. siliconcompiler/templates/issue/README.txt +2 -2
  33. siliconcompiler/templates/slurm/run.sh +5 -3
  34. siliconcompiler/tools/_common/__init__.py +45 -9
  35. siliconcompiler/tools/bambu/convert.py +6 -20
  36. siliconcompiler/tools/bluespec/convert.py +8 -4
  37. siliconcompiler/tools/builtin/_common.py +13 -3
  38. siliconcompiler/tools/builtin/builtin.py +1 -1
  39. siliconcompiler/tools/builtin/concatenate.py +12 -5
  40. siliconcompiler/tools/builtin/join.py +1 -4
  41. siliconcompiler/tools/builtin/maximum.py +1 -5
  42. siliconcompiler/tools/builtin/minimum.py +1 -4
  43. siliconcompiler/tools/builtin/nop.py +1 -4
  44. siliconcompiler/tools/builtin/verify.py +2 -4
  45. siliconcompiler/tools/chisel/convert.py +6 -11
  46. siliconcompiler/tools/ghdl/convert.py +5 -4
  47. siliconcompiler/tools/icarus/compile.py +6 -0
  48. siliconcompiler/tools/openroad/dfm.py +21 -0
  49. siliconcompiler/tools/slang/__init__.py +17 -0
  50. siliconcompiler/tools/slang/lint.py +8 -3
  51. siliconcompiler/tools/surelog/bin/surelog.exe +0 -0
  52. siliconcompiler/tools/surelog/parse.py +21 -6
  53. siliconcompiler/tools/sv2v/convert.py +9 -3
  54. siliconcompiler/tools/verilator/lint.py +1 -0
  55. siliconcompiler/tools/verilator/verilator.py +3 -0
  56. siliconcompiler/tools/yosys/lec.py +2 -7
  57. siliconcompiler/tools/yosys/sc_lec.tcl +0 -1
  58. siliconcompiler/tools/yosys/sc_syn.tcl +1 -10
  59. siliconcompiler/tools/yosys/syn_fpga.tcl +6 -0
  60. siliconcompiler/use.py +12 -0
  61. siliconcompiler/utils/__init__.py +6 -4
  62. {siliconcompiler-0.24.1.dist-info → siliconcompiler-0.26.0.dist-info}/METADATA +6 -6
  63. {siliconcompiler-0.24.1.dist-info → siliconcompiler-0.26.0.dist-info}/RECORD +67 -67
  64. {siliconcompiler-0.24.1.dist-info → siliconcompiler-0.26.0.dist-info}/WHEEL +1 -1
  65. {siliconcompiler-0.24.1.dist-info → siliconcompiler-0.26.0.dist-info}/LICENSE +0 -0
  66. {siliconcompiler-0.24.1.dist-info → siliconcompiler-0.26.0.dist-info}/entry_points.txt +0 -0
  67. {siliconcompiler-0.24.1.dist-info → siliconcompiler-0.26.0.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,37 @@
1
1
  class NodeStatus():
2
- # Could use Python 'enum' class here, but that doesn't work nicely with
3
- # schema.
2
+ # node waiting to run
4
3
  PENDING = 'pending'
4
+
5
+ # node ready to run and waiting
6
+ QUEUED = 'queued'
7
+
8
+ # node running
9
+ RUNNING = 'running'
10
+
11
+ # node exit status
5
12
  SUCCESS = 'success'
6
13
  ERROR = 'error'
14
+ SKIPPED = 'skipped'
15
+ TIMEOUT = 'timeout'
16
+
17
+ def is_done(status):
18
+ return status in (
19
+ NodeStatus.SUCCESS,
20
+ NodeStatus.ERROR,
21
+ NodeStatus.SKIPPED,
22
+ NodeStatus.TIMEOUT
23
+ )
24
+
25
+ def is_running(status):
26
+ return status in (
27
+ NodeStatus.QUEUED,
28
+ NodeStatus.RUNNING
29
+ )
30
+
31
+ def is_waiting(status):
32
+ return status in (
33
+ NodeStatus.PENDING,
34
+ )
7
35
 
8
36
 
9
37
  ###############################################################################
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.24.1'
2
+ version = '0.26.0'
3
3
 
4
4
  # Default server address for remote runs, if unspecified.
5
5
  default_server = 'https://server.siliconcompiler.com'
@@ -80,6 +80,9 @@ def main():
80
80
  chip.summary()
81
81
  except SiliconCompilerError:
82
82
  return 1
83
+ except Exception as e:
84
+ chip.logger.error(e)
85
+ return 1
83
86
 
84
87
  return 0
85
88
 
@@ -175,7 +175,7 @@ To run a testcase, use:
175
175
  # Rerun setup task, assumed to be running in its own thread so
176
176
  # multiprocess is not needed
177
177
  flow = chip.get('option', 'flow')
178
- _runtask(chip, flow, step, index, {}, _executenode, replay=True)
178
+ _runtask(chip, flow, step, index, _executenode, replay=True)
179
179
 
180
180
  return 0
181
181
 
@@ -5,9 +5,9 @@ import sys
5
5
 
6
6
  from siliconcompiler import Chip
7
7
  from siliconcompiler import SiliconCompilerError
8
- from siliconcompiler.remote.client import (cancel_job, check_progress, delete_job,
9
- remote_ping, remote_run_loop, configure,
10
- _remote_ping)
8
+ from siliconcompiler.remote.client import cancel_job, check_progress, delete_job, \
9
+ remote_ping, remote_run_loop, _remote_ping
10
+ from siliconcompiler.remote.client import configure_server, configure_whitelist, configure_print
11
11
  from siliconcompiler.scheduler import _finalize_run
12
12
  from siliconcompiler.flowgraph import _get_flowgraph_entry_nodes, _get_flowgraph_node_outputs, \
13
13
  nodes_to_execute
@@ -27,6 +27,14 @@ To generate a configuration file, use:
27
27
  sc-remote -configure -server https://example.com
28
28
  sc-remote -configure -server https://example.com:1234
29
29
 
30
+ to add or remove directories from upload whitelist, these
31
+ also support globbing:
32
+ sc-remote -configure -add ./fine_to_upload
33
+ sc-remote -configure -remove ./no_longer_okay_to_upload
34
+
35
+ to display the full configuration of the credentials file
36
+ sc-remote -configure -list
37
+
30
38
  To check an ongoing job's progress, use:
31
39
  sc-remote -cfg <stepdir>/outputs/<design>.pkg.json
32
40
 
@@ -49,9 +57,20 @@ To delete a job, use:
49
57
  '-configure': {'action': 'store_true',
50
58
  'help': 'create configuration file for the remote',
51
59
  'sc_print': False},
52
- '-server': {'help': 'address of server for configure',
60
+ '-server': {'help': 'address of server for configure (only valid with -configure)',
53
61
  'metavar': '<server>',
54
62
  'sc_print': False},
63
+ '-add': {'help': 'path to add to the upload whitelist (only valid with -configure)',
64
+ 'metavar': '<path>',
65
+ 'nargs': '+',
66
+ 'sc_print': False},
67
+ '-remove': {'help': 'path to remove from the upload whitelist (only valid with -configure)',
68
+ 'metavar': '<path>',
69
+ 'nargs': '+',
70
+ 'sc_print': False},
71
+ '-list': {'help': 'print the current configuration (only valid with -configure)',
72
+ 'action': 'store_true',
73
+ 'sc_print': False},
55
74
  '-reconnect': {'action': 'store_true',
56
75
  'help': 'reconnect to a running job on the remote',
57
76
  'sc_print': False},
@@ -88,11 +107,23 @@ To delete a job, use:
88
107
  f'{", ".join(["-"+e for e in cfg_only])}')
89
108
 
90
109
  if args['configure']:
91
- try:
92
- configure(chip, server=args['server'])
93
- except ValueError as e:
94
- chip.logger.error(e)
95
- return 1
110
+ if args['list']:
111
+ configure_print(chip)
112
+ return 0
113
+
114
+ if not args['add'] and not args['remove']:
115
+ try:
116
+ configure_server(chip, server=args['server'])
117
+ except ValueError as e:
118
+ chip.logger.error(e)
119
+ return 1
120
+ else:
121
+ try:
122
+ configure_whitelist(chip, add=args['add'], remove=args['remove'])
123
+ except ValueError as e:
124
+ chip.logger.error(e)
125
+ return 1
126
+
96
127
  return 0
97
128
 
98
129
  # Main logic.
@@ -138,8 +169,17 @@ To delete a job, use:
138
169
  except SiliconCompilerError as e:
139
170
  chip.logger.error(f'{e}')
140
171
  return 1
172
+
173
+ # Wrap up run
174
+ for step, index in nodes_to_execute(chip):
175
+ manifest = os.path.join(chip.getworkdir(step=step, index=index),
176
+ 'outputs',
177
+ f'{chip.design}.pkg.json')
178
+ if os.path.exists(manifest):
179
+ chip.schema.read_journal(manifest)
180
+ _finalize_run(chip, environment)
181
+
141
182
  # Summarize the run.
142
- _finalize_run(chip, nodes_to_execute(chip), environment)
143
183
  chip.summary()
144
184
 
145
185
  # If only a manifest is specified, make a 'check_progress/' request and report results: