1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
; SPDX-License-Identifier: Apache-2.0
circuit ExpandWhens :
module ExpandWhens :
input clock : Clock
input reset : UInt<1>
node done = UInt(6)
reg x : UInt<16>, clock with :
reset => (reset, UInt(0))
x <= x
x <= UInt(2)
; Tricky assignment only in else
when geq(x, UInt(1)) :
else :
x <= UInt(1)
when geq(x, UInt(2)) :
when lt(x, UInt(3)) :
x <= UInt(3)
else :
x <= UInt(4)
when reset :
else :
when geq(x, UInt(4)) :
x <= UInt(6)
when lt(x, UInt(5)) :
x <= UInt(5)
reg count : UInt<16>, clock with :
reset => (reset, UInt(0))
when neq(count, done) :
count <= add(count, UInt(1))
printf(clock, UInt(1), "count = %d, x = %d\n", count, x)
when not(reset) :
when neq(x, count) :
printf(clock, UInt(1), "Assertion failed! x =/= count!\n")
stop(clock, UInt(1), 1)
when eq(x, done) :
stop(clock, UInt(1), 0)
|