aboutsummaryrefslogtreecommitdiff
path: root/src/test/resources/passes/ExpandWhens/ExpandWhens.fir
blob: 25706d2877fb228081246542b167ee1d72c1545c (plain)
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)