diff options
| author | jackbackrack | 2015-05-20 03:52:53 -0700 |
|---|---|---|
| committer | jackbackrack | 2015-05-20 03:52:53 -0700 |
| commit | 994fc58aa9a65eb4a5e287e121ee2e77d91db403 (patch) | |
| tree | 5a75bfd8f4bd0040e577e20c928d2ee5bc56924b /test/passes/jacktest/Stack.fir | |
| parent | f98ef93a1562357412fd1fce4b1f453f8a33572a (diff) | |
| parent | 92e7da031a14df41ee0cab13a4a63b472fbdb5e1 (diff) | |
merge
Diffstat (limited to 'test/passes/jacktest/Stack.fir')
| -rw-r--r-- | test/passes/jacktest/Stack.fir | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/passes/jacktest/Stack.fir b/test/passes/jacktest/Stack.fir new file mode 100644 index 00000000..d42e1dd5 --- /dev/null +++ b/test/passes/jacktest/Stack.fir @@ -0,0 +1,35 @@ +; 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 |
