Skip to content

Commit 52a1c14

Browse files
committed
Parameter copy behavior of Submodule has been improved.
1 parent 421e72d commit 52a1c14

File tree

3 files changed

+34
-25
lines changed

3 files changed

+34
-25
lines changed

hello_led.ipynb

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,7 @@
5353
{
5454
"cell_type": "code",
5555
"execution_count": 3,
56-
"metadata": {
57-
"collapsed": false
58-
},
56+
"metadata": {},
5957
"outputs": [],
6058
"source": [
6159
"def mkTest():\n",
@@ -83,32 +81,25 @@
8381
{
8482
"cell_type": "code",
8583
"execution_count": 4,
86-
"metadata": {
87-
"collapsed": false
88-
},
84+
"metadata": {},
8985
"outputs": [
9086
{
9187
"name": "stdout",
9288
"output_type": "stream",
9389
"text": [
9490
"\n",
9591
"\n",
96-
"module test #\n",
97-
"(\n",
98-
" parameter WIDTH = 8\n",
99-
")\n",
92+
"module test\n",
10093
"(\n",
10194
"\n",
10295
");\n",
10396
"\n",
97+
" localparam WIDTH = 8;\n",
10498
" reg CLK;\n",
10599
" reg RST;\n",
106100
" wire [WIDTH-1:0] LED;\n",
107101
"\n",
108102
" blinkled\n",
109-
" #(\n",
110-
" .WIDTH(WIDTH)\n",
111-
" )\n",
112103
" uut\n",
113104
" (\n",
114105
" .CLK(CLK),\n",
@@ -10207,6 +10198,15 @@
1020710198
"\n",
1020810199
" # sim.view_waveform()"
1020910200
]
10201+
},
10202+
{
10203+
"cell_type": "code",
10204+
"execution_count": null,
10205+
"metadata": {
10206+
"collapsed": true
10207+
},
10208+
"outputs": [],
10209+
"source": []
1021010210
}
1021110211
],
1021210212
"metadata": {
@@ -10225,7 +10225,7 @@
1022510225
"name": "python",
1022610226
"nbconvert_exporter": "python",
1022710227
"pygments_lexer": "ipython3",
10228-
"version": "3.6.1"
10228+
"version": "3.6.2"
1022910229
}
1023010230
},
1023110231
"nbformat": 4,

veriloggen/core/module.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ def copy_params_as_localparams(self, src, prefix=None, postfix=None,
679679
name = ''.join([prefix, obj.name, postfix])
680680
value = visitor.visit(obj.value)
681681
width = visitor.visit(obj.width)
682-
signed = obj.sined
682+
signed = obj.signed
683683
copy_obj = vtypes.Localparam(value, width, signed, name)
684684
self.add_object(copy_obj)
685685
ret[copy_obj.name] = copy_obj

veriloggen/core/submodule.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,28 @@ def __init__(self, parent, child,
9696
# params
9797
new_params = collections.OrderedDict()
9898

99-
param_exclude = []
100-
param_exclude.extend(arg_params.keys())
101-
new_params.update(parent.copy_params(child, self.prefix))
99+
if arg_params:
100+
new_params.update(
101+
parent.copy_params_as_localparams(child, self.prefix,
102+
include=arg_params.keys()))
103+
104+
# localparams
105+
# used ones only
106+
new_localparams = collections.OrderedDict()
107+
if used_params:
108+
new_localparams.update(
109+
parent.copy_params_as_localparams(child, self.prefix,
110+
include=used_params,
111+
exclude=arg_params.keys()))
112+
new_localparams.update(
113+
parent.copy_localparams(child, self.prefix, include=used_params))
102114

103115
# overwrite the parameter value by parameter arg
104116
for key, param in arg_params.items():
105117
new_key = ''.join([self.prefix, key])
106118
new_param = new_params[new_key]
107119
new_param.value = param
108120

109-
# localparams (used ones only)
110-
new_localparams = collections.OrderedDict()
111-
new_localparams.update(
112-
parent.copy_localparams(child, self.prefix, include=used_params))
113-
114121
# ports
115122
new_ports = collections.OrderedDict()
116123
if as_io:
@@ -129,13 +136,15 @@ def __init__(self, parent, child,
129136
new_ports.update(parent.copy_ports_as_vars(
130137
child, self.prefix, include=as_wire, use_wire=True))
131138

139+
# for instance args
132140
self.all_params = collections.OrderedDict()
133141
self.all_raw_params = collections.OrderedDict()
134142

135143
for key in child_params.keys():
136144
new_key = ''.join((self.prefix, key))
137-
self.all_params[key] = new_params[new_key]
138-
self.all_raw_params[new_key] = new_params[new_key]
145+
if new_key in new_params:
146+
self.all_params[key] = new_params[new_key]
147+
self.all_raw_params[new_key] = new_params[new_key]
139148

140149
self.all_ports = collections.OrderedDict()
141150
self.all_raw_ports = collections.OrderedDict()

0 commit comments

Comments
 (0)