$date Sat Dec 25 16:11:16 2021 $end $version GHDL v0 $end $timescale 1 fs $end $scope module standard $end $upscope $end $scope module textio $end $upscope $end $scope module std_logic_1164 $end $upscope $end $scope module numeric_std $end $upscope $end $scope module std_logic_arith $end $upscope $end $scope module std_logic_unsigned $end $upscope $end $scope module cru $end $upscope $end $scope module cpu_test_bench $end $var reg 1 ! clk $end $scope module clock $end $var reg 1 " clk $end $var reg 1 # v $end $upscope $end $scope module cpu $end $var reg 1 $ clk $end $var reg 32 % pc[31:0] $end $var reg 32 & pc_to_write[31:0] $end $var reg 32 ' ins[31:0] $end $var reg 1 ( enable_mem $end $var reg 1 ) write_mem $end $var reg 32 * addr[31:0] $end $var reg 32 + mem_w[31:0] $end $var reg 32 , mem_r[31:0] $end $var reg 1 - write_reg $end $var reg 5 . r1[4:0] $end $var reg 5 / r2[4:0] $end $var reg 5 0 w[4:0] $end $var reg 32 1 wd[31:0] $end $var reg 32 2 rd1[31:0] $end $var reg 32 3 rd2[31:0] $end $var reg 32 4 a[31:0] $end $var reg 32 5 b[31:0] $end $var reg 4 6 aluc[3:0] $end $var reg 32 7 s[31:0] $end $var reg 1 8 z $end $scope module pc_reg $end $var reg 1 9 clk $end $var reg 1 : enable $end $var reg 32 ; w[31:0] $end $var reg 32 < r[31:0] $end $var reg 32 = v[31:0] $end $upscope $end $scope module reg $end $var reg 1 > clk $end $var reg 1 ? enable $end $var reg 5 @ r1[4:0] $end $var reg 5 A r2[4:0] $end $var reg 5 B w[4:0] $end $var reg 32 C wd[31:0] $end $var reg 32 D rd1[31:0] $end $var reg 32 E rd2[31:0] $end $comment reg_file is not handled $end $upscope $end $scope module alu $end $var reg 32 F a[31:0] $end $var reg 32 G b[31:0] $end $var reg 4 H aluc[3:0] $end $var reg 32 I s[31:0] $end $var reg 1 J z $end $upscope $end $scope module ram $end $var reg 1 K clk $end $var reg 32 L r[31:0] $end $var reg 32 M w[31:0] $end $var reg 32 N addr[31:0] $end $var reg 1 O enable $end $comment memory is not handled $end $var reg 1 P v $end $upscope $end $upscope $end $upscope $end $enddefinitions $end #0 0! 0" 0# 0$ bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU % bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU & bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ' U( 0) b00000000000000000000000000000000 * bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU + bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU , 0- b00000 . b00000 / b00000 0 bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 1 bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 2 bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 3 b00000000000000000000000000000000 4 b00000000000000000000000000000000 5 b0000 6 b00000000000000000000000000000000 7 18 09 1: bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ; bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU < b00000000000000000000000000000000 = 0> 0? b00000 @ b00000 A b00000 B bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU C bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU D bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU E b00000000000000000000000000000000 F b00000000000000000000000000000000 G b0000 H b00000000000000000000000000000000 I 1J 0K bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU L bUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU M b00000000000000000000000000000000 N 0O 0P #10000000 1! 1" 1# 1$ b00000000000000000000000000000000 % b00111100000000010000000000000000 , b00000000000000000000000000000000 2 b00000000000000000000000000000000 3 19 b00000000000000000000000000000000 < 1> b00000000000000000000000000000000 D b00000000000000000000000000000000 E 1K b00111100000000010000000000000000 L #10100000 b00000000000000000000000000000001 & b00000000000000000000000000000001 ; #11100000 b00111100000000010000000000000000 ' bUUUUU . bUUUUU / b0010 6 bUUUUU @ bUUUUU A b0010 H #11200000 #20000000 0! 0" 0# 0$ 09 b00000000000000000000000000000001 = 0> 0K #30000000 1! 1" 1# 1$ b00000000000000000000000000000001 % 19 b00000000000000000000000000000001 < 1> 1K #30100000 b00000000000000000000000000000010 & b00000000000000000000000000000001 * b00000000000000000000000000000010 ; b00000000000000000000000000000001 N #31100000 1- b00001 0 b0000000000000000UUUUUUUUUUUUUUUU 1 1? b00001 B b0000000000000000UUUUUUUUUUUUUUUU C #40000000 0! 0" 0# 0$ 09 b00000000000000000000000000000010 = 0> 0K #50000000 1! 1" 1# 1$ b00000000000000000000000000000010 % b00110100001001000000000000100000 , 19 b00000000000000000000000000000010 < 1> 1K b00110100001001000000000000100000 L #50100000 b00000000000000000000000000000011 & b00000000000000000000000000000010 * b00000000000000000000000000000011 ; b00000000000000000000000000000010 N #51100000 b00110100001001000000000000100000 ' #60000000 0! 0" 0# 0$ 09 b00000000000000000000000000000011 = 0> 0K #70000000 1! 1" 1# 1$ b00000000000000000000000000000011 % b00100000000001010000000000000100 , 19 b00000000000000000000000000000011 < 1> 1K b00100000000001010000000000000100 L #70100000 b00000000000000000000000000000100 & b00000000000000000000000000000011 * b00000000000000000000000000000100 ; b00000000000000000000000000000011 N #71100000 b00100000000001010000000000000100 ' 0- b00001 . b1101 6 0? b00001 @ b1101 H #71200000 1- b00101 0 b00000000000000000000000000000000 1 b00000000000000000000000000000100 5 b00000000000000000000000000000100 7 08 1? b00101 B b00000000000000000000000000000000 C b00000000000000000000000000000100 G b00000000000000000000000000000100 I 0J #80000000 0! 0" 0# 0$ 09 b00000000000000000000000000000100 = 0> 0K #90000000 1! 1" 1# 1$ b00000000000000000000000000000100 % b00001100000000000000000000011000 , b0000000000000000UUUUUUUUUUUUUUUU 2 19 b00000000000000000000000000000100 < 1> b0000000000000000UUUUUUUUUUUUUUUU D 1K b00001100000000000000000000011000 L #90100000 b00000000000000000000000000000101 & b00000000000000000000000000000100 * b00000000000000000000000000000101 ; b00000000000000000000000000000100 N #91100000 b00001100000000000000000000011000 ' 0- b00000 . b1000 6 0? b00000 @ b1000 H #91200000 1- b00000 0 b00000000000000000000000000000100 1 b0000000000000000UUUUUUUUUUUUUUUU 4 b00000000000000000000000000011000 5 bXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 X8 1? b00000 B b00000000000000000000000000000100 C b0000000000000000UUUUUUUUUUUUUUUU F b00000000000000000000000000011000 G bXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I XJ #100000000 0! 0" 0# 0$ 09 b00000000000000000000000000000101 = 0> 0K #110000000 1! 1" 1# 1$ b00000000000000000000000000000101 % b10101100100000100000000000000000 , b00000000000000000000000000000100 2 b00000000000000000000000000000100 3 19 b00000000000000000000000000000101 < 1> b00000000000000000000000000000100 D b00000000000000000000000000000100 E 1K b10101100100000100000000000000000 L #110100000 b00000000000000000000000000000110 & b00000000000000000000000000000101 * b00000000000000000000000000000110 ; b00000000000000000000000000000101 N #111100000 b00000000000000000000000000011000 & b10101100100000100000000000000000 ' b11111 0 b00000000000000000000000000000101 1 b00000000000000000000000000011000 ; b11111 B b00000000000000000000000000000101 C #120000000 0! 0" 0# 0$ 09 b00000000000000000000000000011000 = 0> 0K #130000000 1! 1" 1# 1$ b00000000000000000000000000011000 % b10001100100010010000000000000000 , 19 b00000000000000000000000000011000 < 1> 1K b10001100100010010000000000000000 L #130100000 b00000000000000000000000000011001 & b00000000000000000000000000011000 * b00000000000000000000000000011001 ; b00000000000000000000000000011000 N #131100000 b10001100100010010000000000000000 ' 1( 0- b00100 . b0000 6 0? b00100 @ b0000 H #131200000 1) b01001 / b00000000000000000000000000000100 4 b00000000000000000000000000000000 5 b00000000000000000000000000000100 7 08 b01001 A b00000000000000000000000000000100 F b00000000000000000000000000000000 G b00000000000000000000000000000100 I 0J 1O #131300000 b00000000000000000000000000000100 + b00000000000000000000000000000100 M #140000000 0! 0" 0# 0$ 09 b00000000000000000000000000011001 = 0> 0K #150000000 1! 1" 1# 1$ b00000000000000000000000000011001 % b00000000000000000000000000000100 , b00000000000000000000000000000000 2 b00000000000000000000000000000000 3 19 b00000000000000000000000000011001 < 1> b00000000000000000000000000000000 D b00000000000000000000000000000000 E 1K b00000000000000000000000000000100 L #150100000 b00000000000000000000000000011010 & b00000000000000000000000000011001 * b00000000000000000000000000011010 ; b00000000000000000000000000011001 N #151100000 b00000000000000000000000000000100 ' #151200000 b00000 / b00000000000000000000000000000000 4 b00000000000000000000000000000100 5 b00000 A b00000000000000000000000000000000 F b00000000000000000000000000000100 G #151300000 b00000000000000000000000000000000 + b00000000000000000000000000000000 M #160000000 0! 0" 0# 0$ 09 b00000000000000000000000000011010 = 0> 0K #170000000 1! 1" 1# 1$ b00000000000000000000000000011010 % b00000000000000000000000000000000 , b00000000000000000000000000000100 3 19 b00000000000000000000000000011010 < 1> b00000000000000000000000000000100 E 1K b00000000000000000000000000000000 L #170100000 b00000000000000000000000000011011 & b00000000000000000000000000011010 * b00000000000000000000000000011011 ; b00000000000000000000000000011010 N #171100000 b00000000000000000000000000000000 ' b00000 . b0011 6 b00000000000000000000000000000000 7 18 b00000 @ b0011 H b00000000000000000000000000000000 I 1J #171200000 b00000000000000000000000000000100 + b00000 0 b00000000000000000000000000000000 1 b00000000000000000000000000000000 5 b00000 B b00000000000000000000000000000000 C b00000000000000000000000000000000 G b00000000000000000000000000000100 M #180000000 0! 0" 0# 0$ 09 b00000000000000000000000000011011 = 0> 0K #190000000 1! 1" 1# 1$ b00000000000000000000000000011011 % b00000000000000000000000000000100 , b00000000000000000000000000000100 2 19 b00000000000000000000000000011011 < 1> b00000000000000000000000000000100 D 1K b00000000000000000000000000000100 L #190100000 b00000000000000000000000000011100 & b00000000000000000000000000011011 * b00000000000000000000000000011100 ; b00000000000000000000000000011011 N #191100000 b00000000000000000000000000000100 ' #191200000 b00000000000000000000000000000100 4 b00000000000000000000000000000100 7 08 b00000000000000000000000000000100 F b00000000000000000000000000000100 I 0J #200000000 0! 0" 0# 0$ 09 b00000000000000000000000000011100 = 0> 0K #210000000 1! 1" 1# 1$ b00000000000000000000000000011100 % 19 b00000000000000000000000000011100 < 1> 1K #210100000 b00000000000000000000000000011101 & b00000000000000000000000000011100 * b00000000000000000000000000011101 ; b00000000000000000000000000011100 N #211100000 #211200000 b00000000000000000000000000000100 1 b00000000000000000000000000000100 C #220000000 0! 0" 0# 0$ 09 b00000000000000000000000000011101 = 0> 0K #230000000 1! 1" 1# 1$ b00000000000000000000000000011101 % 19 b00000000000000000000000000011101 < 1> 1K #230100000 b00000000000000000000000000011110 & b00000000000000000000000000011101 * b00000000000000000000000000011110 ; b00000000000000000000000000011101 N #231100000 #231200000 #240000000 0! 0" 0# 0$ 09 b00000000000000000000000000011110 = 0> 0K #250000000 1! 1" 1# 1$ b00000000000000000000000000011110 % 19 b00000000000000000000000000011110 < 1> 1K #250100000 b00000000000000000000000000011111 & b00000000000000000000000000011110 * b00000000000000000000000000011111 ; b00000000000000000000000000011110 N #251100000 #251200000 #260000000 0! 0" 0# 0$ 09 b00000000000000000000000000011111 = 0> 0K #270000000 1! 1" 1# 1$ b00000000000000000000000000011111 % 19 b00000000000000000000000000011111 < 1> 1K #270100000 b00000000000000000000000000100000 & b00000000000000000000000000011111 * b00000000000000000000000000100000 ; b00000000000000000000000000011111 N #271100000 #271200000 #280000000 0! 0" 0# 0$ 09 b00000000000000000000000000100000 = 0> 0K #290000000 1! 1" 1# 1$ b00000000000000000000000000100000 % 19 b00000000000000000000000000100000 < 1> 1K #290100000 b00000000000000000000000000100001 & b00000000000000000000000000100000 * b00000000000000000000000000100001 ; b00000000000000000000000000100000 N #291100000 #291200000 #300000000 0! 0" 0# 0$ 09 b00000000000000000000000000100001 = 0> 0K #310000000 1! 1" 1# 1$ b00000000000000000000000000100001 % 19 b00000000000000000000000000100001 < 1> 1K #310100000 b00000000000000000000000000100010 & b00000000000000000000000000100001 * b00000000000000000000000000100010 ; b00000000000000000000000000100001 N #311100000 #311200000 #320000000 0! 0" 0# 0$ 09 b00000000000000000000000000100010 = 0> 0K #330000000 1! 1" 1# 1$ b00000000000000000000000000100010 % 19 b00000000000000000000000000100010 < 1> 1K #330100000 b00000000000000000000000000100011 & b00000000000000000000000000100010 * b00000000000000000000000000100011 ; b00000000000000000000000000100010 N #331100000 #331200000 #340000000 0! 0" 0# 0$ 09 b00000000000000000000000000100011 = 0> 0K #350000000 1! 1" 1# 1$ b00000000000000000000000000100011 % 19 b00000000000000000000000000100011 < 1> 1K #350100000 b00000000000000000000000000100100 & b00000000000000000000000000100011 * b00000000000000000000000000100100 ; b00000000000000000000000000100011 N #351100000 #351200000 #360000000 0! 0" 0# 0$ 09 b00000000000000000000000000100100 = 0> 0K #370000000 1! 1" 1# 1$ b00000000000000000000000000100100 % 19 b00000000000000000000000000100100 < 1> 1K #370100000 b00000000000000000000000000100101 & b00000000000000000000000000100100 * b00000000000000000000000000100101 ; b00000000000000000000000000100100 N #371100000 #371200000 #380000000 0! 0" 0# 0$ 09 b00000000000000000000000000100101 = 0> 0K #390000000 1! 1" 1# 1$ b00000000000000000000000000100101 % 19 b00000000000000000000000000100101 < 1> 1K #390100000 b00000000000000000000000000100110 & b00000000000000000000000000100101 * b00000000000000000000000000100110 ; b00000000000000000000000000100101 N #391100000 #391200000 #400000000 0! 0" 0# 0$ 09 b00000000000000000000000000100110 = 0> 0K #410000000 1! 1" 1# 1$ b00000000000000000000000000100110 % 19 b00000000000000000000000000100110 < 1> 1K #410100000 b00000000000000000000000000100111 & b00000000000000000000000000100110 * b00000000000000000000000000100111 ; b00000000000000000000000000100110 N #411100000 #411200000 #420000000 0! 0" 0# 0$ 09 b00000000000000000000000000100111 = 0> 0K #430000000 1! 1" 1# 1$ b00000000000000000000000000100111 % 19 b00000000000000000000000000100111 < 1> 1K #430100000 b00000000000000000000000000101000 & b00000000000000000000000000100111 * b00000000000000000000000000101000 ; b00000000000000000000000000100111 N #431100000 #431200000 #440000000 0! 0" 0# 0$ 09 b00000000000000000000000000101000 = 0> 0K #450000000 1! 1" 1# 1$ b00000000000000000000000000101000 % 19 b00000000000000000000000000101000 < 1> 1K #450100000 b00000000000000000000000000101001 & b00000000000000000000000000101000 * b00000000000000000000000000101001 ; b00000000000000000000000000101000 N #451100000 #451200000 #460000000 0! 0" 0# 0$ 09 b00000000000000000000000000101001 = 0> 0K #470000000 1! 1" 1# 1$ b00000000000000000000000000101001 % 19 b00000000000000000000000000101001 < 1> 1K #470100000 b00000000000000000000000000101010 & b00000000000000000000000000101001 * b00000000000000000000000000101010 ; b00000000000000000000000000101001 N #471100000 #471200000 #480000000 0! 0" 0# 0$ 09 b00000000000000000000000000101010 = 0> 0K #490000000 1! 1" 1# 1$ b00000000000000000000000000101010 % 19 b00000000000000000000000000101010 < 1> 1K #490100000 b00000000000000000000000000101011 & b00000000000000000000000000101010 * b00000000000000000000000000101011 ; b00000000000000000000000000101010 N #491100000 #491200000 #500000000 0! 0" 0# 0$ 09 b00000000000000000000000000101011 = 0> 0K #510000000 1! 1" 1# 1$ b00000000000000000000000000101011 % 19 b00000000000000000000000000101011 < 1> 1K #510100000 b00000000000000000000000000101100 & b00000000000000000000000000101011 * b00000000000000000000000000101100 ; b00000000000000000000000000101011 N #511100000 #511200000 #520000000 0! 0" 0# 0$ 09 b00000000000000000000000000101100 = 0> 0K #530000000 1! 1" 1# 1$ b00000000000000000000000000101100 % 19 b00000000000000000000000000101100 < 1> 1K #530100000 b00000000000000000000000000101101 & b00000000000000000000000000101100 * b00000000000000000000000000101101 ; b00000000000000000000000000101100 N #531100000 #531200000 #540000000 0! 0" 0# 0$ 09 b00000000000000000000000000101101 = 0> 0K #550000000 1! 1" 1# 1$ b00000000000000000000000000101101 % 19 b00000000000000000000000000101101 < 1> 1K #550100000 b00000000000000000000000000101110 & b00000000000000000000000000101101 * b00000000000000000000000000101110 ; b00000000000000000000000000101101 N #551100000 #551200000 #560000000 0! 0" 0# 0$ 09 b00000000000000000000000000101110 = 0> 0K #570000000 1! 1" 1# 1$ b00000000000000000000000000101110 % 19 b00000000000000000000000000101110 < 1> 1K #570100000 b00000000000000000000000000101111 & b00000000000000000000000000101110 * b00000000000000000000000000101111 ; b00000000000000000000000000101110 N #571100000 #571200000 #580000000 0! 0" 0# 0$ 09 b00000000000000000000000000101111 = 0> 0K #590000000 1! 1" 1# 1$ b00000000000000000000000000101111 % 19 b00000000000000000000000000101111 < 1> 1K #590100000 b00000000000000000000000000110000 & b00000000000000000000000000101111 * b00000000000000000000000000110000 ; b00000000000000000000000000101111 N #591100000 #591200000 #600000000 0! 0" 0# 0$ 09 b00000000000000000000000000110000 = 0> 0K #610000000 1! 1" 1# 1$ b00000000000000000000000000110000 % 19 b00000000000000000000000000110000 < 1> 1K #610100000 b00000000000000000000000000110001 & b00000000000000000000000000110000 * b00000000000000000000000000110001 ; b00000000000000000000000000110000 N #611100000 #611200000 #620000000 0! 0" 0# 0$ 09 b00000000000000000000000000110001 = 0> 0K #630000000 1! 1" 1# 1$ b00000000000000000000000000110001 % 19 b00000000000000000000000000110001 < 1> 1K #630100000 b00000000000000000000000000110010 & b00000000000000000000000000110001 * b00000000000000000000000000110010 ; b00000000000000000000000000110001 N #631100000 #631200000