siliconcompiler 0.27.1__py3-none-any.whl → 0.28.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 (94) hide show
  1. siliconcompiler/_metadata.py +1 -1
  2. siliconcompiler/core.py +4 -1
  3. siliconcompiler/data/RobotoMono/__init__.py +0 -0
  4. siliconcompiler/data/__init__.py +0 -0
  5. siliconcompiler/flows/dvflow.py +51 -14
  6. siliconcompiler/flows/generate_openroad_rcx.py +1 -1
  7. siliconcompiler/libs/sg13g2_stdcell.py +8 -0
  8. siliconcompiler/pdks/ihp130.py +8 -0
  9. siliconcompiler/remote/server_schema/__init__.py +0 -0
  10. siliconcompiler/remote/server_schema/requests/__init__.py +0 -0
  11. siliconcompiler/remote/server_schema/responses/__init__.py +0 -0
  12. siliconcompiler/scheduler/__init__.py +6 -4
  13. siliconcompiler/scheduler/validation/__init__.py +0 -0
  14. siliconcompiler/schema/schema_cfg.py +351 -281
  15. siliconcompiler/schema/schema_obj.py +5 -3
  16. siliconcompiler/sphinx_ext/dynamicgen.py +35 -15
  17. siliconcompiler/sphinx_ext/schemagen.py +4 -1
  18. siliconcompiler/targets/ihp130_demo.py +68 -0
  19. siliconcompiler/templates/__init__.py +0 -0
  20. siliconcompiler/templates/email/__init__.py +0 -0
  21. siliconcompiler/templates/issue/__init__.py +0 -0
  22. siliconcompiler/templates/report/__init__.py +0 -0
  23. siliconcompiler/templates/slurm/__init__.py +0 -0
  24. siliconcompiler/templates/tcl/__init__.py +0 -0
  25. siliconcompiler/tools/_common/sdc/__init__.py +0 -0
  26. siliconcompiler/tools/_common/tcl/__init__.py +0 -0
  27. siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +1 -2
  28. siliconcompiler/tools/bambu/__init__.py +0 -0
  29. siliconcompiler/tools/bluespec/__init__.py +0 -0
  30. siliconcompiler/tools/builtin/__init__.py +0 -0
  31. siliconcompiler/tools/builtin/concatenate.py +16 -0
  32. siliconcompiler/tools/chisel/__init__.py +0 -0
  33. siliconcompiler/tools/execute/__init__.py +0 -0
  34. siliconcompiler/tools/genfasm/__init__.py +0 -0
  35. siliconcompiler/tools/ghdl/__init__.py +0 -0
  36. siliconcompiler/tools/icarus/__init__.py +0 -0
  37. siliconcompiler/tools/icepack/__init__.py +0 -0
  38. siliconcompiler/tools/klayout/__init__.py +0 -0
  39. siliconcompiler/tools/klayout/klayout.py +1 -0
  40. siliconcompiler/tools/magic/__init__.py +0 -0
  41. siliconcompiler/tools/magic/sc_drc.tcl +5 -5
  42. siliconcompiler/tools/magic/sc_extspice.tcl +3 -3
  43. siliconcompiler/tools/magic/sc_magic.tcl +2 -2
  44. siliconcompiler/tools/montage/__init__.py +0 -0
  45. siliconcompiler/tools/netgen/__init__.py +0 -0
  46. siliconcompiler/tools/netgen/sc_lvs.tcl +3 -3
  47. siliconcompiler/tools/nextpnr/__init__.py +0 -0
  48. siliconcompiler/tools/openroad/scripts/__init__.py +0 -0
  49. siliconcompiler/tools/openroad/scripts/sc_apr.tcl +36 -34
  50. siliconcompiler/tools/openroad/scripts/sc_cts.tcl +0 -1
  51. siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +4 -2
  52. siliconcompiler/tools/openroad/scripts/sc_export.tcl +4 -2
  53. siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +27 -35
  54. siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +4 -2
  55. siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +0 -1
  56. siliconcompiler/tools/openroad/scripts/sc_procs.tcl +38 -6
  57. siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +9 -9
  58. siliconcompiler/tools/openroad/scripts/sc_route.tcl +8 -4
  59. siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +5 -3
  60. siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +27 -25
  61. siliconcompiler/tools/openroad/templates/__init__.py +0 -0
  62. siliconcompiler/tools/opensta/scripts/__init__.py +0 -0
  63. siliconcompiler/tools/opensta/scripts/sc_procs.tcl +0 -1
  64. siliconcompiler/tools/surelog/templates/__init__.py +0 -0
  65. siliconcompiler/tools/sv2v/__init__.py +0 -0
  66. siliconcompiler/tools/template/__init__.py +0 -0
  67. siliconcompiler/tools/verilator/__init__.py +0 -0
  68. siliconcompiler/tools/verilator/compile.py +1 -4
  69. siliconcompiler/tools/verilator/verilator.py +1 -2
  70. siliconcompiler/tools/vivado/scripts/__init__.py +0 -0
  71. siliconcompiler/tools/vivado/scripts/sc_run.tcl +7 -8
  72. siliconcompiler/tools/vivado/vivado.py +1 -1
  73. siliconcompiler/tools/vpr/__init__.py +0 -0
  74. siliconcompiler/tools/vpr/place.py +20 -6
  75. siliconcompiler/tools/vpr/vpr.py +1 -1
  76. siliconcompiler/tools/xdm/__init__.py +28 -0
  77. siliconcompiler/tools/xdm/convert.py +71 -0
  78. siliconcompiler/tools/xyce/{xyce.py → __init__.py} +13 -9
  79. siliconcompiler/tools/xyce/simulate.py +70 -0
  80. siliconcompiler/tools/yosys/__init__.py +0 -0
  81. siliconcompiler/tools/yosys/sc_lec.tcl +7 -7
  82. siliconcompiler/tools/yosys/sc_syn.tcl +9 -9
  83. siliconcompiler/tools/yosys/syn_asic.tcl +21 -13
  84. siliconcompiler/tools/yosys/syn_fpga.tcl +20 -17
  85. siliconcompiler/tools/yosys/techmaps/__init__.py +0 -0
  86. siliconcompiler/tools/yosys/templates/__init__.py +0 -0
  87. siliconcompiler/use.py +2 -1
  88. {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/METADATA +9 -8
  89. {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/RECORD +93 -48
  90. {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/WHEEL +1 -1
  91. siliconcompiler/tools/openfpgaloader/openfpgaloader.py +0 -39
  92. {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/LICENSE +0 -0
  93. {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/entry_points.txt +0 -0
  94. {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.27.1'
2
+ version = '0.28.1'
3
3
 
4
4
  # Default server address for remote runs, if unspecified.
5
5
  default_server = 'https://server.siliconcompiler.com'
siliconcompiler/core.py CHANGED
@@ -529,6 +529,9 @@ class Chip:
529
529
 
530
530
  self.logger.warning(".load_target is deprecated, use .use() instead.")
531
531
 
532
+ if isinstance(module, str):
533
+ raise ValueError(f"module cannot be a string: {module}")
534
+
532
535
  self.use(module, **kwargs)
533
536
 
534
537
  ##########################################################################
@@ -1288,7 +1291,7 @@ class Chip:
1288
1291
  else:
1289
1292
  result.append(None)
1290
1293
  if not missing_ok:
1291
- self.error(f'Could not find {path} in {dependency}.')
1294
+ self.error(f'Could not find {path} in {dependency}. ({keypath})')
1292
1295
  continue
1293
1296
  result.append(utils.find_sc_file(self,
1294
1297
  path,
File without changes
File without changes
@@ -3,6 +3,8 @@ import siliconcompiler
3
3
  from siliconcompiler.tools.icarus import compile as icarus_compile
4
4
  from siliconcompiler.tools.verilator import compile as verilator_compile
5
5
  from siliconcompiler.tools.execute import exec_input
6
+ from siliconcompiler.tools.xyce import simulate as xyce_simulate
7
+ from siliconcompiler.tools.xdm import convert as xdm_convert
6
8
 
7
9
 
8
10
  ############################################################################
@@ -31,33 +33,68 @@ def setup(flowname='dvflow',
31
33
  Setting 'np' > 1 results in multiple independent verification
32
34
  pipelines to be launched.
33
35
 
36
+ Supported tools are:
37
+
38
+ * icarus
39
+ * verilator
40
+ * xyce
41
+ * xdm-xyce
42
+
34
43
  This flow is a WIP
35
44
  '''
36
45
 
37
46
  flow = siliconcompiler.Flow(flowname)
38
47
 
39
- tasks = {
40
- 'compile': None,
41
- 'sim': None
42
- }
48
+ tasks = {}
49
+ flow_np = {}
43
50
 
44
51
  if tool == 'icarus':
45
52
  tasks['compile'] = icarus_compile
46
53
  tasks['sim'] = exec_input
54
+
55
+ flowpipe = [
56
+ 'compile',
57
+ 'sim'
58
+ ]
59
+ flow_np = {
60
+ 'compile': 1,
61
+ 'sim': np
62
+ }
47
63
  elif tool == 'verilator':
48
64
  tasks['compile'] = verilator_compile
49
65
  tasks['sim'] = exec_input
66
+
67
+ flowpipe = [
68
+ 'compile',
69
+ 'sim'
70
+ ]
71
+ flow_np = {
72
+ 'compile': 1,
73
+ 'sim': np
74
+ }
75
+ elif tool == 'xyce':
76
+ tasks['sim'] = xyce_simulate
77
+
78
+ flowpipe = [
79
+ 'sim'
80
+ ]
81
+ flow_np = {
82
+ 'sim': np
83
+ }
84
+ elif tool == 'xdm-xyce':
85
+ tasks['compile'] = xdm_convert
86
+ tasks['sim'] = xyce_simulate
87
+
88
+ flowpipe = [
89
+ 'compile',
90
+ 'sim'
91
+ ]
92
+ flow_np = {
93
+ 'compile': 1,
94
+ 'sim': np
95
+ }
50
96
  else:
51
- raise ValueError(f'{tool} is not a supported tool for {flowname}: icarus')
52
-
53
- flowpipe = [
54
- 'compile',
55
- 'sim'
56
- ]
57
- flow_np = {
58
- 'compile': 1,
59
- 'sim': np
60
- }
97
+ raise ValueError(f'{tool} is not a supported tool for {flowname}')
61
98
 
62
99
  prevstep = None
63
100
  # Flow setup
@@ -27,7 +27,7 @@ def setup(extraction_task=None, corners=1, serial_extraction=False):
27
27
  flow = siliconcompiler.Flow(flowname)
28
28
 
29
29
  if not extraction_task:
30
- chip.logger.warning('Valid extraction not specified, defaulting to builtin/nop')
30
+ flow.logger.warning('Valid extraction not specified, defaulting to builtin/nop')
31
31
  extraction_task = nop
32
32
 
33
33
  flow.node(flowname, 'bench', rcx_bench)
@@ -0,0 +1,8 @@
1
+ import siliconcompiler
2
+ from lambdapdk.ihp130.libs.sg13g2_stdcell import setup
3
+
4
+
5
+ #########################
6
+ if __name__ == "__main__":
7
+ lib = setup(siliconcompiler.Chip('<lib>'))
8
+ lib.write_manifest(f'{lib.top()}.json')
@@ -0,0 +1,8 @@
1
+ import siliconcompiler
2
+ from lambdapdk.ihp130 import setup
3
+
4
+
5
+ #########################
6
+ if __name__ == "__main__":
7
+ pdk = setup(siliconcompiler.Chip('<pdk>'))
8
+ pdk.write_manifest(f'{pdk.top()}.json')
File without changes
@@ -1315,8 +1315,10 @@ def _prepare_nodes(chip, nodes_to_run, processes, local_processes, flow):
1315
1315
  '''
1316
1316
  For each node to run, prepare a process and store its dependencies
1317
1317
  '''
1318
- # Ensure we use spawn for multiprocessing so loggers initialized correctly
1319
- multiprocessor = multiprocessing.get_context('spawn')
1318
+
1319
+ # Call this in case this was invoked without __main__
1320
+ multiprocessing.freeze_support()
1321
+
1320
1322
  init_funcs = set()
1321
1323
  for (step, index) in nodes_to_execute(chip, flow):
1322
1324
  node = (step, index)
@@ -1342,8 +1344,8 @@ def _prepare_nodes(chip, nodes_to_run, processes, local_processes, flow):
1342
1344
  else:
1343
1345
  local_processes.append((step, index))
1344
1346
 
1345
- processes[node] = multiprocessor.Process(target=_runtask,
1346
- args=(chip, flow, step, index, exec_func))
1347
+ processes[node] = multiprocessing.Process(target=_runtask,
1348
+ args=(chip, flow, step, index, exec_func))
1347
1349
 
1348
1350
  for init_func in init_funcs:
1349
1351
  init_func(chip)
File without changes