Here is my code.
- my_base_subscriber.svh file
virtual class my_base_subscriber #(type T) extends uvm_subscriber #(T);
`uvm_component_utils(my_subscriber#(T))
function new(string name, uvm_component parent);
super.new(name, parent);
endfunction : new
endclass : my_base_subscriber
- my_work_subscriber.svh file
class my_work_subscriber extends my_base_subscriber #(my_trans);
`uvm_component_utils(my_work_subscriber)
int idx;
function new(string name, uvm_component parent, int idx);
super.new(name, parent);
this.idx = idx
endfunction : new
endclass : my_work_subscriber
- in the my_env.svh file
class my_env extends uvm_env;
...
my_work_subscriber m_work_sub[4];
...
function void build_phase(uvm_phase phase);
for(int i = 0; i < 4; i++) begin
m_work_sub[i] = new($sformatf("m_work_sub_%d", i), this, i);
end
endfunction : build_phase
...
endclass : my_env
Then I met the compile error as shown below.
Error-[TFAFTC] Too few arguments to function/task call
$UVM_HOME/src/base/uvm_registry.svh, 66
“my_work_subscriber::new(name, parent)”
The above function/task call is not done with sufficient arguments.