siliconcompiler 0.28.8__py3-none-any.whl → 0.28.9__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.
- siliconcompiler/_metadata.py +1 -1
- siliconcompiler/scheduler/send_messages.py +37 -33
- siliconcompiler/scheduler/validation/email_credentials.json +7 -0
- siliconcompiler/targets/fpgaflow_demo.py +6 -7
- siliconcompiler/tools/_common/__init__.py +2 -2
- siliconcompiler/tools/vivado/bitstream.py +8 -2
- siliconcompiler/tools/vivado/place.py +6 -2
- siliconcompiler/tools/vivado/route.py +6 -2
- siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +1 -1
- siliconcompiler/tools/vivado/scripts/sc_place.tcl +1 -1
- siliconcompiler/tools/vivado/scripts/sc_route.tcl +1 -1
- siliconcompiler/tools/vivado/scripts/sc_run.tcl +4 -2
- siliconcompiler/tools/vivado/syn_fpga.py +5 -1
- siliconcompiler/tools/vivado/vivado.py +26 -10
- siliconcompiler/tools/vpr/vpr.py +5 -0
- siliconcompiler/toolscripts/_tools.json +2 -2
- {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.28.9.dist-info}/METADATA +48 -48
- {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.28.9.dist-info}/RECORD +22 -22
- {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.28.9.dist-info}/WHEEL +1 -1
- {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.28.9.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.28.9.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.28.9.dist-info}/top_level.txt +0 -0
siliconcompiler/_metadata.py
CHANGED
|
@@ -81,40 +81,44 @@ def send(chip, msg_type, step, index):
|
|
|
81
81
|
msg['To'] = ", ".join(to)
|
|
82
82
|
msg['X-Entity-Ref-ID'] = uuid.uuid4().hex # keep emails from getting grouped
|
|
83
83
|
|
|
84
|
-
if
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
filename=os.path.basename(layout_img))
|
|
92
|
-
msg.attach(img_attach)
|
|
93
|
-
|
|
94
|
-
nodes_to_execute = get_executed_nodes(chip, flow)
|
|
95
|
-
nodes, errors, metrics, metrics_unit, metrics_to_show, _ = \
|
|
96
|
-
report_utils._collect_data(chip, flow=flow, flowgraph_nodes=nodes_to_execute)
|
|
97
|
-
|
|
98
|
-
text_msg = get_file_template('email/summary.j2').render(
|
|
99
|
-
design=chip.design,
|
|
100
|
-
nodes=nodes,
|
|
101
|
-
errors=errors,
|
|
102
|
-
metrics=metrics,
|
|
103
|
-
metrics_unit=metrics_unit,
|
|
104
|
-
metric_keys=metrics_to_show)
|
|
105
|
-
else:
|
|
106
|
-
# Attach logs
|
|
107
|
-
for log in (f'sc_{step}{index}.log', f'{step}.log'):
|
|
108
|
-
log_file = f'{chip.getworkdir(step=step, index=index)}/{log}'
|
|
109
|
-
if os.path.exists(log_file):
|
|
110
|
-
with sc_open(log_file) as f:
|
|
111
|
-
log_attach = MIMEApplication(f.read())
|
|
112
|
-
log_name, _ = os.path.splitext(log)
|
|
113
|
-
# Make attachment a txt file to avoid issues with tools not loading .log
|
|
114
|
-
log_attach.add_header('Content-Disposition',
|
|
84
|
+
if cred["max_file_size"] > 0:
|
|
85
|
+
if msg_type == "summary":
|
|
86
|
+
layout_img = report_utils._find_summary_image(chip)
|
|
87
|
+
if layout_img and os.path.isfile(layout_img):
|
|
88
|
+
with open(layout_img, 'rb') as img_file:
|
|
89
|
+
img_attach = MIMEApplication(img_file.read())
|
|
90
|
+
img_attach.add_header('Content-Disposition',
|
|
115
91
|
'attachment',
|
|
116
|
-
filename=
|
|
117
|
-
msg.attach(
|
|
92
|
+
filename=os.path.basename(layout_img))
|
|
93
|
+
msg.attach(img_attach)
|
|
94
|
+
|
|
95
|
+
nodes_to_execute = get_executed_nodes(chip, flow)
|
|
96
|
+
nodes, errors, metrics, metrics_unit, metrics_to_show, _ = \
|
|
97
|
+
report_utils._collect_data(chip, flow=flow, flowgraph_nodes=nodes_to_execute)
|
|
98
|
+
|
|
99
|
+
text_msg = get_file_template('email/summary.j2').render(
|
|
100
|
+
design=chip.design,
|
|
101
|
+
nodes=nodes,
|
|
102
|
+
errors=errors,
|
|
103
|
+
metrics=metrics,
|
|
104
|
+
metrics_unit=metrics_unit,
|
|
105
|
+
metric_keys=metrics_to_show)
|
|
106
|
+
else:
|
|
107
|
+
# Attach logs
|
|
108
|
+
for log in (f'sc_{step}{index}.log', f'{step}.log'):
|
|
109
|
+
log_file = f'{chip.getworkdir(step=step, index=index)}/{log}'
|
|
110
|
+
if os.path.exists(log_file):
|
|
111
|
+
with sc_open(log_file) as f:
|
|
112
|
+
file_content = f.read().splitlines()
|
|
113
|
+
# Limit to max_file_size
|
|
114
|
+
file_content = file_content[-cred["max_file_size"]:]
|
|
115
|
+
log_attach = MIMEApplication("\n".join(file_content))
|
|
116
|
+
log_name, _ = os.path.splitext(log)
|
|
117
|
+
# Make attachment a txt file to avoid issues with tools not loading .log
|
|
118
|
+
log_attach.add_header('Content-Disposition',
|
|
119
|
+
'attachment',
|
|
120
|
+
filename=f'{log_name}.txt')
|
|
121
|
+
msg.attach(log_attach)
|
|
118
122
|
|
|
119
123
|
records = {}
|
|
120
124
|
for record in chip.getkeys('record'):
|
|
@@ -47,6 +47,13 @@
|
|
|
47
47
|
"examples": [true],
|
|
48
48
|
"type": "boolean",
|
|
49
49
|
"default": true
|
|
50
|
+
},
|
|
51
|
+
"max_file_size": {
|
|
52
|
+
"title": "Max line in log file",
|
|
53
|
+
"description": "Maximum number of file lines to include in log",
|
|
54
|
+
"examples": [1000],
|
|
55
|
+
"type": "integer",
|
|
56
|
+
"default": 1000
|
|
50
57
|
}
|
|
51
58
|
},
|
|
52
59
|
|
|
@@ -16,25 +16,24 @@ def make_docs(chip):
|
|
|
16
16
|
####################################################
|
|
17
17
|
# Target Setup
|
|
18
18
|
####################################################
|
|
19
|
-
def setup(chip):
|
|
19
|
+
def setup(chip, partname=None):
|
|
20
20
|
'''
|
|
21
21
|
Demonstration target for running the open-source fpgaflow.
|
|
22
22
|
'''
|
|
23
23
|
|
|
24
24
|
# 1. Configure fpga part
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
if not partname:
|
|
26
|
+
partname = chip.get('fpga', 'partname')
|
|
27
|
+
|
|
28
|
+
if not partname:
|
|
27
29
|
raise SiliconCompilerError('FPGA partname has not been set.', chip=chip)
|
|
28
30
|
|
|
29
31
|
# 2. Load all available FPGAs
|
|
30
32
|
chip.use(lattice_ice40)
|
|
31
33
|
chip.use(vpr_example)
|
|
32
34
|
|
|
33
|
-
if part_name not in chip.getkeys('fpga'):
|
|
34
|
-
raise SiliconCompilerError(f'{part_name} has not been loaded', chip=chip)
|
|
35
|
-
|
|
36
35
|
# 3. Load flow
|
|
37
|
-
chip.use(fpgaflow, partname=
|
|
36
|
+
chip.use(fpgaflow, partname=partname)
|
|
38
37
|
|
|
39
38
|
# 4. Select default flow
|
|
40
39
|
chip.set('option', 'flow', 'fpgaflow', clobber=False)
|
|
@@ -115,17 +115,17 @@ def get_input_files(chip, *key, add_library_files=True):
|
|
|
115
115
|
add_library_files (bool): When True, files from library keys
|
|
116
116
|
will be included
|
|
117
117
|
'''
|
|
118
|
-
step = chip.get('arg', 'step')
|
|
119
|
-
index = chip.get('arg', 'index')
|
|
120
118
|
|
|
121
119
|
files = []
|
|
122
120
|
for key in __get_keys(chip, *key, include_library_files=False):
|
|
121
|
+
step, index = __get_step_index(chip, *key)
|
|
123
122
|
files.extend(chip.find_files(*key, step=step, index=index))
|
|
124
123
|
|
|
125
124
|
if add_library_files:
|
|
126
125
|
for item in get_libraries(chip, include_asic=False):
|
|
127
126
|
lib_key = ('library', item, *key)
|
|
128
127
|
if __is_key_valid(chip, *lib_key):
|
|
128
|
+
step, index = __get_step_index(chip, *lib_key)
|
|
129
129
|
files.extend(chip.find_files(*lib_key, step=step, index=index))
|
|
130
130
|
|
|
131
131
|
return __remove_duplicates(chip, files, list(key))
|
|
@@ -11,9 +11,15 @@ def setup(chip):
|
|
|
11
11
|
vivado.setup_task(chip, task)
|
|
12
12
|
|
|
13
13
|
design = chip.top()
|
|
14
|
-
chip.set('tool', tool, 'task', task, 'input', f'{design}
|
|
14
|
+
chip.set('tool', tool, 'task', task, 'input', f'{design}.dcp',
|
|
15
15
|
step=step, index=index)
|
|
16
|
-
chip.set('tool', tool, 'task', task, 'output', f'{design}.
|
|
16
|
+
chip.set('tool', tool, 'task', task, 'output', f'{design}.dcp',
|
|
17
|
+
step=step, index=index)
|
|
18
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.xdc',
|
|
19
|
+
step=step, index=index)
|
|
20
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.vg',
|
|
21
|
+
step=step, index=index)
|
|
22
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.bit',
|
|
17
23
|
step=step, index=index)
|
|
18
24
|
|
|
19
25
|
|
|
@@ -11,9 +11,13 @@ def setup(chip):
|
|
|
11
11
|
vivado.setup_task(chip, task)
|
|
12
12
|
|
|
13
13
|
design = chip.top()
|
|
14
|
-
chip.set('tool', tool, 'task', task, 'input', f'{design}
|
|
14
|
+
chip.set('tool', tool, 'task', task, 'input', f'{design}.dcp',
|
|
15
15
|
step=step, index=index)
|
|
16
|
-
chip.set('tool', tool, 'task', task, 'output', f'{design}
|
|
16
|
+
chip.set('tool', tool, 'task', task, 'output', f'{design}.dcp',
|
|
17
|
+
step=step, index=index)
|
|
18
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.xdc',
|
|
19
|
+
step=step, index=index)
|
|
20
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.vg',
|
|
17
21
|
step=step, index=index)
|
|
18
22
|
|
|
19
23
|
|
|
@@ -11,9 +11,13 @@ def setup(chip):
|
|
|
11
11
|
vivado.setup_task(chip, task)
|
|
12
12
|
|
|
13
13
|
design = chip.top()
|
|
14
|
-
chip.set('tool', tool, 'task', task, 'input', f'{design}
|
|
14
|
+
chip.set('tool', tool, 'task', task, 'input', f'{design}.dcp',
|
|
15
15
|
step=step, index=index)
|
|
16
|
-
chip.set('tool', tool, 'task', task, 'output', f'{design}
|
|
16
|
+
chip.set('tool', tool, 'task', task, 'output', f'{design}.dcp',
|
|
17
|
+
step=step, index=index)
|
|
18
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.xdc',
|
|
19
|
+
step=step, index=index)
|
|
20
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.vg',
|
|
17
21
|
step=step, index=index)
|
|
18
22
|
|
|
19
23
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
open_checkpoint "inputs/${sc_design}
|
|
1
|
+
open_checkpoint "inputs/${sc_design}.dcp"
|
|
2
2
|
place_design
|
|
@@ -28,7 +28,9 @@ source $sc_refdir/sc_$sc_task.tcl
|
|
|
28
28
|
# Checkpoint
|
|
29
29
|
##############################
|
|
30
30
|
|
|
31
|
-
write_checkpoint -force "outputs/${sc_design}
|
|
31
|
+
write_checkpoint -force "outputs/${sc_design}"
|
|
32
|
+
write_xdc "outputs/${sc_design}.xdc"
|
|
33
|
+
write_verilog "outputs/${sc_design}.vg"
|
|
32
34
|
|
|
33
35
|
##############################
|
|
34
36
|
# Reports / Metrics
|
|
@@ -41,4 +43,4 @@ report_clock_utilization -file "reports/clock_utilization.rpt"
|
|
|
41
43
|
report_drc -file "reports/drc.rpt"
|
|
42
44
|
report_cdc -details -file "reports/cdc.rpt"
|
|
43
45
|
|
|
44
|
-
report_design_analysis -qor_summary -json "qor_summary.json"
|
|
46
|
+
report_design_analysis -qor_summary -json "reports/qor_summary.json"
|
|
@@ -12,7 +12,11 @@ def setup(chip):
|
|
|
12
12
|
|
|
13
13
|
design = chip.top()
|
|
14
14
|
chip.set('tool', tool, 'task', task, 'input', f'{design}.v', step=step, index=index)
|
|
15
|
-
chip.set('tool', tool, 'task', task, 'output', f'{design}
|
|
15
|
+
chip.set('tool', tool, 'task', task, 'output', f'{design}.dcp',
|
|
16
|
+
step=step, index=index)
|
|
17
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.xdc',
|
|
18
|
+
step=step, index=index)
|
|
19
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.vg',
|
|
16
20
|
step=step, index=index)
|
|
17
21
|
|
|
18
22
|
|
|
@@ -67,36 +67,52 @@ def normalize_version(version):
|
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
def _parse_qor_summary(chip, step, index):
|
|
70
|
-
if not os.path.isfile('qor_summary.json'):
|
|
70
|
+
if not os.path.isfile('reports/qor_summary.json'):
|
|
71
71
|
return
|
|
72
72
|
|
|
73
|
-
with sc_open('qor_summary.json') as f:
|
|
73
|
+
with sc_open('reports/qor_summary.json') as f:
|
|
74
74
|
data = json.load(f)
|
|
75
75
|
|
|
76
76
|
# Data is organized as list of tasks that Vivado has completed, with
|
|
77
77
|
# metrics associated with each. The tasks appear to be in chronological
|
|
78
78
|
# order, so we pull metrics from the last one.
|
|
79
79
|
task = data['Design QoR Summary'][-1]
|
|
80
|
-
setup_wns =
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
setup_wns = None
|
|
81
|
+
for metric in ('Wns(ns)', 'WNS(ns)'):
|
|
82
|
+
if metric in task:
|
|
83
|
+
setup_wns = task[metric]
|
|
84
|
+
break
|
|
85
|
+
setup_tns = None
|
|
86
|
+
for metric in ('Tns(ns)', 'TNS(ns)'):
|
|
87
|
+
if metric in task:
|
|
88
|
+
setup_tns = task[metric]
|
|
89
|
+
break
|
|
90
|
+
hold_wns = None
|
|
91
|
+
for metric in ('Whs(ns)', 'WHS(ns)'):
|
|
92
|
+
if metric in task:
|
|
93
|
+
hold_wns = task[metric]
|
|
94
|
+
break
|
|
95
|
+
hold_tns = None
|
|
96
|
+
for metric in ('Ths(ns)', 'THS(ns)'):
|
|
97
|
+
if metric in task:
|
|
98
|
+
hold_tns = task[metric]
|
|
99
|
+
break
|
|
84
100
|
|
|
85
101
|
if setup_wns:
|
|
86
102
|
record_metric(chip, step, index, 'setupwns', setup_wns,
|
|
87
|
-
'qor_summary.json',
|
|
103
|
+
'reports/qor_summary.json',
|
|
88
104
|
source_unit='ns')
|
|
89
105
|
if setup_tns:
|
|
90
106
|
record_metric(chip, step, index, 'setuptns', setup_tns,
|
|
91
|
-
'qor_summary.json',
|
|
107
|
+
'reports/qor_summary.json',
|
|
92
108
|
source_unit='ns')
|
|
93
109
|
if hold_wns:
|
|
94
110
|
record_metric(chip, step, index, 'holdwns', hold_wns,
|
|
95
|
-
'qor_summary.json',
|
|
111
|
+
'reports/qor_summary.json',
|
|
96
112
|
source_unit='ns')
|
|
97
113
|
if hold_tns:
|
|
98
114
|
record_metric(chip, step, index, 'holdtns', hold_tns,
|
|
99
|
-
'qor_summary.json',
|
|
115
|
+
'reports/qor_summary.json',
|
|
100
116
|
source_unit='ns')
|
|
101
117
|
|
|
102
118
|
|
siliconcompiler/tools/vpr/vpr.py
CHANGED
|
@@ -94,6 +94,11 @@ def runtime_options(chip):
|
|
|
94
94
|
|
|
95
95
|
options.append(f"--device {device_code[0]}")
|
|
96
96
|
|
|
97
|
+
# Medium-term solution: VPR performs hash digest checks that
|
|
98
|
+
# fail if file paths are changed between steps. We wish to
|
|
99
|
+
# disable the digest checks to work around this
|
|
100
|
+
options.append("--verify_file_digests off")
|
|
101
|
+
|
|
97
102
|
options.append(f"--write_block_usage {__block_file}")
|
|
98
103
|
options.append("--outfile_prefix outputs/")
|
|
99
104
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"openroad": {
|
|
3
3
|
"git-url": "https://github.com/The-OpenROAD-Project/OpenROAD.git",
|
|
4
|
-
"git-commit": "
|
|
4
|
+
"git-commit": "8300b5293dec4c0a0ef26cd2ba7ca6101714e155",
|
|
5
5
|
"docker-cmds": [
|
|
6
6
|
"# Remove OR-Tools files",
|
|
7
7
|
"RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
},
|
|
67
67
|
"vpr": {
|
|
68
68
|
"git-url": "https://github.com/verilog-to-routing/vtr-verilog-to-routing.git",
|
|
69
|
-
"git-commit": "
|
|
69
|
+
"git-commit": "de31f094aa4f894a5e6e0dc32c66365f4b341190",
|
|
70
70
|
"auto-update": false
|
|
71
71
|
},
|
|
72
72
|
"icepack": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: siliconcompiler
|
|
3
|
-
Version: 0.28.
|
|
3
|
+
Version: 0.28.9
|
|
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
|
|
@@ -25,55 +25,55 @@ Classifier: Topic :: Software Development :: Build Tools
|
|
|
25
25
|
Requires-Python: >=3.8
|
|
26
26
|
Description-Content-Type: text/markdown
|
|
27
27
|
License-File: LICENSE
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist:
|
|
41
|
-
Requires-Dist:
|
|
42
|
-
Requires-Dist:
|
|
43
|
-
Requires-Dist:
|
|
44
|
-
Requires-Dist:
|
|
45
|
-
Requires-Dist:
|
|
46
|
-
Requires-Dist:
|
|
47
|
-
Requires-Dist:
|
|
48
|
-
Requires-Dist:
|
|
49
|
-
Requires-Dist:
|
|
50
|
-
Requires-Dist:
|
|
51
|
-
Requires-Dist:
|
|
52
|
-
Requires-Dist:
|
|
53
|
-
Requires-Dist:
|
|
54
|
-
Requires-Dist:
|
|
28
|
+
Requires-Dist: aiohttp==3.10.11; python_version <= "3.8"
|
|
29
|
+
Requires-Dist: aiohttp==3.11.2; python_version >= "3.9"
|
|
30
|
+
Requires-Dist: requests==2.32.3
|
|
31
|
+
Requires-Dist: PyYAML==6.0.2
|
|
32
|
+
Requires-Dist: pandas>=1.1.5
|
|
33
|
+
Requires-Dist: Jinja2>=2.11.3
|
|
34
|
+
Requires-Dist: graphviz==0.20.3
|
|
35
|
+
Requires-Dist: distro==1.9.0
|
|
36
|
+
Requires-Dist: packaging<24,>=21.3
|
|
37
|
+
Requires-Dist: psutil>=5.8.0
|
|
38
|
+
Requires-Dist: Pillow==10.4.0; python_version <= "3.8"
|
|
39
|
+
Requires-Dist: Pillow==11.0.0; python_version >= "3.9"
|
|
40
|
+
Requires-Dist: GitPython==3.1.43
|
|
41
|
+
Requires-Dist: lambdapdk>=0.1.38
|
|
42
|
+
Requires-Dist: PyGithub==2.5.0
|
|
43
|
+
Requires-Dist: urllib3>=1.26.0
|
|
44
|
+
Requires-Dist: fasteners==0.19
|
|
45
|
+
Requires-Dist: fastjsonschema==2.20.0
|
|
46
|
+
Requires-Dist: docker==7.1.0
|
|
47
|
+
Requires-Dist: importlib_metadata; python_version < "3.10"
|
|
48
|
+
Requires-Dist: sc-surelog==1.84.1
|
|
49
|
+
Requires-Dist: orjson==3.10.11
|
|
50
|
+
Requires-Dist: streamlit==1.40.1; python_full_version != "3.9.7"
|
|
51
|
+
Requires-Dist: streamlit_agraph==0.0.45; python_full_version != "3.9.7"
|
|
52
|
+
Requires-Dist: streamlit-antd-components==0.3.2; python_full_version != "3.9.7"
|
|
53
|
+
Requires-Dist: streamlit_javascript==0.1.5; python_full_version != "3.9.7"
|
|
54
|
+
Requires-Dist: streamlit-autorefresh==1.0.1; python_full_version != "3.9.7"
|
|
55
|
+
Provides-Extra: test
|
|
56
|
+
Requires-Dist: pytest==8.3.3; extra == "test"
|
|
57
|
+
Requires-Dist: pytest-xdist==3.6.1; extra == "test"
|
|
58
|
+
Requires-Dist: pytest-timeout==2.3.1; extra == "test"
|
|
59
|
+
Requires-Dist: pytest-asyncio==0.24.0; extra == "test"
|
|
60
|
+
Requires-Dist: pytest-cov==5.0.0; python_version <= "3.8" and extra == "test"
|
|
61
|
+
Requires-Dist: pytest-cov==6.0.0; python_version >= "3.9" and extra == "test"
|
|
62
|
+
Requires-Dist: responses==0.25.3; extra == "test"
|
|
63
|
+
Requires-Dist: PyVirtualDisplay==3.0; extra == "test"
|
|
64
|
+
Requires-Dist: flake8==7.1.1; extra == "test"
|
|
65
|
+
Requires-Dist: tclint==0.4.2; extra == "test"
|
|
66
|
+
Requires-Dist: codespell==2.3.0; extra == "test"
|
|
55
67
|
Provides-Extra: docs
|
|
56
|
-
Requires-Dist: Sphinx
|
|
57
|
-
Requires-Dist: pip-licenses
|
|
58
|
-
Requires-Dist: pydata-sphinx-theme
|
|
59
|
-
Requires-Dist: sc-leflib
|
|
60
|
-
Provides-Extra: examples
|
|
61
|
-
Requires-Dist: migen ==0.9.2 ; extra == 'examples'
|
|
62
|
-
Requires-Dist: lambdalib ==0.3.1 ; extra == 'examples'
|
|
68
|
+
Requires-Dist: Sphinx==8.1.3; extra == "docs"
|
|
69
|
+
Requires-Dist: pip-licenses==5.0.0; extra == "docs"
|
|
70
|
+
Requires-Dist: pydata-sphinx-theme==0.16.0; extra == "docs"
|
|
71
|
+
Requires-Dist: sc-leflib>=0.2.0; extra == "docs"
|
|
63
72
|
Provides-Extra: profile
|
|
64
|
-
Requires-Dist: gprof2dot
|
|
65
|
-
Provides-Extra:
|
|
66
|
-
Requires-Dist:
|
|
67
|
-
Requires-Dist:
|
|
68
|
-
Requires-Dist: pytest-timeout ==2.3.1 ; extra == 'test'
|
|
69
|
-
Requires-Dist: pytest-asyncio ==0.24.0 ; extra == 'test'
|
|
70
|
-
Requires-Dist: responses ==0.25.3 ; extra == 'test'
|
|
71
|
-
Requires-Dist: PyVirtualDisplay ==3.0 ; extra == 'test'
|
|
72
|
-
Requires-Dist: flake8 ==7.1.1 ; extra == 'test'
|
|
73
|
-
Requires-Dist: tclint ==0.4.2 ; extra == 'test'
|
|
74
|
-
Requires-Dist: codespell ==2.3.0 ; extra == 'test'
|
|
75
|
-
Requires-Dist: pytest-cov ==5.0.0 ; (python_version <= "3.8") and extra == 'test'
|
|
76
|
-
Requires-Dist: pytest-cov ==6.0.0 ; (python_version >= "3.9") and extra == 'test'
|
|
73
|
+
Requires-Dist: gprof2dot==2024.6.6; extra == "profile"
|
|
74
|
+
Provides-Extra: examples
|
|
75
|
+
Requires-Dist: migen==0.9.2; extra == "examples"
|
|
76
|
+
Requires-Dist: lambdalib==0.3.1; extra == "examples"
|
|
77
77
|
|
|
78
78
|

|
|
79
79
|
|
|
@@ -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=c6r0SbI2xTpNOZayFsyCDo0riJGNJSPN-0zW8R7rDBI,1488
|
|
4
|
-
siliconcompiler/_metadata.py,sha256=
|
|
4
|
+
siliconcompiler/_metadata.py,sha256=ISw0dgmSuNTS8xpsds6hA2uMv313WiLdIUnkF-qEI30,1264
|
|
5
5
|
siliconcompiler/core.py,sha256=_T1eEY7lUsrbaEBUaG1WSAzY2JFxyz5tXEKxvoCGZaI,135718
|
|
6
6
|
siliconcompiler/flowgraph.py,sha256=WLcbBWFj5DdYRRIxNy_Djm2v4yN9WELQM_ypNPB5QVM,21963
|
|
7
7
|
siliconcompiler/issue.py,sha256=9ZpdEBh8QB56-bZ1YXRnjqgg9hwnFty2u1o5oI66W7M,11125
|
|
@@ -100,10 +100,10 @@ siliconcompiler/report/dashboard/utils/file_utils.py,sha256=5MKAyf7TGXQIc3yxwbP1
|
|
|
100
100
|
siliconcompiler/scheduler/__init__.py,sha256=bkJ5S06BNXsdfjx5nPcgak_9FT8XHxgsnLIYvee5uvk,84997
|
|
101
101
|
siliconcompiler/scheduler/docker_runner.py,sha256=bzGIqYpdtxoM_A4ko_LEADYAbHY89jiKHplVB1Zzh_k,8065
|
|
102
102
|
siliconcompiler/scheduler/run_node.py,sha256=IWodOtT6b_MO5oXpEiF0th1Q3v7AD66jE182lY-aGv4,5063
|
|
103
|
-
siliconcompiler/scheduler/send_messages.py,sha256=
|
|
103
|
+
siliconcompiler/scheduler/send_messages.py,sha256=Pq0Bt7LknGsQZk_bSkL0rRdpUNGz_WzS1A3UyDpBp_0,6614
|
|
104
104
|
siliconcompiler/scheduler/slurm.py,sha256=CAuN5xmiWhk_k3CW6yMe5iukex4CWxp5Ox6_qAzgV5Q,7097
|
|
105
105
|
siliconcompiler/scheduler/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
106
|
-
siliconcompiler/scheduler/validation/email_credentials.json,sha256=
|
|
106
|
+
siliconcompiler/scheduler/validation/email_credentials.json,sha256=hkJs0U2h2Bgm1zxeXvanIJ-prPhpn_aU6e3qwIs7qA0,1997
|
|
107
107
|
siliconcompiler/schema/__init__.py,sha256=Gdny2AwDdg-X3RvghOHQYl3aG2alvMuK5CsSkFGKuYU,120
|
|
108
108
|
siliconcompiler/schema/schema_cfg.py,sha256=K1xySfHNenZk33NJnQcqsv-xfByxshwLf4xPQCU0vR8,183674
|
|
109
109
|
siliconcompiler/schema/schema_obj.py,sha256=85NFfP1P4Gjoxw2dFMWM7B6cHx94bY2sqkGuj8nCFMo,75000
|
|
@@ -115,7 +115,7 @@ siliconcompiler/sphinx_ext/utils.py,sha256=JNktfS5nYZE_DnXRX_fwOBkc5kWgLkB0Urxbe
|
|
|
115
115
|
siliconcompiler/targets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
116
|
siliconcompiler/targets/asap7_demo.py,sha256=RBCjAx3laq2xUT7w--b9oIVx8r87QyKfBRX35JQICzw,2544
|
|
117
117
|
siliconcompiler/targets/asic_demo.py,sha256=jRvbDhMZDGf-8AQ241vu8qLgloxPUToAn01Ybaaj_wo,1094
|
|
118
|
-
siliconcompiler/targets/fpgaflow_demo.py,sha256
|
|
118
|
+
siliconcompiler/targets/fpgaflow_demo.py,sha256=0fqCaXa8_gicQCiz4m_mhI8_JY1qQlBO3mH45-YzMGA,1288
|
|
119
119
|
siliconcompiler/targets/freepdk45_demo.py,sha256=O983Nwrs9h_HHlHtlUUrP0cPgdf3IlME1yWXCRgdL_A,1953
|
|
120
120
|
siliconcompiler/targets/gf180_demo.py,sha256=oTs07GFFyQT0LaE7jVdoLSBuGqpOGLyL-ThQ25ZpCkc,3075
|
|
121
121
|
siliconcompiler/targets/ihp130_demo.py,sha256=3nCxfM0-XpZWjhE1yQezZKBGJwtf6AjpeinPM4z6wv0,2688
|
|
@@ -138,7 +138,7 @@ siliconcompiler/templates/slurm/run.sh,sha256=uXs91H0vjLB8G8vaezxXSr3XNR2EUiXH1d
|
|
|
138
138
|
siliconcompiler/templates/tcl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
139
|
siliconcompiler/templates/tcl/manifest.tcl.j2,sha256=XT2pKuPSaa2GPJj1IpEl3Al5N70yqQS8jZecmpyeV4o,3547
|
|
140
140
|
siliconcompiler/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
|
-
siliconcompiler/tools/_common/__init__.py,sha256=
|
|
141
|
+
siliconcompiler/tools/_common/__init__.py,sha256=tCH4wk6hTQwS19pkVpOiN2MW1GbsFjKkPoarELzq5FQ,14525
|
|
142
142
|
siliconcompiler/tools/_common/asic.py,sha256=0-yMpvuMBy2dzN6uRFC96z8mN-7Ndzj7LhiMuR2MKtk,6469
|
|
143
143
|
siliconcompiler/tools/_common/sdc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
144
144
|
siliconcompiler/tools/_common/sdc/sc_constraints.sdc,sha256=Hz6OLebi14UTcfGXgJoNJeFo0BH_4N5XwjFe2mrey8g,2827
|
|
@@ -271,16 +271,16 @@ siliconcompiler/tools/verilator/lint.py,sha256=Lp-PXk6kYtnemN2cMuvCyZxodDIDzLEmK
|
|
|
271
271
|
siliconcompiler/tools/verilator/parse.py,sha256=ZAYNgcK7wxRabW1mcgdGfmrcn6cLusPgK1X9vJkWUok,806
|
|
272
272
|
siliconcompiler/tools/verilator/verilator.py,sha256=tSfUWzXbMPwLPGydeBhLAstZpXLt-3V4LnIfzeKWbYU,6434
|
|
273
273
|
siliconcompiler/tools/vivado/__init__.py,sha256=f3DdiwAnqqXZZMWp8AAzljLE2pp0Gqarhv9LxzP1ruE,115
|
|
274
|
-
siliconcompiler/tools/vivado/bitstream.py,sha256=
|
|
275
|
-
siliconcompiler/tools/vivado/place.py,sha256=
|
|
276
|
-
siliconcompiler/tools/vivado/route.py,sha256=
|
|
277
|
-
siliconcompiler/tools/vivado/syn_fpga.py,sha256=
|
|
278
|
-
siliconcompiler/tools/vivado/vivado.py,sha256=
|
|
274
|
+
siliconcompiler/tools/vivado/bitstream.py,sha256=361b51W7S_0umzGx_Q7VaXFRHpmanrJiNZCXTS5sXkg,972
|
|
275
|
+
siliconcompiler/tools/vivado/place.py,sha256=tvD4-pPeJ-pjptaytY7jTrbllYyYgsDv59NWPvH-eSU,844
|
|
276
|
+
siliconcompiler/tools/vivado/route.py,sha256=OiYWbVxBjlibDla-KTOXVbUtcg8LPsCUtuLhCc7zDfo,842
|
|
277
|
+
siliconcompiler/tools/vivado/syn_fpga.py,sha256=MkcB0d7RjfKhyrCtCUlgDdfbFRu1Z3NQsu8Canw74cI,834
|
|
278
|
+
siliconcompiler/tools/vivado/vivado.py,sha256=3k3iWV6pGivslG377tVGowOW5KvhoamzX2HXnRa4mYg,5522
|
|
279
279
|
siliconcompiler/tools/vivado/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
280
|
-
siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl,sha256=
|
|
281
|
-
siliconcompiler/tools/vivado/scripts/sc_place.tcl,sha256=
|
|
282
|
-
siliconcompiler/tools/vivado/scripts/sc_route.tcl,sha256=
|
|
283
|
-
siliconcompiler/tools/vivado/scripts/sc_run.tcl,sha256=
|
|
280
|
+
siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl,sha256=77ftp1FdB7KQ9raHYR2Dd66Fs61dwmqXeUiP4tXK_6o,219
|
|
281
|
+
siliconcompiler/tools/vivado/scripts/sc_place.tcl,sha256=x-3Tu9ZranEJFrqekyuFB1eru6LomCcw3IQiM0Jl_A4,55
|
|
282
|
+
siliconcompiler/tools/vivado/scripts/sc_route.tcl,sha256=yqkSukM7FmDvQVyz5D7xdtSbHyQHQrshHPD-0H_Asww,88
|
|
283
|
+
siliconcompiler/tools/vivado/scripts/sc_run.tcl,sha256=ycNYc71Sfw7KUxU4yZ8T6NCypWoRRW4nWX8yE5PZ-Q4,1359
|
|
284
284
|
siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl,sha256=wBFkbSkmF7jzBz7PWqnllEFeg6vpK4RZUKLqktIM-HY,720
|
|
285
285
|
siliconcompiler/tools/vpr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
286
286
|
siliconcompiler/tools/vpr/_json_constraint.py,sha256=7cEKHmzgFKd0K3NLiIxVgiUOa1tbeSLv7M132SLuQig,2254
|
|
@@ -289,7 +289,7 @@ siliconcompiler/tools/vpr/place.py,sha256=CwzEmQELZ5IUnQ6lg964icDhmcBOxcNI32Ysdg
|
|
|
289
289
|
siliconcompiler/tools/vpr/route.py,sha256=uD4A2fSahluRhSJayjW1rfXt9pI3wWAbLIRU_YuXwlA,4876
|
|
290
290
|
siliconcompiler/tools/vpr/screenshot.py,sha256=5Ji6J9p0R0C7C9WkuCwLu2InGQpeCo_Ciif7wUXz9ng,1818
|
|
291
291
|
siliconcompiler/tools/vpr/show.py,sha256=Dm0efQaOa2G6FsDeo6BpNYEp0farqKQOXeF_JLBuSYo,3120
|
|
292
|
-
siliconcompiler/tools/vpr/vpr.py,sha256=
|
|
292
|
+
siliconcompiler/tools/vpr/vpr.py,sha256=tg6D_RqZXB7aRGnQInV01v92qnSFTwA7-3vB1x88s54,14641
|
|
293
293
|
siliconcompiler/tools/xdm/__init__.py,sha256=uEo7uTPRdoARmk0E5U8yQ_MZOntO-cWJfGb6_pPA0ZQ,729
|
|
294
294
|
siliconcompiler/tools/xdm/convert.py,sha256=rlirszWfNs2x9KApd3AiKpx78B3bfQ5VVWv5Nk_LSuU,2371
|
|
295
295
|
siliconcompiler/tools/xyce/__init__.py,sha256=YTSk-XGtviqthGmGHb6RCDEAIMUQ7ElYZjZzpa1aSBg,1297
|
|
@@ -312,7 +312,7 @@ siliconcompiler/tools/yosys/techmaps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
|
|
|
312
312
|
siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v,sha256=M4T-ygiKmlsprl5eGGLaV5w6HVqlEepn0wlUDmOkapg,773
|
|
313
313
|
siliconcompiler/tools/yosys/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
314
314
|
siliconcompiler/tools/yosys/templates/abc.const,sha256=TAq9ThdLMYCJGrtToEU0gWcLuEtjE4Gk8huBbTm1v-I,116
|
|
315
|
-
siliconcompiler/toolscripts/_tools.json,sha256=
|
|
315
|
+
siliconcompiler/toolscripts/_tools.json,sha256=jeawsNVi9BJWSeMiIxX0_0mDjv0-WddcU5a_Rm5uPIw,3959
|
|
316
316
|
siliconcompiler/toolscripts/_tools.py,sha256=P30KY_xbbjl8eHGsPAxDcAzWvJJpiL07ZfGZZDQbdR8,7174
|
|
317
317
|
siliconcompiler/toolscripts/rhel8/install-chisel.sh,sha256=lPORZN7vlBX6sJSv01JOIiDE9-_7GcCZGA7EP5ri3MQ,525
|
|
318
318
|
siliconcompiler/toolscripts/rhel8/install-ghdl.sh,sha256=xCLeEUuJVI_6PVEvnTwBsTWoEHiQg0TY3x-tJXfg6Zk,459
|
|
@@ -412,9 +412,9 @@ siliconcompiler/toolscripts/ubuntu24/install-yosys.sh,sha256=zpyt0MVI7tY8kGY2GII
|
|
|
412
412
|
siliconcompiler/utils/__init__.py,sha256=6u8A5atgPW7cbC1xrerU67rlOM0FitCgxFIu5F_n5zo,14126
|
|
413
413
|
siliconcompiler/utils/asic.py,sha256=cMLs7dneSmh5BlHS0-bZ1tLUpvghTw__gNaUCMpyBds,4986
|
|
414
414
|
siliconcompiler/utils/showtools.py,sha256=qc5HLqCQxUITdhp9rESf0w_blAkKVYL6JpkXQdrew00,1406
|
|
415
|
-
siliconcompiler-0.28.
|
|
416
|
-
siliconcompiler-0.28.
|
|
417
|
-
siliconcompiler-0.28.
|
|
418
|
-
siliconcompiler-0.28.
|
|
419
|
-
siliconcompiler-0.28.
|
|
420
|
-
siliconcompiler-0.28.
|
|
415
|
+
siliconcompiler-0.28.9.dist-info/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
|
|
416
|
+
siliconcompiler-0.28.9.dist-info/METADATA,sha256=cIK1Z_MCUEI3Zz4VBwApsmfv94-s7Y23x6jvoZ-zKUY,10831
|
|
417
|
+
siliconcompiler-0.28.9.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
418
|
+
siliconcompiler-0.28.9.dist-info/entry_points.txt,sha256=TZVS-8akO-8Z1Z1oMjgWryzk_F9dAW74d2ArJV843pg,501
|
|
419
|
+
siliconcompiler-0.28.9.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
|
|
420
|
+
siliconcompiler-0.28.9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|