$date Wed Sep 2 11:47:57 2026 $end $version Icarus Verilog $end $timescale 1ps $end $scope module memory_interface_tb $end $var wire 1 ! ready $end $var wire 16 " rdata [15:0] $end $var wire 1 # mem_wr $end $var wire 16 $ mem_wdata [15:0] $end $var wire 1 % mem_req $end $var wire 1 & mem_ready $end $var wire 16 ' mem_rdata [15:0] $end $var wire 22 ( mem_addr [21:0] $end $var parameter 32 ) ADDR_WIDTH $end $var parameter 32 * DATA_WIDTH $end $var reg 22 + addr [21:0] $end $var reg 1 , clk $end $var reg 1 - req $end $var reg 1 . rst $end $var reg 16 / wdata [15:0] $end $var reg 1 0 wr $end $scope module dut $end $var wire 22 1 addr [21:0] $end $var wire 1 , clk $end $var wire 1 - req $end $var wire 1 . rst $end $var wire 16 2 wdata [15:0] $end $var wire 1 0 wr $end $var wire 1 & mem_ready $end $var wire 16 3 mem_rdata [15:0] $end $var parameter 32 4 ADDR_WIDTH $end $var parameter 32 5 DATA_WIDTH $end $var parameter 2 6 STATE_IDLE $end $var parameter 2 7 STATE_WAIT $end $var reg 22 8 mem_addr [21:0] $end $var reg 1 % mem_req $end $var reg 16 9 mem_wdata [15:0] $end $var reg 1 # mem_wr $end $var reg 16 : rdata [15:0] $end $var reg 1 ! ready $end $var reg 2 ; state [1:0] $end $upscope $end $scope module memory $end $var wire 22 < addr [21:0] $end $var wire 1 , clk $end $var wire 1 % req $end $var wire 1 . rst $end $var wire 16 = wdata [15:0] $end $var wire 1 # wr $end $var parameter 32 > ADDR_WIDTH $end $var parameter 32 ? DATA_WIDTH $end $var parameter 32 @ DEPTH $end $var parameter 32 A READ_LATENCY $end $var reg 1 B busy $end $var reg 22 C pending_addr [21:0] $end $var reg 16 D pending_wdata [15:0] $end $var reg 1 E pending_wr $end $var reg 16 F rdata [15:0] $end $var reg 1 & ready $end $var integer 32 G delay_count [31:0] $end $var integer 32 H i [31:0] $end $upscope $end $scope task read_mem $end $var reg 22 I address [21:0] $end $var reg 16 J expected [15:0] $end $var reg 16 K received [15:0] $end $upscope $end $scope task write_mem $end $var reg 22 L address [21:0] $end $var reg 16 M data [15:0] $end $upscope $end $upscope $end $enddefinitions $end $comment Show the parameter values. $end $dumpall b10 A b1000000000000 @ b10000 ? b10110 > b1 7 b0 6 b10000 5 b10110 4 b10000 * b10110 ) $end #0 $dumpvars bx M bx L bx K bx J bx I bx H bx G bx F xE bx D bx C xB bx = bx < bx ; bx : bx 9 bx 8 bx 3 b0 2 b0 1 00 b0 / 1. 0- 0, b0 + bx ( bx ' x& x% bx $ x# bx " x! $end #5000 b0 $ b0 9 b0 = b0 ( b0 8 b0 < 0# 0% 0! b0 " b0 : b0 ; b0 G b0 D b0 C 0E 0B 0& b0 ' b0 3 b0 F b1000000000000 H 1, #10000 0, #15000 b1000000000000 H 1, #20000 0, #25000 b1001000110100 M b1 L 0. 1, #30000 0, #35000 1- 10 b1001000110100 / b1001000110100 2 b1 + b1 1 1, #40000 0, #45000 0- b1 ; 1% b1001000110100 $ b1001000110100 9 b1001000110100 = b1 ( b1 8 b1 < 1# 1, #50000 0, #55000 b10 G b1001000110100 D b1 C 1E 1B 0% 1, #60000 0, #65000 b1 G 1, #70000 0, #75000 b0 G 1, #80000 0, #85000 0B 1& 1, #90000 0, #95000 0& b0 ; 1! 1, #100000 0, #105000 0! b1001000110100 J b1 I 1, #110000 0, #115000 1- 00 1, #120000 0, #125000 0- b1 ; 1% 0# 1, #130000 0, #135000 b10 G 0E 1B 0% 1, #140000 0, #145000 b1 G 1, #150000 0, #155000 b0 G 1, #160000 0, #165000 0B 1& b1001000110100 ' b1001000110100 3 b1001000110100 F 1, #170000 0, #175000 b1001000110100 K 0& b0 ; 1! b1001000110100 " b1001000110100 : 1, #180000 0, #185000 0! b1010101111001101 M b10000 L 1, #190000 0, #195000 1- 10 b1010101111001101 / b1010101111001101 2 b10000 + b10000 1 1, #200000 0, #205000 0- b1 ; 1% b1010101111001101 $ b1010101111001101 9 b1010101111001101 = b10000 ( b10000 8 b10000 < 1# 1, #210000 0, #215000 b10 G b1010101111001101 D b10000 C 1E 1B 0% 1, #220000 0, #225000 b1 G 1, #230000 0, #235000 b0 G 1, #240000 0, #245000 0B 1& 1, #250000 0, #255000 0& b0 ; 1! 1, #260000 0, #265000 0! b1010101111001101 J b10000 I 1, #270000 0, #275000 1- 00 1, #280000 0, #285000 0- b1 ; 1% 0# 1, #290000 0, #295000 b10 G 0E 1B 0% 1, #300000 0, #305000 b1 G 1, #310000 0, #315000 b0 G 1, #320000 0, #325000 0B 1& b1010101111001101 ' b1010101111001101 3 b1010101111001101 F 1, #330000 0, #335000 b1010101111001101 K 0& b0 ; 1! b1010101111001101 " b1010101111001101 : 1, #340000 0, #345000 0! b101010110101010 M b100000000 L 1, #350000 0, #355000 1- 10 b101010110101010 / b101010110101010 2 b100000000 + b100000000 1 1, #360000 0, #365000 0- b1 ; 1% b101010110101010 $ b101010110101010 9 b101010110101010 = b100000000 ( b100000000 8 b100000000 < 1# 1, #370000 0, #375000 b10 G b101010110101010 D b100000000 C 1E 1B 0% 1, #380000 0, #385000 b1 G 1, #390000 0, #395000 b0 G 1, #400000 0, #405000 0B 1& 1, #410000 0, #415000 0& b0 ; 1! 1, #420000 0, #425000 0! b101010110101010 J b100000000 I 1, #430000 0, #435000 1- 00 1, #440000 0, #445000 0- b1 ; 1% 0# 1, #450000 0, #455000 b10 G 0E 1B 0% 1, #460000 0, #465000 b1 G 1, #470000 0, #475000 b0 G 1, #480000 0, #485000 0B 1& b101010110101010 ' b101010110101010 3 b101010110101010 F 1, #490000 0, #495000 b101010110101010 K 0& b0 ; 1! b101010110101010 " b101010110101010 : 1, #500000 0, #505000 0! b1 M b1000000000 L 1, #510000 0, #515000 1- 10 b1 / b1 2 b1000000000 + b1000000000 1 1, #520000 0, #525000 0- b1 ; 1% b1 $ b1 9 b1 = b1000000000 ( b1000000000 8 b1000000000 < 1# 1, #530000 0, #535000 b10 G b1 D b1000000000 C 1E 1B 0% 1, #540000 0, #545000 b1 G 1, #550000 0, #555000 b0 G 1, #560000 0, #565000 0B 1& 1, #570000 0, #575000 0& b0 ; 1! 1, #580000 0, #585000 0! b10 M b1000000001 L 1, #590000 0, #595000 1- b10 / b10 2 b1000000001 + b1000000001 1 1, #600000 0, #605000 0- b1 ; 1% b10 $ b10 9 b10 = b1000000001 ( b1000000001 8 b1000000001 < 1, #610000 0, #615000 b10 G b10 D b1000000001 C 1B 0% 1, #620000 0, #625000 b1 G 1, #630000 0, #635000 b0 G 1, #640000 0, #645000 0B 1& 1, #650000 0, #655000 0& b0 ; 1! 1, #660000 0, #665000 0! b11 M b1000000010 L 1, #670000 0, #675000 1- b11 / b11 2 b1000000010 + b1000000010 1 1, #680000 0, #685000 0- b1 ; 1% b11 $ b11 9 b11 = b1000000010 ( b1000000010 8 b1000000010 < 1, #690000 0, #695000 b10 G b11 D b1000000010 C 1B 0% 1, #700000 0, #705000 b1 G 1, #710000 0, #715000 b0 G 1, #720000 0, #725000 0B 1& 1, #730000 0, #735000 0& b0 ; 1! 1, #740000 0, #745000 0! b1 J b1000000000 I 1, #750000 0, #755000 1- 00 b1000000000 + b1000000000 1 1, #760000 0, #765000 0- b1 ; 1% b1000000000 ( b1000000000 8 b1000000000 < 0# 1, #770000 0, #775000 b10 G b1000000000 C 0E 1B 0% 1, #780000 0, #785000 b1 G 1, #790000 0, #795000 b0 G 1, #800000 0, #805000 0B 1& b1 ' b1 3 b1 F 1, #810000 0, #815000 b1 K 0& b0 ; 1! b1 " b1 : 1, #820000 0, #825000 0! b10 J b1000000001 I 1, #830000 0, #835000 1- b1000000001 + b1000000001 1 1, #840000 0, #845000 0- b1 ; 1% b1000000001 ( b1000000001 8 b1000000001 < 1, #850000 0, #855000 b10 G b1000000001 C 1B 0% 1, #860000 0, #865000 b1 G 1, #870000 0, #875000 b0 G 1, #880000 0, #885000 0B 1& b10 ' b10 3 b10 F 1, #890000 0, #895000 b10 K 0& b0 ; 1! b10 " b10 : 1, #900000 0, #905000 0! b11 J b1000000010 I 1, #910000 0, #915000 1- b1000000010 + b1000000010 1 1, #920000 0, #925000 0- b1 ; 1% b1000000010 ( b1000000010 8 b1000000010 < 1, #930000 0, #935000 b10 G b1000000010 C 1B 0% 1, #940000 0, #945000 b1 G 1, #950000 0, #955000 b0 G 1, #960000 0, #965000 0B 1& b11 ' b11 3 b11 F 1, #970000 0, #975000 b11 K 0& b0 ; 1! b11 " b11 : 1, #980000 0, #985000 0! b0 M b1100000000 L 1, #990000 0, #995000 1- 10 b0 / b0 2 b1100000000 + b1100000000 1 1, #1000000 0, #1005000 0- b1 ; 1% b0 $ b0 9 b0 = b1100000000 ( b1100000000 8 b1100000000 < 1# 1, #1010000 0, #1015000 b10 G b0 D b1100000000 C 1E 1B 0% 1, #1020000 0, #1025000 b1 G 1, #1030000 0, #1035000 b0 G 1, #1040000 0, #1045000 0B 1& 1, #1050000 0, #1055000 0& b0 ; 1! 1, #1060000 0, #1065000 0! b0 J b1100000000 I 1, #1070000 0, #1075000 1- 00 1, #1080000 0, #1085000 0- b1 ; 1% 0# 1, #1090000 0, #1095000 b10 G 0E 1B 0% 1, #1100000 0, #1105000 b1 G 1, #1110000 0, #1115000 b0 G 1, #1120000 0, #1125000 0B 1& b0 ' b0 3 b0 F 1, #1130000 0, #1135000 b0 K 0& b0 ; 1! b0 " b0 : 1, #1140000 0, #1145000 0! b1111111111111111 M b1100000001 L 1, #1150000 0, #1155000 1- 10 b1111111111111111 / b1111111111111111 2 b1100000001 + b1100000001 1 1, #1160000 0, #1165000 0- b1 ; 1% b1111111111111111 $ b1111111111111111 9 b1111111111111111 = b1100000001 ( b1100000001 8 b1100000001 < 1# 1, #1170000 0, #1175000 b10 G b1111111111111111 D b1100000001 C 1E 1B 0% 1, #1180000 0, #1185000 b1 G 1, #1190000 0, #1195000 b0 G 1, #1200000 0, #1205000 0B 1& 1, #1210000 0, #1215000 0& b0 ; 1! 1, #1220000 0, #1225000 0! b1111111111111111 J b1100000001 I 1, #1230000 0, #1235000 1- 00 1, #1240000 0, #1245000 0- b1 ; 1% 0# 1, #1250000 0, #1255000 b10 G 0E 1B 0% 1, #1260000 0, #1265000 b1 G 1, #1270000 0, #1275000 b0 G 1, #1280000 0, #1285000 0B 1& b1111111111111111 ' b1111111111111111 3 b1111111111111111 F 1, #1290000 0, #1295000 b1111111111111111 K 0& b0 ; 1! b1111111111111111 " b1111111111111111 : 1, #1300000 0, #1305000 0! 1,