blob: a6f590127ba0fc43025d99c4b1e9e1c59591260e (
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
|
; RUN: firrtl -i %s -o %s.v -X verilog -p c 2>&1 | tee %s.out | FileCheck %s
;CHECK: Inline Indexers
circuit top :
module top :
input value : UInt<32>
input in : {x : UInt<32>, y : UInt<32>}
wire m :{x : UInt<32>, y : UInt<32>}[2][2]
wire i : UInt
wire j : UInt
m[0][0] <= in
m[1][0] <= in
m[0][1] <= in
m[1][1] <= in
i <= UInt("h1")
j <= UInt("h1")
write accessor a = m[i]
write accessor b = a[j]
b.x <= value
;CHECK: wire b$x_2 : UInt<32>
;CHECK: node j_1 = j
;CHECK: when eqv(j_1, UInt("h0")) :
;CHECK: wire a$0$x_2 : UInt<32>
;CHECK: node i_1 = i
;CHECK: when eqv(i_1, UInt("h0")) :
;CHECK: m$0$0$x <= a$0$x_2
;CHECK: when eqv(i_1, UInt("h1")) :
;CHECK: m$1$0$x <= a$0$x_2
;CHECK: a$0$x_2 <= b$x_2
;CHECK: when eqv(j_1, UInt("h1")) :
;CHECK: wire a$1$x_2 : UInt<32>
;CHECK: node i_2 = i
;CHECK: when eqv(i_2, UInt("h0")) :
;CHECK: m$0$1$x <= a$1$x_2
;CHECK: when eqv(i_2, UInt("h1")) :
;CHECK: m$1$1$x <= a$1$x_2
;CHECK: a$1$x_2 <= b$x_2
;CHECK: b$x_2 <= value
;CHECK: Done!
|