Skip to content

Commit 3e95e31

Browse files
committed
Merge branch 'fix_stream_dump_format' into develop
2 parents d1139ce + 4d38b94 commit 3e95e31

File tree

3 files changed

+58
-19
lines changed

3 files changed

+58
-19
lines changed

tests/extension/thread_/stream_fixed/thread_stream_fixed.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def mkLed():
1919

2020
datawidth = 32
2121
addrwidth = 10
22-
point = 4
22+
point = 32
2323
myaxi = vthread.AXIM(m, 'myaxi', clk, rst, datawidth)
2424
ram_a = vthread.FixedRAM(m, 'ram_a', clk, rst, datawidth, addrwidth,
2525
point=point)
@@ -32,14 +32,14 @@ def mkLed():
3232
a = strm.source('a', point=point)
3333
b = strm.source('b', point=point)
3434
const = strm.constant('const', point=point)
35-
c = a * b + const
35+
c = a + b + const
3636
strm.sink(c, 'c')
3737

3838
def comp_stream(size, offset):
3939
strm.set_source('a', ram_a, offset, size)
4040
strm.set_source('b', ram_b, offset, size)
4141
strm.set_sink('c', ram_c, offset, size)
42-
const = vthread.fixed.FixedConst(3.5, point=point)
42+
const = vthread.fixed.FixedConst(0.0, point=point)
4343
strm.set_constant('const', const)
4444
strm.run()
4545
strm.join()
@@ -48,10 +48,10 @@ def comp_sequential(size, offset):
4848
for i in range(size):
4949
a = ram_a.read(i + offset)
5050
b = ram_b.read(i + offset)
51-
const = vthread.fixed.FixedConst(3.5, point=point)
52-
c = a * b + const
51+
const = vthread.fixed.FixedConst(0.0, point=point)
52+
c = a + b + const
5353
ram_c.write(i + offset, c)
54-
print('a = %f, b = %f, const = %f, c = %f' % (a, b, const, c))
54+
#print('a = %f, b = %f, const = %f, c = %f' % (a, b, const, c))
5555

5656
def check(size, offset_stream, offset_seq):
5757
all_ok = True

veriloggen/stream/stream.py

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ def get_name(obj):
272272
self.dump_mode == 'input' or
273273
self.dump_mode == 'inout' or
274274
(self.dump_mode == 'selective' and
275-
hasattr(input_var, 'dump') and input_var.dump)):
275+
hasattr(input_var, 'dump') and input_var.dump)):
276276
continue
277277

278278
name = get_name(input_var.sig_data)
@@ -285,7 +285,7 @@ def get_name(obj):
285285
if not (self.dump_mode == 'all' or
286286
self.dump_mode == 'stream' or
287287
(self.dump_mode == 'selective' and
288-
hasattr(var, 'dump') and var.dump)):
288+
hasattr(var, 'dump') and var.dump)):
289289
continue
290290

291291
name = get_name(var.sig_data)
@@ -298,7 +298,7 @@ def get_name(obj):
298298
self.dump_mode == 'output' or
299299
self.dump_mode == 'inout' or
300300
(self.dump_mode == 'selective' and
301-
hasattr(output_var, 'dump') and output_var.dump)):
301+
hasattr(output_var, 'dump') and output_var.dump)):
302302
continue
303303

304304
name = get_name(output_var.output_sig_data)
@@ -317,8 +317,10 @@ def get_name(obj):
317317

318318
base = (var.dump_base if hasattr(var, 'dump_base') else
319319
self.dump_base)
320-
length = int(math.ceil(bit_length / math.log(base, 2)))
321-
longest_var_len = max(longest_var_len, length)
320+
total_length = int(math.ceil(bit_length / math.log(base, 2)))
321+
point_length = int(math.ceil(var.point / math.log(base, 2)))
322+
point_length = max(point_length, 8)
323+
longest_var_len = max(longest_var_len, total_length, point_length)
322324

323325
for input_var in sorted(input_vars, key=lambda x: x.object_id):
324326

@@ -334,7 +336,13 @@ def get_name(obj):
334336
' ' if base == 10 else
335337
'0x')
336338

337-
fmt_list = [prefix, '%', '%d' % (longest_var_len + 1), base_char]
339+
if base_char == 'f':
340+
point_length = int(math.ceil(input_var.point / math.log(base, 2)))
341+
point_length = max(point_length, 8)
342+
fmt_list = [prefix, '%',
343+
'%d.%d' % (longest_var_len + 1, point_length), base_char]
344+
else:
345+
fmt_list = [prefix, '%', '%d' % (longest_var_len + 1), base_char]
338346

339347
if input_var not in all_vars:
340348
fmt_list.append(' (unused)')
@@ -355,7 +363,13 @@ def get_name(obj):
355363
' ' if base == 10 else
356364
'0x')
357365

358-
fmt_list = [prefix, '%', '%d' % (longest_var_len + 1), base_char]
366+
if base_char == 'f':
367+
point_length = int(math.ceil(output_var.point / math.log(base, 2)))
368+
point_length = max(point_length, 8)
369+
fmt_list = [prefix, '%',
370+
'%d.%d' % (longest_var_len + 1, point_length), base_char]
371+
else:
372+
fmt_list = [prefix, '%', '%d' % (longest_var_len + 1), base_char]
359373

360374
if output_var not in all_vars:
361375
fmt_list.append(' (unused)')
@@ -378,7 +392,14 @@ def get_name(obj):
378392
' ' if base == 10 else
379393
'0x')
380394

381-
fmt_list = [prefix, '%', '%d' % (longest_var_len + 1), base_char]
395+
if base_char == 'f':
396+
point_length = int(math.ceil(var.point / math.log(base, 2)))
397+
point_length = max(point_length, 8)
398+
fmt_list = [prefix, '%',
399+
'%d.%d' % (longest_var_len + 1, point_length), base_char]
400+
else:
401+
fmt_list = [prefix, '%', '%d' % (longest_var_len + 1), base_char]
402+
382403
var.dump_fmt = ''.join(fmt_list)
383404

384405
enables = []
@@ -388,7 +409,7 @@ def get_name(obj):
388409
self.dump_mode == 'input' or
389410
self.dump_mode == 'inout' or
390411
(self.dump_mode == 'selective' and
391-
hasattr(input_var, 'dump') and input_var.dump)):
412+
hasattr(input_var, 'dump') and input_var.dump)):
392413
continue
393414

394415
vfmt = input_var.dump_fmt
@@ -422,7 +443,7 @@ def get_name(obj):
422443
if not (self.dump_mode == 'all' or
423444
self.dump_mode == 'stream' or
424445
(self.dump_mode == 'selective' and
425-
hasattr(var, 'dump') and var.dump)):
446+
hasattr(var, 'dump') and var.dump)):
426447
continue
427448

428449
vfmt = var.dump_fmt
@@ -455,7 +476,7 @@ def get_name(obj):
455476
self.dump_mode == 'output' or
456477
self.dump_mode == 'inout' or
457478
(self.dump_mode == 'selective' and
458-
hasattr(output_var, 'dump') and output_var.dump)):
479+
hasattr(output_var, 'dump') and output_var.dump)):
459480
continue
460481

461482
vfmt = output_var.dump_fmt

veriloggen/thread/stream.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,7 +1240,16 @@ def _setup_source_ram_dump(self, ram, var, read_enable, read_data):
12401240
'0o' if data_base == 8 else
12411241
' ' if data_base == 10 else
12421242
'0x')
1243-
data_vfmt = ''.join([data_prefix, '%', data_base_char])
1243+
if data_base_char == 'f':
1244+
point_len = int(math.ceil(ram.point / math.log(10, 2)))
1245+
point_len = max(point_len, 8)
1246+
total_len = int(math.ceil(ram.datawidth / math.log(10, 2)))
1247+
total_len = max(total_len, point_len)
1248+
data_vfmt = ''.join([data_prefix, '%',
1249+
'%d.%d' % (total_len + 1, point_len),
1250+
data_base_char])
1251+
else:
1252+
data_vfmt = ''.join([data_prefix, '%', data_base_char])
12441253

12451254
name = ram.name
12461255
fmt = ''.join(['(', self.name, ' step:%d, ',
@@ -1688,7 +1697,16 @@ def _setup_sink_ram_dump(self, ram, var, write_enable):
16881697
'0o' if data_base == 8 else
16891698
' ' if data_base == 10 else
16901699
'0x')
1691-
data_vfmt = ''.join([data_prefix, '%', data_base_char])
1700+
if data_base_char == 'f':
1701+
point_len = int(math.ceil(ram.point / math.log(10, 2)))
1702+
point_len = max(point_len, 8)
1703+
total_len = int(math.ceil(ram.datawidth / math.log(10, 2)))
1704+
total_len = max(total_len, point_len)
1705+
data_vfmt = ''.join([data_prefix, '%',
1706+
'%d.%d' % (total_len + 1, point_len),
1707+
data_base_char])
1708+
else:
1709+
data_vfmt = ''.join([data_prefix, '%', data_base_char])
16921710

16931711
name = ram.name
16941712
fmt = ''.join(['(', self.name, ' step:%d, ',

0 commit comments

Comments
 (0)