In the OVM source code for ovm_field_array_object,
M_OVM_FIELD_ARRAY_OBJ_PACK macro is being called.
Under this macro (M_OVM_FIELD_ARRAY_OBJ_PACK) definition, for OVM_UNPACK case:
if(((FLAG)&OVM_NOPACK) == 0) \
begin \
if((((FLAG)&OVM_ABSTRACT) && ovm_auto_options_object.packer.abstract) || \
(!((FLAG)&OVM_ABSTRACT) && ovm_auto_options_object.packer.physical)) begin \
if(ovm_auto_options_object.packer.use_metadata) begin \
int s_; \
s_ = ovm_auto_options_object.packer.unpack_field_int(32); \
if(ARG.size() < s_) \
_global_reporter.ovm_report_error("OBJUPK", $psprintf(`"Array ARG cannot support the unpack operation, the unpack requires %0d elements, ARG has only %0d`", s_, ARG.size()), OVM_NONE); \
end \
foreach(ARG[i]) begin \
ovm_auto_options_object.packer.unpack_object(ARG[i]); \
if(ovm_auto_options_object.packer.use_metadata == 0 && ARG[i] == null) begin \
<font size=20>m_sc.scope.up(null); \</font>
return; \
end \
end \
end \
end \
Here, I have highlighted a text (under the if condition: ovm_auto_options_object.packer.use_metadata == 0 && ARG[i] == null)
m_sc.scope.up(null);
This particular line is missing.
Not sure if this is already known. But just in case someone is using this macro, please be aware of the above line.