Skip to content

Commit 8538740

Browse files
committed
Accelerated write by data blocking.
1 parent dd28091 commit 8538740

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

veriloggen/types/axi.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2301,10 +2301,12 @@ def _make_img(filename, size, width, blksize=4096):
23012301
mask = np.full([1], 2 ** 8 - 1, dtype=np.int64)
23022302
data = (((zero + base) >> shamt) & mask).reshape([-1])
23032303
fmt = '%02x\n'
2304-
s = ''.join([fmt % d for d in data])
23052304

23062305
with open(filename, 'w') as f:
2307-
f.write(s)
2306+
for i in range(0, len(data), blksize):
2307+
blk = data[i:i + blksize]
2308+
s = ''.join([fmt % d for d in blk])
2309+
f.write(s)
23082310

23092311
def _make_fsm(self, write_delay=10, read_delay=10, sleep=4):
23102312
write_mode = 100
@@ -2558,7 +2560,7 @@ def make_memory_image(filename, length, pattern='inc', dtype=None,
25582560

25592561

25602562
def to_memory_image(filename, array, length=None,
2561-
datawidth=32, wordwidth=8, endian='little'):
2563+
datawidth=32, wordwidth=8, endian='little', blksize=4096):
25622564

25632565
import numpy as np
25642566

@@ -2592,9 +2594,12 @@ def to_memory_image(filename, array, length=None,
25922594

25932595
mask = np.full([1], 2 ** wordwidth - 1, dtype=np.int64)
25942596
data = (((zero + base) >> shamt) & mask).reshape([-1])
2595-
s = ''.join([fmt % d for d in data])
2597+
25962598
with open(filename, 'w') as f:
2597-
f.write(s)
2599+
for i in range(0, len(data), blksize):
2600+
blk = data[i:i + blksize]
2601+
s = ''.join([fmt % d for d in blk])
2602+
f.write(s)
25982603

25992604
return len(data)
26002605

@@ -2609,9 +2614,12 @@ def to_memory_image(filename, array, length=None,
26092614
mask = np.full([1], 2 ** datawidth - 1, dtype=np.int64)
26102615
data = (base.reshape([-1, num]) & mask) << shamt
26112616
data = np.bitwise_or.reduce(data, -1).reshape([-1])
2612-
s = ''.join(fmt % d for d in data)
2617+
26132618
with open(filename, 'w') as f:
2614-
f.write(s)
2619+
for i in range(0, len(data), blksize):
2620+
blk = data[i:i + blksize]
2621+
s = ''.join([fmt % d for d in blk])
2622+
f.write(s)
26152623

26162624
return len(data)
26172625

0 commit comments

Comments
 (0)