@@ -49,6 +49,11 @@ property regfile_child_pointer {
4949 component = regfile;
5050};
5151
52+ property mem_child_pointer {
53+ type = reg[];
54+ component = mem;
55+ };
56+
5257addrmap udp_with_referencing {
5358
5459 reg reg_def {
@@ -74,6 +79,7 @@ addrmap udp_with_referencing {
7479 memwidth = 32;
7580
7681 reg_def reg_value;
82+ mem_child_pointer = '{ reg_value } ;
7783 };
7884
7985 addrmap addrmap_def {
@@ -83,10 +89,10 @@ addrmap udp_with_referencing {
8389 addrmap_child_pointer = addrmap_child'{ reg_children:'{ reg_value }, regfile_children:'{ regfile_value } };
8490 };
8591 reg_def reg_value;
86- regfile_def regfile_value ;
92+ regfile_def addrmap_regfile_value ;
8793 external mem_def mem_value;
8894 inner_addrmap_def addrmap_value;
89- addrmap_child_pointer = addrmap_child'{ reg_children:'{ reg_value }, regfile_children:'{ regfile_value }, addrmap_children:'{ addrmap_value }, mem_children:'{ mem_value } };
95+ addrmap_child_pointer = addrmap_child'{ reg_children:'{ reg_value }, regfile_children:'{ addrmap_regfile_value }, addrmap_children:'{ addrmap_value }, mem_children:'{ mem_value } };
9096 };
9197
9298 addrmap_def main;
@@ -96,4 +102,13 @@ addrmap udp_with_referencing {
96102 view.reg_value.field_a->field_parent_pointer = main.reg_value;
97103
98104 view.reg_value->register_pointer = main.reg_value;
105+
106+ reg basic_reg_def {
107+ // a register def without any UDPs
108+ field { fieldwidth=4; } field_a;
109+ };
110+
111+ basic_reg_def basic_reg_array[3];
112+ main.addrmap_value.reg_value -> register_pointer = basic_reg_array[0];
113+ main.addrmap_value.regfile_value.reg_value -> register_pointer = basic_reg_array[1];
99114};
0 commit comments