Skip to content

Commit 65c0727

Browse files
committed
Instance can accept a dict object for params and ports.
1 parent 47e7575 commit 65c0727

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

tests/read_verilog_/module_modify/read_verilog_module_modify.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def mkTop():
4545
params = m.copy_params(led)
4646
ports = m.copy_ports(led)
4747

48-
m.Instance(led, 'inst_blinkled', m.connect_params(led), m.connect_ports(led))
48+
m.Instance(led, 'inst_blinkled', params, ports)
4949

5050
return m
5151

veriloggen/module.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -497,12 +497,16 @@ def __init__(self, module, instname, params=None, ports=None):
497497
self.instname = instname
498498
if not params:
499499
self.params = ()
500+
elif isinstance(params, dict):
501+
self.params = [ (k, v) for k, v in params.items() ]
500502
elif isinstance(params[0], (tuple, list)):
501503
self.params = params
502504
else:
503505
self.params = [ (None, p) for p in params ]
504506
if not ports:
505507
self.ports = ()
508+
elif isinstance(ports, dict):
509+
self.ports = [ (k, v) for k, v in ports.items() ]
506510
elif isinstance(ports[0], (tuple, list)):
507511
self.ports = ports
508512
else:
@@ -514,12 +518,12 @@ def _type_check_module(self, module):
514518
type(module))
515519

516520
def _type_check_params(self, params):
517-
if not isinstance(params, (tuple, list)):
518-
raise TypeError("params of Instance require tuple, not %s." % type(params))
521+
if not isinstance(params, (tuple, list, dict)):
522+
raise TypeError("params of Instance require tuple, list, or dict, not %s." % type(params))
519523

520524
def _type_check_ports(self, ports):
521-
if not isinstance(ports, (tuple, list)):
522-
raise TypeError("ports of Instance require tuple, not %s." % type(ports))
525+
if not isinstance(ports, (tuple, list, dict)):
526+
raise TypeError("ports of Instance require tuple, list, or dict, not %s." % type(ports))
523527

524528
#-------------------------------------------------------------------------------
525529
class Generate(Module):

0 commit comments

Comments
 (0)