@@ -34,6 +34,8 @@ def mkLed(memory_datawidth=128):
34
34
array_len = 16
35
35
array_size = (array_len + array_len ) * 4 * numbanks
36
36
37
+ laddr_offset = 32
38
+
37
39
def blink (size ):
38
40
all_ok .value = True
39
41
@@ -53,50 +55,54 @@ def blink(size):
53
55
54
56
def body (size , offset ):
55
57
# write
58
+ ram_offset = laddr_offset // numbanks
56
59
for bank in range (numbanks ):
57
60
for i in range (size ):
58
61
wdata .value = i + 0x1000 + (bank << 16 )
59
- myram0 .write_bank (bank , i , wdata )
62
+ myram0 .write_bank (bank , ram_offset + i , wdata )
60
63
61
- laddr = 0
64
+ laddr = laddr_offset
62
65
gaddr = offset
63
66
myaxi .dma_write_packed (myram0 , laddr , gaddr , size * numbanks )
64
67
print ('dma_write: [%d] -> [%d]' % (laddr , gaddr ))
65
68
66
69
# write
70
+ ram_offset = laddr_offset // numbanks
67
71
for bank in range (numbanks ):
68
72
for i in range (size ):
69
73
wdata .value = i + 0x4000 + (bank << 16 )
70
- myram1 .write_bank (bank , i , wdata )
74
+ myram1 .write_bank (bank , ram_offset + i , wdata )
71
75
72
- laddr = 0
76
+ laddr = laddr_offset
73
77
gaddr = array_size + offset
74
78
myaxi .dma_write_packed (myram1 , laddr , gaddr , size * numbanks )
75
79
print ('dma_write: [%d] -> [%d]' % (laddr , gaddr ))
76
80
77
81
# read
78
- laddr = 0
82
+ laddr = laddr_offset
79
83
gaddr = offset
80
84
myaxi .dma_read_packed (myram1 , laddr , gaddr , size * numbanks )
81
85
print ('dma_read: [%d] <- [%d]' % (laddr , gaddr ))
82
86
87
+ ram_offset = laddr_offset // numbanks
83
88
for bank in range (numbanks ):
84
89
for i in range (size ):
85
- rdata .value = myram1 .read_bank (bank , i )
90
+ rdata .value = myram1 .read_bank (bank , ram_offset + i )
86
91
rexpected .value = i + 0x1000 + (bank << 16 )
87
92
if vthread .verilog .NotEql (rdata , rexpected ):
88
93
print ('rdata[%d:%d] = %d (expected %d)' % (bank , i , rdata , rexpected ))
89
94
all_ok .value = False
90
95
91
96
# read
92
- laddr = 0
97
+ laddr = laddr_offset
93
98
gaddr = array_size + offset
94
99
myaxi .dma_read_packed (myram0 , laddr , gaddr , size * numbanks )
95
100
print ('dma_read: [%d] <- [%d]' % (laddr , gaddr ))
96
101
102
+ ram_offset = laddr_offset // numbanks
97
103
for bank in range (numbanks ):
98
104
for i in range (size ):
99
- rdata .value = myram0 .read_bank (bank , i )
105
+ rdata .value = myram0 .read_bank (bank , ram_offset + i )
100
106
rexpected .value = i + 0x4000 + (bank << 16 )
101
107
if vthread .verilog .NotEql (rdata , rexpected ):
102
108
print ('rdata[%d:%d] = %d (expected %d)' % (bank , i , rdata , rexpected ))
0 commit comments