Files
FPGA-Neural/sim/int8_memory_access.vcd
T
micheleandClaude Sonnet 5 3dd75e9e0d test: certify memory subsystem addressing (C.3)
int8_memory_access.v byte<->word conversion and byte-lane selection:
exhaustive 2048-address test + 6 real read/write round-trips through
the FSM handshake. 2054/2054 checks, 0 mismatches, after fixing two
bugs in the test harness itself (a same-timestep race reading a
non-blocking update one iteration late, and a behavioral memory stub
that ignored byte-lane enables on write) -- both documented as
test-side, not RTL, issues.

memory_interface.v and psram_controller.v not re-verified from
scratch: cited against coverage already established/re-confirmed
earlier in this same session (page-mode/tCEM against the ISSI
datasheet, a real pre-existing power-up request-loss bug found and
fixed), re-run clean via the Phase 0 regression harness rather than
trusted from WORKLOG text alone.

Full regression: 39/39 real tests pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013xXuuRUWZScuo1DeYJxs3v
2026-09-04 14:33:05 +02:00

955 lines
6.8 KiB
Plaintext

$date
Fri Sep 4 14:31:15 2026
$end
$version
Icarus Verilog
$end
$timescale
1ps
$end
$scope module tb $end
$var wire 16 ! mem_rdata [15:0] $end
$var wire 1 " mem_ready $end
$var wire 1 # ready $end
$var wire 8 $ rdata [7:0] $end
$var wire 1 % mem_wr $end
$var wire 16 & mem_wdata [15:0] $end
$var wire 1 ' mem_ub_n $end
$var wire 1 ( mem_req $end
$var wire 1 ) mem_lb_n $end
$var wire 23 * mem_addr [22:0] $end
$var parameter 32 + ADDR_WIDTH $end
$var real 1 , CLK_PERIOD $end
$var reg 23 - addr [22:0] $end
$var reg 1 . clk $end
$var reg 16 / model_rdata [15:0] $end
$var reg 1 0 model_ready $end
$var reg 1 1 req $end
$var reg 1 2 rst $end
$var reg 8 3 wdata [7:0] $end
$var reg 1 4 wr $end
$var integer 32 5 i [31:0] $end
$scope module dut $end
$var wire 23 6 addr [22:0] $end
$var wire 1 . clk $end
$var wire 16 7 mem_rdata [15:0] $end
$var wire 1 " mem_ready $end
$var wire 1 1 req $end
$var wire 1 2 rst $end
$var wire 8 8 wdata [7:0] $end
$var wire 1 4 wr $end
$var parameter 32 9 ADDR_WIDTH $end
$var parameter 2 : STATE_IDLE $end
$var parameter 2 ; STATE_WAIT $end
$var reg 23 < addr_reg [22:0] $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 8 ? rdata [7:0] $end
$var reg 1 # ready $end
$var reg 2 @ state [1:0] $end
$upscope $end
$scope task read_byte $end
$var reg 23 A byte_addr [22:0] $end
$var reg 8 B expected [7:0] $end
$upscope $end
$scope task write_byte $end
$var reg 23 C byte_addr [22:0] $end
$var reg 8 D data [7:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
$comment Show the parameter values. $end
$dumpall
b1 ;
b0 :
b10111 9
r12.5 ,
b10111 +
$end
#0
$dumpvars
bx D
bx C
bx B
bx A
bx @
bx ?
bx >
bx =
bx <
b0 8
b0 7
b0 6
b10000000000 5
04
b0 3
12
01
00
b0 /
0.
b0 -
bx *
x)
x(
x'
bx &
x%
bx $
x#
0"
b0 !
$end
#6250
1'
1)
b0 &
b0 >
b0 *
b0 =
0%
0(
0#
b0 $
b0 ?
b0 <
b0 @
1.
#12500
0.
#18750
1.
#25000
0.
#31250
1.
#37500
0.
#43750
1.
#50000
0.
#56250
b10010 D
b0 C
02
1.
#62500
0.
#68750
11
14
b10010 3
b10010 8
1.
#75000
0.
#81250
01
b1 @
b10010 &
b10010 >
0)
1%
1(
1.
#87500
0.
#93750
1"
10
0(
1.
#100000
0.
#106250
b0 @
1#
0"
00
1.
#112500
0.
#118750
0#
b110100 D
b1 C
1.
#125000
0.
#131250
11
b110100 3
b110100 8
b1 -
b1 6
1.
#137500
0.
#143750
01
b1 @
b11010000000000 &
b11010000000000 >
0'
1)
1(
b1 <
1.
#150000
0.
#156250
0(
1"
10
1.
#162500
0.
#168750
0"
00
b0 @
1#
1.
#175000
0.
#181250
0#
b1010110 D
b10 C
1.
#187500
0.
#193750
11
b1010110 3
b1010110 8
b10 -
b10 6
1.
#200000
0.
#206250
01
b1 @
b1010110 &
b1010110 >
1'
0)
b1 *
b1 =
1(
b10 <
1.
#212500
0.
#218750
1"
10
0(
1.
#225000
0.
#231250
b0 @
1#
0"
00
1.
#237500
0.
#243750
0#
b1111000 D
b11 C
1.
#250000
0.
#256250
11
b1111000 3
b1111000 8
b11 -
b11 6
1.
#262500
0.
#268750
01
b1 @
b111100000000000 &
b111100000000000 >
0'
1)
1(
b11 <
1.
#275000
0.
#281250
0(
1"
10
1.
#287500
0.
#293750
0"
00
b0 @
1#
1.
#300000
0.
#306250
0#
b10010 B
b0 A
1.
#312500
0.
#318750
11
04
b0 -
b0 6
1.
#325000
0.
#331250
01
b1 @
b1111000 &
b1111000 >
1'
0)
b0 *
b0 =
0%
1(
b0 <
1.
#337500
0.
#343750
1"
10
b11010000010010 !
b11010000010010 7
b11010000010010 /
0(
1.
#350000
0.
#356250
b0 @
1#
b10010 $
b10010 ?
0"
00
1.
#362500
0.
#368750
0#
b110100 B
b1 A
1.
#375000
0.
#381250
11
b1 -
b1 6
1.
#387500
0.
#393750
01
b1 @
b111100000000000 &
b111100000000000 >
0'
1)
1(
b1 <
1.
#400000
0.
#406250
0(
1"
10
1.
#412500
0.
#418750
0"
00
b0 @
1#
b110100 $
b110100 ?
1.
#425000
0.
#431250
0#
b1010110 B
b10 A
1.
#437500
0.
#443750
11
b10 -
b10 6
1.
#450000
0.
#456250
01
b1 @
b1111000 &
b1111000 >
1'
0)
b1 *
b1 =
1(
b10 <
1.
#462500
0.
#468750
1"
10
b111100001010110 !
b111100001010110 7
b111100001010110 /
0(
1.
#475000
0.
#481250
b0 @
1#
b1010110 $
b1010110 ?
0"
00
1.
#487500
0.
#493750
0#
b1111000 B
b11 A
1.
#500000
0.
#506250
11
b11 -
b11 6
1.
#512500
0.
#518750
01
b1 @
b111100000000000 &
b111100000000000 >
0'
1)
1(
b11 <
1.
#525000
0.
#531250
0(
1"
10
1.
#537500
0.
#543750
0"
00
b0 @
1#
b1111000 $
b1111000 ?
1.
#550000
0.
#556250
0#
b110100 D
b10000 C
1.
#562500
0.
#568750
11
14
b110100 3
b110100 8
b10000 -
b10000 6
1.
#575000
0.
#581250
01
b1 @
b110100 &
b110100 >
1'
0)
b1000 *
b1000 =
1%
1(
b10000 <
1.
#587500
0.
#593750
1"
10
0(
1.
#600000
0.
#606250
b0 @
1#
b1010110 $
b1010110 ?
0"
00
1.
#612500
0.
#618750
0#
b10010 D
b10001 C
1.
#625000
0.
#631250
11
b10010 3
b10010 8
b10001 -
b10001 6
1.
#637500
0.
#643750
01
b1 @
b1001000000000 &
b1001000000000 >
0'
1)
1(
b10001 <
1.
#650000
0.
#656250
0(
1"
10
1.
#662500
0.
#668750
0"
00
b0 @
1#
b1111000 $
b1111000 ?
1.
#675000
0.
#681250
0#
b10101010 D
b10000 C
1.
#687500
0.
#693750
11
b10101010 3
b10101010 8
b10000 -
b10000 6
1.
#700000
0.
#706250
01
b1 @
b10101010 &
b10101010 >
1'
0)
1(
b10000 <
1.
#712500
0.
#718750
1"
10
0(
1.
#725000
0.
#731250
b0 @
1#
b1010110 $
b1010110 ?
0"
00
1.
#737500
0.
#743750
0#
b10111011 D
b10001 C
1.
#750000
0.
#756250
11
b10111011 3
b10111011 8
b10001 -
b10001 6
1.
#762500
0.
#768750
01
b1 @
b1011101100000000 &
b1011101100000000 >
0'
1)
1(
b10001 <
1.
#775000
0.
#781250
0(
1"
10
1.
#787500
0.
#793750
0"
00
b0 @
1#
b1111000 $
b1111000 ?
1.
#800000
0.
#806250
0#
b11111111 D
b100000 C
1.
#812500
0.
#818750
11
b11111111 3
b11111111 8
b100000 -
b100000 6
1.
#825000
0.
#831250
01
b1 @
b11111111 &
b11111111 >
1'
0)
b10000 *
b10000 =
1(
b100000 <
1.
#837500
0.
#843750
1"
10
0(
1.
#850000
0.
#856250
b0 @
1#
b1010110 $
b1010110 ?
0"
00
1.
#862500
0.
#868750
0#
b10000000 D
b100001 C
1.
#875000
0.
#881250
11
b10000000 3
b10000000 8
b100001 -
b100001 6
1.
#887500
0.
#893750
01
b1 @
b1000000000000000 &
b1000000000000000 >
0'
1)
1(
b100001 <
1.
#900000
0.
#906250
0(
1"
10
1.
#912500
0.
#918750
0"
00
b0 @
1#
b1111000 $
b1111000 ?
1.
#925000
0.
#931250
0#
b1111111 D
b100010 C
1.
#937500
0.
#943750
11
b1111111 3
b1111111 8
b100010 -
b100010 6
1.
#950000
0.
#956250
01
b1 @
b1111111 &
b1111111 >
1'
0)
b10001 *
b10001 =
1(
b100010 <
1.
#962500
0.
#968750
1"
10
0(
1.
#975000
0.
#981250
b0 @
1#
b1010110 $
b1010110 ?
0"
00
1.
#987500
0.
#993750
0#
b11111111 B
b100000 A
1.
#1000000
0.
#1006250
11
04
b100000 -
b100000 6
1.
#1012500
0.
#1018750
01
b1 @
b10000 *
b10000 =
0%
1(
b100000 <
1.
#1025000
0.
#1031250
0(
1"
10
b1000000011111111 !
b1000000011111111 7
b1000000011111111 /
1.
#1037500
0.
#1043750
0"
00
b0 @
1#
b11111111 $
b11111111 ?
1.
#1050000
0.
#1056250
0#
b10000000 B
b100001 A
1.
#1062500
0.
#1068750
11
b100001 -
b100001 6
1.
#1075000
0.
#1081250
01
b1 @
b111111100000000 &
b111111100000000 >
0'
1)
1(
b100001 <
1.
#1087500
0.
#1093750
1"
10
0(
1.
#1100000
0.
#1106250
b0 @
1#
b10000000 $
b10000000 ?
0"
00
1.
#1112500
0.
#1118750
0#
b1111111 B
b100010 A
1.
#1125000
0.
#1131250
11
b100010 -
b100010 6
1.
#1137500
0.
#1143750
01
b1 @
b1111111 &
b1111111 >
1'
0)
b10001 *
b10001 =
1(
b100010 <
1.
#1150000
0.
#1156250
0(
1"
10
b1111111 !
b1111111 7
b1111111 /
1.
#1162500
0.
#1168750
0"
00
b0 @
1#
b1111111 $
b1111111 ?
1.
#1175000
0.
#1181250
0#
1.