aboutsummaryrefslogtreecommitdiff
path: root/test/passes/lower-to-ground/bundle-vecs.fir
blob: 64a4a4b6afb060e5d059621f8524ea31107c8fb5 (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
; RUN: firrtl -i %s -o %s.v -X verilog -p c 2>&1 | tee %s.out | FileCheck %s

; CHECK: Lower Types
circuit top :
   module top :
      input i : UInt<1>
      wire j : { x : UInt<32>, flip y : UInt<32> }

      wire a : { x : UInt<32>, flip y : UInt<32> }[2]
      ; CHECK: wire a{{[_$]+}}0{{[_$]+}}x : UInt<32>
      ; CHECK: wire a{{[_$]+}}0{{[_$]+}}y : UInt<32>
      ; CHECK: wire a{{[_$]+}}1{{[_$]+}}x : UInt<32>
      ; CHECK: wire a{{[_$]+}}1{{[_$]+}}y : UInt<32>
      a[0].x <= UInt(0)
      a[0].y <= UInt(0)
      a[1].x <= UInt(0)
      a[1].y <= UInt(0)

      j <= a[i]
      a[i] <= j

;CHECK: wire GEN_0 : UInt<32>
;CHECK: wire GEN_1 : UInt<32>
;CHECK: wire GEN_2 : UInt<32>
;CHECK: wire GEN_3 : UInt<32>
;CHECK: j_x <= GEN_0
;CHECK: j_y <= GEN_3
;CHECK: node GEN_4 = eqv(UInt("h0"), i)
;CHECK: a_0_x <= mux(GEN_4, GEN_2, UInt("h0"))
;CHECK: node GEN_5 = eqv(UInt("h0"), i)
;CHECK: a_0_y <= mux(GEN_5, GEN_1, UInt("h0"))
;CHECK: node GEN_6 = eqv(UInt("h1"), i)
;CHECK: a_1_x <= mux(GEN_6, GEN_2, UInt("h0"))
;CHECK: node GEN_7 = eqv(UInt("h1"), i)
;CHECK: a_1_y <= mux(GEN_7, GEN_1, UInt("h0"))
;CHECK: node GEN_8 = eqv(UInt("h1"), i)
;CHECK: GEN_0 <= mux(GEN_8, a_1_x, a_0_x)
;CHECK: GEN_1 <= j_y
;CHECK: GEN_2 <= j_x
;CHECK: node GEN_9 = eqv(UInt("h1"), i)
;CHECK: GEN_3 <= mux(GEN_9, a_1_y, a_0_y)   

; CHECK: Finished Lower Types