Add support for user defined enums in field encode property. #29
This commit is contained in:
committed by
Alex Mykyta
parent
80f670bf30
commit
0c7e493976
@@ -1,4 +1,4 @@
|
||||
from typing import TYPE_CHECKING, Set, Optional
|
||||
from typing import TYPE_CHECKING, Set, Optional, Type, List
|
||||
from collections import OrderedDict
|
||||
|
||||
from systemrdl.walker import RDLListener, RDLWalker, WalkerAction
|
||||
@@ -7,6 +7,7 @@ from systemrdl.node import SignalNode
|
||||
if TYPE_CHECKING:
|
||||
from systemrdl.node import Node, RegNode, FieldNode
|
||||
from .exporter import RegblockExporter
|
||||
from systemrdl.rdltypes import UserEnum
|
||||
|
||||
|
||||
class DesignScanner(RDLListener):
|
||||
@@ -29,6 +30,9 @@ class DesignScanner(RDLListener):
|
||||
self.has_buffered_write_regs = False
|
||||
self.has_buffered_read_regs = False
|
||||
|
||||
# Track any referenced enums
|
||||
self.user_enums = [] # type: List[Type[UserEnum]]
|
||||
|
||||
def _get_out_of_hier_field_reset(self) -> None:
|
||||
current_node = self.exp.top_node.parent
|
||||
while current_node is not None:
|
||||
@@ -83,6 +87,10 @@ class DesignScanner(RDLListener):
|
||||
else:
|
||||
self.in_hier_signal_paths.add(path)
|
||||
|
||||
if prop_name == "encode":
|
||||
if value not in self.user_enums:
|
||||
self.user_enums.append(value)
|
||||
|
||||
return None
|
||||
|
||||
def enter_Reg(self, node: 'RegNode') -> None:
|
||||
|
||||
Reference in New Issue
Block a user