hdl.ir, back.rtlil: allow specifying attributes on instances.
Fixes #107.
This commit is contained in:
parent
2b92f12016
commit
48d4ee4031
4 changed files with 28 additions and 5 deletions
|
|
@ -71,6 +71,7 @@ class Fragment:
|
|||
self.statements = []
|
||||
self.domains = OrderedDict()
|
||||
self.subfragments = []
|
||||
self.attrs = OrderedDict()
|
||||
self.generated = OrderedDict()
|
||||
self.flatten = False
|
||||
|
||||
|
|
@ -528,7 +529,9 @@ class Instance(Fragment):
|
|||
self.named_ports = OrderedDict()
|
||||
|
||||
for (kind, name, value) in args:
|
||||
if kind == "p":
|
||||
if kind == "a":
|
||||
self.attrs[name] = value
|
||||
elif kind == "p":
|
||||
self.parameters[name] = value
|
||||
elif kind in ("i", "o", "io"):
|
||||
self.named_ports[name] = (value, kind)
|
||||
|
|
@ -538,7 +541,9 @@ class Instance(Fragment):
|
|||
.format((kind, name, value)))
|
||||
|
||||
for kw, arg in kwargs.items():
|
||||
if kw.startswith("p_"):
|
||||
if kw.startswith("a_"):
|
||||
self.attrs[kw[2:]] = arg
|
||||
elif kw.startswith("p_"):
|
||||
self.parameters[kw[2:]] = arg
|
||||
elif kw.startswith("i_"):
|
||||
self.named_ports[kw[2:]] = (arg, "i")
|
||||
|
|
|
|||
|
|
@ -274,6 +274,7 @@ class FragmentTransformer:
|
|||
else:
|
||||
new_fragment = Fragment()
|
||||
new_fragment.flatten = fragment.flatten
|
||||
new_fragment.attrs = OrderedDict(fragment.attrs)
|
||||
self.map_ports(fragment, new_fragment)
|
||||
self.map_subfragments(fragment, new_fragment)
|
||||
self.map_domains(fragment, new_fragment)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue