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