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
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
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