Skip to content

Commit e9e7cc2

Browse files
committed
Merge branch 'feature_stream_debug' into develop
2 parents 55c42db + 20259f6 commit e9e7cc2

File tree

3 files changed

+37
-26
lines changed

3 files changed

+37
-26
lines changed

tests/extension/thread_/stream_dump/thread_stream_dump.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def mkLed():
2525
ram_c = vthread.RAM(m, 'ram_c', clk, rst, datawidth, addrwidth)
2626

2727
strm = vthread.Stream(m, 'mystream', clk, rst,
28-
dump=True, dump_mode='all')
28+
dump=True, dump_base=10, dump_mode='all')
2929
a = strm.source('a')
3030
b = strm.source('b')
3131
c = a + b

veriloggen/stream/stream.py

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def __init__(self, *nodes, **opts):
6969

7070
self.aswire = opts['aswire'] if 'aswire' in opts else True
7171
self.dump = opts['dump'] if 'dump' in opts else False
72-
self.dump_fmt = opts['dump_fmt'] if 'dump_fmt' in opts else None
72+
self.dump_base = opts['dump_base'] if 'dump_base' in opts else 10
7373
self.dump_mode = opts['dump_mode'] if 'dump_mode' in opts else 'all'
7474

7575
self.seq = None
@@ -290,23 +290,37 @@ def get_name(obj):
290290
length = len(name) + 6
291291
longest_name_len = max(longest_name_len, length)
292292

293-
if self.dump_fmt is None:
294-
longest_var_len = 0
295-
for var in sorted(all_vars, key=lambda x: (-1, x.object_id)
296-
if x.start_stage is None else
297-
(x.start_stage, x.object_id)):
298-
bit_length = var.sig_data.bit_length()
299-
if bit_length is None:
300-
bit_length = 1
301-
if bit_length <= 0:
302-
bit_length = 1
303-
length = int(math.ceil(bit_length / math.log(10, 2)))
304-
longest_var_len = max(longest_name_len, length)
305-
306-
val_fmt = ''.join(['%', '%d' % (longest_var_len + 1), 'd'])
293+
longest_var_len = 0
294+
for var in sorted(all_vars, key=lambda x: (-1, x.object_id)
295+
if x.start_stage is None else
296+
(x.start_stage, x.object_id)):
297+
bit_length = var.sig_data.bit_length()
298+
if bit_length is None:
299+
bit_length = 1
300+
if bit_length <= 0:
301+
bit_length = 1
302+
303+
base = (var.dump_base if hasattr(var, 'dump_base') else
304+
self.dump_base)
305+
length = int(math.ceil(bit_length / math.log(base, 2)))
306+
longest_var_len = max(longest_var_len, length)
307307

308-
else:
309-
val_fmt = self.dump_fmt
308+
for var in sorted(all_vars, key=lambda x: (-1, x.object_id)
309+
if x.start_stage is None else
310+
(x.start_stage, x.object_id)):
311+
312+
base = (var.dump_base if hasattr(var, 'dump_base') else
313+
self.dump_base)
314+
base_char = ('b' if base == 2 else
315+
'o' if base == 8 else
316+
'd' if base == 10 else
317+
'x')
318+
prefix = ('0b' if base == 2 else
319+
'0o' if base == 8 else
320+
' ' if base == 10 else
321+
'0x')
322+
var.dump_fmt = ''.join(
323+
[prefix, '%', '%d' % (longest_var_len + 1), base_char])
310324

311325
enables = []
312326
for input_var in sorted(input_vars, key=lambda x: x.object_id):
@@ -316,8 +330,7 @@ def get_name(obj):
316330
hasattr(input_var, 'dump') and input_var.dump)):
317331
continue
318332

319-
vfmt = (val_fmt if not hasattr(input_var, 'dump_fmt') else
320-
input_var.dump_fmt)
333+
vfmt = input_var.dump_fmt
321334

322335
name = get_name(input_var.sig_data)
323336
name_alignment = ' ' * (longest_name_len - len(name) -
@@ -343,8 +356,7 @@ def get_name(obj):
343356
hasattr(var, 'dump') and var.dump)):
344357
continue
345358

346-
vfmt = (val_fmt if not hasattr(var, 'dump_fmt') else
347-
var.dump_fmt)
359+
vfmt = var.dump_fmt
348360

349361
name = get_name(var.sig_data)
350362
name_alignment = ' ' * (longest_name_len - len(name))
@@ -369,8 +381,7 @@ def get_name(obj):
369381
hasattr(output_var, 'dump') and output_var.dump)):
370382
continue
371383

372-
vfmt = (val_fmt if not hasattr(output_var, 'dump_fmt') else
373-
output_var.dump_fmt)
384+
vfmt = output_var.dump_fmt
374385

375386
name = get_name(output_var.output_sig_data)
376387
name_alignment = ' ' * (longest_name_len - len(name) -

veriloggen/thread/stream.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ def __init__(self, m, name, clk, rst,
5252
datawidth=32, addrwidth=32,
5353
max_pattern_length=4, max_multipattern_length=2,
5454
ram_sel_width=8, fsm_as_module=False,
55-
dump=False, dump_fmt=None, dump_mode='all'):
55+
dump=False, dump_base=10, dump_mode='all'):
5656

5757
BaseStream.__init__(self, module=m, clock=clk, reset=rst,
5858
no_hook=True,
59-
dump=dump, dump_fmt=dump_fmt, dump_mode=dump_mode)
59+
dump=dump, dump_base=dump_base, dump_mode=dump_mode)
6060

6161
self.name = name
6262
self.datawidth = datawidth

0 commit comments

Comments
 (0)