Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1e641913ac
|
||
|
|
672aad693a
|
||
|
|
c595bc3f5e
|
||
|
|
411948af28
|
@@ -7,7 +7,7 @@ name = "peakrdl-python-regmap"
|
|||||||
dynamic = ["version"]
|
dynamic = ["version"]
|
||||||
requires-python = ">=3.7"
|
requires-python = ">=3.7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"systemrdl-compiler ~= 1.31",
|
"systemrdl-compiler~=1.31",
|
||||||
"jinja2",
|
"jinja2",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -47,4 +47,4 @@ Changelog = "https://git.byronlathi.com/bslathi19/PeakRDL-python/releases"
|
|||||||
version = {attr = "peakrdl_python_regmap.__about__.__version__"}
|
version = {attr = "peakrdl_python_regmap.__about__.__version__"}
|
||||||
|
|
||||||
[project.entry-points."peakrdl.exporters"]
|
[project.entry-points."peakrdl.exporters"]
|
||||||
python = "peakrdl_python_regmap.__peakrdl__:Exporter"
|
python-regmap = "peakrdl_python_regmap.__peakrdl__:Exporter"
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
version_info = (0, 0, 1)
|
version_info = (0, 0, 5)
|
||||||
__version__ = ".".join([str(n) for n in version_info])
|
__version__ = ".".join([str(n) for n in version_info])
|
||||||
|
|||||||
@@ -36,17 +36,20 @@ class Generator(RDLListener):
|
|||||||
self.indent_level+=1
|
self.indent_level+=1
|
||||||
|
|
||||||
def exit_AddressableComponent(self, node: AddressableNode) -> None:
|
def exit_AddressableComponent(self, node: AddressableNode) -> None:
|
||||||
self.f.write(f"{' '*self.indent_level*4}def __init__(self, addr: int = 0):\n")
|
if len(node.children()) == 0:
|
||||||
self.f.write(f"{' '*self.indent_level*4} self.addr = addr\n")
|
self.f.write(f"{' '*self.indent_level*4}pass\n")
|
||||||
|
else:
|
||||||
|
self.f.write(f"{' '*self.indent_level*4}def __init__(self, addr: int = 0):\n")
|
||||||
|
self.f.write(f"{' '*self.indent_level*4} self.addr = addr:\n")
|
||||||
|
|
||||||
for child in node.children():
|
for child in node.children():
|
||||||
if isinstance(child, AddressableNode):
|
if isinstance(child, AddressableNode):
|
||||||
if child.is_array:
|
if child.is_array:
|
||||||
assert child.array_dimensions is not None
|
assert child.array_dimensions is not None
|
||||||
if len(child.array_dimensions) > 1:
|
if len(child.array_dimensions) > 1:
|
||||||
raise NotImplementedError("Multidimensional arrays not supported")
|
raise NotImplementedError("Multidimensional arrays not supported")
|
||||||
self.f.write(f"{' '*self.indent_level*4} self.{child.inst_name} = [self.{child.inst_name}Class({child.raw_address_offset} + {child.size}*i for i in range({child.n_elements}))]\n")
|
self.f.write(f"{' '*self.indent_level*4} self.{child.inst_name} = [self.{child.inst_name}Class(self.addr + {child.raw_address_offset} + {child.size}*i) for i in range({child.n_elements})]\n")
|
||||||
else:
|
else:
|
||||||
self.f.write(f"{' '*self.indent_level*4} self.{child.inst_name} = self.{child.inst_name}Class({child.address_offset})\n")
|
self.f.write(f"{' '*self.indent_level*4} self.{child.inst_name} = self.{child.inst_name}Class(self.addr + {child.address_offset})\n")
|
||||||
|
|
||||||
self.indent_level-=1
|
self.indent_level-=1
|
||||||
|
|||||||
@@ -1,2 +1,5 @@
|
|||||||
class AddrNode():
|
class AddrNode():
|
||||||
addr: int
|
addr: int
|
||||||
|
|
||||||
|
def __init__(self, addr: int = 0):
|
||||||
|
self.addr = addr
|
||||||
|
|||||||
Reference in New Issue
Block a user