@@ -231,21 +231,23 @@ def implement(self, m=None, clock=None, reset=None, aswire=None, seq_name=None):
231231 def add_dump (self , m , seq , input_vars , output_vars , all_vars ):
232232 dump_enable_name = '_stream_dump_enable_%d' % self .object_id
233233 dump_enable = m .Reg (dump_enable_name , initval = 0 )
234- dump_iter_name = '_stream_dump_iter_ %d' % self .object_id
235- dump_iter = m .Reg (dump_iter_name , 32 , initval = 0 )
234+ dump_step_name = '_stream_dump_step_ %d' % self .object_id
235+ dump_step = m .Reg (dump_step_name , 32 , initval = 0 , signed = True )
236236
237+ self .dump_step = dump_step
237238 self .dump_enable = dump_enable
238239
239240 pipeline_depth = self .pipeline_depth ()
240- log_pipeline_depth = int (math .ceil (math .log (pipeline_depth , 10 )))
241+ log_pipeline_depth = max (
242+ int (math .ceil (math .log (pipeline_depth , 10 ))), 1 )
241243
242244 seq (
243- dump_iter (0 )
245+ dump_step (0 )
244246 )
245247
246248 for i in range (pipeline_depth + 1 ):
247249 seq .If (seq .Prev (dump_enable , i ))(
248- dump_iter .inc ()
250+ dump_step .inc ()
249251 )
250252
251253 def get_name (obj ):
@@ -257,7 +259,9 @@ def get_name(obj):
257259
258260 longest_name_len = 0
259261 for input_var in sorted (input_vars , key = lambda x : x .object_id ):
260- if not (self .dump_mode == 'all' or self .dump_mode == 'input' or
262+ if not (self .dump_mode == 'all' or
263+ self .dump_mode == 'stream' or
264+ self .dump_mode == 'input' or
261265 self .dump_mode == 'inout' or
262266 (self .dump_mode == 'selective' and
263267 hasattr (input_var , 'dump' ) and input_var .dump )):
@@ -271,6 +275,7 @@ def get_name(obj):
271275 if x .end_stage is None else
272276 (x .end_stage , x .object_id )):
273277 if not (self .dump_mode == 'all' or
278+ self .dump_mode == 'stream' or
274279 (self .dump_mode == 'selective' and
275280 hasattr (var , 'dump' ) and var .dump )):
276281 continue
@@ -280,7 +285,9 @@ def get_name(obj):
280285 longest_name_len = max (longest_name_len , length )
281286
282287 for output_var in sorted (output_vars , key = lambda x : x .object_id ):
283- if not (self .dump_mode == 'all' or self .dump_mode == 'output' or
288+ if not (self .dump_mode == 'all' or
289+ self .dump_mode == 'stream' or
290+ self .dump_mode == 'output' or
284291 self .dump_mode == 'inout' or
285292 (self .dump_mode == 'selective' and
286293 hasattr (output_var , 'dump' ) and output_var .dump )):
@@ -325,7 +332,9 @@ def get_name(obj):
325332
326333 enables = []
327334 for input_var in sorted (input_vars , key = lambda x : x .object_id ):
328- if not (self .dump_mode == 'all' or self .dump_mode == 'input' or
335+ if not (self .dump_mode == 'all' or
336+ self .dump_mode == 'stream' or
337+ self .dump_mode == 'input' or
329338 self .dump_mode == 'inout' or
330339 (self .dump_mode == 'selective' and
331340 hasattr (input_var , 'dump' ) and input_var .dump )):
@@ -336,14 +345,15 @@ def get_name(obj):
336345 name = get_name (input_var .sig_data )
337346 name_alignment = ' ' * (longest_name_len - len (name ) -
338347 len ('(in) ' ))
339- fmt = '' .join (['<' , self .name , '> (iter %d) ' ,
340- '(stage %' , str (log_pipeline_depth ), 'd, age %d) ' , '(in) ' ,
348+ fmt = '' .join (['<' , self .name , ' step:%d, ' ,
349+ 'stage:%' , str (
350+ log_pipeline_depth ), 'd, age:%d> (in) ' ,
341351 name_alignment , name , ' = ' , vfmt ])
342352
343353 stage = input_var .end_stage if input_var .end_stage is not None else 0
344354 enable = seq .Prev (dump_enable , stage )
345355 enables .append (enable )
346- age = seq .Prev (dump_iter , stage )
356+ age = seq .Prev (dump_step , stage )
347357
348358 if input_var .point == 0 :
349359 sig_data = input_var .sig_data
@@ -352,13 +362,14 @@ def get_name(obj):
352362 1.0 * (2 ** input_var .point ))
353363
354364 seq .If (enable )(
355- vtypes .Display (fmt , dump_iter , stage , age , sig_data )
365+ vtypes .Display (fmt , dump_step , stage , age , sig_data )
356366 )
357367
358368 for var in sorted (all_vars , key = lambda x : (- 1 , x .object_id )
359369 if x .end_stage is None else
360370 (x .end_stage , x .object_id )):
361371 if not (self .dump_mode == 'all' or
372+ self .dump_mode == 'stream' or
362373 (self .dump_mode == 'selective' and
363374 hasattr (var , 'dump' ) and var .dump )):
364375 continue
@@ -369,13 +380,13 @@ def get_name(obj):
369380 name_alignment = ' ' * (longest_name_len - len (name ))
370381 stage = var .end_stage if var .end_stage is not None else 0
371382
372- fmt = '' .join (['<' , self .name , '> (iter %d) ' ,
373- '( stage %' , str (log_pipeline_depth ), 'd, age %d) ' ,
383+ fmt = '' .join (['<' , self .name , ' step:%d, ' ,
384+ 'stage: %' , str (log_pipeline_depth ), 'd, age:%d> ' ,
374385 name_alignment , name , ' = ' , vfmt ])
375386
376387 enable = seq .Prev (dump_enable , stage )
377388 enables .append (enable )
378- age = seq .Prev (dump_iter , stage )
389+ age = seq .Prev (dump_step , stage )
379390
380391 if var .point == 0 :
381392 sig_data = var .sig_data
@@ -384,11 +395,13 @@ def get_name(obj):
384395 1.0 * (2 ** var .point ))
385396
386397 seq .If (enable )(
387- vtypes .Display (fmt , dump_iter , stage , age , sig_data )
398+ vtypes .Display (fmt , dump_step , stage , age , sig_data )
388399 )
389400
390401 for output_var in sorted (output_vars , key = lambda x : x .object_id ):
391- if not (self .dump_mode == 'all' or self .dump_mode == 'output' or
402+ if not (self .dump_mode == 'all' or
403+ self .dump_mode == 'stream' or
404+ self .dump_mode == 'output' or
392405 self .dump_mode == 'inout' or
393406 (self .dump_mode == 'selective' and
394407 hasattr (output_var , 'dump' ) and output_var .dump )):
@@ -399,14 +412,15 @@ def get_name(obj):
399412 name = get_name (output_var .output_sig_data )
400413 name_alignment = ' ' * (longest_name_len - len (name ) -
401414 len ('(out) ' ))
402- fmt = '' .join (['<' , self .name , '> (iter %d) ' ,
403- '(stage %' , str (log_pipeline_depth ), 'd, age %d) ' , '(out) ' ,
415+ fmt = '' .join (['<' , self .name , ' step:%d, ' ,
416+ 'stage:%' , str (
417+ log_pipeline_depth ), 'd, age:%d> (out) ' ,
404418 name_alignment , name , ' = ' , vfmt ])
405419
406420 stage = output_var .end_stage if output_var .end_stage is not None else 0
407421 enable = seq .Prev (dump_enable , stage )
408422 enables .append (enable )
409- age = seq .Prev (dump_iter , stage )
423+ age = seq .Prev (dump_step , stage )
410424
411425 if output_var .point == 0 :
412426 sig_data = output_var .output_sig_data
@@ -415,13 +429,7 @@ def get_name(obj):
415429 1.0 * (2 ** output_var .point ))
416430
417431 seq .If (enable )(
418- vtypes .Display (fmt , dump_iter , stage , age , sig_data )
419- )
420-
421- if enables :
422- seq .If (vtypes .Ors (* enables ))(
423- vtypes .Display ('' .join (['<' , self .name , '> (iter %d) ' , '--------' ]),
424- dump_iter )
432+ vtypes .Display (fmt , dump_step , stage , age , sig_data )
425433 )
426434
427435 # -------------------------------------------------------------------------
0 commit comments