blob: 84cb6ccdd4a3ec3e0a6da9824a5f5a6d5e67eadf (
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
|
; RUN: firrtl -i %s -o %s.flo -X flo -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]
reg sp : UInt<5>
on-reset sp := UInt<5>(0)
reg out : UInt<32>
on-reset out := UInt<32>(0)
when en :
node T_30 = lt(sp, UInt<5>(16))
node T_31 = bit-and(push, T_30)
when T_31 :
accessor T_32 = stack_mem[sp]
T_32 := dataIn
node T_33 = add-wrap(sp, UInt<1>(1))
sp := T_33
else :
node T_34 = gt(sp, UInt<1>(0))
node T_35 = bit-and(pop, T_34)
when T_35 :
node T_36 = sub-wrap(sp, UInt<1>(1))
sp := T_36
node T_37 = gt(sp, UInt<1>(0))
when T_37 :
node T_38 = sub-wrap(sp, UInt<1>(1))
accessor T_39 = stack_mem[T_38]
out := T_39
dataOut := out
|