I implement 2 packages, each of which encapsulates some classes and is used in top tb.sv, shown as below
package scp_sam_pkg;
class css_regs_info extends reg_file_info;
... //unique member values
endclass
...
class scp_regs_info_generator extends regs_info_generator;
virtual function void gen_regs_info(ref reg_file_info q[$]);
reg_file_info inst;
inst = css_regs_info::new;
q.push_back(inst);
...
endfunction
endclass: scp_regs_info_generator
endpackage: scp_sam_pkg
package ap_sam_pkg;
class css_regs_info extends reg_file_info;
... //unique members value
endclass
class ap_regs_info_generator extends regs_info_generator;
virtual function void gen_ap_regs_info(ref reg_file_info q[$]);
reg_file_info inst;
inst = css_regs_info::new;
q.push_back(inst);
...
endfunction
endclass: ap_reg_info_generator
endpackage: ap_sam_pkg
in tb.sv:
import scp_sam_pkg::scp_regs_info_generator;
import ap_sam_pkg::ap_regs_info_generator;
initial begin
...
if($test$plusargs("scp_sam_verif_on")) begin
`uvm_info("TB", "SCP Access to NAQU SAM", UVM_LOW);
generator = scp_regs_info_generator::new;
generator.gen_regs_info(naqu_regs_info);
end
else if($test$plusargs("ap_sam_verif_on")) begin
`uvm_info("TB", "Access to AP SAM", UVM_LOW);
generator = ap_regs_info_generator::new;
generator.gen_regs_info(naqu_regs_info);
end
...
end
I hope to get the handler of ap_sam_pkg::css_regs_info using ap_regs_info_generator::gen_regs_info(), but I actually get the handler of scp_sam_pkg::css_regs_info.
Could anyone explain to me why this happens?
by the way I notice in the build log that scp_sam_pkg::css_regs_info is parsed
before ap_sam_pkg::css_regs_info. does it matter?