Skip to content

Commit 2ddd498

Browse files
committed
vtypes is refactored.
1 parent 65c0727 commit 2ddd498

File tree

1 file changed

+52
-52
lines changed

1 file changed

+52
-52
lines changed

veriloggen/vtypes.py

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -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
#-------------------------------------------------------------------------------
309310
class Input(_Variable): pass
310311
class 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+
652653
class 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+
674675
class 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+
705706
class 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
#-------------------------------------------------------------------------------
775776
class 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
#-------------------------------------------------------------------------------
818819
class 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
#-------------------------------------------------------------------------------
841842
class 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
#-------------------------------------------------------------------------------
862863
class 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+
894895
class Casex(Case): pass
895896

896897
class 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
#-------------------------------------------------------------------------------
934935
class 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+
973974
class Forever(VeriloggenNode):
974975
def __init__(self, *statement):
975976
self.statement = tuple(statement)
@@ -982,4 +983,3 @@ def __init__(self, value):
982983
class SingleStatement(VeriloggenNode):
983984
def __init__(self, statement):
984985
self.statement = statement
985-

0 commit comments

Comments
 (0)