Skip to content

Commit 9e5d510

Browse files
committed
use_fullmatch option for copy_ports and similar methods.
1 parent 52a1c14 commit 9e5d510

File tree

3 files changed

+84
-25
lines changed

3 files changed

+84
-25
lines changed

veriloggen/core/module.py

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,9 @@ def __getitem__(self, r):
603603

604604
#-------------------------------------------------------------------------
605605
def copy_params(self, src, prefix=None, postfix=None,
606-
include=None, exclude=None, rename_exclude=None):
606+
include=None, exclude=None, rename_exclude=None,
607+
use_fullmatch=False):
608+
607609
if prefix is None:
608610
prefix = ''
609611
if postfix is None:
@@ -628,9 +630,13 @@ def copy_params(self, src, prefix=None, postfix=None,
628630
else:
629631
skip = True
630632
for inc in include:
633+
if use_fullmatch:
634+
inc = ''.join(('^', inc, '$'))
631635
if re.match(inc, key):
632636
skip = False
633637
for ex in exclude:
638+
if use_fullmatch:
639+
ex = ''.join(('^', ex, '$'))
634640
if re.match(ex, key):
635641
skip = True
636642
if skip:
@@ -644,7 +650,9 @@ def copy_params(self, src, prefix=None, postfix=None,
644650
return ret
645651

646652
def copy_params_as_localparams(self, src, prefix=None, postfix=None,
647-
include=None, exclude=None, rename_exclude=None):
653+
include=None, exclude=None, rename_exclude=None,
654+
use_fullmatch=False):
655+
648656
if prefix is None:
649657
prefix = ''
650658
if postfix is None:
@@ -669,9 +677,13 @@ def copy_params_as_localparams(self, src, prefix=None, postfix=None,
669677
else:
670678
skip = True
671679
for inc in include:
680+
if use_fullmatch:
681+
inc = ''.join(('^', inc, '$'))
672682
if re.match(inc, key):
673683
skip = False
674684
for ex in exclude:
685+
if use_fullmatch:
686+
ex = ''.join(('^', ex, '$'))
675687
if re.match(ex, key):
676688
skip = True
677689
if skip:
@@ -686,7 +698,9 @@ def copy_params_as_localparams(self, src, prefix=None, postfix=None,
686698
return ret
687699

688700
def copy_localparams(self, src, prefix=None, postfix=None,
689-
include=None, exclude=None, rename_exclude=None):
701+
include=None, exclude=None, rename_exclude=None,
702+
use_fullmatch=False):
703+
690704
if prefix is None:
691705
prefix = ''
692706
if postfix is None:
@@ -711,9 +725,13 @@ def copy_localparams(self, src, prefix=None, postfix=None,
711725
else:
712726
skip = True
713727
for inc in include:
728+
if use_fullmatch:
729+
inc = ''.join(('^', inc, '$'))
714730
if re.match(inc, key):
715731
skip = False
716732
for ex in exclude:
733+
if use_fullmatch:
734+
ex = ''.join(('^', ex, '$'))
717735
if re.match(ex, key):
718736
skip = True
719737
if skip:
@@ -727,7 +745,9 @@ def copy_localparams(self, src, prefix=None, postfix=None,
727745
return ret
728746

729747
def copy_ports(self, src, prefix=None, postfix=None,
730-
include=None, exclude=None, rename_exclude=None):
748+
include=None, exclude=None, rename_exclude=None,
749+
use_fullmatch=False):
750+
731751
if prefix is None:
732752
prefix = ''
733753
if postfix is None:
@@ -752,9 +772,13 @@ def copy_ports(self, src, prefix=None, postfix=None,
752772
else:
753773
skip = True
754774
for inc in include:
775+
if use_fullmatch:
776+
inc = ''.join(('^', inc, '$'))
755777
if re.match(inc, key):
756778
skip = False
757779
for ex in exclude:
780+
if use_fullmatch:
781+
ex = ''.join(('^', ex, '$'))
758782
if re.match(ex, key):
759783
skip = True
760784
if skip:
@@ -768,7 +792,9 @@ def copy_ports(self, src, prefix=None, postfix=None,
768792
return ret
769793

770794
def copy_ports_as_vars(self, src, prefix=None, postfix=None,
771-
include=None, exclude=None, rename_exclude=None, use_wire=False):
795+
include=None, exclude=None, rename_exclude=None,
796+
use_fullmatch=False, use_wire=False):
797+
772798
if prefix is None:
773799
prefix = ''
774800
if postfix is None:
@@ -793,9 +819,13 @@ def copy_ports_as_vars(self, src, prefix=None, postfix=None,
793819
else:
794820
skip = True
795821
for inc in include:
822+
if use_fullmatch:
823+
inc = ''.join(('^', inc, '$'))
796824
if re.match(inc, key):
797825
skip = False
798826
for ex in exclude:
827+
if use_fullmatch:
828+
ex = ''.join(('^', ex, '$'))
799829
if re.match(ex, key):
800830
skip = True
801831
if skip:
@@ -812,7 +842,9 @@ def copy_ports_as_vars(self, src, prefix=None, postfix=None,
812842
return ret
813843

814844
def copy_vars(self, src, prefix=None, postfix=None,
815-
include=None, exclude=None, rename_exclude=None):
845+
include=None, exclude=None, rename_exclude=None,
846+
use_fullmatch=False):
847+
816848
if prefix is None:
817849
prefix = ''
818850
if postfix is None:
@@ -837,9 +869,13 @@ def copy_vars(self, src, prefix=None, postfix=None,
837869
else:
838870
skip = True
839871
for inc in include:
872+
if use_fullmatch:
873+
inc = ''.join(('^', inc, '$'))
840874
if re.match(inc, key):
841875
skip = False
842876
for ex in exclude:
877+
if use_fullmatch:
878+
ex = ''.join(('^', ex, '$'))
843879
if re.match(ex, key):
844880
skip = True
845881
if skip:
@@ -853,9 +889,12 @@ def copy_vars(self, src, prefix=None, postfix=None,
853889
return ret
854890

855891
def copy_sim_ports(self, src, prefix=None, postfix=None,
856-
include=None, exclude=None, rename_exclude=None, use_wire=False):
857-
return self.copy_ports_as_vars(src, prefix, postfix, include, exclude,
858-
rename_exclude, use_wire)
892+
include=None, exclude=None, rename_exclude=None,
893+
use_fullmatch=False, use_wire=False):
894+
895+
return self.copy_ports_as_vars(src, prefix, postfix,
896+
include, exclude, rename_exclude,
897+
use_fullmatch, use_wire)
859898

860899
#-------------------------------------------------------------------------
861900
def connect_params(self, targ, prefix=None, postfix=None,
@@ -879,9 +918,13 @@ def connect_params(self, targ, prefix=None, postfix=None,
879918
else:
880919
skip = True
881920
for inc in include:
921+
if use_fullmatch:
922+
inc = ''.join(('^', inc, '$'))
882923
if re.match(inc, key):
883924
skip = False
884925
for ex in exclude:
926+
if use_fullmatch:
927+
ex = ''.join(('^', ex, '$'))
885928
if re.match(ex, key):
886929
skip = True
887930
if skip:
@@ -918,9 +961,13 @@ def connect_ports(self, targ, prefix=None, postfix=None,
918961
else:
919962
skip = True
920963
for inc in include:
964+
if use_fullmatch:
965+
inc = ''.join(('^', inc, '$'))
921966
if re.match(inc, key):
922967
skip = False
923968
for ex in exclude:
969+
if use_fullmatch:
970+
ex = ''.join(('^', ex, '$'))
924971
if re.match(ex, key):
925972
skip = True
926973
if skip:

veriloggen/core/submodule.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ def __init__(self, parent, child,
2828
self.child = child
2929

3030
if name is None:
31-
name = '_'.join(('inst', child.name))
31+
name = child.name
32+
3233
self.name = name
3334

3435
if prefix is None:
35-
prefix = ''
36+
prefix = '_'.join((name, ''))
37+
3638
self.prefix = prefix
3739

3840
child_params = child.get_params()
@@ -99,7 +101,8 @@ def __init__(self, parent, child,
99101
if arg_params:
100102
new_params.update(
101103
parent.copy_params_as_localparams(child, self.prefix,
102-
include=arg_params.keys()))
104+
include=arg_params.keys(),
105+
use_fullmatch=True))
103106

104107
# localparams
105108
# used ones only
@@ -108,9 +111,11 @@ def __init__(self, parent, child,
108111
new_localparams.update(
109112
parent.copy_params_as_localparams(child, self.prefix,
110113
include=used_params,
111-
exclude=arg_params.keys()))
114+
exclude=arg_params.keys(),
115+
use_fullmatch=True))
112116
new_localparams.update(
113-
parent.copy_localparams(child, self.prefix, include=used_params))
117+
parent.copy_localparams(child, self.prefix, include=used_params,
118+
use_fullmatch=True))
114119

115120
# overwrite the parameter value by parameter arg
116121
for key, param in arg_params.items():
@@ -121,20 +126,23 @@ def __init__(self, parent, child,
121126
# ports
122127
new_ports = collections.OrderedDict()
123128
if as_io:
124-
new_ports.update(parent.copy_ports(
125-
child, self.prefix, include=as_io))
129+
new_ports.update(
130+
parent.copy_ports(child, self.prefix, include=as_io,
131+
use_fullmatch=True))
126132

127133
exclude = []
128134
exclude.extend(arg_ports.keys())
129135
exclude.extend(as_io)
130136
exclude.extend(as_wire)
131137

132-
new_ports.update(parent.copy_ports_as_vars(
133-
child, self.prefix, exclude=exclude))
138+
new_ports.update(
139+
parent.copy_ports_as_vars(child, self.prefix, exclude=exclude,
140+
use_fullmatch=True))
134141

135142
if as_wire:
136-
new_ports.update(parent.copy_ports_as_vars(
137-
child, self.prefix, include=as_wire, use_wire=True))
143+
new_ports.update(
144+
parent.copy_ports_as_vars(child, self.prefix, include=as_wire,
145+
use_wire=True, use_fullmatch=True))
138146

139147
# for instance args
140148
self.all_params = collections.OrderedDict()

veriloggen/types/ram.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,8 @@ def read_dataflow(self, port, addr, length=1,
326326

327327
df_data = df.Variable(data, data_valid, data_ready,
328328
width=self.datawidth, point=point, signed=signed)
329-
df_last = df.Variable(last, last_valid, last_ready, width=1, signed=False)
329+
df_last = df.Variable(
330+
last, last_valid, last_ready, width=1, signed=False)
330331
done = last
331332

332333
return df_data, df_last, done
@@ -492,7 +493,8 @@ def read_dataflow_pattern(self, port, addr, pattern,
492493

493494
df_data = df.Variable(data, data_valid, data_ready,
494495
width=self.datawidth, point=point, signed=signed)
495-
df_last = df.Variable(last, last_valid, last_ready, width=1, signed=False)
496+
df_last = df.Variable(
497+
last, last_valid, last_ready, width=1, signed=False)
496498
done = last
497499

498500
return df_data, df_last, done
@@ -649,7 +651,8 @@ def read_dataflow_reuse(self, port, addr, length=1,
649651

650652
df = self.df if self.df is not None else dataflow
651653

652-
df_last = df.Variable(last, last_valid, last_ready, width=1, signed=False)
654+
df_last = df.Variable(
655+
last, last_valid, last_ready, width=1, signed=False)
653656
done = last
654657

655658
df_reuse_data = [df.Variable(d, v, r,
@@ -712,7 +715,7 @@ def read_dataflow_reuse_pattern(self, port, addr, pattern,
712715
last = self.m.TmpReg(initval=0)
713716
reuse_data = [self.m.TmpReg(self.datawidth, initval=0, signed=True)
714717
for _ in range(num_outputs)]
715-
next_reuse_data = [self.m.TmpReg(self.datawidth, initval=0, singed=True)
718+
next_reuse_data = [self.m.TmpReg(self.datawidth, initval=0, signed=True)
716719
for _ in range(num_outputs)]
717720

718721
reuse_count = self.m.TmpReg(reuse_size.bit_length() + 1, initval=0)
@@ -944,7 +947,8 @@ def read_dataflow_reuse_pattern(self, port, addr, pattern,
944947

945948
df = self.df if self.df is not None else dataflow
946949

947-
df_last = df.Variable(last, last_valid, last_ready, width=1, signed=False)
950+
df_last = df.Variable(
951+
last, last_valid, last_ready, width=1, signed=False)
948952
done = last
949953

950954
df_reuse_data = [df.Variable(d, v, r,

0 commit comments

Comments
 (0)