$date Wed Sep 2 19:00:18 2026 $end $version Icarus Verilog $end $timescale 1ps $end $scope module tb $end $var wire 1 ! seq_done $end $var wire 1 " seq_busy $end $var wire 1 # ram_wr $end $var wire 8 $ ram_wdata [7:0] $end $var wire 1 % ram_req $end $var wire 22 & ram_addr [21:0] $end $var wire 22 ' nm_x_base [21:0] $end $var wire 22 ( nm_w_base [21:0] $end $var wire 1 ) nm_start $end $var wire 22 * nm_bias_addr [21:0] $end $var parameter 32 + ADDR_WIDTH $end $var parameter 22 , BUF_A_BASE $end $var parameter 22 - BUF_B_BASE $end $var real 1 . CLK_PERIOD $end $var parameter 32 / DATA_WIDTH $end $var parameter 22 0 L0_BIAS_ADDR $end $var parameter 22 1 L0_W_BASE $end $var parameter 22 2 L1_BIAS_ADDR $end $var parameter 22 3 L1_W_BASE $end $var parameter 32 4 N_LAYERS $end $var parameter 32 5 N_WIDTH $end $var parameter 1 6 RAM_IDLE $end $var parameter 1 7 RAM_WAIT $end $var parameter 22 8 TABLE_BASE $end $var parameter 22 9 X_BASE $end $var reg 22 : buf_a_base [21:0] $end $var reg 22 ; buf_b_base [21:0] $end $var reg 1 < clk $end $var reg 1 = nm_busy $end $var reg 1 > nm_done $end $var reg 22 ? ram_addr_latched [21:0] $end $var reg 8 @ ram_rdata [7:0] $end $var reg 1 A ram_ready $end $var reg 1 B ram_state $end $var reg 8 C ram_wdata_latched [7:0] $end $var reg 1 D ram_wr_latched $end $var reg 1 E rst $end $var reg 8 F run_num_layers [7:0] $end $var reg 1 G run_start $end $var reg 1 H seq_busy_dropped_early $end $var reg 32 I staged_y [31:0] $end $var reg 22 J table_base [21:0] $end $var reg 22 K x_base [21:0] $end $var reg 32 L y_bus [31:0] $end $var integer 32 M errors [31:0] $end $var integer 32 N errors_before [31:0] $end $var integer 32 O i [31:0] $end $var integer 32 P nm_delay [31:0] $end $var integer 32 Q seq_done_count [31:0] $end $scope module u_dut $end $var wire 22 R buf_a_base [21:0] $end $var wire 22 S buf_b_base [21:0] $end $var wire 1 < clk $end $var wire 1 = nm_busy $end $var wire 1 > nm_done $end $var wire 8 T ram_rdata [7:0] $end $var wire 1 A ram_ready $end $var wire 1 E rst $end $var wire 8 U run_num_layers [7:0] $end $var wire 1 G run_start $end $var wire 22 V table_base [21:0] $end $var wire 22 W x_base [21:0] $end $var wire 32 X y_bus [31:0] $end $var parameter 32 Y ADDR_WIDTH $end $var parameter 32 Z DATA_WIDTH $end $var parameter 32 [ N_LAYERS $end $var parameter 32 \ N_WIDTH $end $var parameter 4 ] ST_COPY_ISSUE $end $var parameter 4 ^ ST_COPY_WAIT $end $var parameter 4 _ ST_IDLE $end $var parameter 4 ` ST_READ_DESC $end $var parameter 4 a ST_READ_WAIT $end $var parameter 4 b ST_START_LAYER $end $var parameter 4 c ST_WAIT_LAYER $end $var reg 24 d bias_addr_acc [23:0] $end $var reg 3 e copy_idx [2:0] $end $var reg 1 f cur_sel $end $var reg 3 g desc_byte_idx [2:0] $end $var reg 22 h desc_table_addr [21:0] $end $var reg 8 i layer_idx [7:0] $end $var reg 22 j nm_bias_addr [21:0] $end $var reg 1 ) nm_start $end $var reg 22 k nm_w_base [21:0] $end $var reg 22 l nm_x_base [21:0] $end $var reg 8 m num_layers_reg [7:0] $end $var reg 22 n ram_addr [21:0] $end $var reg 1 % ram_req $end $var reg 8 o ram_wdata [7:0] $end $var reg 1 # ram_wr $end $var reg 1 " seq_busy $end $var reg 1 ! seq_done $end $var reg 4 p state [3:0] $end $var reg 24 q w_base_acc [23:0] $end $var reg 1 r write_sel $end $upscope $end $scope task clk_wait $end $var integer 32 s k [31:0] $end $var integer 32 t n [31:0] $end $upscope $end $scope task report $end $var reg 512 u label [511:0] $end $upscope $end $scope task stage_layer_output $end $var reg 32 v val [31:0] $end $upscope $end $upscope $end $enddefinitions $end $comment Show the parameter values. $end $dumpall b100 c b11 b b10 a b1 ` b0 _ b110 ^ b101 ] b100 \ b100 [ b1000 Z b10110 Y b10000 9 b100000000 8 17 06 b100 5 b100 4 b11000000000000 3 b100000000000000 2 b1000000000000 1 b10000000000000 0 b1000 / r12.5 . b1100000000 - b1000000000 , b10110 + $end #0 $dumpvars bx v bx u bx t bx s xr bx q bx p bx o bx n bx m bx l bx k bx j bx i bx h bx g xf bx e bx d b0 X b10000 W b100000000 V b0 U bx T b1100000000 S b1000000000 R bx Q bx P b1000000000000 O bx N b0 M b0 L b10000 K b100000000 J bx I xH 0G b0 F 1E xD bx C xB xA bx @ bx ? 0> 0= 0< b1100000000 ; b1000000000 : bx * x) bx ( bx ' bx & x% bx $ x# x" x! $end #6250 0! 0" b0 $ b0 o b0 & b0 n 0# 0% 0) b0 * b0 j b0 ( b0 k b0 ' b0 l b0 e 0r 0f b0 d b0 q b0 g b0 h b0 m b0 i b0 p b0 @ b0 T 0A 0B 0H b0 Q 1< #12500 0< #18750 1< #25000 0< #31250 1< #37500 0< #43750 1< #50000 0< #56250 0E 1< #62500 0< #68750 1< #75000 0< #81250 1< #87500 0< #93750 1< #100000 0< #106250 1< #112500 0< #118750 b101001000111110001010100001011 I b101001000111110001010100001011 v b0 N 1< #125000 b10 F b10 U 1G 0< #131250 b1 p b100000000 h b10 m 1" 1< #137500 b0 s b10 t 0G 0< #143750 b10 p b100000000 & b100000000 n 1% b1 s 1< #150000 0< #156250 0% 1B b0 C 0D b100000000 ? b10 s 1< #162500 0< #168750 0B 1A bx000000 @ bx000000 T 1< #175000 0< #181250 b1 p b1 g bx0000000000000000000000 q 0A 1< #187500 0< #193750 b10 p b100000001 & b100000001 n 1% 1< #200000 0< #206250 0% 1B b100000001 ? 1< #212500 0< #218750 0B 1A b10000 @ b10000 T 1< #225000 0< #231250 b1 p b10 g bx0000000001000000000000 q 0A 1< #237500 0< #243750 b10 p b100000010 & b100000010 n 1% 1< #250000 0< #256250 0% 1B b100000010 ? 1< #262500 0< #268750 0B 1A b0 @ b0 T 1< #275000 0< #281250 b1 p b11 g 0A 1< #287500 0< #293750 b10 p b100000011 & b100000011 n 1% 1< #300000 0< #306250 0% 1B b100000011 ? 1< #312500 0< #318750 0B 1A bx000000 @ bx000000 T 1< #325000 0< #331250 b1 p b100 g bx0000000000000000000000 d 0A 1< #337500 0< #343750 b10 p b100000100 & b100000100 n 1% 1< #350000 0< #356250 0% 1B b100000100 ? 1< #362500 0< #368750 0B 1A b100000 @ b100000 T 1< #375000 0< #381250 b1 p b101 g bx0000000010000000000000 d 0A 1< #387500 0< #393750 b10 p b100000101 & b100000101 n 1% 1< #400000 0< #406250 0% 1B b100000101 ? 1< #412500 0< #418750 0B 1A b0 @ b0 T 1< #425000 0< #431250 b11 p b0 g 0A 1< #437500 0< #443750 b100 p 1) b10000 ' b10000 l b10000000000000 * b10000000000000 j b1000000000000 ( b1000000000000 k 1< #450000 0< #456250 0) b11 P 1= 1< #462500 0< #468750 b10 P 1< #475000 0< #481250 b1 P 1< #487500 0< #493750 b0 P 1< #500000 0< #506250 b101001000111110001010100001011 L b101001000111110001010100001011 X 1> 0= 1< #512500 0< #518750 0> b101 p 1< #525000 0< #531250 b110 p b1011 $ b1011 o b1000000000 & b1000000000 n 1# 1% 1< #537500 0< #543750 1B b1011 C 1D b1000000000 ? 0% 1< #550000 0< #556250 0B 1A 1< #562500 0< #568750 0A b101 p b1 e 1< #575000 0< #581250 b110 p b10101 $ b10101 o b1000000001 & b1000000001 n 1% 1< #587500 0< #593750 1B b10101 C b1000000001 ? 0% 1< #600000 0< #606250 0B 1A 1< #612500 0< #618750 0A b101 p b10 e 1< #625000 0< #631250 b110 p b11111 $ b11111 o b1000000010 & b1000000010 n 1% 1< #637500 0< #643750 1B b11111 C b1000000010 ? 0% 1< #650000 0< #656250 0B 1A 1< #662500 0< #668750 0A b101 p b11 e 1< #675000 0< #681250 b110 p b101001 $ b101001 o b1000000011 & b1000000011 n 1% 1< #687500 0< #693750 1B b101001 C b1000000011 ? 0% 1< #700000 0< #706250 0B 1A 1< #712500 0< #718750 0A b1 p b100000110 h b1 i 1r 1< #725000 0< #731250 b10 p b100000110 & b100000110 n 0# 1% 1< #737500 0< #743750 1B 0D b100000110 ? 0% 1< #750000 0< #756250 0B 1A bx000000 @ bx000000 T 1< #762500 0< #768750 0A b1 p b1 g 1< #775000 0< #781250 b10 p b100000111 & b100000111 n 1% 1< #787500 0< #793750 1B b100000111 ? 0% 1< #800000 0< #806250 0B 1A b110000 @ b110000 T 1< #812500 0< #818750 0A b1 p b10 g bx0000000011000000000000 q 1< #825000 0< #831250 b10 p b100001000 & b100001000 n 1% 1< #837500 0< #843750 1B b100001000 ? 0% 1< #850000 0< #856250 0B 1A b0 @ b0 T 1< #862500 0< #868750 0A b1 p b11 g 1< #875000 0< #881250 b10 p b100001001 & b100001001 n 1% 1< #887500 0< #893750 1B b100001001 ? 0% 1< #900000 0< #906250 0B 1A bx000000 @ bx000000 T 1< #912500 0< #918750 0A b1 p b100 g 1< #925000 0< #931250 b10 p b100001010 & b100001010 n 1% 1< #937500 0< #943750 1B b100001010 ? 0% 1< #950000 0< #956250 0B 1A b1000000 @ b1000000 T 1< #962500 0< #968750 0A b1 p b101 g bx0000000100000000000000 d 1< #975000 0< #981250 b10 p b100001011 & b100001011 n 1% 1< #987500 0< #993750 1B b100001011 ? 0% 1< #1000000 0< #1006250 0B 1A b0 @ b0 T 1< #1012500 0< #1018750 0A b11 p b0 g 1< #1025000 0< #1031250 b101100001000010001011000001011 I b101100001000010001011000001011 v b100 p 1) b1000000000 ' b1000000000 l b100000000000000 * b100000000000000 j b11000000000000 ( b11000000000000 k 1< #1037500 0< #1043750 b11 P 1= 0) 1< #1050000 0< #1056250 b10 P 1< #1062500 0< #1068750 b1 P 1< #1075000 0< #1081250 b0 P 1< #1087500 0< #1093750 b101100001000010001011000001011 L b101100001000010001011000001011 X 1> 0= 1< #1100000 0< #1106250 b101 p b0 e 0> 1< #1112500 0< #1118750 b110 p b1011 $ b1011 o b1100000000 & b1100000000 n 1# 1% 1< #1125000 0< #1131250 0% 1B b1011 C 1D b1100000000 ? 1< #1137500 0< #1143750 0B 1A 1< #1150000 0< #1156250 b101 p b1 e 0A 1< #1162500 0< #1168750 b110 p b10110 $ b10110 o b1100000001 & b1100000001 n 1% 1< #1175000 0< #1181250 0% 1B b10110 C b1100000001 ? 1< #1187500 0< #1193750 0B 1A 1< #1200000 0< #1206250 b101 p b10 e 0A 1< #1212500 0< #1218750 b110 p b100001 $ b100001 o b1100000010 & b1100000010 n 1% 1< #1225000 0< #1231250 0% 1B b100001 C b1100000010 ? 1< #1237500 0< #1243750 0B 1A 1< #1250000 0< #1256250 b101 p b11 e 0A 1< #1262500 0< #1268750 b110 p b101100 $ b101100 o b1100000011 & b1100000011 n 1% 1< #1275000 0< #1281250 0% 1B b101100 C b1100000011 ? 1< #1287500 0< #1293750 0B 1A 1< #1300000 0< #1306250 b0 p 1! 0" 0A 1< #1312500 0< #1318750 b1 Q 0! b0 s b100 t 1< #1325000 0< #1331250 b1 s 1< #1337500 0< #1343750 b10 s 1< #1350000 0< #1356250 b11 s 1< #1362500 0< #1368750 b100000000110000001000000001 I b100000000110000001000000001 v b1010100010001010101001101010100001000000100000100111010001000000011001000101101011011000110000101111001011001010111001000100000011100100111010101101110001000000010100001100100011001010111001101100011011100100110100101110000011101000110111101110010001000000010111100100000011100000110100101101110011001110010110101110000011011110110111001100111001000000010111100100000011000110110111101110000011110010010110101101111011101010111010000101001 u b100 s 1< #1375000 b1 F b1 U 1G 0< #1381250 b1 p 0r b100000000 h b1 m b0 i 1" 1< #1387500 b0 s b10 t 0G 0< #1393750 b10 p b100000000 & b100000000 n 0# 1% b1 s 1< #1400000 0< #1406250 0% 1B 0D b100000000 ? b10 s 1< #1412500 b11 F b11 U 1G 0< #1418750 0B 1A bx000000 @ bx000000 T 1< #1425000 0G 0< #1431250 b1 p b1 g 0A 1< #1437500 0< #1443750 b10 p b100000001 & b100000001 n 1% 1< #1450000 0< #1456250 0% 1B b100000001 ? 1< #1462500 0< #1468750 0B 1A b10000 @ b10000 T 1< #1475000 0< #1481250 b1 p b10 g bx0000000001000000000000 q 0A 1< #1487500 0< #1493750 b10 p b100000010 & b100000010 n 1% 1< #1500000 0< #1506250 0% 1B b100000010 ? 1< #1512500 0< #1518750 0B 1A b0 @ b0 T 1< #1525000 0< #1531250 b1 p b11 g 0A 1< #1537500 0< #1543750 b10 p b100000011 & b100000011 n 1% 1< #1550000 0< #1556250 0% 1B b100000011 ? 1< #1562500 0< #1568750 0B 1A bx000000 @ bx000000 T 1< #1575000 0< #1581250 b1 p b100 g 0A 1< #1587500 0< #1593750 b10 p b100000100 & b100000100 n 1% 1< #1600000 0< #1606250 0% 1B b100000100 ? 1< #1612500 0< #1618750 0B 1A b100000 @ b100000 T 1< #1625000 0< #1631250 b1 p b101 g bx0000000010000000000000 d 0A 1< #1637500 0< #1643750 b10 p b100000101 & b100000101 n 1% 1< #1650000 0< #1656250 0% 1B b100000101 ? 1< #1662500 0< #1668750 0B 1A b0 @ b0 T 1< #1675000 0< #1681250 b11 p b0 g 0A 1< #1687500 0< #1693750 b100 p 1) b10000 ' b10000 l b10000000000000 * b10000000000000 j b1000000000000 ( b1000000000000 k 1< #1700000 0< #1706250 0) b11 P 1= 1< #1712500 0< #1718750 b10 P 1< #1725000 0< #1731250 b1 P 1< #1737500 0< #1743750 b0 P 1< #1750000 0< #1756250 b100000000110000001000000001 L b100000000110000001000000001 X 1> 0= 1< #1762500 0< #1768750 0> b101 p b0 e 1< #1775000 0< #1781250 b110 p b1 $ b1 o b1000000000 & b1000000000 n 1# 1% 1< #1787500 0< #1793750 1B b1 C 1D b1000000000 ? 0% 1< #1800000 0< #1806250 0B 1A 1< #1812500 0< #1818750 0A b101 p b1 e 1< #1825000 0< #1831250 b110 p b10 $ b10 o b1000000001 & b1000000001 n 1% 1< #1837500 0< #1843750 1B b10 C b1000000001 ? 0% 1< #1850000 0< #1856250 0B 1A 1< #1862500 0< #1868750 0A b101 p b10 e 1< #1875000 0< #1881250 b110 p b11 $ b11 o b1000000010 & b1000000010 n 1% 1< #1887500 0< #1893750 1B b11 C b1000000010 ? 0% 1< #1900000 0< #1906250 0B 1A 1< #1912500 0< #1918750 0A b101 p b11 e 1< #1925000 0< #1931250 b110 p b100 $ b100 o b1000000011 & b1000000011 n 1% 1< #1937500 0< #1943750 1B b100 C b1000000011 ? 0% 1< #1950000 0< #1956250 0B 1A 1< #1962500 0< #1968750 0A b0 p 1! 0" 1< #1975000 0< #1981250 0! b10 Q b0 s b100 t 1< #1987500 0< #1993750 b1 s 1< #2000000 0< #2006250 b10 s 1< #2012500 0< #2018750 b11 s 1< #2025000 0< #2031250 b10101000100010101010011010101000010000001000010001110100010000001110010011101010110111001011111011100110111010001100001011100100111010000100000011100100110010100101101011100000111010101101100011100110110010100100000011011010110100101100100001011010111001001110101011011100010000001100100011011110110010101110011001000000110111001101111011101000010000001100011011011110111001001110010011101010111000001110100001000000111001101110100011000010111010001100101 u b100 s 1<