Skip to content

Commit db0867b

Browse files
authored
Merge pull request #3307 from siliconcompiler/hist-reports
histogram report in metrics
2 parents 93e03c6 + 3f218bf commit db0867b

File tree

4 files changed

+37
-20
lines changed

4 files changed

+37
-20
lines changed

siliconcompiler/report/dashboard/components/__init__.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ def node_file_tree_viewer(chip, step, index):
433433
lookup = {}
434434
tree_items = []
435435

436-
file_metrics = report.get_metrics_source(chip, step, index)
436+
metrics_source, file_metrics = report.get_metrics_source(chip, step, index)
437437
work_dir = chip.getworkdir(step=step, index=index)
438438

439439
def make_item(file):
@@ -446,12 +446,22 @@ def make_item(file):
446446

447447
check_file = os.path.relpath(file['value'], work_dir)
448448
if check_file in file_metrics:
449-
for metric in file_metrics[check_file]:
450-
if len(item.tag) < 5:
451-
item.tag.append(sac.Tag(metric, color='green'))
452-
else:
453-
item.tag.append(sac.Tag('metrics...', color='geekblue'))
449+
metrics = set(file_metrics[check_file])
450+
primary_source = set()
451+
if check_file in metrics_source:
452+
primary_source = set(metrics_source[check_file])
453+
metrics = metrics - primary_source
454+
455+
for color, metric_set in (('blue', primary_source), ('green', metrics)):
456+
if len(item.tag) >= 5:
454457
break
458+
459+
for metric in metric_set:
460+
if len(item.tag) < 5:
461+
item.tag.append(sac.Tag(metric, color=color))
462+
else:
463+
item.tag.append(sac.Tag('metrics...', color='geekblue'))
464+
break
455465
item.tooltip = "metrics: " + ", ".join(file_metrics[check_file])
456466

457467
if 'children' in file:

siliconcompiler/report/report.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -302,20 +302,20 @@ def get_metrics_source(chip, step, index):
302302
index (string) : Index of node.
303303
'''
304304
file_to_metric = {}
305+
metric_primary_source = {}
305306
tool, task = get_tool_task(chip, step, index)
306307
if not chip.valid('tool', tool, 'task', task, 'report'):
307-
return file_to_metric
308+
return metric_primary_source, file_to_metric
308309

309310
metrics = chip.getkeys('tool', tool, 'task', task, 'report')
310311

311312
for metric in metrics:
312313
sources = chip.get('tool', tool, 'task', task, 'report', metric, step=step, index=index)
314+
if sources:
315+
metric_primary_source.setdefault(sources[0], []).append(metric)
313316
for source in sources:
314-
if source in file_to_metric:
315-
file_to_metric[source].append(metric)
316-
else:
317-
file_to_metric[source] = [metric]
318-
return file_to_metric
317+
file_to_metric.setdefault(source, []).append(metric)
318+
return metric_primary_source, file_to_metric
319319

320320

321321
def get_files(chip, step, index):

siliconcompiler/tools/openroad/_apr.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,14 @@ def extract_metrics(chip):
8484
metric_reports = {
8585
"setuptns": [
8686
"timing/total_negative_slack.rpt",
87-
"timing/setup.rpt"
87+
"timing/setup.rpt",
88+
"timing/setup.histogram.rpt"
8889
],
8990
"setupslack": [
9091
"timing/worst_slack.setup.rpt",
9192
"timing/setup.rpt",
92-
"timing/setup.topN.rpt"
93+
"timing/setup.topN.rpt",
94+
"timing/setup.histogram.rpt"
9395
],
9496
"setupskew": [
9597
"timing/skew.setup.rpt",
@@ -99,12 +101,14 @@ def extract_metrics(chip):
99101
],
100102
"setuppaths": [
101103
"timing/setup.rpt",
102-
"timing/setup.topN.rpt"
104+
"timing/setup.topN.rpt",
105+
"timing/setup.histogram.rpt"
103106
],
104107
"holdslack": [
105108
"timing/worst_slack.hold.rpt",
106109
"timing/hold.rpt",
107-
"timing/hold.topN.rpt"
110+
"timing/hold.topN.rpt",
111+
"timing/hold.histogram.rpt"
108112
],
109113
"holdskew": [
110114
"timing/skew.hold.rpt",
@@ -114,7 +118,8 @@ def extract_metrics(chip):
114118
],
115119
"holdpaths": [
116120
"timing/hold.rpt",
117-
"timing/hold.topN.rpt"
121+
"timing/hold.topN.rpt",
122+
"timing/hold.histogram.rpt"
118123
],
119124
"unconstrained": [
120125
"timing/unconstrained.rpt",

tests/core/test_reports.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,11 +312,13 @@ def test_get_metrics_source():
312312
chip = Chip(design='')
313313
chip.use(freepdk45_demo)
314314
chip.set('tool', 'openroad', 'task', 'pin_placement', 'report',
315-
'metric', 'this file', step='floorplan.pin_placement', index='0')
315+
'metric', ['this file', 'that file'],
316+
step='floorplan.pin_placement', index='0')
316317

317-
test = report.get_metrics_source(chip, 'floorplan.pin_placement', '0')
318+
primary, sources = report.get_metrics_source(chip, 'floorplan.pin_placement', '0')
318319

319-
assert test == {'this file': ['metric']}
320+
assert primary == {'this file': ['metric']}
321+
assert sources == {'this file': ['metric'], 'that file': ['metric']}
320322

321323

322324
def add_file_to_reports(filepath, chip):

0 commit comments

Comments
 (0)