aboutsummaryrefslogtreecommitdiff
path: root/test/chisel3/Stack.fir
blob: 15596d0df93650a0822491252c35a1dae1d3e618 (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
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) = UInt(0, 5)
    reg sp : UInt(5)
    sp.init := T_30
    node T_31 : UInt(32) = UInt(0, 32)
    reg out : UInt(32)
    out.init := T_31
    when en : 
      node T_32 : UInt(5) = UInt(16, 5)
      node T_33 : UInt(1) = less(sp, T_32)
      node T_34 : UInt(1) = bit-and(push, T_33)
      when T_34 : 
        accessor T_35 = stack_mem[sp]
        T_35 := dataIn
        node T_36 : UInt(1) = UInt(1, 1)
        node T_37 : UInt = add-mod(sp, T_36)
        sp := T_37
       else : 
        node T_38 : UInt(1) = UInt(0, 1)
        node T_39 : UInt(1) = greater(sp, T_38)
        node T_40 : UInt(1) = bit-and(pop, T_39)
        when T_40 : 
          node T_41 : UInt(1) = UInt(1, 1)
          node T_42 : UInt = sub-mod(sp, T_41)
          sp := T_42
      node T_43 : UInt(1) = UInt(0, 1)
      node T_44 : UInt(1) = greater(sp, T_43)
      when T_44 : 
        node T_45 : UInt(1) = UInt(1, 1)
        node T_46 : UInt = sub-mod(sp, T_45)
        accessor T_47 = stack_mem[T_46]
        out := T_47
    dataOut := out