My DUT is a subsystem with multiple instances of block A. I have an ovm_rgm_register_file from block A’s OVC. Is there a correct way to add multiple instances of this register file (each at it’s own address) to the ovm_rgm_address_map for my DUT OVC?
When I add them I see name collision errors, e.g.:
OVM_ERROR @ 10000.0 ps: dut_address_map [OVMRGM] Collision during creation of the field map! Field : MY_FIELD is defined in both MY_REG and MY_REG with no user resolution provided. This field name will be unavailable.
It makes sense that these field names collide in the DUT address map, but I’m not sure how to work around this. What is a “user resolution”?
Still suggest also to multi-instance the register file or memory map in ip-xact file. I would say its what ovm_rgm’s purpose, then we could reuse these spirit file from block all the way to system.
Field level sequences were meant to be used only when fields are unique in register map. If field names are colliding, there is no way to detect the right behavior automatically. In your case, things might work in block level,but when you have similar (multiple) register file at system-level, you will see this issue. There is no way to avoid it. You will have to write sequences in different way to effectively do similar thing(field-level sequences).
-Vishal
Thanks Vishal. Do you know what a “user resolution” is, as hinted at in the error message?
I understand the limitation, but it would be nice if there was some kind of support in the OVM_RGM for this use model, as I can see it being a common occurrence. Maybe adding a suffix to the field name as a kind of index or methods that allow an index parameter.
There is one possibility. If at system level, sequence’s container is set to same container (as you were doing in module-level [dont set container as top address map where confusion lies]) you should get away with this issue. Only limitation is, registers outside that container cant be referred. If you are re-using block level sequences, it might just work.
Please let me know if you need more clarification.
-Vishal