In reply to chr_sue:
A = ralA_regs::type_id::create("A",,get_full_name());
A.configure(this, "");
A.build();
B = ralB_regs::type_id::create("B",,get_full_name());
B.configure(this, "");
B.build();
C = ralC_regs::type_id::create("C",,get_full_name());
C.configure(this, "");
C.build();
D = ralD_regs::type_id::create("D",,get_full_name());
D.configure(this, "");
D.build();
E = ralE_regs::type_id::create("E",,get_full_name());
E.configure(this, "");
E.build();
intf1_map = create_map("intf1_map", 0, 4, UVM_LITTLE_ENDIAN, 0);
intf1_map.add_submap(A.default_map, `UVM_REG_ADDR_WIDTH'h0);
intf1_map.add_submap(B.default_map, `UVM_REG_ADDR_WIDTH'h1000);
intf1_map.add_submap(C.default_map, `UVM_REG_ADDR_WIDTH'h2000);
intf1_map.add_submap(D.default_map, `UVM_REG_ADDR_WIDTH'h3000);
intf1_map.add_submap(E.default_map, `UVM_REG_ADDR_WIDTH'h4000);
intf2_map = create_map("intf2_map", 0, 4, UVM_LITTLE_ENDIAN, 0);
intf2_map.add_submap(A.default_map, `UVM_REG_ADDR_WIDTH'h7000);
intf2_map.add_submap(D.default_map, `UVM_REG_ADDR_WIDTH'h8000);
intf3_map = create_map("intf3_map", 0, 4, UVM_LITTLE_ENDIAN, 0);
intf3_map.add_submap(A.default_map, `UVM_REG_ADDR_WIDTH'h0);
intf3_map.add_submap(E.default_map, `UVM_REG_ADDR_WIDTH'h1000);
This is the way we are trying to map. we have three different interfaces and we want to map the ral the above way. I'm new to RAL, Please correct me if I'm wrong. The intention is to have a single ral and have a single copy. If intf1 updates something in A, then that should be visible to intf2 also.
The error I'm getting is as below,
reporter [RegModel] Map 'regmodel_chip.A.uvm_reg_map' is already a child of map 'regmodel_chip.intf1_map'. Cannot also be a child of map 'regmodel_chip.intf2_map'
reporter [RegModel] Map 'regmodel_chip.D.uvm_reg_map' is already a child of map 'regmodel_chip.intf1_map'. Cannot also be a child of map 'regmodel_chip.intf2_map
reporter [RegModel] Map 'regmodel_chip.A.uvm_reg_map' is already a child of map 'regmodel_chip.intf1_map'. Cannot also be a child of map 'regmodel_chip.intf3_map'
reporter [RegModel] Map 'regmodel_chip.E.uvm_reg_map' is already a child of map 'regmodel_chip.intf1_map'. Cannot also be a child of map 'regmodel_chip.intf3_map'
Thanks in Advance