siliconcompiler 0.28.0__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.
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.28.0'
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'
@@ -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
@@ -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')
@@ -10,7 +10,7 @@ try:
10
10
  except ImportError:
11
11
  from siliconcompiler.schema.utils import trim
12
12
 
13
- SCHEMA_VERSION = '0.48.1'
13
+ SCHEMA_VERSION = '0.48.2'
14
14
 
15
15
  #############################################################################
16
16
  # PARAM DEFINITION
@@ -3767,7 +3767,7 @@ def schema_constraint(cfg):
3767
3767
  defvalue='R0',
3768
3768
  enum=['R0', 'R90', 'R180', 'R270',
3769
3769
  'MX', 'MX_R90', 'MX_R180', 'MX_R270',
3770
- 'MY_R90', 'MY_R180', 'MY_R270',
3770
+ 'MY', 'MY_R90', 'MY_R180', 'MY_R270',
3771
3771
  'MZ', 'MZ_R90', 'MZ_R180', 'MZ_R270',
3772
3772
  'MZ_MX', 'MZ_MX_R90', 'MZ_MX_R180', 'MZ_MX_R270',
3773
3773
  'MZ_MY', 'MZ_MY_R90', 'MZ_MY_R180', 'MZ_MY_R270'],
@@ -0,0 +1,68 @@
1
+ import siliconcompiler
2
+ from siliconcompiler.flows import asicflow, asictopflow, signoffflow, synflow
3
+ from siliconcompiler.checklists import oh_tapeout
4
+ from lambdapdk import ihp130
5
+ from lambdapdk.ihp130.libs import sg13g2_stdcell
6
+
7
+
8
+ ####################################################
9
+ # Target Setup
10
+ ####################################################
11
+ def setup(chip, syn_np=1, floorplan_np=1, physyn_np=1, place_np=1, cts_np=1, route_np=1,
12
+ timing_np=1):
13
+ '''
14
+ IHP130 Demo Target
15
+ '''
16
+
17
+ asic_flow_args = {
18
+ "syn_np": syn_np,
19
+ "floorplan_np": floorplan_np,
20
+ "physyn_np": physyn_np,
21
+ "place_np": place_np,
22
+ "cts_np": cts_np,
23
+ "route_np": route_np
24
+ }
25
+ # 1. Load PDK, flow, libs
26
+ chip.use(ihp130)
27
+ chip.use(sg13g2_stdcell)
28
+ chip.use(asicflow, **asic_flow_args)
29
+ chip.use(synflow, syn_np=syn_np, timing_np=timing_np)
30
+ chip.use(asictopflow)
31
+ chip.use(signoffflow)
32
+ chip.use(oh_tapeout)
33
+
34
+ # 2. Set default targets
35
+ chip.set('option', 'flow', 'asicflow', clobber=False)
36
+ chip.set('option', 'pdk', 'ihp130', clobber=False)
37
+ chip.set('option', 'stackup', '5M2TL', clobber=False)
38
+
39
+ # 3. Set project specific design choices
40
+ chip.set('asic', 'logiclib', 'sg13g2_stdcell', clobber=False)
41
+
42
+ # 4. get project specific design choices
43
+ chip.set('asic', 'delaymodel', 'nldm', clobber=False)
44
+ chip.set('constraint', 'density', 40, clobber=False)
45
+ chip.set('constraint', 'coremargin', 4.8, clobber=False)
46
+
47
+ # 5. Timing corners
48
+ chip.set('constraint', 'timing', 'slow', 'libcorner', 'slow', clobber=False)
49
+ chip.set('constraint', 'timing', 'slow', 'pexcorner', 'typical', clobber=False)
50
+ chip.set('constraint', 'timing', 'slow', 'mode', 'func', clobber=False)
51
+ chip.set('constraint', 'timing', 'slow', 'check', ['setup', 'hold'], clobber=False)
52
+
53
+ chip.set('constraint', 'timing', 'fast', 'libcorner', 'fast', clobber=False)
54
+ chip.set('constraint', 'timing', 'fast', 'pexcorner', 'typical', clobber=False)
55
+ chip.set('constraint', 'timing', 'fast', 'mode', 'func', clobber=False)
56
+ chip.set('constraint', 'timing', 'fast', 'check', ['setup', 'hold'], clobber=False)
57
+
58
+ chip.set('constraint', 'timing', 'typical', 'libcorner', 'typ', clobber=False)
59
+ chip.set('constraint', 'timing', 'typical', 'pexcorner', 'typical', clobber=False)
60
+ chip.set('constraint', 'timing', 'typical', 'mode', 'func', clobber=False)
61
+ chip.set('constraint', 'timing', 'typical', 'check', ['power'], clobber=False)
62
+
63
+
64
+ #########################
65
+ if __name__ == "__main__":
66
+ target = siliconcompiler.Chip('<target>')
67
+ setup(target)
68
+ target.write_manifest('ihp130_demo.json')
@@ -240,11 +240,7 @@ if { [sc_cfg_exists constraint component] } {
240
240
 
241
241
  dict for {name params} [sc_cfg_get constraint component] {
242
242
  set location [dict get $params placement]
243
- set rotation [dict get $params rotation]
244
- if { [string match "*MZ*" $rotation] } {
245
- utl::error FLW 1 "Z mirroring is not supported in OpenROAD"
246
- }
247
- set rotation [string map {"_" ""} $rotation]
243
+ set rotation [sc_convert_rotation [dict get $params rotation]]
248
244
 
249
245
  if { [dict exists $params partname] } {
250
246
  set cell [dict get $params partname]
@@ -427,3 +427,29 @@ proc count_logic_depth {} {
427
427
  # Subtract 1 to account for initial launch
428
428
  return [expr { $count - 1 }]
429
429
  }
430
+
431
+ ###########################
432
+ # Translate schema rotation
433
+ ###########################
434
+
435
+ proc sc_convert_rotation { rot } {
436
+ if { [string match "MZ*" $rot] } {
437
+ utl::error FLW 1 "Z mirroring is not supported in OpenROAD"
438
+ }
439
+
440
+ switch $rot {
441
+ "R0" { return "R0" }
442
+ "R90" { return "R90" }
443
+ "R180" { return "R180" }
444
+ "R270" { return "R270" }
445
+ "MX" { return "MX" }
446
+ "MX_R90" { return "MXR90" }
447
+ "MX_R180" { return "MY" }
448
+ "MX_R270" { return "MYR90" }
449
+ "MY" { return "MY" }
450
+ "MY_R90" { return "MYR90" }
451
+ "MY_R180" { return "MX" }
452
+ "MY_R270" { return "MXR90" }
453
+ default { utl::error FLW 1 "$rot not recognized" }
454
+ }
455
+ }
@@ -0,0 +1,28 @@
1
+ '''
2
+ Xyce XDM netlist converter, used to convert PSPICE and HSPICE netists into Xyce format.
3
+
4
+ Sources: https://github.com/Xyce/XDM
5
+
6
+ Installation: https://github.com/Xyce/XDM
7
+
8
+ Status: SC integration WIP
9
+ '''
10
+ from siliconcompiler.tools._common import get_tool_task
11
+
12
+
13
+ def setup(chip):
14
+ step = chip.get('arg', 'step')
15
+ index = chip.get('arg', 'index')
16
+ tool, task = get_tool_task(chip, step, index)
17
+
18
+ chip.set('tool', tool, 'exe', 'xdm_bdl')
19
+ chip.set('tool', tool, 'vswitch', '-h')
20
+ chip.set('tool', tool, 'version', '>=v2.7.0', clobber=False)
21
+
22
+
23
+ ################################
24
+ # Version Check
25
+ ################################
26
+ def parse_version(stdout):
27
+ line = stdout.splitlines()[5]
28
+ return line.split()[1]
@@ -0,0 +1,71 @@
1
+ from siliconcompiler.tools._common import input_provides, get_tool_task
2
+ from siliconcompiler.tools.xdm import setup as tool_setup
3
+ import os
4
+ import shutil
5
+
6
+
7
+ def setup(chip):
8
+ tool_setup(chip)
9
+
10
+ step = chip.get('arg', 'step')
11
+ index = chip.get('arg', 'index')
12
+ tool, task = get_tool_task(chip, step, index)
13
+
14
+ design = chip.top()
15
+
16
+ if f'{design}.cir' in input_provides(chip, step, index):
17
+ chip.add('tool', tool, 'task', task, 'input', f'{design}.cir',
18
+ step=step, index=index)
19
+ else:
20
+ chip.add('tool', tool, 'task', task, 'require', 'input,netlist,spice',
21
+ step=step, index=index)
22
+
23
+ chip.add('tool', tool, 'task', task, 'output', f'{design}.xyce', step=step, index=index)
24
+
25
+ chip.add('tool', tool, 'task', task, 'option', '--auto',
26
+ step=step, index=index)
27
+ chip.add('tool', tool, 'task', task, 'option', '--source_file_format hspice',
28
+ step=step, index=index)
29
+ chip.add('tool', tool, 'task', task, 'option', f'--dir_out outputs/{design}.xyce',
30
+ step=step, index=index)
31
+
32
+ chip.set('tool', 'xdm', 'task', 'convert', 'var', 'rename', 'true',
33
+ step=step, index=index, clobber=False)
34
+ chip.set('tool', 'xdm', 'task', 'convert', 'var', 'rename',
35
+ 'true/false: indicate whether to rename the output file to match the '
36
+ 'naming scheme for siliconcompiler', field='help')
37
+
38
+
39
+ def runtime_options(chip):
40
+ return __get_input_file(chip)
41
+
42
+
43
+ def __get_input_file(chip):
44
+ step = chip.get('arg', 'step')
45
+ index = chip.get('arg', 'index')
46
+ design = chip.top()
47
+
48
+ if f'{design}.cir' in input_provides(chip, step, index):
49
+ return [f'inputs/{design}.cir']
50
+
51
+ return chip.find_files('input', 'netlist', 'spice',
52
+ step=step, index=index)
53
+
54
+
55
+ def post_process(chip):
56
+ step = chip.get('arg', 'step')
57
+ index = chip.get('arg', 'index')
58
+
59
+ if chip.get('tool', 'xdm', 'task', 'convert', 'var', 'rename',
60
+ step=step, index=index) == ['false']:
61
+ return
62
+
63
+ inputfile = __get_input_file(chip)[0]
64
+
65
+ outdir = f'outputs/{chip.top()}.xyce'
66
+
67
+ inputfile_base = os.path.basename(inputfile)
68
+ outputfile_base = f'{chip.top()}.cir'
69
+
70
+ if inputfile_base != outputfile_base:
71
+ shutil.move(os.path.join(outdir, inputfile_base), os.path.join(outdir, outputfile_base))
@@ -0,0 +1,40 @@
1
+ '''
2
+ Xyce is a high performance SPICE-compatible circuit simulator
3
+ capable capable of solving extremely large circuit problems by
4
+ supporting large-scale parallel computing platforms. It also
5
+ supports serial execution on all common desktop platforms,
6
+ and small-scale parallel runs on Unix-like systems.
7
+
8
+ Documentation: https://xyce.sandia.gov/documentation-tutorials/
9
+
10
+ Sources: https://github.com/Xyce/Xyce
11
+
12
+ Installation: https://xyce.sandia.gov/documentation-tutorials/building-guide/
13
+
14
+ Status: SC integration WIP
15
+ '''
16
+ from siliconcompiler.tools._common import get_tool_task
17
+
18
+
19
+ ################################
20
+ # Setup Tool (pre executable)
21
+ ################################
22
+ def setup(chip):
23
+
24
+ step = chip.get('arg', 'step')
25
+ index = chip.get('arg', 'index')
26
+ tool, task = get_tool_task(chip, step, index)
27
+
28
+ chip.set('tool', tool, 'exe', 'Xyce')
29
+ chip.set('tool', tool, 'vswitch', '-v')
30
+ chip.set('tool', tool, 'version', '>=v7.8')
31
+
32
+ chip.set('tool', tool, 'task', task, 'regex', 'warnings', 'warning',
33
+ step=step, index=index, clobber=False)
34
+ chip.set('tool', tool, 'task', task, 'regex', 'errors', 'error',
35
+ step=step, index=index, clobber=False)
36
+
37
+
38
+ def parse_version(stdout):
39
+ ver = stdout.split()[-1]
40
+ return ver.split('-')[0]
@@ -0,0 +1,70 @@
1
+ from siliconcompiler.tools._common import input_provides, get_tool_task
2
+ from siliconcompiler.tools.xyce import setup as tool_setup
3
+ import os
4
+
5
+
6
+ def setup(chip):
7
+ tool_setup(chip)
8
+
9
+ step = chip.get('arg', 'step')
10
+ index = chip.get('arg', 'index')
11
+ tool, task = get_tool_task(chip, step, index)
12
+
13
+ design = chip.top()
14
+
15
+ if f'{design}.xyce' in input_provides(chip, step, index):
16
+ chip.add('tool', tool, 'task', task, 'input', f'{design}.xyce',
17
+ step=step, index=index)
18
+ elif f'{design}.cir' in input_provides(chip, step, index):
19
+ chip.add('tool', tool, 'task', task, 'input', f'{design}.cir',
20
+ step=step, index=index)
21
+ else:
22
+ chip.add('tool', tool, 'task', task, 'require', 'input,netlist,spice',
23
+ step=step, index=index)
24
+
25
+ chip.set('tool', tool, 'task', task, 'var', 'trace', 'false',
26
+ step=step, index=index, clobber=False)
27
+ chip.set('tool', tool, 'task', task, 'var', 'trace', 'true/false, enable dumping all signals',
28
+ field='help')
29
+
30
+ allowed_traced = ['ASCII', 'binary']
31
+ chip.set('tool', tool, 'task', task, 'var', 'trace_format', 'ASCII',
32
+ step=step, index=index, clobber=False)
33
+ chip.set('tool', tool, 'task', task, 'var', 'trace_format', 'Format to use for traces. '
34
+ f'Allowed values are {allowed_traced}',
35
+ field='help')
36
+
37
+ if chip.get('tool', tool, 'task', task, 'var', 'trace_format', step=step, index=index)[0] \
38
+ not in allowed_traced:
39
+ raise ValueError(f"{chip.get('tool', tool, 'task', task, 'var', 'trace_format')[0]} "
40
+ "is not an accepted value")
41
+
42
+ if chip.get('tool', tool, 'task', task, 'var', 'trace_format', step=step, index=index) == \
43
+ ['ASCII']:
44
+ chip.add('tool', tool, 'task', task, 'option', '-a',
45
+ step=step, index=index)
46
+
47
+ if chip.get('tool', tool, 'task', task, 'var', 'trace',
48
+ step=step, index=index) == ['true']:
49
+ chip.add('tool', tool, 'task', task, 'output', f'{design}.raw',
50
+ step=step, index=index)
51
+ chip.add('tool', tool, 'task', task, 'option', f'-r outputs/{design}.raw',
52
+ step=step, index=index)
53
+
54
+
55
+ def runtime_options(chip):
56
+ design = chip.top()
57
+ step = chip.get('arg', 'step')
58
+ index = chip.get('arg', 'index')
59
+
60
+ if f'{design}.xyce' in input_provides(chip, step, index):
61
+ if os.path.isfile(f'inputs/{design}.xyce'):
62
+ return [f'inputs/{design}.xyce']
63
+ elif os.path.isfile(f'inputs/{design}.xyce/{design}.cir'):
64
+ return [f'inputs/{design}.xyce/{design}.cir']
65
+ else:
66
+ return [f'inputs/{design}.xyce']
67
+ elif f'{design}.cir' in input_provides(chip, step, index):
68
+ return [f'inputs/{design}.cir']
69
+
70
+ return chip.find_files('input', 'netlist', 'spice', step=step, index=index)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siliconcompiler
3
- Version: 0.28.0
3
+ Version: 0.28.1
4
4
  Summary: A compiler framework that automates translation from source code to silicon.
5
5
  Author-email: Andreas Olofsson <andreas.d.olofsson@gmail.com>
6
6
  License: Apache License 2.0
@@ -23,7 +23,7 @@ Requires-Dist: packaging <24,>=21.3
23
23
  Requires-Dist: psutil >=5.8.0
24
24
  Requires-Dist: Pillow ==10.4.0
25
25
  Requires-Dist: GitPython ==3.1.43
26
- Requires-Dist: lambdapdk >=0.1.31
26
+ Requires-Dist: lambdapdk >=0.1.34
27
27
  Requires-Dist: PyGithub ==2.4.0
28
28
  Requires-Dist: urllib3 >=1.26.0
29
29
  Requires-Dist: fasteners ==0.19
@@ -84,7 +84,7 @@ SiliconCompiler is a modular hardware build system ("make for silicon"). The pro
84
84
  |**FPGA APR**| VPR, nextpnr, Vivado
85
85
  |**Layout Viewer**| Klayout, OpenRoad, Cadence, Synopsys
86
86
  |**DRC/LVS**| Magic, Synopsys, Siemens
87
- |**PDKs**| sky130, gf180, asap7, freepdk45, gf12lp, gf22fdx, intel16
87
+ |**PDKs**| sky130, gf180, asap7, freepdk45, gf12lp, gf22fdx, intel16, ihp130
88
88
 
89
89
  # Getting Started
90
90
 
@@ -1,7 +1,7 @@
1
1
  siliconcompiler/__init__.py,sha256=Ke_Bcryj9N6MoUq_5z_IDW3qMrUzR-3-kJVsvUenYzY,511
2
2
  siliconcompiler/__main__.py,sha256=JwWkcvaNngqgMWprEQ1cFy2Wdq9GMvk46UGTHyh_qvM,170
3
3
  siliconcompiler/_common.py,sha256=yQ0X02-k6ZMVhz74zJwwMQi2DUpnm27NZMvDga84OZc,1234
4
- siliconcompiler/_metadata.py,sha256=MZM3Ctbc0094rwAXzWxkZG_T3qWEvH9OjGWryTAGgXk,1264
4
+ siliconcompiler/_metadata.py,sha256=FTCBWMpxoH-jmQpBwPPvfqJ8kSV_-zzAj6xCc6zSjMo,1264
5
5
  siliconcompiler/core.py,sha256=EvQmBcsjkwVGe8TBb4vx0glnlZd8qd9CS4Fsgh7x0Qw,132714
6
6
  siliconcompiler/flowgraph.py,sha256=WLcbBWFj5DdYRRIxNy_Djm2v4yN9WELQM_ypNPB5QVM,21963
7
7
  siliconcompiler/issue.py,sha256=9ZpdEBh8QB56-bZ1YXRnjqgg9hwnFty2u1o5oI66W7M,11125
@@ -29,7 +29,7 @@ siliconcompiler/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
29
29
  siliconcompiler/flows/_common.py,sha256=-T3OPvzgOpzVdHdgQANtPm5h7zzgghhKd4XJH4EKqcE,2133
30
30
  siliconcompiler/flows/asicflow.py,sha256=AbnwSersQ4EsBaAvnH3sz44Tj62aroZSGZaTgVSmO6g,6084
31
31
  siliconcompiler/flows/asictopflow.py,sha256=UosrdJhh_NVyjigzz2KGhqcy2UBotkwTUUnCdOVaZXg,1155
32
- siliconcompiler/flows/dvflow.py,sha256=p_pnEut9-G7kkFGpDrHfhxP7H6z70QykcI3O3l0xvYo,2294
32
+ siliconcompiler/flows/dvflow.py,sha256=uchIXjAmKTQljkoBUMl9UWFvzwsON4vFWTBGCxPpKE4,3064
33
33
  siliconcompiler/flows/fpgaflow.py,sha256=l6uhqieVwEBTwA4pHuAHYOR7y1-61xHVQQaxj94KU5g,6359
34
34
  siliconcompiler/flows/generate_openroad_rcx.py,sha256=Czc3GEm0Q0dkPR0sRv1VdhRfVCAI8y6h3C-HVaxdmvE,2340
35
35
  siliconcompiler/flows/lintflow.py,sha256=mCOojrSnd2gYoV80rsKpim5iPlV8Kb7rHx9jSEUVMtc,1000
@@ -44,12 +44,14 @@ siliconcompiler/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
44
44
  siliconcompiler/libs/asap7sc7p5t.py,sha256=vHu9_ySMbC0aCPpwQ6mb72Xa2vxgopFf090kCmTrNXY,230
45
45
  siliconcompiler/libs/gf180mcu.py,sha256=ZX3dEytbvZZb7z2A0flAnpM86I9NeiUEH-_M0t4h45I,217
46
46
  siliconcompiler/libs/nangate45.py,sha256=OoEUGkzG10mcKft_qQPYGRTFmAAqF7cIxkHYbJrtbuw,222
47
+ siliconcompiler/libs/sg13g2_stdcell.py,sha256=ZboZlNUpKcsOqYYEio2ur0Ooy0AtGy5IhDv0ftd6IxE,224
47
48
  siliconcompiler/libs/sky130hd.py,sha256=MTYh8mVLamjZB-M3u-b4ICqghU3b1H6UeXsTSOx9OYE,218
48
49
  siliconcompiler/libs/sky130io.py,sha256=xd-EO5OQIUVCObddk8tIYjz8Ks8ahYhUYA7ciLC4Ntk,218
49
50
  siliconcompiler/pdks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
51
  siliconcompiler/pdks/asap7.py,sha256=WbH4UETdDtDRUYsB39wv-gf5rCd0OgnqSlnBwwTY03E,203
51
52
  siliconcompiler/pdks/freepdk45.py,sha256=ynxretkAtlEJ8N_maz6FJ3L8P5Tlffc1gAsxqtg-kE4,207
52
53
  siliconcompiler/pdks/gf180.py,sha256=yT_tQmfXTMuU-NngX1lakxPXVxZxwdl_FwNP-Rxx2rU,203
54
+ siliconcompiler/pdks/ihp130.py,sha256=grtX2Z2nQiQqtXGwkYcux3CrUM7EZp18F-s_yLxW0J4,204
53
55
  siliconcompiler/pdks/skywater130.py,sha256=6UxJaWDQfs180tbKAfhLT2jfO6yTa41cdFrBKxCfniU,204
54
56
  siliconcompiler/remote/__init__.py,sha256=2tRoHeocMaOltgsablWrX31KESPgP3In0oEJvaZDEY8,810
55
57
  siliconcompiler/remote/client.py,sha256=BHhnCMEDTeaT1ZezavWE0hJSmHjSSjMlDxcQxfiUCHM,30920
@@ -86,7 +88,7 @@ siliconcompiler/scheduler/slurm.py,sha256=CAuN5xmiWhk_k3CW6yMe5iukex4CWxp5Ox6_qA
86
88
  siliconcompiler/scheduler/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
89
  siliconcompiler/scheduler/validation/email_credentials.json,sha256=m141zzx3DxBt_Qztr9_Ej_-kYMP1tUc2Xj2YW_a3Pu0,1746
88
90
  siliconcompiler/schema/__init__.py,sha256=Gdny2AwDdg-X3RvghOHQYl3aG2alvMuK5CsSkFGKuYU,120
89
- siliconcompiler/schema/schema_cfg.py,sha256=ybDp8auEYof63Q-yuvzY1SLG7NUo1mHTHKTJlf7I2tE,182992
91
+ siliconcompiler/schema/schema_cfg.py,sha256=Pn96dZ7QYcJG-wokZ-UO4BeyTh_qdZhSl35DSGl5Tv8,182998
90
92
  siliconcompiler/schema/schema_obj.py,sha256=uIufKDsfoTe9m8EY4-PVMUKb_dbJ4-_x89v4yRs5mkQ,73447
91
93
  siliconcompiler/schema/utils.py,sha256=V8xDBpQ3gIiEpuzme15h7xEz601uGi8tNi0QyK175qk,4018
92
94
  siliconcompiler/sphinx_ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -99,6 +101,7 @@ siliconcompiler/targets/asic_demo.py,sha256=jRvbDhMZDGf-8AQ241vu8qLgloxPUToAn01Y
99
101
  siliconcompiler/targets/fpgaflow_demo.py,sha256=-2L8Xi-TIB5FBuIxxB88Y9JagTTOXDHZcNFFwPU-sno,1379
100
102
  siliconcompiler/targets/freepdk45_demo.py,sha256=O983Nwrs9h_HHlHtlUUrP0cPgdf3IlME1yWXCRgdL_A,1953
101
103
  siliconcompiler/targets/gf180_demo.py,sha256=oTs07GFFyQT0LaE7jVdoLSBuGqpOGLyL-ThQ25ZpCkc,3075
104
+ siliconcompiler/targets/ihp130_demo.py,sha256=3nCxfM0-XpZWjhE1yQezZKBGJwtf6AjpeinPM4z6wv0,2688
102
105
  siliconcompiler/targets/skywater130_demo.py,sha256=ct-kdVuZm2idynFm8eEZlL2S4-rfzWe16in8lOZPqrU,2689
103
106
  siliconcompiler/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
107
  siliconcompiler/templates/email/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -187,8 +190,6 @@ siliconcompiler/tools/netgen/sc_lvs.tcl,sha256=EKDVaYZZMi__ga-t8x-SWEyDG9Zat0wyZ
187
190
  siliconcompiler/tools/nextpnr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
191
  siliconcompiler/tools/nextpnr/apr.py,sha256=dCMLDS4xnwqCoBtCKd3kwCxjIRqPn_zq3f7pkWPw5mw,802
189
192
  siliconcompiler/tools/nextpnr/nextpnr.py,sha256=B5kr-ZLnt2vDFtS4veIdf0_Cm6yvfS1QVqWhxYa8R24,1712
190
- siliconcompiler/tools/openfpgaloader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- siliconcompiler/tools/openfpgaloader/openfpgaloader.py,sha256=yeHIzKxsshAsR6Yhz7haxqev6BfGKB4CzvKyN0pSneM,1209
192
193
  siliconcompiler/tools/openroad/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
194
  siliconcompiler/tools/openroad/cts.py,sha256=CZz_eJxCyuMpA7bvQaDm6dYgOkUM9phNKD1aNcJKJgE,1080
194
195
  siliconcompiler/tools/openroad/dfm.py,sha256=RjdOqq7oPVSx5HzYUTSlBh4ZGnVfJqJHR0cs4WdG1pQ,2244
@@ -207,11 +208,11 @@ siliconcompiler/tools/openroad/scripts/sc_apr.tcl,sha256=wlVYGDyl0PmR9bV15pMDLGu
207
208
  siliconcompiler/tools/openroad/scripts/sc_cts.tcl,sha256=PAUk66gHgvnXc78SDrUqczX5Q7c0SPo48Vm5FXYvczM,1793
208
209
  siliconcompiler/tools/openroad/scripts/sc_dfm.tcl,sha256=vhIUebTDyDtg7mnwDzUgMmdKZd5NmgG68wQBj1P34Pg,587
209
210
  siliconcompiler/tools/openroad/scripts/sc_export.tcl,sha256=-r3WUFON7gMgXxcJUL_uGBp_-wi46h1hAMKlRWtOzWg,2830
210
- siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl,sha256=fC_0RcpYdJe6vcVrbcFnCiO4cjRTu9OAzK5wm8m7icE,11690
211
+ siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl,sha256=SArhDchIlL1VbWnzS0FNFvbz-st2QRhwlQFfW-ufhKI,11546
211
212
  siliconcompiler/tools/openroad/scripts/sc_metrics.tcl,sha256=sactbdEYt8i4Pn_g29BLEGm7hIFzWc_Uw1PfI7hGbxo,5181
212
213
  siliconcompiler/tools/openroad/scripts/sc_physyn.tcl,sha256=hLAVeE_a__ZBgVMOSmMwCwtTDfflZptPmphaqibYvEk,115
213
214
  siliconcompiler/tools/openroad/scripts/sc_place.tcl,sha256=WMuYB-LXQP8YdcYMHTkqGzOvn1bK6X7mOm12gEK4kKY,1937
214
- siliconcompiler/tools/openroad/scripts/sc_procs.tcl,sha256=nIYiWU6Uyk_4bENiZkEE69TGxySyu317lyoARSeCW5o,10876
215
+ siliconcompiler/tools/openroad/scripts/sc_procs.tcl,sha256=nQcaGX1sQjYdW5SKVB2jtuVvRPyfJcNxqNMofIcWrDI,11530
215
216
  siliconcompiler/tools/openroad/scripts/sc_rcx.tcl,sha256=-70AuNikbsoHd_bW-myc8QMbmJNFSK-DqKIN_HF0luc,1514
216
217
  siliconcompiler/tools/openroad/scripts/sc_rcx_bench.tcl,sha256=d_VgTJA4hwRiaJVTTBOl1LxfJ3KB7fHJjmj8eTm1GRs,682
217
218
  siliconcompiler/tools/openroad/scripts/sc_rcx_extract.tcl,sha256=Aj9J_8aiOR1WqcQvdx99WyUDcN8RafxXwtrexcS5UcU,489
@@ -264,8 +265,10 @@ siliconcompiler/tools/vpr/route.py,sha256=uD4A2fSahluRhSJayjW1rfXt9pI3wWAbLIRU_Y
264
265
  siliconcompiler/tools/vpr/screenshot.py,sha256=5Ji6J9p0R0C7C9WkuCwLu2InGQpeCo_Ciif7wUXz9ng,1818
265
266
  siliconcompiler/tools/vpr/show.py,sha256=Dm0efQaOa2G6FsDeo6BpNYEp0farqKQOXeF_JLBuSYo,3120
266
267
  siliconcompiler/tools/vpr/vpr.py,sha256=3FZpwuh-FtatXt9qd7qRb6ALZe8P8AFJDoMvV_kunp0,13600
267
- siliconcompiler/tools/xyce/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
- siliconcompiler/tools/xyce/xyce.py,sha256=4WGNOpy6wLGu4fjSFRfvhRdQApnYkrbjK9tFfsfP-Hc,1082
268
+ siliconcompiler/tools/xdm/__init__.py,sha256=uEo7uTPRdoARmk0E5U8yQ_MZOntO-cWJfGb6_pPA0ZQ,729
269
+ siliconcompiler/tools/xdm/convert.py,sha256=rlirszWfNs2x9KApd3AiKpx78B3bfQ5VVWv5Nk_LSuU,2371
270
+ siliconcompiler/tools/xyce/__init__.py,sha256=FV1MEcqT_NqnHaR15zXM0zDtEorg6Amma6SHqxHujJo,1279
271
+ siliconcompiler/tools/xyce/simulate.py,sha256=Af4FcwLQrrlzsyCmMg9M_ZvpabWnLFrFYnitHNpBpkc,2900
269
272
  siliconcompiler/tools/yosys/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
270
273
  siliconcompiler/tools/yosys/lec.py,sha256=VD7FAIzvwZOsMViA0Nd9f3sY2a7kkE2BobfewkflwKQ,1906
271
274
  siliconcompiler/tools/yosys/prepareLib.py,sha256=9FbbAKhegY9Gwvgw9VnC0Rrl4tOCrNF0rZnUrOxJGNg,2267
@@ -285,9 +288,9 @@ siliconcompiler/tools/yosys/templates/abc.const,sha256=TAq9ThdLMYCJGrtToEU0gWcLu
285
288
  siliconcompiler/utils/__init__.py,sha256=Gu92RwiPZ8xrdsTUYVKp9TuNJGrU-5UvOuixPugzLww,13122
286
289
  siliconcompiler/utils/asic.py,sha256=cMLs7dneSmh5BlHS0-bZ1tLUpvghTw__gNaUCMpyBds,4986
287
290
  siliconcompiler/utils/showtools.py,sha256=sMZeHm3CpB4lH-MEeZfNSPYedmnokijTiAHmFDgbtsI,1133
288
- siliconcompiler-0.28.0.dist-info/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
289
- siliconcompiler-0.28.0.dist-info/METADATA,sha256=CfWGG-LmWc3ePjf43oTyuu7snmPDRzBcM_-FSzqV6bM,9726
290
- siliconcompiler-0.28.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
291
- siliconcompiler-0.28.0.dist-info/entry_points.txt,sha256=M3cpZxvqanXhVU9CuLTRDzBdDKmKz-t0p4DT57TyysU,451
292
- siliconcompiler-0.28.0.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
293
- siliconcompiler-0.28.0.dist-info/RECORD,,
291
+ siliconcompiler-0.28.1.dist-info/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
292
+ siliconcompiler-0.28.1.dist-info/METADATA,sha256=MYsUWwDCrdU1RABFBlbajEG3SAj6PXMcnHaVudzQpzc,9734
293
+ siliconcompiler-0.28.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
294
+ siliconcompiler-0.28.1.dist-info/entry_points.txt,sha256=M3cpZxvqanXhVU9CuLTRDzBdDKmKz-t0p4DT57TyysU,451
295
+ siliconcompiler-0.28.1.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
296
+ siliconcompiler-0.28.1.dist-info/RECORD,,
File without changes
@@ -1,39 +0,0 @@
1
- '''
2
- The OpenFPGALoader is a universal utility for programming
3
- FPGAs. Compatible with many boards, cables and FPGA from
4
- major manufacturers (Xilinx, Altera/Intel, Lattice, Gowin,
5
- Efinix, Anlogic). openFPGALoader works on Linux, Windows and
6
- macOS.
7
-
8
- Documentation: https://github.com/trabucayre/openFPGALoader
9
-
10
- Sources: https://github.com/trabucayre/openFPGALoader
11
-
12
- Installation: https://github.com/trabucayre/openFPGALoader
13
-
14
- Status: SC integration WIP
15
- '''
16
- from siliconcompiler.tools._common import get_tool_task
17
-
18
-
19
- ################################
20
- # Setup Tool (pre executable)
21
- ################################
22
- def setup(chip):
23
- ''' openFPGALoader setup function
24
- '''
25
-
26
- # If the 'lock' bit is set, don't reconfigure.
27
- tool = 'openfpgaloader'
28
- step = chip.get('arg', 'step')
29
- index = chip.get('arg', 'index')
30
- _, task = get_tool_task(chip, step, index)
31
-
32
- # tool setup
33
- chip.set('tool', tool, 'exe', tool)
34
- chip.set('tool', tool, 'vswitch', '--Version', clobber=False)
35
- chip.set('tool', tool, 'version', '0.5.0', clobber=False)
36
-
37
- options = []
38
- options.append("inputs" + chip.top() + ".bit")
39
- chip.add('tool', tool, 'task', task, 'option', options, step=step, index=index)
@@ -1,36 +0,0 @@
1
- '''
2
- Xyce is a high performance SPICE-compatible circuit simulator
3
- capable capable of solving extremely large circuit problems by
4
- supporting large-scale parallel computing platforms. It also
5
- supports serial execution on all common desktop platforms,
6
- and small-scale parallel runs on Unix-like systems.
7
-
8
- Documentation: https://xyce.sandia.gov/documentation-tutorials/
9
-
10
- Sources: https://github.com/Xyce/Xyce
11
-
12
- Installation: https://xyce.sandia.gov/documentation-tutorials/building-guide/
13
-
14
- Status: SC integration WIP
15
- '''
16
-
17
- import os
18
- from siliconcompiler.tools._common import get_tool_task
19
-
20
-
21
- ################################
22
- # Setup Tool (pre executable)
23
- ################################
24
- def setup(chip):
25
-
26
- tool = 'xyce'
27
- step = chip.get('arg', 'step')
28
- index = chip.get('arg', 'index')
29
- _, task = get_tool_task(chip, step, index)
30
-
31
- clobber = False
32
-
33
- chip.set('tool', tool, 'exe', tool)
34
- chip.set('tool', tool, 'version', '0.0', clobber=clobber)
35
- chip.set('tool', tool, 'task', task, 'threads', os.cpu_count(),
36
- step=step, index=index, clobber=clobber)