@@ -264,24 +264,21 @@ def __init__(self, name, width=1, length=None, signed=False, value=None, initval
264264 self .initval = initval
265265 self .subst = []
266266
267- def __call__ (self , r , ldelay = None , rdelay = None ):
268- return self .next (r , ldelay , rdelay )
269-
270267 def next (self , r , ldelay = None , rdelay = None ):
271268 return Subst (self , r , ldelay = ldelay , rdelay = rdelay )
272269
273270 def connect (self , prefix = '' , postfix = '' ):
274271 return ( prefix + self .name + postfix , self )
275272
276- def reset (self ):
277- return None
278-
279273 def add_subst (self , s ):
280274 self .subst .append (s )
281275
282276 def get_subst (self ):
283277 return self .subst
284278
279+ def reset (self ):
280+ return None
281+
285282 def bit_length (self ):
286283 return self .width
287284
@@ -293,10 +290,8 @@ def set_raw_length(self, msb, lsb):
293290 self .length_msb = msb
294291 self .length_lsb = lsb
295292
296- def __str__ (self ):
297- return self .name
298-
299293 def __setattr__ (self , attr , value ):
294+ # when width or length is overwritten, msb and lsb values are reset.
300295 if attr == 'width' :
301296 object .__setattr__ (self , 'width_msb' , None )
302297 object .__setattr__ (self , 'width_lsb' , None )
@@ -305,6 +300,12 @@ def __setattr__(self, attr, value):
305300 object .__setattr__ (self , 'length_lsb' , None )
306301 object .__setattr__ (self , attr , value )
307302
303+ def __str__ (self ):
304+ return self .name
305+
306+ def __call__ (self , r , ldelay = None , rdelay = None ):
307+ return self .next (r , ldelay , rdelay )
308+
308309#-------------------------------------------------------------------------------
309310class Input (_Variable ): pass
310311class Output (_Variable ): pass
@@ -632,9 +633,6 @@ def __init__(self, var, pos):
632633 self .pos = pos
633634 self .subst = []
634635
635- def __call__ (self , r ):
636- return self .next (r )
637-
638636 def next (self , r ):
639637 return Subst (self , r )
640638
@@ -649,16 +647,16 @@ def bit_length(self):
649647 def __str__ (self ):
650648 return '' .join ([str (self .var ), '[' , str (self .pos ), ']' ])
651649
650+ def __call__ (self , r ):
651+ return self .next (r )
652+
652653class Slice (_SpecialOperator ):
653654 def __init__ (self , var , msb , lsb ):
654655 self .var = var
655656 self .msb = msb
656657 self .lsb = lsb
657658 self .subst = []
658659
659- def __call__ (self , r ):
660- return self .next (r )
661-
662660 def next (self , r ):
663661 return Subst (self , r )
664662
@@ -671,14 +669,14 @@ def bit_length(self):
671669 def __str__ (self ):
672670 return '' .join ([str (self .var ), '[' , str (self .msb ), ':' , str (self .lsb ), ']' ])
673671
672+ def __call__ (self , r ):
673+ return self .next (r )
674+
674675class Cat (_SpecialOperator ):
675676 def __init__ (self , * vars ):
676677 self .vars = tuple (vars )
677678 self .subst = []
678679
679- def __call__ (self , r ):
680- return self .next (r )
681-
682680 def next (self , r ):
683681 return Subst (self , r )
684682
@@ -702,6 +700,9 @@ def __str__(self):
702700 ret .append ('}' )
703701 return '' .join (ret )
704702
703+ def __call__ (self , r ):
704+ return self .next (r )
705+
705706class Repeat (_SpecialOperator ):
706707 def __init__ (self , var , times ):
707708 self .var = var
@@ -762,15 +763,15 @@ def __init__(self, *sensitivity):
762763 self .sensitivity = tuple (sensitivity )
763764 self .statement = None
764765
765- def __call__ (self , * statement ):
766- return self .set_statement (* statement )
767-
768766 def set_statement (self , * statement ):
769767 if self .statement is not None :
770768 raise ValueError ("Statement is already assigned." )
771769 self .statement = tuple (statement )
772770 return self
773771
772+ def __call__ (self , * statement ):
773+ return self .set_statement (* statement )
774+
774775#-------------------------------------------------------------------------------
775776class Assign (VeriloggenNode ):
776777 def __init__ (self , statement ):
@@ -794,13 +795,6 @@ def __init__(self, condition):
794795 self .true_statement = None
795796 self .false_statement = None
796797
797- def __call__ (self , * args ):
798- if self .true_statement is None :
799- return self .set_true_statement (* args )
800- if self .false_statement is None :
801- return self .set_false_statement (* args )
802- raise ValueError ("True statement and False statement are already assigned." )
803-
804798 def set_true_statement (self , * statement ):
805799 self .true_statement = tuple (statement )
806800 return self
@@ -814,6 +808,13 @@ def Else(self, *statement):
814808 return self .set_false_statement (* statement )
815809 raise ValueError ("False statement is already assigned." )
816810
811+ def __call__ (self , * args ):
812+ if self .true_statement is None :
813+ return self .set_true_statement (* args )
814+ if self .false_statement is None :
815+ return self .set_false_statement (* args )
816+ raise ValueError ("True statement and False statement are already assigned." )
817+
817818#-------------------------------------------------------------------------------
818819class For (VeriloggenNode ):
819820 def __init__ (self , pre , condition , post ):
@@ -822,11 +823,6 @@ def __init__(self, pre, condition, post):
822823 self .post = post
823824 self .statement = None
824825
825- def __call__ (self , * args ):
826- if self .statement is None :
827- return self .set_statement (* args )
828- raise ValueError ("Statement body is already assigned." )
829-
830826 def set_statement (self , * statement ):
831827 self .statement = tuple (statement )
832828 return self
@@ -837,17 +833,17 @@ def add(self, *statement):
837833 self .statement = tuple (self .statement + statement )
838834 return self
839835
836+ def __call__ (self , * args ):
837+ if self .statement is None :
838+ return self .set_statement (* args )
839+ raise ValueError ("Statement body is already assigned." )
840+
840841#-------------------------------------------------------------------------------
841842class While (VeriloggenNode ):
842843 def __init__ (self , condition ):
843844 self .condition = condition
844845 self .statement = None
845846
846- def __call__ (self , * args ):
847- if self .statement is None :
848- return self .set_statement (* args )
849- raise ValueError ("Statement body is already assigned." )
850-
851847 def set_statement (self , * statement ):
852848 self .statement = tuple (statement )
853849 return self
@@ -858,18 +854,18 @@ def add(self, *statement):
858854 self .statement = tuple (self .statement + statement )
859855 return self
860856
857+ def __call__ (self , * args ):
858+ if self .statement is None :
859+ return self .set_statement (* args )
860+ raise ValueError ("Statement body is already assigned." )
861+
861862#-------------------------------------------------------------------------------
862863class Case (VeriloggenNode ):
863864 def __init__ (self , comp ):
864865 self .comp = comp
865866 self .statement = None
866867 self .last = False
867868
868- def __call__ (self , * args ):
869- if self .statement is None :
870- return self .set_statement (* args )
871- raise ValueError ("Case statement list is already assigned." )
872-
873869 def _type_check_statement (self , * statement ):
874870 for s in statement :
875871 if not isinstance (s , When ):
@@ -891,6 +887,11 @@ def add(self, *statement):
891887 self .statement = tuple (self .statement + statement )
892888 return self
893889
890+ def __call__ (self , * args ):
891+ if self .statement is None :
892+ return self .set_statement (* args )
893+ raise ValueError ("Case statement list is already assigned." )
894+
894895class Casex (Case ): pass
895896
896897class When (VeriloggenNode ) :
@@ -899,11 +900,6 @@ def __init__(self, *condition):
899900 self .condition = None if len (condition ) == 0 or condition [0 ] is None else tuple (condition )
900901 self .statement = None
901902
902- def __call__ (self , * args ):
903- if self .statement is None :
904- return self .set_statement (* args )
905- raise ValueError ("Statement body is already assigned." )
906-
907903 def _type_check_condition (self , * args ):
908904 if len (args ) == 0 :
909905 return
@@ -930,6 +926,11 @@ def add(self, *statement):
930926 self .statement = tuple (self .statement + statement )
931927 return self
932928
929+ def __call__ (self , * args ):
930+ if self .statement is None :
931+ return self .set_statement (* args )
932+ raise ValueError ("Statement body is already assigned." )
933+
933934#-------------------------------------------------------------------------------
934935class ScopeIndex (VeriloggenNode ):
935936 def __init__ (self , name , index ):
@@ -961,15 +962,15 @@ def __init__(self, condition):
961962 self .condition = condition
962963 self .statement = None
963964
964- def __call__ (self , * statement ):
965- return self .set_statement (* statement )
966-
967965 def set_statement (self , * statement ):
968966 if self .statement is not None :
969967 raise ValueError ("Statement is already assigned." )
970968 self .statement = tuple (statement )
971969 return self
972970
971+ def __call__ (self , * statement ):
972+ return self .set_statement (* statement )
973+
973974class Forever (VeriloggenNode ):
974975 def __init__ (self , * statement ):
975976 self .statement = tuple (statement )
@@ -982,4 +983,3 @@ def __init__(self, value):
982983class SingleStatement (VeriloggenNode ):
983984 def __init__ (self , statement ):
984985 self .statement = statement
985-
0 commit comments