Skip to content

Commit 2e2d8f6

Browse files
thomasahleclaude
andcommitted
Improve h2/h3 lesson styles and add waveform callouts
- Add .lesson-body h2/h3 CSS rules with border separator and correct sizing - Mention the Waves tab in always_ff, sequence-basics, clock-delay, rose-fell lessons Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent d5f6077 commit 2e2d8f6

5 files changed

Lines changed: 20 additions & 0 deletions

File tree

src/app.css

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,20 @@
168168
}
169169

170170
.lesson-body strong { font-weight: 600; }
171+
172+
.lesson-body h2 {
173+
font-size: 0.95rem;
174+
font-weight: 600;
175+
margin: 1.1rem 0 0.35rem;
176+
color: rgb(var(--foreground));
177+
border-bottom: 1px solid rgb(var(--border));
178+
padding-bottom: 0.25rem;
179+
}
180+
181+
.lesson-body h3 {
182+
font-size: 0.88rem;
183+
font-weight: 600;
184+
margin: 0.9rem 0 0.25rem;
185+
color: rgb(var(--foreground));
186+
}
171187
}

src/lessons/sv/always-ff/description.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
else q &lt;= d;
77
end</pre>
88
<blockquote><p>Active-low reset (<code>rst_n</code>) is conventional in RTL: the signal name ends in <code>_n</code> and asserts at 0.</p></blockquote>
9+
<blockquote><p>After clicking <strong>Run</strong>, open the <strong>Waves</strong> tab to see <code>clk</code>, <code>rst_n</code>, <code>d</code>, and <code>q</code> plotted over time. You should see <code>q</code> follow <code>d</code> one cycle later once reset is released.</p></blockquote>

src/lessons/sva/clock-delay/description.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
</ul>
77
<p>Open <code>delay_check.sv</code>. The spec is: <em>after a memory request (<code>mem_req</code>), the response (<code>mem_ack</code>) must arrive within 2 to 5 clock cycles.</em></p>
88
<p>Complete the property body using <code>|-> ##[2:5]</code>.</p>
9+
<blockquote><p>If the bound is wrong the model checker will produce a counterexample. Open the <strong>Waves</strong> tab to see which cycle <code>mem_req</code> fired and how many cycles later <code>mem_ack</code> arrived — this makes it easy to spot off-by-one errors in the delay range.</p></blockquote>

src/lessons/sva/rose-fell/description.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
<p>These are more precise than a bare level check: <code>$rose(req)</code> triggers once per rising edge, not on every cycle that <code>req</code> stays high.</p>
77
<p>Open <code>edge_check.sv</code>. The spec is: <em>when chip-select <code>cs_n</code> falls (goes active-low), <code>ack</code> must rise within 1–2 clock cycles.</em></p>
88
<p>Complete the property using <code>$fell(cs_n) |=> ##[0:1] $rose(ack)</code>.</p>
9+
<blockquote><p>The <strong>Waves</strong> tab shows the counterexample when an assertion fails. You can see exactly when <code>cs_n</code> fell and whether <code>ack</code> rose in time — transitions are far easier to read in a waveform than in text logs.</p></blockquote>

src/lessons/sva/sequence-basics/description.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
<p>Open <code>grant_check.sv</code>. The spec is: <em>when <code>cStart</code> is high, <code>req</code> must be high the same cycle and <code>gnt</code> must be high exactly 2 cycles later.</em></p>
88
<p>Fill in the sequence body, the property body, and add the <code>assert property</code> statement.</p>
99
<blockquote><p>A property is never evaluated on its own — it must be <strong>asserted</strong>, <strong>covered</strong>, or <strong>assumed</strong>.</p></blockquote>
10+
<blockquote><p>When the model checker finds a violation it outputs a counterexample — inspect the <strong>Waves</strong> tab to see the exact cycle-by-cycle signal values that triggered the failure.</p></blockquote>

0 commit comments

Comments
 (0)