Skip to content

Commit fa0852a

Browse files
committed
feat: add summary report template
Signed-off-by: James McCorrie <[email protected]>
1 parent efeb68a commit fa0852a

File tree

2 files changed

+147
-0
lines changed

2 files changed

+147
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright lowRISC contributors (OpenTitan project).
2+
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
"""Report templates."""
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
<!--
2+
# Copyright lowRISC contributors (OpenTitan project).
3+
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
-->
7+
8+
{% set top = summary.top %}
9+
{% set timestamp = summary.timestamp %}
10+
11+
<!doctype html>
12+
<html lang="en">
13+
<head>
14+
<meta charset="utf-8">
15+
<meta name="viewport" content="width=device-width, initial-scale=1">
16+
<title>{{ top.name }} Simulation Results</title>
17+
<script src="https://unpkg.com/[email protected]"></script>
18+
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
19+
rel="stylesheet"
20+
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH"
21+
crossorigin="anonymous">
22+
<style>
23+
td.c0 { color: #ffffff; background-color: #EF5757; }
24+
td.c1 { color: #ffffff; background-color: #EF6D57; }
25+
td.c2 { color: #000000; background-color: #EF8357; }
26+
td.c3 { color: #000000; background-color: #EF9957; }
27+
td.c4 { color: #000000; background-color: #EFAF57; }
28+
td.c5 { color: #000000; background-color: #EFC557; }
29+
td.c6 { color: #000000; background-color: #EFDB57; }
30+
td.c7 { color: #000000; background-color: #ECEF57; }
31+
td.c8 { color: #000000; background-color: #D6EF57; }
32+
td.c9 { color: #000000; background-color: #C0EF57; }
33+
td.c10 { color: #000000; background-color: #57EF57; }
34+
</style>
35+
</head>
36+
<body>
37+
38+
<nav class="navbar navbar-expand-lg bg-body-tertiary">
39+
<div class="container-fluid">
40+
<a class="navbar-brand" href="#">Nightly Reports</a>
41+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
42+
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
43+
aria-expanded="false" aria-label="Toggle navigation">
44+
<span class="navbar-toggler-icon"></span>
45+
</button>
46+
</div>
47+
</nav>
48+
49+
<div class="container-md">
50+
<div class="row">
51+
<div class="col">
52+
{% if breadcrumbs %}
53+
<nav aria-label="breadcrumb">
54+
<ol class="breadcrumb">
55+
{% for c in breadcrumbs[:-1] %}
56+
<li class="breadcrumb-item"><a href="{{ c[0] }}">{{ c[1] }}</a></li>
57+
{% endfor %}
58+
<li class="breadcrumb-item active" aria-current="page">
59+
{{ breadcrumbs[-1][1] if breadcrumbs[-1] is iterable and breadcrumbs[-1]|length == 2 else breadcrumbs[-1] }}
60+
</li>
61+
</ol>
62+
</nav>
63+
{% endif %}
64+
</div>
65+
</div>
66+
67+
<div class="row py-3">
68+
<div class="col">
69+
<h2>Simulation Results: {{ top.name }}</h2>
70+
</div>
71+
</div>
72+
73+
<div class="row">
74+
<div class="col-4 col-md-3">
75+
<div class="text-center mb-2">&nbsp;</div>
76+
<span class="badge text-bg-secondary">
77+
{{ timestamp.strftime("%d/%m/%Y %H:%M:%S") }}
78+
</span>
79+
<a class="badge text-bg-secondary link-underline link-underline-opacity-0"
80+
href="{{ top.url }}">
81+
sha: {{ top.commit[:7] }}
82+
</a>
83+
<a class="badge text-bg-secondary link-underline link-underline-opacity-0"
84+
href="report.json">json</a>
85+
<span class="badge text-bg-secondary">
86+
Branch: {{ top.branch }}
87+
</span>
88+
</div>
89+
</div>
90+
91+
<div class="row py-3">
92+
<div class="col">
93+
<table class="table table-sm table-hover">
94+
<thead>
95+
<tr>
96+
<th>Block</th>
97+
<th>Pass</th>
98+
<th>Total</th>
99+
<th>%</th>
100+
<th>Cov</th>
101+
</tr>
102+
</thead>
103+
<tbody>
104+
{% for block_name in summary.flow_results.keys()|sort %}
105+
{% set flow = summary.flow_results[block_name] %}
106+
<tr>
107+
<td>
108+
<a href="{{ summary.report_index[block_name] }}">
109+
{{ block_name }}
110+
</a>
111+
</td>
112+
<td>{{ flow.passed }}</td>
113+
<td>{{ flow.total }}</td>
114+
<td class="c{{ (flow.percent / 10)|int }}">
115+
{{ "%.2f" | format(flow.percent) }}
116+
</td>
117+
<td class="
118+
{% if flow.coverage and flow.coverage.get('score') is not none %}
119+
c{{ (flow.coverage.score / 10)|int }}
120+
{% else %}
121+
text-muted
122+
{% endif %}
123+
">
124+
{% if flow.coverage and flow.coverage.get('score') is not none %}
125+
{{ "%.2f" | format(flow.coverage.score) }}
126+
{% else %}
127+
-
128+
{% endif %}
129+
</td>
130+
</tr>
131+
{% endfor %}
132+
</tbody>
133+
</table>
134+
</div>
135+
</div>
136+
</div>
137+
138+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
139+
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
140+
crossorigin="anonymous"></script>
141+
</body>
142+
</html>

0 commit comments

Comments
 (0)