Add support for external components. (#4 & #36)

This commit is contained in:
Alex Mykyta
2023-05-03 21:57:25 -07:00
parent f1a75f8d38
commit ca9185dac7
35 changed files with 1341 additions and 78 deletions

View File

@@ -9,7 +9,7 @@ from .identifier_filter import kw_filter as kwf
if TYPE_CHECKING:
from typing import Union
from systemrdl.node import AddrmapNode, RegfileNode, RegNode, FieldNode, Node
from systemrdl.node import AddrmapNode, RegfileNode, RegNode, FieldNode, Node, MemNode
class _StructBase:
@@ -144,6 +144,12 @@ class RDLStructGenerator(StructGenerator, RDLListener):
def exit_Regfile(self, node: 'RegfileNode') -> None:
self.pop_struct()
def enter_Mem(self, node: 'MemNode') -> None:
self.push_struct(kwf(node.inst_name), node.array_dimensions)
def exit_Mem(self, node: 'MemNode') -> None:
self.pop_struct()
def enter_Reg(self, node: 'RegNode') -> None:
self.push_struct(kwf(node.inst_name), node.array_dimensions)
@@ -228,6 +234,13 @@ class RDLFlatStructGenerator(FlatStructGenerator, RDLListener):
def exit_Regfile(self, node: 'RegfileNode') -> None:
self.pop_struct()
def enter_Mem(self, node: 'MemNode') -> None:
type_name = self.get_typdef_name(node)
self.push_struct(type_name, kwf(node.inst_name), node.array_dimensions)
def exit_Mem(self, node: 'MemNode') -> None:
self.pop_struct()
def enter_Reg(self, node: 'RegNode') -> None:
type_name = self.get_typdef_name(node)
self.push_struct(type_name, kwf(node.inst_name), node.array_dimensions)