@@ -70,6 +70,9 @@ def assign(self, r):
7070 def set (self , r ):
7171 return self .assign (r )
7272
73+ def __call__ (self , r ):
74+ return self .assign (r )
75+
7376 def __ilshift__ (self , r ):
7477 return self .assign (r )
7578
@@ -78,6 +81,7 @@ def __setattr__(self, name, value):
7881 return self .assign (value )
7982 else :
8083 _Numeric .__setattr__ (self , name , value )
84+
8185
8286#-------------------------------------------------------------------------------
8387class Reg (_Variable ): pass
@@ -195,14 +199,19 @@ def __init__(self, var, step):
195199
196200#-------------------------------------------------------------------------------
197201class Always (_VtypesObject ):
198- def __init__ (self , sensitivity , statement ):
202+ def __init__ (self , sensitivity , * statement ):
199203 self .sensitivity = sensitivity
200- self .statement = statement
204+ self .statement = tuple (statement )
205+
206+ def __call__ (self , * statement ):
207+ if self .statement :
208+ raise ValueError ("Statement is already assigned." )
209+ self .statement = tuple (statement )
210+ return self
201211
202212class Assign (_VtypesObject ):
203- def __init__ (self , left , right ):
204- self .left = left
205- self .right = right
213+ def __init__ (self , statement ):
214+ self .statement = statement
206215
207216#-------------------------------------------------------------------------------
208217class Edge (_VtypesObject ):
@@ -219,11 +228,26 @@ def __init__(self, left, right):
219228 self .right = right
220229
221230class If (_VtypesObject ):
222- def __init__ (self , condition , true_statement , false_statement = None ):
231+ def __init__ (self , condition , true_statement = None , false_statement = None ):
223232 self .condition = condition
224233 self .true_statement = true_statement
225234 self .false_statement = false_statement
226235
236+ def __call__ (self , * args ):
237+ if self .true_statement is None :
238+ self .true_statement = tuple (args )
239+ return self
240+ if self .false_statement is None :
241+ self .false_statement = tuple (args )
242+ return self
243+ raise ValueError ("True statement and False statement are already assigned." )
244+
245+ def els (self , * args ):
246+ if self .false_statement is None :
247+ self .false_statement = tuple (args )
248+ return self
249+ raise ValueError ("False statement is already assigned." )
250+
227251class For (_VtypesObject ):
228252 def __init__ (self , pre , condition , post , statement ):
229253 self .pre = pre
0 commit comments