siliconcompiler 0.28.7__py3-none-any.whl → 0.28.8__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/report/dashboard/components/graph.py +11 -6
- siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py +1 -1
- siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py +1 -1
- siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py +1 -1
- siliconcompiler/report/report.py +20 -1
- siliconcompiler/tools/_common/asic.py +47 -0
- siliconcompiler/tools/klayout/klayout_show.py +53 -13
- siliconcompiler/tools/openroad/openroad.py +121 -4
- siliconcompiler/tools/openroad/scripts/sc_procs.tcl +9 -0
- siliconcompiler/tools/openroad/scripts/sc_report.tcl +19 -0
- siliconcompiler/tools/vpr/vpr.py +6 -0
- siliconcompiler/tools/yosys/syn_asic.tcl +3 -0
- siliconcompiler/toolscripts/_tools.json +1 -1
- siliconcompiler/utils/__init__.py +12 -5
- siliconcompiler/utils/showtools.py +2 -0
- {siliconcompiler-0.28.7.dist-info → siliconcompiler-0.28.8.dist-info}/METADATA +4 -3
- {siliconcompiler-0.28.7.dist-info → siliconcompiler-0.28.8.dist-info}/RECORD +22 -23
- {siliconcompiler-0.28.7.dist-info → siliconcompiler-0.28.8.dist-info}/WHEEL +1 -1
- siliconcompiler/toolscripts/rhel8/install-openroad.sh +0 -31
- {siliconcompiler-0.28.7.dist-info → siliconcompiler-0.28.8.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.28.7.dist-info → siliconcompiler-0.28.8.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.28.7.dist-info → siliconcompiler-0.28.8.dist-info}/top_level.txt +0 -0
siliconcompiler/_metadata.py
CHANGED
|
@@ -133,7 +133,7 @@ def graph(metrics, nodes, node_to_step_index_map, graph_number):
|
|
|
133
133
|
|
|
134
134
|
data, metric_unit = report.get_chart_data(_get_report_chips(), metric, nodes_as_step_and_index)
|
|
135
135
|
if metric_unit:
|
|
136
|
-
y_axis_label = f'{metric}({metric_unit})'
|
|
136
|
+
y_axis_label = f'{metric} ({metric_unit})'
|
|
137
137
|
|
|
138
138
|
# Prepare plot data
|
|
139
139
|
filtered_data = {
|
|
@@ -142,7 +142,12 @@ def graph(metrics, nodes, node_to_step_index_map, graph_number):
|
|
|
142
142
|
color_label: []
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
labels = {
|
|
146
|
+
"runs": state.get_key(state.GRAPH_JOBS),
|
|
147
|
+
"nodes": [f'{step}{index}' for step, index in data]
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if nodes:
|
|
146
151
|
# filtering through data
|
|
147
152
|
for job_name in state.get_key(state.GRAPH_JOBS):
|
|
148
153
|
for step, index in data:
|
|
@@ -154,7 +159,7 @@ def graph(metrics, nodes, node_to_step_index_map, graph_number):
|
|
|
154
159
|
filtered_data[y_axis_label].append(data[(step, index)][job_name])
|
|
155
160
|
|
|
156
161
|
# Setup chart
|
|
157
|
-
x_axis = altair.X(x_axis_label, axis=altair.Axis(labelAngle=-75))
|
|
162
|
+
x_axis = altair.X(x_axis_label, axis=altair.Axis(labelAngle=-75), sort=labels[x_axis_label])
|
|
158
163
|
|
|
159
164
|
y_axis = y_axis_label
|
|
160
165
|
if log_scale and chart_type != 'bar':
|
|
@@ -183,9 +188,9 @@ def graph(metrics, nodes, node_to_step_index_map, graph_number):
|
|
|
183
188
|
streamlit.altair_chart(chart, use_container_width=True, theme='streamlit')
|
|
184
189
|
|
|
185
190
|
|
|
186
|
-
def viewer(
|
|
187
|
-
metrics =
|
|
188
|
-
|
|
191
|
+
def viewer(node_to_step_index_map):
|
|
192
|
+
nodes, metrics = report.get_chart_selection_options(_get_report_chips())
|
|
193
|
+
metrics = sorted(metrics)
|
|
189
194
|
|
|
190
195
|
job_selector_col, graph_adder_col = streamlit.columns(2, gap='large')
|
|
191
196
|
with job_selector_col:
|
|
@@ -112,6 +112,6 @@ def layout():
|
|
|
112
112
|
components.file_viewer(chip, f'{chip.getworkdir()}/{chip.design}.png')
|
|
113
113
|
|
|
114
114
|
if tab_selected == "Graphs":
|
|
115
|
-
graph.viewer(
|
|
115
|
+
graph.viewer(node_to_step_index_map)
|
|
116
116
|
|
|
117
117
|
_common.check_rerun()
|
|
@@ -105,6 +105,6 @@ def layout():
|
|
|
105
105
|
components.file_viewer(chip, f'{chip.getworkdir()}/{chip.design}.png')
|
|
106
106
|
|
|
107
107
|
if tab_selected == "Graphs":
|
|
108
|
-
graph.viewer(
|
|
108
|
+
graph.viewer(node_to_step_index_map)
|
|
109
109
|
|
|
110
110
|
_common.check_rerun()
|
siliconcompiler/report/report.py
CHANGED
|
@@ -335,9 +335,28 @@ def get_files(chip, step, index):
|
|
|
335
335
|
return logs_and_reports
|
|
336
336
|
|
|
337
337
|
|
|
338
|
+
def get_chart_selection_options(chips):
|
|
339
|
+
'''
|
|
340
|
+
Returns all the nodes and metrics available in the provided chips
|
|
341
|
+
|
|
342
|
+
Args:
|
|
343
|
+
chips (list) : A list of dictionaries with the form
|
|
344
|
+
{'chip_object': chip, 'chip_name': name}.
|
|
345
|
+
'''
|
|
346
|
+
nodes = set()
|
|
347
|
+
metrics = set()
|
|
348
|
+
for chip_and_chip_name in chips:
|
|
349
|
+
chip = chip_and_chip_name['chip_object']
|
|
350
|
+
nodes_list, _, _, _, chip_metrics, _ = \
|
|
351
|
+
utils._collect_data(chip, format_as_string=False)
|
|
352
|
+
nodes.update(set([f'{step}{index}' for step, index in nodes_list]))
|
|
353
|
+
metrics.update(set(chip_metrics))
|
|
354
|
+
return nodes, metrics
|
|
355
|
+
|
|
356
|
+
|
|
338
357
|
def get_chart_data(chips, metric, nodes):
|
|
339
358
|
'''
|
|
340
|
-
Returns returns a
|
|
359
|
+
Returns returns a tuple where the first element is a 2d dictionary of
|
|
341
360
|
data points, following the forms {step+index: {chip_name: value}} where
|
|
342
361
|
each dictionary can have many keys. The second element is a string that represents the unit.
|
|
343
362
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from .. import _common
|
|
2
|
+
import json
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
def get_mainlib(chip):
|
|
@@ -169,3 +170,49 @@ def get_tool_task_var(chip,
|
|
|
169
170
|
_, value = _common.pick_key(chip, reversed(check_keys), step=step, index=index)
|
|
170
171
|
|
|
171
172
|
return value
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
class CellArea:
|
|
176
|
+
def __init__(self):
|
|
177
|
+
self.__areas = {}
|
|
178
|
+
|
|
179
|
+
def addCell(self, name=None, module=None,
|
|
180
|
+
cellarea=None, cellcount=None,
|
|
181
|
+
macroarea=None, macrocount=None,
|
|
182
|
+
stdcellarea=None, stdcellcount=None):
|
|
183
|
+
if not name and not module:
|
|
184
|
+
return
|
|
185
|
+
|
|
186
|
+
if all([metric is None for metric in (
|
|
187
|
+
cellarea, cellcount,
|
|
188
|
+
macroarea, macrocount,
|
|
189
|
+
stdcellarea, stdcellcount)]):
|
|
190
|
+
return
|
|
191
|
+
|
|
192
|
+
if not name:
|
|
193
|
+
name = module
|
|
194
|
+
|
|
195
|
+
# ensure name is unique
|
|
196
|
+
check_name = name
|
|
197
|
+
idx = 0
|
|
198
|
+
while check_name in self.__areas:
|
|
199
|
+
check_name = f'{name}{idx}'
|
|
200
|
+
idx += 1
|
|
201
|
+
name = check_name
|
|
202
|
+
|
|
203
|
+
self.__areas[name] = {
|
|
204
|
+
"module": module,
|
|
205
|
+
"cellarea": cellarea,
|
|
206
|
+
"cellcount": cellcount,
|
|
207
|
+
"macroarea": macroarea,
|
|
208
|
+
"macrocount": macrocount,
|
|
209
|
+
"stdcellarea": stdcellarea,
|
|
210
|
+
"stdcellcount": stdcellcount
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
def size(self):
|
|
214
|
+
return len(self.__areas)
|
|
215
|
+
|
|
216
|
+
def writeReport(self, path):
|
|
217
|
+
with open(path, 'w') as f:
|
|
218
|
+
json.dump(self.__areas, f, indent=4)
|
|
@@ -3,7 +3,7 @@ import os
|
|
|
3
3
|
import sys
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def show(schema, tech, input_path, output_path, screenshot=False):
|
|
6
|
+
def show(schema, tech, input_path, output_path, screenshot=False, report=None):
|
|
7
7
|
# Extract info from manifest
|
|
8
8
|
flow = schema.get('option', 'flow')
|
|
9
9
|
step = schema.get('arg', 'step')
|
|
@@ -80,6 +80,14 @@ def show(schema, tech, input_path, output_path, screenshot=False):
|
|
|
80
80
|
__screenshot(schema, layout_view, output_path)
|
|
81
81
|
else:
|
|
82
82
|
__screenshot_montage(schema, layout_view, xbins, ybins)
|
|
83
|
+
else:
|
|
84
|
+
if report:
|
|
85
|
+
rdb_id = layout_view.create_rdb(os.path.basename(report))
|
|
86
|
+
rdb = layout_view.rdb(rdb_id)
|
|
87
|
+
print(f"[INFO] reading DRC report: {report}")
|
|
88
|
+
rdb.load(report)
|
|
89
|
+
|
|
90
|
+
layout_view.show_rdb(rdb_id, cell_view.index())
|
|
83
91
|
|
|
84
92
|
|
|
85
93
|
def __screenshot(schema, layout_view, output_path):
|
|
@@ -215,24 +223,56 @@ def main():
|
|
|
215
223
|
if not design:
|
|
216
224
|
design = schema.get('design')
|
|
217
225
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
for
|
|
227
|
-
|
|
228
|
-
|
|
226
|
+
sc_fileext = schema.get('tool', 'klayout', 'task', task, 'var', 'show_filetype',
|
|
227
|
+
step=step, index=index)[0]
|
|
228
|
+
sc_report = None
|
|
229
|
+
if sc_fileext in ('lyrdb', 'ascii'):
|
|
230
|
+
sc_report = schema.get('tool', 'klayout', 'task', task, 'var', 'show_filepath',
|
|
231
|
+
step=step, index=index)[0]
|
|
232
|
+
|
|
233
|
+
sc_filename = None
|
|
234
|
+
for fileext in ('gds', 'oas'):
|
|
235
|
+
for ext in (f'{fileext}.gz', fileext):
|
|
236
|
+
sc_filename = f"inputs/{design}.{ext}"
|
|
237
|
+
if os.path.exists(sc_filename):
|
|
238
|
+
break
|
|
239
|
+
sc_filename = None
|
|
240
|
+
if sc_filename:
|
|
229
241
|
break
|
|
230
242
|
|
|
243
|
+
if not sc_filename:
|
|
244
|
+
show_step = schema.get('arg', 'step')
|
|
245
|
+
if schema.valid('tool', 'klayout', 'task', task, 'var', 'show_step'):
|
|
246
|
+
show_index = schema.get('tool', 'klayout', 'task', task, 'var', 'show_step',
|
|
247
|
+
step=step, index=index)[0]
|
|
248
|
+
show_index = schema.get('arg', 'index')
|
|
249
|
+
if schema.valid('tool', 'klayout', 'task', task, 'var', 'show_index'):
|
|
250
|
+
show_index = schema.get('tool', 'klayout', 'task', task, 'var', 'show_index',
|
|
251
|
+
step=step, index=index)[0]
|
|
252
|
+
for fileext in ('gds', 'oas'):
|
|
253
|
+
if schema.valid('input', 'layout', fileext) and \
|
|
254
|
+
schema.get('input', 'layout', fileext, step=show_step, index=show_index):
|
|
255
|
+
sc_filename = schema.get('input', 'layout', fileext,
|
|
256
|
+
step=show_step, index=show_index)[0]
|
|
257
|
+
if sc_filename:
|
|
258
|
+
break
|
|
259
|
+
else:
|
|
260
|
+
if 'show_filepath' in schema.getkeys('tool', 'klayout', 'task', task, 'var') and \
|
|
261
|
+
schema.get('tool', 'klayout', 'task', task, 'var', 'show_filepath',
|
|
262
|
+
step=step, index=index):
|
|
263
|
+
sc_filename = schema.get('tool', 'klayout', 'task', task, 'var', 'show_filepath',
|
|
264
|
+
step=step, index=index)[0]
|
|
265
|
+
else:
|
|
266
|
+
for ext in (f'{sc_fileext}.gz', sc_fileext):
|
|
267
|
+
sc_filename = f"inputs/{design}.{ext}"
|
|
268
|
+
if os.path.exists(sc_filename):
|
|
269
|
+
break
|
|
270
|
+
|
|
231
271
|
sc_exit = schema.get('tool', 'klayout', 'task', task, 'var', 'show_exit',
|
|
232
272
|
step=step, index=index) == ["true"]
|
|
233
273
|
|
|
234
274
|
show(schema, technology(design, schema), sc_filename, f'outputs/{design}.png',
|
|
235
|
-
screenshot=(task == 'screenshot'))
|
|
275
|
+
screenshot=(task == 'screenshot'), report=sc_report)
|
|
236
276
|
|
|
237
277
|
if sc_exit:
|
|
238
278
|
pya.Application.instance().exit(0)
|
|
@@ -17,7 +17,8 @@ from siliconcompiler import sc_open
|
|
|
17
17
|
from siliconcompiler import utils
|
|
18
18
|
from siliconcompiler.tools._common import input_provides, add_common_file, \
|
|
19
19
|
get_tool_task, record_metric
|
|
20
|
-
from siliconcompiler.tools._common.asic import get_mainlib, set_tool_task_var, get_libraries
|
|
20
|
+
from siliconcompiler.tools._common.asic import get_mainlib, set_tool_task_var, get_libraries, \
|
|
21
|
+
CellArea
|
|
21
22
|
from siliconcompiler.targets import asap7_demo
|
|
22
23
|
|
|
23
24
|
|
|
@@ -268,8 +269,12 @@ def post_process(chip):
|
|
|
268
269
|
"timing/hold.rpt",
|
|
269
270
|
"timing/hold.topN.rpt"],
|
|
270
271
|
"holdpaths": ["timing/hold.topN.rpt"],
|
|
271
|
-
"unconstrained": ["timing/unconstrained.topN.rpt"],
|
|
272
|
-
"peakpower": [
|
|
272
|
+
"unconstrained": ["timing/unconstrained.rpt", "timing/unconstrained.topN.rpt"],
|
|
273
|
+
"peakpower": [
|
|
274
|
+
*[f"power/{corner}.rpt" for corner in chip.getkeys('constraint', 'timing')],
|
|
275
|
+
*[f"images/heatmap/power_density/{corner}.png"
|
|
276
|
+
for corner in chip.getkeys('constraint', 'timing')]
|
|
277
|
+
],
|
|
273
278
|
"drvs": ["timing/drv_violators.rpt",
|
|
274
279
|
"floating_nets.rpt",
|
|
275
280
|
f"{chip.design}_antenna.rpt",
|
|
@@ -277,7 +282,9 @@ def post_process(chip):
|
|
|
277
282
|
"drcs": [f"{chip.design}_drc.rpt",
|
|
278
283
|
f"markers/{chip.design}.drc.rpt",
|
|
279
284
|
f"markers/{chip.design}.drc.json",
|
|
280
|
-
f"images/markers/{chip.design}.drc.png"]
|
|
285
|
+
f"images/markers/{chip.design}.drc.png"],
|
|
286
|
+
"utilization": ["images/heatmap/placement_density.png"],
|
|
287
|
+
"wirelength": [f"images/{chip.design}.routing.png"]
|
|
281
288
|
}
|
|
282
289
|
metric_reports["leakagepower"] = metric_reports["peakpower"]
|
|
283
290
|
|
|
@@ -300,6 +307,8 @@ def post_process(chip):
|
|
|
300
307
|
chip.logger.error(f'Unable to parse metrics from OpenROAD: {e}')
|
|
301
308
|
metrics = {}
|
|
302
309
|
|
|
310
|
+
_generate_cell_area_report(chip.top(), metrics)
|
|
311
|
+
|
|
303
312
|
or_units = {}
|
|
304
313
|
for unit, or_unit in [('time', 'run__flow__platform__time_units'),
|
|
305
314
|
('capacitance', 'run__flow__platform__capacitance_units'),
|
|
@@ -424,6 +433,114 @@ def post_process(chip):
|
|
|
424
433
|
record_metric(chip, step, index, 'drcs', drcs, get_metric_sources('drcs'))
|
|
425
434
|
|
|
426
435
|
|
|
436
|
+
def _generate_cell_area_report(design, ord_metrics):
|
|
437
|
+
cellarea_report = CellArea()
|
|
438
|
+
|
|
439
|
+
prefix = "sc__cellarea__design__instance"
|
|
440
|
+
|
|
441
|
+
filtered_data = {}
|
|
442
|
+
for key, value in ord_metrics.items():
|
|
443
|
+
if key.startswith(prefix):
|
|
444
|
+
filtered_data[key[len(prefix)+2:]] = value
|
|
445
|
+
|
|
446
|
+
modules = set()
|
|
447
|
+
modules.add("")
|
|
448
|
+
for key in filtered_data.keys():
|
|
449
|
+
if "__in_module:" in key:
|
|
450
|
+
module = key[key.find("__in_module:"):]
|
|
451
|
+
modules.add(module)
|
|
452
|
+
|
|
453
|
+
def process_cell(group):
|
|
454
|
+
data = {}
|
|
455
|
+
for key, value in filtered_data.items():
|
|
456
|
+
if (group != "" and key.endswith(group)):
|
|
457
|
+
key = key[:key.find("__in_module:")]
|
|
458
|
+
data[key] = value
|
|
459
|
+
elif (group == "" and "__in_module" not in key):
|
|
460
|
+
data[key] = value
|
|
461
|
+
|
|
462
|
+
cell_type = None
|
|
463
|
+
cell_name = None
|
|
464
|
+
|
|
465
|
+
if not group:
|
|
466
|
+
cell_type = design
|
|
467
|
+
cell_name = design
|
|
468
|
+
else:
|
|
469
|
+
cell_type = group[len("__in_module:"):]
|
|
470
|
+
|
|
471
|
+
cellarea = None
|
|
472
|
+
cellcount = None
|
|
473
|
+
|
|
474
|
+
macroarea = None
|
|
475
|
+
macrocount = None
|
|
476
|
+
|
|
477
|
+
stdcell_types = (
|
|
478
|
+
'tie_cell',
|
|
479
|
+
'standard_cell',
|
|
480
|
+
'buffer',
|
|
481
|
+
'clock_buffer',
|
|
482
|
+
'timing_repair_buffer',
|
|
483
|
+
'inverter',
|
|
484
|
+
'clock_inverter',
|
|
485
|
+
'timing_Repair_inverter',
|
|
486
|
+
'clock_gate_cell',
|
|
487
|
+
'level_shifter_cell',
|
|
488
|
+
'sequential_cell',
|
|
489
|
+
'multi_input_combinational_cell',
|
|
490
|
+
'other'
|
|
491
|
+
)
|
|
492
|
+
|
|
493
|
+
stdcell_info_area = []
|
|
494
|
+
stdcell_info_count = []
|
|
495
|
+
stdcellarea = None
|
|
496
|
+
stdcellcount = None
|
|
497
|
+
|
|
498
|
+
for key, value in data.items():
|
|
499
|
+
if key == 'name':
|
|
500
|
+
cell_name = value
|
|
501
|
+
elif key == 'count':
|
|
502
|
+
cellcount = value
|
|
503
|
+
elif key == 'area':
|
|
504
|
+
cellarea = value
|
|
505
|
+
elif key.startswith('count__class'):
|
|
506
|
+
_, cell_class = key.split(':')
|
|
507
|
+
if cell_class == 'macro':
|
|
508
|
+
macrocount = value
|
|
509
|
+
elif cell_class in stdcell_types:
|
|
510
|
+
stdcell_info_count.append(value)
|
|
511
|
+
elif key.startswith('area__class'):
|
|
512
|
+
_, cell_class = key.split(':')
|
|
513
|
+
if cell_class == 'macro':
|
|
514
|
+
macroarea = value
|
|
515
|
+
elif cell_class in stdcell_types:
|
|
516
|
+
stdcell_info_area.append(value)
|
|
517
|
+
|
|
518
|
+
if stdcell_info_count:
|
|
519
|
+
stdcellcount = sum(stdcell_info_count)
|
|
520
|
+
if stdcell_info_area:
|
|
521
|
+
stdcellarea = sum(stdcell_info_area)
|
|
522
|
+
|
|
523
|
+
cellarea_report.addCell(
|
|
524
|
+
name=cell_name,
|
|
525
|
+
module=cell_type,
|
|
526
|
+
cellarea=cellarea,
|
|
527
|
+
cellcount=cellcount,
|
|
528
|
+
macroarea=macroarea,
|
|
529
|
+
macrocount=macrocount,
|
|
530
|
+
stdcellarea=stdcellarea,
|
|
531
|
+
stdcellcount=stdcellcount)
|
|
532
|
+
|
|
533
|
+
if filtered_data:
|
|
534
|
+
return True
|
|
535
|
+
return False
|
|
536
|
+
|
|
537
|
+
for module in modules:
|
|
538
|
+
process_cell(module)
|
|
539
|
+
|
|
540
|
+
if cellarea_report.size() > 0:
|
|
541
|
+
cellarea_report.writeReport("reports/hierarchical_cell_area.json")
|
|
542
|
+
|
|
543
|
+
|
|
427
544
|
######
|
|
428
545
|
def get_library_timing_keypaths(chip, lib):
|
|
429
546
|
step = chip.get('arg', 'step')
|
|
@@ -483,3 +483,12 @@ proc sc_convert_rotation { rot } {
|
|
|
483
483
|
default { utl::error FLW 1 "$rot not recognized" }
|
|
484
484
|
}
|
|
485
485
|
}
|
|
486
|
+
|
|
487
|
+
proc sc_check_version { min_required } {
|
|
488
|
+
set version [split [ord::openroad_version] "-"]
|
|
489
|
+
if { [lindex $version 0] != "v2.0" } {
|
|
490
|
+
return false
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
return [expr { [lindex $version 1] >= $min_required }]
|
|
494
|
+
}
|
|
@@ -168,3 +168,22 @@ foreach markerdb [[ord::get_db_block] getMarkerCategories] {
|
|
|
168
168
|
$markerdb writeTR "reports/markers/${sc_design}.[$markerdb getName].rpt"
|
|
169
169
|
$markerdb writeJSON "reports/markers/${sc_design}.[$markerdb getName].json"
|
|
170
170
|
}
|
|
171
|
+
|
|
172
|
+
if { [sc_check_version 17038] } {
|
|
173
|
+
utl::push_metrics_stage "sc__cellarea__{}"
|
|
174
|
+
tee -file reports/cell_usage.rpt {report_cell_usage -verbose}
|
|
175
|
+
|
|
176
|
+
foreach modinst [[ord::get_db_block] getModInsts] {
|
|
177
|
+
tee -quiet -append -file reports/cell_usage.rpt { puts "" }
|
|
178
|
+
tee -quiet -append -file reports/cell_usage.rpt {
|
|
179
|
+
puts "########################################################"
|
|
180
|
+
}
|
|
181
|
+
tee -quiet -append -file reports/cell_usage.rpt { puts "" }
|
|
182
|
+
|
|
183
|
+
utl::metric "design__instance__name__in_module:[[$modinst getMaster] getName]" \
|
|
184
|
+
[$modinst getHierarchicalName]
|
|
185
|
+
tee -quiet -append -file reports/cell_usage.rpt \
|
|
186
|
+
"report_cell_usage -verbose [$modinst getHierarchicalName]"
|
|
187
|
+
}
|
|
188
|
+
utl::pop_metrics_stage
|
|
189
|
+
}
|
siliconcompiler/tools/vpr/vpr.py
CHANGED
|
@@ -128,6 +128,12 @@ def runtime_options(chip):
|
|
|
128
128
|
# If we allow VPR to sweep dangling primary I/Os and logic blocks
|
|
129
129
|
# it can interfere with circuit debugging; so disable that
|
|
130
130
|
options.append('--sweep_dangling_primary_ios off')
|
|
131
|
+
# If you don't sweep dangling primary I/Os, but sweeping nets
|
|
132
|
+
# VPR can crash:
|
|
133
|
+
options.append('--sweep_dangling_nets off')
|
|
134
|
+
# If you don't sweep dangling nets then the timing engine requires
|
|
135
|
+
# you to set an option allowing dangling nodes
|
|
136
|
+
options.append('--allow_dangling_combinational_nodes on')
|
|
131
137
|
options.append('--sweep_constant_primary_outputs off')
|
|
132
138
|
options.append('--sweep_dangling_blocks off')
|
|
133
139
|
|
|
@@ -231,6 +231,8 @@ sc_map_memory $sc_memory_libmap_files $sc_memory_techmap_files 0
|
|
|
231
231
|
|
|
232
232
|
# Perform hierarchy flattening
|
|
233
233
|
if { !$flatten_design && [lindex [sc_cfg_tool_task_get var auto_flatten] 0] == "true" } {
|
|
234
|
+
yosys log -push
|
|
235
|
+
yosys log -header "SC Auto flattening"
|
|
234
236
|
set sc_hier_iterations \
|
|
235
237
|
[lindex [sc_cfg_tool_task_get var hier_iterations] 0]
|
|
236
238
|
set sc_hier_threshold \
|
|
@@ -240,6 +242,7 @@ if { !$flatten_design && [lindex [sc_cfg_tool_task_get var auto_flatten] 0] == "
|
|
|
240
242
|
break
|
|
241
243
|
}
|
|
242
244
|
}
|
|
245
|
+
yosys log -pop
|
|
243
246
|
}
|
|
244
247
|
|
|
245
248
|
# Finish synthesis
|
|
@@ -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": "c3e802e73aa2ca2974874e487ae481fc4f2cb8c3",
|
|
5
5
|
"docker-cmds": [
|
|
6
6
|
"# Remove OR-Tools files",
|
|
7
7
|
"RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
|
|
@@ -84,7 +84,7 @@ def get_default_iomap():
|
|
|
84
84
|
# Record extensions:
|
|
85
85
|
|
|
86
86
|
# High level languages
|
|
87
|
-
hll_c = ('c', 'cc', 'cpp', 'c++', 'cp', 'cxx', 'hpp')
|
|
87
|
+
hll_c = ('c', 'cc', 'cpp', 'c++', 'cp', 'cxx', 'hpp', 'h')
|
|
88
88
|
hll_bsv = ('bsv',)
|
|
89
89
|
hll_scala = ('scala',)
|
|
90
90
|
hll_python = ('py',)
|
|
@@ -92,8 +92,8 @@ def get_default_iomap():
|
|
|
92
92
|
config_chisel = ('sbt',)
|
|
93
93
|
|
|
94
94
|
# Register transfer languages
|
|
95
|
-
rtl_verilog = ('v', 'verilog')
|
|
96
|
-
rtl_systemverilog = ('sv',)
|
|
95
|
+
rtl_verilog = ('v', 'verilog', 'vh')
|
|
96
|
+
rtl_systemverilog = ('sv', 'svh')
|
|
97
97
|
rtl_vhdl = ('vhd', 'vhdl')
|
|
98
98
|
|
|
99
99
|
# Timing libraries
|
|
@@ -116,8 +116,8 @@ def get_default_iomap():
|
|
|
116
116
|
waveform_vcd = ('vcd',)
|
|
117
117
|
|
|
118
118
|
# Constraint
|
|
119
|
-
constraint_sdc = ('sdc',
|
|
120
|
-
constraint_upf = ('upf',
|
|
119
|
+
constraint_sdc = ('sdc',)
|
|
120
|
+
constraint_upf = ('upf',)
|
|
121
121
|
|
|
122
122
|
# FPGA constraints
|
|
123
123
|
fpga_xdc = ('xdc',)
|
|
@@ -125,6 +125,10 @@ def get_default_iomap():
|
|
|
125
125
|
fpga_vpr_place = ('place',)
|
|
126
126
|
fpga_vpr_route = ('route',)
|
|
127
127
|
|
|
128
|
+
# Reports
|
|
129
|
+
report_drc = ('lyrdb', 'ascii')
|
|
130
|
+
report_log = ('log',)
|
|
131
|
+
|
|
128
132
|
# Build default map with fileset and type
|
|
129
133
|
default_iomap = {}
|
|
130
134
|
default_iomap.update({ext: ('hll', 'c') for ext in hll_c})
|
|
@@ -160,6 +164,9 @@ def get_default_iomap():
|
|
|
160
164
|
default_iomap.update({ext: ('fpga', 'vpr_place') for ext in fpga_vpr_place})
|
|
161
165
|
default_iomap.update({ext: ('fpga', 'vpr_route') for ext in fpga_vpr_route})
|
|
162
166
|
|
|
167
|
+
default_iomap.update({ext: ('report', 'drc') for ext in report_drc})
|
|
168
|
+
default_iomap.update({ext: ('report', 'log') for ext in report_log})
|
|
169
|
+
|
|
163
170
|
return default_iomap
|
|
164
171
|
|
|
165
172
|
|
|
@@ -14,6 +14,8 @@ def setup(chip):
|
|
|
14
14
|
chip.register_showtool('oas', klayout_screenshot)
|
|
15
15
|
chip.register_showtool('lef', klayout_show)
|
|
16
16
|
chip.register_showtool('lef', klayout_screenshot)
|
|
17
|
+
chip.register_showtool('lyrdb', klayout_show)
|
|
18
|
+
chip.register_showtool('ascii', klayout_show)
|
|
17
19
|
|
|
18
20
|
chip.register_showtool('odb', openroad_show)
|
|
19
21
|
chip.register_showtool('odb', openroad_screenshot)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: siliconcompiler
|
|
3
|
-
Version: 0.28.
|
|
3
|
+
Version: 0.28.8
|
|
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,7 +25,6 @@ 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: aiohttp ==3.10.10
|
|
29
28
|
Requires-Dist: requests ==2.32.3
|
|
30
29
|
Requires-Dist: PyYAML ==6.0.2
|
|
31
30
|
Requires-Dist: pandas >=1.1.5
|
|
@@ -43,13 +42,15 @@ Requires-Dist: fastjsonschema ==2.20.0
|
|
|
43
42
|
Requires-Dist: docker ==7.1.0
|
|
44
43
|
Requires-Dist: sc-surelog ==1.84.1
|
|
45
44
|
Requires-Dist: orjson ==3.10.11
|
|
46
|
-
Requires-Dist: streamlit ==1.40.
|
|
45
|
+
Requires-Dist: streamlit ==1.40.1 ; python_full_version != "3.9.7"
|
|
47
46
|
Requires-Dist: streamlit-agraph ==0.0.45 ; python_full_version != "3.9.7"
|
|
48
47
|
Requires-Dist: streamlit-antd-components ==0.3.2 ; python_full_version != "3.9.7"
|
|
49
48
|
Requires-Dist: streamlit-javascript ==0.1.5 ; python_full_version != "3.9.7"
|
|
50
49
|
Requires-Dist: streamlit-autorefresh ==1.0.1 ; python_full_version != "3.9.7"
|
|
51
50
|
Requires-Dist: importlib-metadata ; python_version < "3.10"
|
|
51
|
+
Requires-Dist: aiohttp ==3.10.11 ; python_version <= "3.8"
|
|
52
52
|
Requires-Dist: Pillow ==10.4.0 ; python_version <= "3.8"
|
|
53
|
+
Requires-Dist: aiohttp ==3.11.2 ; python_version >= "3.9"
|
|
53
54
|
Requires-Dist: Pillow ==11.0.0 ; python_version >= "3.9"
|
|
54
55
|
Provides-Extra: docs
|
|
55
56
|
Requires-Dist: Sphinx ==8.1.3 ; extra == 'docs'
|
|
@@ -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=CumyMn5odWcWqlPwYTx9IioZ5rx0a68RKL7IvU2SO-A,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
|
|
@@ -80,7 +80,7 @@ siliconcompiler/remote/server_schema/responses/get_results.json,sha256=h4XraLW4h
|
|
|
80
80
|
siliconcompiler/remote/server_schema/responses/remote_run.json,sha256=FWW_0m46qwIJHiTriISzChKHJF6G9RIwP0rmp1OjIuA,475
|
|
81
81
|
siliconcompiler/report/__init__.py,sha256=ADa-8Jwy4fl2Wtg0ejy4Tvil805uwA4WWTdK125JKcs,388
|
|
82
82
|
siliconcompiler/report/html_report.py,sha256=Wh5X7iQpfIEHcs-WrVE9dtDf-gkz3GhT_yf8kVG0O3o,2597
|
|
83
|
-
siliconcompiler/report/report.py,sha256=
|
|
83
|
+
siliconcompiler/report/report.py,sha256=OPJhuKAnUzP-dm-6CG6Fy45Gm_rbMapey2WKuJiouYI,14924
|
|
84
84
|
siliconcompiler/report/summary_image.py,sha256=tKuoLiG6Whvnc8LHeSzU4FookpBkYYCMWUGb-ux2i8k,3570
|
|
85
85
|
siliconcompiler/report/summary_table.py,sha256=Y5ByOCJQtNOXIz5n9VU_CBHOTdSE0g8ClmfflWkQcXU,3386
|
|
86
86
|
siliconcompiler/report/utils.py,sha256=70klZsAKwhW55kOxBBdV9zzOU-NorMk6y6riMyKXo7c,6423
|
|
@@ -89,12 +89,12 @@ siliconcompiler/report/dashboard/state.py,sha256=qBAmLpKb0xXqf2vRbBBgYs8P71v3MGI
|
|
|
89
89
|
siliconcompiler/report/dashboard/viewer.py,sha256=scF4MkbOdqM1pRCzGWnXeMrk4r2M4Y2cDyEIrAWCFiw,1095
|
|
90
90
|
siliconcompiler/report/dashboard/components/__init__.py,sha256=BkVt0JakAj9kC5WlewdvFESwygjDmhyj85xiV8oc00I,18097
|
|
91
91
|
siliconcompiler/report/dashboard/components/flowgraph.py,sha256=bjPuaWlEra4HbIUIbtCkYQMNTYueSGP0WO-r16MrBss,3525
|
|
92
|
-
siliconcompiler/report/dashboard/components/graph.py,sha256=
|
|
92
|
+
siliconcompiler/report/dashboard/components/graph.py,sha256=m9y4lxKDgTJNp_eOdLohN1bn6uE3XEnE387xnb4HnUo,6776
|
|
93
93
|
siliconcompiler/report/dashboard/layouts/__init__.py,sha256=aYhWEoQg4CiwGMCcLH4Yj__d_5tD4vyb164dP2RpURY,638
|
|
94
94
|
siliconcompiler/report/dashboard/layouts/_common.py,sha256=_Iz5IxftnNKYvhQNA-PWpyv8R1uejvrVUMGmUIEvPf0,1276
|
|
95
|
-
siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py,sha256=
|
|
96
|
-
siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py,sha256=
|
|
97
|
-
siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py,sha256=
|
|
95
|
+
siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py,sha256=ml8qPg2-g3n-HW9E4znwkaYBISyloUjD19_Ooy3iCn0,3425
|
|
96
|
+
siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py,sha256=09n3LqXedQOX8UizlTn9BHyepizmbwz9SIN0QB2PNkA,4229
|
|
97
|
+
siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py,sha256=g6lrnXJVEkTh7OQY1xCgl_q0So0XewItuY0sjnjaBCA,4086
|
|
98
98
|
siliconcompiler/report/dashboard/utils/__init__.py,sha256=mkcBAlfPovfgoRv9nPbtgQSeFglwlxlSIXsEQmdsDz8,2540
|
|
99
99
|
siliconcompiler/report/dashboard/utils/file_utils.py,sha256=5MKAyf7TGXQIc3yxwbP1H6xi0NGwUfzu2j3LOv1Yei0,3333
|
|
100
100
|
siliconcompiler/scheduler/__init__.py,sha256=bkJ5S06BNXsdfjx5nPcgak_9FT8XHxgsnLIYvee5uvk,84997
|
|
@@ -139,7 +139,7 @@ siliconcompiler/templates/tcl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
|
|
|
139
139
|
siliconcompiler/templates/tcl/manifest.tcl.j2,sha256=XT2pKuPSaa2GPJj1IpEl3Al5N70yqQS8jZecmpyeV4o,3547
|
|
140
140
|
siliconcompiler/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
141
|
siliconcompiler/tools/_common/__init__.py,sha256=wQ0FQcg6bBRmpiUquHVaBpLabyMjSA0ecmxkohv5LlE,14483
|
|
142
|
-
siliconcompiler/tools/_common/asic.py,sha256=
|
|
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
|
|
145
145
|
siliconcompiler/tools/_common/tcl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -188,7 +188,7 @@ siliconcompiler/tools/klayout/klayout.py,sha256=w0iqtdr_tjwH31hgdpCuCZlRByev3c7r
|
|
|
188
188
|
siliconcompiler/tools/klayout/klayout_convert_drc_db.py,sha256=WVLI_HJ2yY1_OFDzG40n0B4ULZE6bPqB-l9a8nmoO9E,5608
|
|
189
189
|
siliconcompiler/tools/klayout/klayout_export.py,sha256=RHGatKDzeBSY6n9oA7PNaLe4HG75kGV4ztAhjNXio0I,8026
|
|
190
190
|
siliconcompiler/tools/klayout/klayout_operations.py,sha256=okHyVcFVkwHge4hsyOVQBrxILesVtVicT70mGQM51Yk,13054
|
|
191
|
-
siliconcompiler/tools/klayout/klayout_show.py,sha256=
|
|
191
|
+
siliconcompiler/tools/klayout/klayout_show.py,sha256=G0buKR41h41VCxlkhFhWdeHiuMJHmnrVFxT8AaGzuA8,11069
|
|
192
192
|
siliconcompiler/tools/klayout/klayout_utils.py,sha256=62AZwICFrlDzswKbw0H-vcVpoQPaRVjv_wbmclFvlm0,6575
|
|
193
193
|
siliconcompiler/tools/klayout/operations.py,sha256=_dqcizzyo3MvNBqyLYH9zrPN9vzfJaxCGld7VK6anTc,7850
|
|
194
194
|
siliconcompiler/tools/klayout/screenshot.py,sha256=ft6mFUdUtgMpEc3sULrO3LNbjReHBeGyaJdbEdW9j1k,3890
|
|
@@ -217,7 +217,7 @@ siliconcompiler/tools/openroad/dfm.py,sha256=RjdOqq7oPVSx5HzYUTSlBh4ZGnVfJqJHR0c
|
|
|
217
217
|
siliconcompiler/tools/openroad/export.py,sha256=svZZlcUIq9FTDydpoDZdlPyoMVYIkLBUTIBD2dm8TOk,5273
|
|
218
218
|
siliconcompiler/tools/openroad/floorplan.py,sha256=y7V2WOhHW0MhMJkjx4hQuTsiIKCMpcJiQEu4RaMlq_k,2804
|
|
219
219
|
siliconcompiler/tools/openroad/metrics.py,sha256=SyGF-foyfJz2VZRxEdA_HCKI9wW3s8jzdBkph1WMG3E,1048
|
|
220
|
-
siliconcompiler/tools/openroad/openroad.py,sha256=
|
|
220
|
+
siliconcompiler/tools/openroad/openroad.py,sha256=Tcte1Vk5zV2LyhNi1gycj2hW8IQ9C86GBtUG2_vP_J8,50463
|
|
221
221
|
siliconcompiler/tools/openroad/physyn.py,sha256=ZgEPRTGyXe930PsXNHx1p7ITsBa6x7_EyZfW8vM0-O8,682
|
|
222
222
|
siliconcompiler/tools/openroad/place.py,sha256=0eRg3n0x3zawg8jp7akDpc1KbUw4LKqeGJ2MMliXbnU,1018
|
|
223
223
|
siliconcompiler/tools/openroad/rcx_bench.py,sha256=EEOsuQhB2z09dbKqQ8CVgFQyymTceKG1fgFWUbEbcxQ,3658
|
|
@@ -235,12 +235,12 @@ siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl,sha256=XufELL8Ys4kUrSSQw
|
|
|
235
235
|
siliconcompiler/tools/openroad/scripts/sc_metrics.tcl,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
236
236
|
siliconcompiler/tools/openroad/scripts/sc_physyn.tcl,sha256=hLAVeE_a__ZBgVMOSmMwCwtTDfflZptPmphaqibYvEk,115
|
|
237
237
|
siliconcompiler/tools/openroad/scripts/sc_place.tcl,sha256=WMuYB-LXQP8YdcYMHTkqGzOvn1bK6X7mOm12gEK4kKY,1937
|
|
238
|
-
siliconcompiler/tools/openroad/scripts/sc_procs.tcl,sha256=
|
|
238
|
+
siliconcompiler/tools/openroad/scripts/sc_procs.tcl,sha256=ZjLhdb0ddjFMn_ATbVRhGRrgUC1bi4aCfHNjbDosHIQ,12640
|
|
239
239
|
siliconcompiler/tools/openroad/scripts/sc_rcx.tcl,sha256=-70AuNikbsoHd_bW-myc8QMbmJNFSK-DqKIN_HF0luc,1514
|
|
240
240
|
siliconcompiler/tools/openroad/scripts/sc_rcx_bench.tcl,sha256=d_VgTJA4hwRiaJVTTBOl1LxfJ3KB7fHJjmj8eTm1GRs,682
|
|
241
241
|
siliconcompiler/tools/openroad/scripts/sc_rcx_extract.tcl,sha256=Aj9J_8aiOR1WqcQvdx99WyUDcN8RafxXwtrexcS5UcU,489
|
|
242
242
|
siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl,sha256=HFGXVIb8f3FPHl0qR25_I3xhx49jfIMI8WSIw0sYbSw,4844
|
|
243
|
-
siliconcompiler/tools/openroad/scripts/sc_report.tcl,sha256=
|
|
243
|
+
siliconcompiler/tools/openroad/scripts/sc_report.tcl,sha256=lrMQ5j41xIXA5a6Q_6EejAT2P0dj3gMBwwGNjKdSN2I,6208
|
|
244
244
|
siliconcompiler/tools/openroad/scripts/sc_route.tcl,sha256=m1TanwYlYcPbisO92gCih4jnxyaQ5BVDB71PtOCipqI,3919
|
|
245
245
|
siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl,sha256=nMbqIIcnUQ5kmdYXjeu-P2k3SOSWS1ORrUEMyGavGU0,437
|
|
246
246
|
siliconcompiler/tools/openroad/scripts/sc_write.tcl,sha256=5N7ZKWU_8NdEYO-n6tuTXCmWCYtClDjHykOidKyFWdk,168
|
|
@@ -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=Ydzh25XqK70tH-IAdF2ZMBfYsCqpG7I9KSAaJEtuF4s,14410
|
|
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
|
|
@@ -303,7 +303,7 @@ siliconcompiler/tools/yosys/sc_screenshot.tcl,sha256=-7Bb-HhJsZjSdSIlYCTZnZgigwB
|
|
|
303
303
|
siliconcompiler/tools/yosys/sc_syn.tcl,sha256=ZtLbH-x9tPdZgHwcCLWZ4qQ4zqh1imLluj2LyW86P4k,2321
|
|
304
304
|
siliconcompiler/tools/yosys/screenshot.py,sha256=Octzl15bG8LmXdyU-hv9QsP9GTrhoLYzdvi_yTRzXXo,5629
|
|
305
305
|
siliconcompiler/tools/yosys/syn_asic.py,sha256=jEYfQTaTIPj4UHY2AKJocW3wMW2Prtgu6t55esNpZ_E,24106
|
|
306
|
-
siliconcompiler/tools/yosys/syn_asic.tcl,sha256=
|
|
306
|
+
siliconcompiler/tools/yosys/syn_asic.tcl,sha256=MNUmV_qdkHfgDAPDb0urVwRLE65Y5xNodGOW4Zo7nTM,11957
|
|
307
307
|
siliconcompiler/tools/yosys/syn_fpga.py,sha256=rF4TMBUhmtiWwdx1KJeW-cNiAnkTXmo_0htyuUE7plY,5427
|
|
308
308
|
siliconcompiler/tools/yosys/syn_fpga.tcl,sha256=03w87fLgDwD65tDiUbkTBI-rKQUkMDnHI0u42UrA6D8,8030
|
|
309
309
|
siliconcompiler/tools/yosys/syn_strategies.tcl,sha256=YJ5bXCdUNDZZ4EY4wBGS-9m0EeNlANBIO9e5a_6A0KA,5329
|
|
@@ -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=I7xm0H0ev5Xe8_mZG94ABEJ5NO4fnO5DBBmbleFHYIU,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
|
|
@@ -321,7 +321,6 @@ siliconcompiler/toolscripts/rhel8/install-klayout.sh,sha256=lUCSc0Yr0NBUMVragNyJ
|
|
|
321
321
|
siliconcompiler/toolscripts/rhel8/install-magic.sh,sha256=ugiH7ybdxQggs0ucUHiVtCOO142XOh5OhOmmt_aZXRs,609
|
|
322
322
|
siliconcompiler/toolscripts/rhel8/install-montage.sh,sha256=pbN01ZSgiueaTfmzGusGO2-fkkZvZrfkXJ677TRRI0s,51
|
|
323
323
|
siliconcompiler/toolscripts/rhel8/install-netgen.sh,sha256=--stLV3oJXJQhCyhTMZ5xFpXgmUf7lyHyPdvVzfZLWo,507
|
|
324
|
-
siliconcompiler/toolscripts/rhel8/install-openroad.sh,sha256=pbhQLUq29Z-mW6Xht9HqvRk2LNcoEMKH_yrWbJIHMj0,641
|
|
325
324
|
siliconcompiler/toolscripts/rhel8/install-slang.sh,sha256=ACEaxECARXBlLuvflv9DnToi8ShQuycBNwaDyCVB5V8,698
|
|
326
325
|
siliconcompiler/toolscripts/rhel8/install-surelog.sh,sha256=5Z6yEJWnSjj-2hHUJzFyokmIm04UOKKAAND_U6779qA,955
|
|
327
326
|
siliconcompiler/toolscripts/rhel8/install-sv2v.sh,sha256=WtLXu7Z2bMFsmjP_G6Dox4VXXx1u96uTBpnJJMXU8lo,549
|
|
@@ -410,12 +409,12 @@ siliconcompiler/toolscripts/ubuntu24/install-vpr.sh,sha256=W-zXV8t0BoiXWMDOPaUlt
|
|
|
410
409
|
siliconcompiler/toolscripts/ubuntu24/install-xdm.sh,sha256=6xhhCtqqVeFaiSuIzLYMLhPBY685XMejEmcXuU_bXwg,701
|
|
411
410
|
siliconcompiler/toolscripts/ubuntu24/install-xyce.sh,sha256=33Iq99sLdiVWFl4zpD2hxbK1Cq5qYiXYukbr5p9Yw4k,1805
|
|
412
411
|
siliconcompiler/toolscripts/ubuntu24/install-yosys.sh,sha256=zpyt0MVI7tY8kGY2GIIZvWlXOXm0T7N9IMIZ18Oe26E,713
|
|
413
|
-
siliconcompiler/utils/__init__.py,sha256=
|
|
412
|
+
siliconcompiler/utils/__init__.py,sha256=6u8A5atgPW7cbC1xrerU67rlOM0FitCgxFIu5F_n5zo,14126
|
|
414
413
|
siliconcompiler/utils/asic.py,sha256=cMLs7dneSmh5BlHS0-bZ1tLUpvghTw__gNaUCMpyBds,4986
|
|
415
|
-
siliconcompiler/utils/showtools.py,sha256=
|
|
416
|
-
siliconcompiler-0.28.
|
|
417
|
-
siliconcompiler-0.28.
|
|
418
|
-
siliconcompiler-0.28.
|
|
419
|
-
siliconcompiler-0.28.
|
|
420
|
-
siliconcompiler-0.28.
|
|
421
|
-
siliconcompiler-0.28.
|
|
414
|
+
siliconcompiler/utils/showtools.py,sha256=qc5HLqCQxUITdhp9rESf0w_blAkKVYL6JpkXQdrew00,1406
|
|
415
|
+
siliconcompiler-0.28.8.dist-info/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
|
|
416
|
+
siliconcompiler-0.28.8.dist-info/METADATA,sha256=gebkDkb8zph1f-QBL3MlH-uAXGcbz8b5FU6hvNiHRm4,10907
|
|
417
|
+
siliconcompiler-0.28.8.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
|
418
|
+
siliconcompiler-0.28.8.dist-info/entry_points.txt,sha256=TZVS-8akO-8Z1Z1oMjgWryzk_F9dAW74d2ArJV843pg,501
|
|
419
|
+
siliconcompiler-0.28.8.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
|
|
420
|
+
siliconcompiler-0.28.8.dist-info/RECORD,,
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
|
|
3
|
-
set -e
|
|
4
|
-
|
|
5
|
-
src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
|
|
6
|
-
|
|
7
|
-
mkdir -p deps
|
|
8
|
-
cd deps
|
|
9
|
-
|
|
10
|
-
git clone $(python3 ${src_path}/_tools.py --tool openroad --field git-url) openroad
|
|
11
|
-
cd openroad
|
|
12
|
-
git checkout $(python3 ${src_path}/_tools.py --tool openroad --field git-commit)
|
|
13
|
-
git submodule update --init --recursive
|
|
14
|
-
|
|
15
|
-
deps_args=""
|
|
16
|
-
if [ ! -z ${PREFIX} ]; then
|
|
17
|
-
deps_args="-prefix=$PREFIX"
|
|
18
|
-
fi
|
|
19
|
-
sudo ./etc/DependencyInstaller.sh $deps_args
|
|
20
|
-
|
|
21
|
-
cmake_args="-DENABLE_TESTS=OFF"
|
|
22
|
-
if [ ! -z ${PREFIX} ]; then
|
|
23
|
-
cmake_args="$cmake_args -DCMAKE_INSTALL_PREFIX=$PREFIX"
|
|
24
|
-
fi
|
|
25
|
-
|
|
26
|
-
./etc/Build.sh -cmake="$cmake_args"
|
|
27
|
-
|
|
28
|
-
cd build
|
|
29
|
-
sudo make install
|
|
30
|
-
|
|
31
|
-
cd -
|
|
File without changes
|
|
File without changes
|
|
File without changes
|