@@ -515,19 +515,29 @@ def __getitem__(self, r):
515515# raise e
516516
517517 #-------------------------------------------------------------------------
518- def copy_params (self , src , prefix = None , postfix = None , exclude = None ):
518+ def copy_params (self , src , prefix = None , postfix = None , include = None , exclude = None ):
519519 if prefix is None :
520520 prefix = ''
521521 if postfix is None :
522522 postfix = ''
523+ if include is None :
524+ include = ()
525+ if isinstance (include , str ):
526+ include = [include ]
523527 if exclude is None :
524528 exclude = ()
525529 if isinstance (exclude , str ):
526530 exclude = [exclude ]
527531 visitor = rename_visitor .RenameVisitor (prefix , postfix )
528532 ret = collections .OrderedDict ()
529533 for key , obj in src .global_constant .items ():
530- skip = False
534+ if not include :
535+ skip = False
536+ else :
537+ skip = True
538+ for inc in include :
539+ if re .match (inc , key ):
540+ skip = False
531541 for ex in exclude :
532542 if re .match (ex , key ):
533543 skip = True
@@ -541,19 +551,29 @@ def copy_params(self, src, prefix=None, postfix=None, exclude=None):
541551 ret [copy_obj .name ] = copy_obj
542552 return ret
543553
544- def copy_localparams (self , src , prefix = None , postfix = None , exclude = None ):
554+ def copy_localparams (self , src , prefix = None , postfix = None , include = None , exclude = None ):
545555 if prefix is None :
546556 prefix = ''
547557 if postfix is None :
548558 postfix = ''
559+ if include is None :
560+ include = ()
561+ if isinstance (include , str ):
562+ include = [include ]
549563 if exclude is None :
550564 exclude = ()
551565 if isinstance (exclude , str ):
552566 exclude = [exclude ]
553567 visitor = rename_visitor .RenameVisitor (prefix , postfix )
554568 ret = collections .OrderedDict ()
555569 for key , obj in src .constant .items ():
556- skip = False
570+ if not include :
571+ skip = False
572+ else :
573+ skip = True
574+ for inc in include :
575+ if re .match (inc , key ):
576+ skip = False
557577 for ex in exclude :
558578 if re .match (ex , key ):
559579 skip = True
@@ -567,19 +587,29 @@ def copy_localparams(self, src, prefix=None, postfix=None, exclude=None):
567587 ret [copy_obj .name ] = copy_obj
568588 return ret
569589
570- def copy_ports (self , src , prefix = None , postfix = None , exclude = None ):
590+ def copy_ports (self , src , prefix = None , postfix = None , include = None , exclude = None ):
571591 if prefix is None :
572592 prefix = ''
573593 if postfix is None :
574594 postfix = ''
595+ if include is None :
596+ include = ()
597+ if isinstance (include , str ):
598+ include = [include ]
575599 if exclude is None :
576600 exclude = ()
577601 if isinstance (exclude , str ):
578602 exclude = [exclude ]
579603 visitor = rename_visitor .RenameVisitor (prefix , postfix )
580604 ret = collections .OrderedDict ()
581605 for key , obj in src .io_variable .items ():
582- skip = False
606+ if not include :
607+ skip = False
608+ else :
609+ skip = True
610+ for inc in include :
611+ if re .match (inc , key ):
612+ skip = False
583613 for ex in exclude :
584614 if re .match (ex , key ):
585615 skip = True
@@ -593,19 +623,29 @@ def copy_ports(self, src, prefix=None, postfix=None, exclude=None):
593623 ret [copy_obj .name ] = copy_obj
594624 return ret
595625
596- def copy_vars (self , src , prefix = None , postfix = None , exclude = None ):
626+ def copy_vars (self , src , prefix = None , postfix = None , include = None , exclude = None ):
597627 if prefix is None :
598628 prefix = ''
599629 if postfix is None :
600630 postfix = ''
631+ if include is None :
632+ include = ()
633+ if isinstance (include , str ):
634+ include = [include ]
601635 if exclude is None :
602636 exclude = ()
603637 if isinstance (exclude , str ):
604638 exclude = [exclude ]
605639 visitor = rename_visitor .RenameVisitor (prefix , postfix )
606640 ret = collections .OrderedDict ()
607641 for key , obj in src .variable .items ():
608- skip = False
642+ if not include :
643+ skip = False
644+ else :
645+ skip = True
646+ for inc in include :
647+ if re .match (inc , key ):
648+ skip = False
609649 for ex in exclude :
610650 if re .match (ex , key ):
611651 skip = True
@@ -619,25 +659,36 @@ def copy_vars(self, src, prefix=None, postfix=None, exclude=None):
619659 ret [copy_obj .name ] = copy_obj
620660 return ret
621661
622- def copy_sim_ports (self , src , prefix = None , postfix = None , exclude = None ):
662+ def copy_sim_ports (self , src , prefix = None , postfix = None , include = None , exclude = None ,
663+ use_wire = False ):
623664 if prefix is None :
624665 prefix = ''
625666 if postfix is None :
626667 postfix = ''
668+ if include is None :
669+ include = ()
670+ if isinstance (include , str ):
671+ include = [include ]
627672 if exclude is None :
628673 exclude = ()
629674 if isinstance (exclude , str ):
630675 exclude = [exclude ]
631676 visitor = rename_visitor .RenameVisitor (prefix , postfix )
632677 ret = collections .OrderedDict ()
633678 for key , obj in src .io_variable .items ():
634- skip = False
679+ if not include :
680+ skip = False
681+ else :
682+ skip = True
683+ for inc in include :
684+ if re .match (inc , key ):
685+ skip = False
635686 for ex in exclude :
636687 if re .match (ex , key ):
637688 skip = True
638689 if skip :
639690 continue
640- copy_obj = self .get_opposite_variable (obj )(
691+ copy_obj = self .get_opposite_variable (obj , use_wire )(
641692 name = key , width = copy .deepcopy (obj .width ))
642693 copy_obj .name = '' .join ([prefix , copy_obj .name , postfix ])
643694 copy_obj .width = visitor .visit (copy_obj .width )
@@ -647,18 +698,28 @@ def copy_sim_ports(self, src, prefix=None, postfix=None, exclude=None):
647698 return ret
648699
649700 #-------------------------------------------------------------------------
650- def connect_params (self , targ , prefix = None , postfix = None , exclude = None , strict = False ):
701+ def connect_params (self , targ , prefix = None , postfix = None , include = None , exclude = None , strict = False ):
651702 if prefix is None :
652703 prefix = ''
653704 if postfix is None :
654705 postfix = ''
706+ if include is None :
707+ include = ()
708+ if isinstance (include , str ):
709+ include = [include ]
655710 if exclude is None :
656711 exclude = ()
657712 if isinstance (exclude , str ):
658713 exclude = [exclude ]
659714 ret = []
660715 for key , obj in targ .global_constant .items ():
661- skip = False
716+ if not include :
717+ skip = False
718+ else :
719+ skip = True
720+ for inc in include :
721+ if re .match (inc , key ):
722+ skip = False
662723 for ex in exclude :
663724 if re .match (ex , key ):
664725 skip = True
@@ -674,18 +735,28 @@ def connect_params(self, targ, prefix=None, postfix=None, exclude=None, strict=F
674735 ret .append ((key , self .local_constant [my_key ]))
675736 return ret
676737
677- def connect_ports (self , targ , prefix = None , postfix = None , exclude = None , strict = False ):
738+ def connect_ports (self , targ , prefix = None , postfix = None , include = None , exclude = None , strict = False ):
678739 if prefix is None :
679740 prefix = ''
680741 if postfix is None :
681742 postfix = ''
743+ if include is None :
744+ include = ()
745+ if isinstance (include , str ):
746+ include = [include ]
682747 if exclude is None :
683748 exclude = ()
684749 if isinstance (exclude , str ):
685750 exclude = [exclude ]
686751 ret = []
687752 for key , obj in targ .io_variable .items ():
688- skip = False
753+ if not include :
754+ skip = False
755+ else :
756+ skip = True
757+ for inc in include :
758+ if re .match (inc , key ):
759+ skip = False
689760 for ex in exclude :
690761 if re .match (ex , key ):
691762 skip = True
0 commit comments