Ejemplo n.º 1
0
 def copy_ports_as_vars(self,
                        src,
                        prefix=None,
                        postfix=None,
                        include=None,
                        exclude=None,
                        rename_exclude=None,
                        use_wire=False):
     if prefix is None:
         prefix = ''
     if postfix is None:
         postfix = ''
     if include is None:
         include = ()
     if isinstance(include, str):
         include = [include]
     if exclude is None:
         exclude = ()
     if isinstance(exclude, str):
         exclude = [exclude]
     if rename_exclude is None:
         rename_exclude = ()
     if isinstance(rename_exclude, str):
         rename_exclude = [rename_exclude]
     visitor = rename_visitor.RenameVisitor(prefix, postfix, rename_exclude)
     ret = collections.OrderedDict()
     for key, obj in src.io_variable.items():
         if not include:
             skip = False
         else:
             skip = True
         for inc in include:
             if re.match(inc, key):
                 skip = False
         for ex in exclude:
             if re.match(ex, key):
                 skip = True
         if skip:
             continue
         copy_obj = self.get_opposite_variable(obj, use_wire)(
             name=key,
             width=copy.deepcopy(obj.width),
             initval=obj.initval,
             signed=obj.signed,
             module=self)
         copy_obj.name = ''.join([prefix, copy_obj.name, postfix])
         copy_obj.width = visitor.visit(copy_obj.width)
         copy_obj.initval = visitor.visit(copy_obj.initval)
         copy_obj.signed = obj.signed
         self.add_object(copy_obj)
         ret[copy_obj.name] = copy_obj
     return ret
Ejemplo n.º 2
0
 def copy_localparams(self,
                      src,
                      prefix=None,
                      postfix=None,
                      include=None,
                      exclude=None,
                      rename_exclude=None):
     if prefix is None:
         prefix = ''
     if postfix is None:
         postfix = ''
     if include is None:
         include = ()
     if isinstance(include, str):
         include = [include]
     if exclude is None:
         exclude = ()
     if isinstance(exclude, str):
         exclude = [exclude]
     if rename_exclude is None:
         rename_exclude = ()
     if isinstance(rename_exclude, str):
         rename_exclude = [rename_exclude]
     visitor = rename_visitor.RenameVisitor(prefix, postfix, rename_exclude)
     ret = collections.OrderedDict()
     for key, obj in src.constant.items():
         if not include:
             skip = False
         else:
             skip = True
         for inc in include:
             if re.match(inc, key):
                 skip = False
         for ex in exclude:
             if re.match(ex, key):
                 skip = True
         if skip:
             continue
         copy_obj = copy.deepcopy(obj)
         copy_obj.name = ''.join([prefix, copy_obj.name, postfix])
         copy_obj.width = visitor.visit(copy_obj.width)
         copy_obj.signed = obj.signed
         self.add_object(copy_obj)
         ret[copy_obj.name] = copy_obj
     return ret
Ejemplo n.º 3
0
 def copy_ports(self, src, prefix=None, postfix=None, exclude=None):
     if prefix is None: prefix = ''
     if postfix is None: postfix = ''
     if exclude is None: exclude = ()
     if isinstance(exclude, str): exclude = [exclude]
     visitor = rename_visitor.RenameVisitor(prefix, postfix)
     ret = collections.OrderedDict()
     for key, obj in src.io_variable.items():
         skip = False
         for ex in exclude:
             if re.match(ex, key): skip = True
         if skip: continue
         copy_obj = copy.deepcopy(obj)
         copy_obj.name = ''.join([prefix, copy_obj.name, postfix])
         copy_obj.width = visitor.visit(copy_obj.width)
         copy_obj.signed = obj.signed
         self.add_object(copy_obj)
         ret[copy_obj.name] = copy_obj
     return ret