Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix instance support
  • Loading branch information
Sebastien Bourdeauducq committed Jan 20, 2012
1 parent e4f531a commit e9be324
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
6 changes: 3 additions & 3 deletions migen/fhdl/structure.py
Expand Up @@ -209,14 +209,14 @@ class Instance:
def __init__(self, of, outs=[], ins=[], parameters=[], clkport="", rstport="", name=""):
self.of = of
if name:
self.name = name
self.name_override = name
else:
self.name = of
self.name_override = of
def process_io(x):
if isinstance(x[1], Signal):
return x # override
elif isinstance(x[1], BV):
return (x[0], Signal(x[1], self.name + "_" + x[0]))
return (x[0], Signal(x[1], self.name_override + "_" + x[0]))
else:
raise TypeError
self.outs = dict(map(process_io, outs))
Expand Down
9 changes: 6 additions & 3 deletions migen/fhdl/tools.py
Expand Up @@ -73,13 +73,16 @@ def group_by_targets(sl):
groups.append((targets, [statement]))
return groups

def list_inst_outs(i):
def list_inst_ios(i, ins, outs):
if isinstance(i, Fragment):
return list_inst_outs(i.instances)
return list_inst_ios(i.instances, ins, outs)
else:
l = []
for x in i:
l += list(map(lambda x: x[1], list(x.outs.items())))
if ins:
l += x.ins.values()
if outs:
l += x.outs.values()
return set(l)

def is_variable(node):
Expand Down
4 changes: 2 additions & 2 deletions migen/fhdl/verilog.py
Expand Up @@ -98,7 +98,7 @@ def _list_comb_wires(f):
def _printheader(f, ios, name, ns):
sigs = list_signals(f)
targets = list_targets(f)
instouts = list_inst_outs(f)
instouts = list_inst_ios(f, False, True)
wires = _list_comb_wires(f)
r = "module " + name + "(\n"
firstp = True
Expand Down Expand Up @@ -213,7 +213,7 @@ def convert(f, ios=set(), name="top", clk_signal=None, rst_signal=None, return_n
if rst_signal is None:
rst_signal = Signal(name_override="sys_rst")
ios.add(rst_signal)
ns = build_namespace(list_signals(f) | ios)
ns = build_namespace(list_signals(f) | list_inst_ios(f, True, True) | ios)

ios |= f.pads

Expand Down

0 comments on commit e9be324

Please sign in to comment.