@@ -37,42 +37,42 @@ def __init__(self, name=None, tmp_prefix='_tmp'):
3737 # User interface for variables
3838 #---------------------------------------------------------------------------
3939 def Input (self , name , width = None , length = None , signed = False , value = None ):
40- t = vtypes .Input (name , width , length , signed , value )
40+ t = vtypes .Input (width , length , signed , value , name = name )
4141 if not isinstance (self .find_identifier (name ), (vtypes .AnyType , vtypes .Wire )):
4242 raise ValueError ("Object '%s' is already defined." % name )
4343 self .io_variable [name ] = t
4444 self .items .append (t )
4545 return t
4646
4747 def Output (self , name , width = None , length = None , signed = False , value = None ):
48- t = vtypes .Output (name , width , length , signed , value )
48+ t = vtypes .Output (width , length , signed , value , name = name )
4949 if not isinstance (self .find_identifier (name ), (vtypes .AnyType , vtypes .Wire , vtypes .Reg )):
5050 raise ValueError ("Object '%s' is already defined." % name )
5151 self .io_variable [name ] = t
5252 self .items .append (t )
5353 return t
5454
5555 def OutputReg (self , name , width = None , length = None , signed = False , value = None , initval = None ):
56- t = vtypes .Output (name , width , length , signed , value )
56+ t = vtypes .Output (width , length , signed , value , name = name )
5757 if not isinstance (self .find_identifier (name ), vtypes .AnyType ):
5858 raise ValueError ("Object '%s' is already defined." % name )
5959 self .io_variable [name ] = t
6060 self .items .append (t )
61- t = vtypes .Reg (name , width , length , signed , value , initval )
61+ t = vtypes .Reg (width , length , signed , value , initval , name = name )
6262 self .variable [name ] = t
6363 self .items .append (t )
6464 return t
6565
6666 def Inout (self , name , width = None , length = None , signed = False , value = None ):
67- t = vtypes .Inout (name , width , length , signed , value )
67+ t = vtypes .Inout (width , length , signed , value , name = name )
6868 if not isinstance (self .find_identifier (name ), (vtypes .AnyType , vtypes .Wire )):
6969 raise ValueError ("Object '%s' is already defined." % name )
7070 self .io_variable [name ] = t
7171 self .items .append (t )
7272 return t
7373
7474 def Wire (self , name , width = None , length = None , signed = False , value = None ):
75- t = vtypes .Wire (name , width , length , signed , value )
75+ t = vtypes .Wire (width , length , signed , value , name = name )
7676 if not isinstance (self .find_identifier (name ),
7777 (vtypes .AnyType , vtypes .Input , vtypes .Output )) or self .is_reg (name ):
7878 raise ValueError ("Object '%s' is already defined." % name )
@@ -85,7 +85,7 @@ def TmpWire(self, width=None, length=None, signed=False, value=None):
8585 return self .Wire (name , width , length , signed , value )
8686
8787 def Reg (self , name , width = None , length = None , signed = False , value = None , initval = None ):
88- t = vtypes .Reg (name , width , length , signed , value , initval )
88+ t = vtypes .Reg (width , length , signed , value , initval , name = name )
8989 if not isinstance (self .find_identifier (name ), (vtypes .AnyType , vtypes .Output )):
9090 raise ValueError ("Object '%s' is already defined." % name )
9191 self .variable [name ] = t
@@ -97,7 +97,7 @@ def TmpReg(self, width=None, length=None, signed=False, value=None, initval=None
9797 return self .Reg (name , width , length , signed , value , initval )
9898
9999 def Integer (self , name , width = None , length = None , signed = False , value = None , initval = None ):
100- t = vtypes .Integer (name , width , length , signed , value , initval )
100+ t = vtypes .Integer (width , length , signed , value , initval , name = name )
101101 if not isinstance (self .find_identifier (name ), vtypes .AnyType ):
102102 raise ValueError ("Object '%s' is already defined." % name )
103103 self .variable [name ] = t
@@ -109,7 +109,7 @@ def TmpInteger(self, width=None, length=None, signed=False, value=None, initval=
109109 return self .Integer (name , width , length , signed , value , initval )
110110
111111 def Real (self , name , width = None , length = None , signed = False , value = None , initval = None ):
112- t = vtypes .Real (name , width , length , signed , value , initval )
112+ t = vtypes .Real (width , length , signed , value , initval , name = name )
113113 if not isinstance (self .find_identifier (name ), vtypes .AnyType ):
114114 raise ValueError ("Object '%s' is already defined." % name )
115115 self .variable [name ] = t
@@ -121,7 +121,7 @@ def TmpReal(self, width=None, length=None, signed=False, value=None, initval=Non
121121 return self .Real (name , width , length , signed , value , initval )
122122
123123 def Genvar (self , name , width = None , length = None , signed = False , value = None ):
124- t = vtypes .Genvar (name , width , length , signed , value )
124+ t = vtypes .Genvar (width , length , signed , value , name = name )
125125 if not isinstance (self .find_identifier (name ), vtypes .AnyType ):
126126 raise ValueError ("Object '%s' is already defined." % name )
127127 self .variable [name ] = t
@@ -133,15 +133,15 @@ def TmpGenvar(self, width=None, length=None, signed=False, value=None):
133133 return self .Genvar (name , width , length , signed , value )
134134
135135 def Parameter (self , name , value , width = None , signed = False , length = None ):
136- t = vtypes .Parameter (name , value , width , signed )
136+ t = vtypes .Parameter (value , width , signed , name = name )
137137 if not isinstance (self .find_identifier (name ), vtypes .AnyType ):
138138 raise ValueError ("Object '%s' is already defined." % name )
139139 self .global_constant [name ] = t
140140 self .items .append (t )
141141 return t
142142
143143 def Localparam (self , name , value , width = None , signed = False , length = None ):
144- t = vtypes .Localparam (name , value , width , signed )
144+ t = vtypes .Localparam (value , width , signed , name = name )
145145 if not isinstance (self .find_identifier (name ), vtypes .AnyType ):
146146 raise ValueError ("Object '%s' is already defined." % name )
147147 self .local_constant [name ] = t
@@ -500,7 +500,7 @@ def copy_sim_ports(self, src, prefix=None, postfix=None, exclude=None):
500500 for ex in exclude :
501501 if re .match (ex , key ): skip = True
502502 if skip : continue
503- copy_obj = self .get_opposite_variable (obj )(key , copy .deepcopy (obj .width ))
503+ copy_obj = self .get_opposite_variable (obj )(name = key , width = copy .deepcopy (obj .width ))
504504 copy_obj .name = '' .join ([prefix , copy_obj .name , postfix ])
505505 copy_obj .width = visitor .visit (copy_obj .width )
506506 copy_obj .signed = obj .signed
@@ -563,6 +563,9 @@ def add_hook(self, method, args=None, kwargs=None):
563563
564564 #---------------------------------------------------------------------------
565565 def add_object (self , obj ):
566+ if isinstance (obj , vtypes ._Variable ) and obj .name is None :
567+ raise ValueError ("Object must have a name." )
568+
566569 self .items .append (obj )
567570
568571 if isinstance (obj , vtypes .AnyType ):
@@ -665,7 +668,7 @@ def find_identifier(self, name):
665668 if name in self .task : return self .task [name ]
666669 if name in self .instance : return self .instance [name ]
667670 if name in self .generate : return self .generate [name ]
668- return vtypes .AnyType (name )
671+ return vtypes .AnyType (name = name )
669672
670673 #---------------------------------------------------------------------------
671674 def get_tmp (self ):
@@ -711,7 +714,7 @@ def get_opposite_variable(self, var, use_wire=False):
711714 if isinstance (var , vtypes .Inout ):
712715 return vtypes .Wire
713716 raise TypeError ('No corresponding IO type for %s' % str (type (var )))
714-
717+
715718 #---------------------------------------------------------------------------
716719 def to_hook_resolved_obj (self ):
717720 # if there is no hooked method, object copy is not required.
@@ -783,6 +786,9 @@ def to_verilog(self, filename=None):
783786 import veriloggen .verilog .to_verilog as to_verilog
784787 return to_verilog .write_verilog (self , filename )
785788
789+ def resolve_hook (self ):
790+ pass
791+
786792 def has_hook (self ):
787793 return False
788794
@@ -891,7 +897,7 @@ def find_identifier(self, name):
891897 r = self .m .find_identifier (name )
892898 if r :
893899 return r
894- return vtypes .AnyType (name )
900+ return vtypes .AnyType (name = name )
895901
896902 def get_modules (self ):
897903 modules = collections .OrderedDict ()
0 commit comments