@@ -83,7 +83,7 @@ def __init__(self, m, name, clk, rst, width=32, initname='init',
83
83
if not nohook :
84
84
self .m .add_hook (self .implement )
85
85
86
- #-------------------------------------------------------------------------
86
+ # -------------------------------------------------------------------------
87
87
def goto (self , dst , cond = None , else_dst = None ):
88
88
if cond is None and 'cond' in self .next_kwargs :
89
89
cond = self .next_kwargs ['cond' ]
@@ -130,7 +130,7 @@ def goto_from(self, src, dst, cond=None, else_dst=None):
130
130
def inc (self ):
131
131
self ._set_index (None )
132
132
133
- #-------------------------------------------------------------------------
133
+ # -------------------------------------------------------------------------
134
134
def add (self , * statement , ** kwargs ):
135
135
""" add new assignments """
136
136
kwargs .update (self .next_kwargs )
@@ -152,11 +152,15 @@ def add(self, *statement, **kwargs):
152
152
self ._clear_last_if_statement ()
153
153
return self ._add_statement (statement , ** kwargs )
154
154
155
- #-------------------------------------------------------------------------
155
+ # -------------------------------------------------------------------------
156
+ def add_reset (self , v ):
157
+ return self .seq .add_reset (v )
158
+
159
+ # -------------------------------------------------------------------------
156
160
def Prev (self , var , delay , initval = 0 , cond = None , prefix = None ):
157
161
return self .seq .Prev (var , delay , initval , cond , prefix )
158
162
159
- #-------------------------------------------------------------------------
163
+ # -------------------------------------------------------------------------
160
164
def If (self , * cond ):
161
165
self ._clear_elif_cond ()
162
166
@@ -267,7 +271,7 @@ def Clear(self):
267
271
self ._clear_elif_cond ()
268
272
return self
269
273
270
- #-------------------------------------------------------------------------
274
+ # -------------------------------------------------------------------------
271
275
@property
272
276
def current (self ):
273
277
return self .state_count
@@ -314,15 +318,15 @@ def then(self):
314
318
def here (self ):
315
319
return self .state == self .current
316
320
317
- #-------------------------------------------------------------------------
321
+ # -------------------------------------------------------------------------
318
322
def implement (self ):
319
323
if self .as_module :
320
324
self .make_module ()
321
325
return
322
326
323
327
self .make_always ()
324
328
325
- #-------------------------------------------------------------------------
329
+ # -------------------------------------------------------------------------
326
330
def make_always (self , reset = (), body = (), case = True ):
327
331
if self .done :
328
332
#raise ValueError('make_always() has been already called.')
@@ -340,7 +344,7 @@ def make_always(self, reset=(), body=(), case=True):
340
344
part_body ,
341
345
))
342
346
343
- #-------------------------------------------------------------------------
347
+ # -------------------------------------------------------------------------
344
348
def make_module (self , reset = (), body = (), case = True ):
345
349
if self .done :
346
350
#raise ValueError('make_always() has been already called.')
@@ -530,7 +534,7 @@ def make_module(self, reset=(), body=(), case=True):
530
534
sub = Submodule (self .m , m , 'inst_' + m .name , '_%s_' % self .name ,
531
535
arg_params = arg_params , arg_ports = arg_ports )
532
536
533
- #-------------------------------------------------------------------------
537
+ # -------------------------------------------------------------------------
534
538
def make_case (self ):
535
539
indexes = set (self .body .keys ())
536
540
indexes .update (set (self .jump .keys ()))
@@ -578,7 +582,7 @@ def make_if(self):
578
582
for index in sorted (indexes , key = lambda x :x )])
579
583
return ret
580
584
581
- #-------------------------------------------------------------------------
585
+ # -------------------------------------------------------------------------
582
586
def make_reset (self , reset ):
583
587
ret = collections .OrderedDict ()
584
588
@@ -621,19 +625,19 @@ def make_reset(self, reset):
621
625
622
626
return list (ret .values ())
623
627
624
- #-------------------------------------------------------------------------
628
+ # -------------------------------------------------------------------------
625
629
def set_index (self , index ):
626
630
return self ._set_index (index )
627
631
628
- #-------------------------------------------------------------------------
632
+ # -------------------------------------------------------------------------
629
633
def _go (self , src , dst , cond = None , else_dst = None ):
630
634
self ._add_jump (src , dst , cond , else_dst )
631
635
return self
632
636
633
637
def _add_jump (self , src , dst , cond = None , else_dst = None ):
634
638
self .jump [src ].append ((dst , cond , else_dst ))
635
639
636
- #-------------------------------------------------------------------------
640
+ # -------------------------------------------------------------------------
637
641
def _add_statement (self , statement , index = None , keep = None , delay = None , cond = None ,
638
642
lazy_cond = False , eager_val = False , no_delay_cond = False ):
639
643
@@ -686,7 +690,7 @@ def _add_statement(self, statement, index=None, keep=None, delay=None, cond=None
686
690
687
691
return self
688
692
689
- #-------------------------------------------------------------------------
693
+ # -------------------------------------------------------------------------
690
694
def _add_dst_var (self , statement ):
691
695
for s in statement :
692
696
values = self .dst_visitor .visit (s )
@@ -695,7 +699,7 @@ def _add_dst_var(self, statement):
695
699
if k not in self .dst_var :
696
700
self .dst_var [k ] = v
697
701
698
- #-------------------------------------------------------------------------
702
+ # -------------------------------------------------------------------------
699
703
def _add_delayed_cond (self , statement , index , delay ):
700
704
name_prefix = '_' .join (
701
705
['' , self .name , 'cond' , str (index ), str (self .tmp_count )])
@@ -709,7 +713,7 @@ def _add_delayed_cond(self, statement, index, delay):
709
713
prev = tmp
710
714
return prev
711
715
712
- #-------------------------------------------------------------------------
716
+ # -------------------------------------------------------------------------
713
717
def _add_delayed_subst (self , subst , index , delay ):
714
718
if not isinstance (subst , vtypes .Subst ):
715
719
return subst
@@ -734,7 +738,7 @@ def _add_delayed_subst(self, subst, index, delay):
734
738
prev = tmp
735
739
return left (prev )
736
740
737
- #-------------------------------------------------------------------------
741
+ # -------------------------------------------------------------------------
738
742
def _clear_next_kwargs (self ):
739
743
self .next_kwargs = {}
740
744
@@ -756,7 +760,7 @@ def _make_cond(self, condlist):
756
760
ret = vtypes .Ands (ret , cond )
757
761
return ret
758
762
759
- #-------------------------------------------------------------------------
763
+ # -------------------------------------------------------------------------
760
764
def _set_index (self , index = None ):
761
765
if index is None :
762
766
self .state_count += 1
@@ -784,7 +788,7 @@ def _get_mark_index(self, s):
784
788
return index
785
789
raise KeyError ("No such mark in FSM marks: %s" % s .name )
786
790
787
- #-------------------------------------------------------------------------
791
+ # -------------------------------------------------------------------------
788
792
def _add_mark (self , index ):
789
793
index = self ._to_index (index )
790
794
if index not in self .mark :
@@ -797,7 +801,7 @@ def _to_index(self, index):
797
801
index = self ._get_mark_index (index )
798
802
return index
799
803
800
- #-------------------------------------------------------------------------
804
+ # -------------------------------------------------------------------------
801
805
def _add_delayed_state (self , value ):
802
806
if not isinstance (value , int ):
803
807
raise TypeError ("Delay amount must be int, not '%s'" %
@@ -851,7 +855,7 @@ def _to_state_assign(self, dst, cond=None, else_dst=None):
851
855
value = value .Else (self .state (else_dst_mark ))
852
856
return value
853
857
854
- #-------------------------------------------------------------------------
858
+ # -------------------------------------------------------------------------
855
859
def _cond_case (self , index ):
856
860
if index not in self .mark :
857
861
self ._set_mark (index )
@@ -895,7 +899,7 @@ def _get_if_statement(self, index):
895
899
def _get_delayed_if_statement (self , index , delay ):
896
900
return vtypes .If (self ._delayed_cond_if (index , delay ))(* self .delayed_body [delay ][index ])
897
901
898
- #-------------------------------------------------------------------------
902
+ # -------------------------------------------------------------------------
899
903
def __call__ (self , * statement , ** kwargs ):
900
904
return self .add (* statement , ** kwargs )
901
905
0 commit comments