@@ -243,6 +243,7 @@ def visible_nonsignal_node(node: Node) -> int:
243243 'asyncoutput' : asyncoutput ,
244244 'isinstance' : isinstance ,
245245 'str' : str ,
246+ 'list' : list ,
246247 'uses_enum' : uses_enum (top_block ),
247248 'get_fully_qualified_type_name' : partial (
248249 unique_component_walker .python_class_name ,
@@ -414,14 +415,18 @@ def init_line_entry(module_name: str,
414415
415416 context = {
416417 'top_node' : top_block ,
417- 'systemrdlRegNode' : RegNode ,
418418 'systemrdlFieldNode' : FieldNode ,
419+ 'systemrdlRegNode' : RegNode ,
420+ 'systemrdlRegfileNode' : RegfileNode ,
421+ 'systemrdlAddrmapNode' : AddrmapNode ,
422+ 'systemrdlMemNode' : MemNode ,
419423 'systemrdlSignalNode' : SignalNode ,
420424 'systemrdlUserStruct' : UserStruct ,
421425 'systemrdlUserEnum' : UserEnum ,
422426 'isinstance' : isinstance ,
423427 'type' : type ,
424428 'str' : str ,
429+ 'list' : list ,
425430 'asyncoutput' : asyncoutput ,
426431 'unique_registers' : unique_register_subset ,
427432 'unique_property_enums' :
@@ -511,14 +516,18 @@ def init_line_entry(module_name:str,
511516
512517 context = {
513518 'top_node' : top_block ,
514- 'systemrdlMemNode' : MemNode ,
515519 'systemrdlFieldNode' : FieldNode ,
520+ 'systemrdlRegNode' : RegNode ,
521+ 'systemrdlRegfileNode' : RegfileNode ,
522+ 'systemrdlAddrmapNode' : AddrmapNode ,
523+ 'systemrdlMemNode' : MemNode ,
516524 'systemrdlSignalNode' : SignalNode ,
517525 'systemrdlUserStruct' : UserStruct ,
518526 'systemrdlUserEnum' : UserEnum ,
519527 'isinstance' : isinstance ,
520528 'type' : type ,
521529 'str' : str ,
530+ 'list' : list ,
522531 'asyncoutput' : asyncoutput ,
523532 'unique_memories' : unique_memory_subset ,
524533 'unique_property_enums' :
@@ -584,11 +593,16 @@ def __export_reg_model_fields(self, *,
584593 context = {
585594 'top_node' : top_block ,
586595 'systemrdlFieldNode' : FieldNode ,
596+ 'systemrdlRegNode' : RegNode ,
597+ 'systemrdlRegfileNode' : RegfileNode ,
598+ 'systemrdlAddrmapNode' : AddrmapNode ,
599+ 'systemrdlMemNode' : MemNode ,
587600 'systemrdlUserStruct' : UserStruct ,
588601 'systemrdlUserEnum' : UserEnum ,
589602 'isinstance' : isinstance ,
590603 'type' : type ,
591604 'str' : str ,
605+ 'list' : list ,
592606 'asyncoutput' : asyncoutput ,
593607 'unique_fields' : unique_fields_subset ,
594608 'unique_property_enums' :
@@ -845,6 +859,7 @@ def is_reg_node(node: Node) -> TypeGuard[RegNode]:
845859 'isinstance' : isinstance ,
846860 'type' : type ,
847861 'str' : str ,
862+ 'list' : list ,
848863 'full_slice_accessor' : full_slice_accessor ,
849864 'get_python_path_segments' : get_python_path_segments ,
850865 'safe_node_name' : safe_node_name ,
@@ -1167,7 +1182,7 @@ def _get_dependent_property_enum( unique_components: UniqueComponents) -> \
11671182 """
11681183 enum_needed : list [UserEnumMeta ] = []
11691184
1170- def walk_property_struct_node (value : Any ) -> None :
1185+ def walk_property_subnode (value : Any ) -> None :
11711186 if isinstance (value , UserEnum ) and type (value ) not in enum_needed :
11721187 enum_type = type (value )
11731188 if not isinstance (enum_type , UserEnumMeta ):
@@ -1176,19 +1191,15 @@ def walk_property_struct_node(value: Any) -> None:
11761191
11771192 if isinstance (value , UserStruct ):
11781193 for sub_value in value .members .values ():
1179- walk_property_struct_node (sub_value )
1194+ walk_property_subnode (sub_value )
1195+
1196+ if isinstance (value , list ):
1197+ for sub_value in value :
1198+ walk_property_subnode (sub_value )
11801199
11811200 for node in unique_components .nodes .values ():
11821201 for node_property_name in node .properties_to_include :
11831202 node_property = node .instance .get_property (node_property_name )
1184- if isinstance (node_property , UserEnum ) and type (node_property ) not in enum_needed :
1185- enum_type = type (node_property )
1186- if not isinstance (enum_type , UserEnumMeta ):
1187- raise TypeError (f'enum type should be UserEnumMeta, got { type (enum_type )} ' )
1188- enum_needed .append (enum_type )
1189-
1190- if isinstance (node_property , UserStruct ):
1191- for sub_value in node_property .members .values ():
1192- walk_property_struct_node (sub_value )
1203+ walk_property_subnode (node_property )
11931204
11941205 return enum_needed
0 commit comments