blob: a6f33189a735cb19e8af2e8f84f6ce75f71fe37e (
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
|
; RUN: firrtl -i %s -o %s.flo -x X -p c | tee %s.out | FileCheck %s
; CHECK: Done!
circuit Stack :
module Stack :
input push : UInt<1>
input pop : UInt<1>
input en : UInt<1>
output dataOut : UInt<32>
input dataIn : UInt<32>
mem stack_mem : UInt<32>[16]
node T_30 = UInt<5>(0)
reg sp : UInt<5>
on-reset sp := T_30
node T_31 = UInt<32>(0)
reg out : UInt<32>
on-reset out := T_31
when en :
node T_32 = UInt<5>(16)
node T_33 = lt(sp, T_32)
node T_34 = bit-and(push, T_33)
when T_34 :
accessor T_35 = stack_mem[sp]
T_35 := dataIn
node T_36 = UInt<1>(1)
node T_37 = add-wrap(sp, T_36)
sp := T_37
else :
node T_38 = UInt<1>(0)
node T_39 = gt(sp, T_38)
node T_40 = bit-and(pop, T_39)
when T_40 :
node T_41 = UInt<1>(1)
node T_42 = sub-wrap(sp, T_41)
sp := T_42
node T_43 = UInt<1>(0)
node T_44 = gt(sp, T_43)
when T_44 :
node T_45 = UInt<1>(1)
node T_46 = sub-wrap(sp, T_45)
accessor T_47 = stack_mem[T_46]
out := T_47
dataOut := out
|