Error- uninitialized virtual interface object

hi,
I have following error
uninitialized virtual interface object

Can some one explain to me that what does this error mean and how to fix it??

after this error message it shows me the line in my code so pasting that part of code as well

//*****************************
virtual task reset_signals();

@(negedge vmif.i_aresetn); // error at this line-----------------------

//write address signals
vmif.i_awid_m <= 4’b0;
vmif.i_awaddr_m <= 32’b0;
vmif.i_awsize_m <= 3’b0;

//******************************

thanks in advance

uninitialized virtual interface object

You are trying use virtual interface without assigning the actual interface to it.

See xbus example on how to pass interface to class components.

hey thanks for the reply.

I did changes as per the xbus example.

but now I am getting the warning while simulating.

here is the output I am getting

//*************************************************

Block Memory Generator CORE Generator module dut_wrapper.mem_inst.inst is using a behavioral model for simulation which will not precisely model memory collision behavior.
OVM_INFO @ 0: reporter [RNTST] Running test …

Name Type Size Value

sequencer write_addr_ch_sequ+ - sequencer@3
rsp_export ovm_analysis_export - rsp_export@5
seq_item_export ovm_seq_item_pull_+ - seq_item_export@29
default_sequence string 19 ovm_random_sequence
count integral 32 -1
max_random_count integral 32 'd10
sequences array 4 -
[0] string 19 ovm_random_sequence
[1] string 23 ovm_exhaustive_sequ+
[2] string 19 ovm_simple_sequence
[3] string 23 write_addr_ch_seque+
max_random_depth integral 32 'd4
num_last_reqs integral 32 'd1
num_last_rsps integral 32 'd1

Warning-[CNST-PPRW] Constraint randomize NULL object warning
/home/akshayj/ovm-2.0.1/src/methodology/sequences/ovm_sequence_base.svh, 210
Null object found during randomization.
Please make sure all random variables/arrays/function calls being randomized
are allocated fully and properly.

Warning-[CNST-PPRW] Constraint randomize NULL object warning
/home/akshayj/ovm-2.0.1/src/methodology/sequences/ovm_sequence_base.svh, 210
Null object found during randomization.
Please make sure all random variables/arrays/function calls being randomized
are allocated fully and properly.

the new transaction is sent to the driver ******************************
The new transaction is received
OVM_INFO @ 0: agent_inst.driver [WRITE_CH_DRIVERr] Item generated from write_addr_ch_sequencer:

Name Type Size Value

write_addr_ch write_addr_ch - write_addr_ch@50
i_awid_m integral 4 'hc
i_awaddr_m integral 32 'h47
i_awsize_m integral 3 'h2
i_awburst_m integral 2 'h1
i_awlock_m integral 2 'h0
i_awcache_m integral 4 'h0
i_awprot_m integral 3 'h2
i_awvalid_m integral 1 'h0
i_awlen_m integral 4 'hb

OVM_INFO @ 360000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 380000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 400000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 420000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 440000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 460000: agent_inst.driver [OKAY ] normal access ok but exclusive access might have failed
OVM_INFO @ 460000: agent_inst.driver [Matched bid and awid] FOUND Matched bid and awid for this transaction
The new transaction is received
OVM_INFO @ 460000: agent_inst.driver [WRITE_CH_DRIVERr] Item generated from write_addr_ch_sequencer:

Name Type Size Value

item write_addr_ch - item@48
i_awid_m integral 4 'h6
i_awaddr_m integral 32 'h1eb
i_awsize_m integral 3 'h2
i_awburst_m integral 2 'h1
i_awlock_m integral 2 'h0
i_awcache_m integral 4 'h0
i_awprot_m integral 3 'h2
i_awvalid_m integral 1 'h0
i_awlen_m integral 4 'h4
depth int 32 'd3
parent sequence string 60 agent_inst.sequence+
sequencer string 20 agent_inst.sequencer

OVM_INFO @ 620000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 640000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 660000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 680000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 700000: agent_inst.driver [Mismatch ids or Missing bvalid ] bid and awid DOES NOT Match or bvalid did not came
OVM_INFO @ 720000: agent_inst.driver [OKAY ] normal access ok but exclusive access might have failed
OVM_INFO @ 720000: agent_inst.driver [Matched bid and awid] FOUND Matched bid and awid for this transaction

Warning-[CNST-PPRW] Constraint randomize NULL object warning
/home/akshayj/ovm-2.0.1/src/methodology/sequences/ovm_sequence_base.svh, 210
Null object found during randomization.
Please make sure all random variables/arrays/function calls being randomized
are allocated fully and properly.

Warning-[CNST-PPRW] Constraint randomize NULL object warning
/home/akshayj/ovm-2.0.1/src/methodology/sequences/ovm_sequence_base.svh, 210
Null object found during randomization.
Please make sure all random variables/arrays/function calls being randomized
are allocated fully and properly.
//****************************************

Can you tell me what are these warnings for and how do I fix them??

thanks in advance

hi
I want to set default sequence as user defined sequence.
here is what I wrote in agent’s build function

//****************************
function void build();

super.build();

if(is_active==OVM_ACTIVE)
begin

sequencer = write_addr_ch_sequencer::type_id::create("sequencer",this);
driver= write_ch_driver::type_id::create("driver",this);

set_config_string(“write_addr_ch_sequencer”, “default_sequence”, “write_addr_ch_sequences”);

set_config_int("write_addr_ch_sequencer", "count", 30);

  end

endfunction : build

//****************************

but even after set_config , when do sequencer.print()
I get following
//**********************
default_sequence string 19 ovm_random_sequence
//**********************

implying the set_config did not worked.

Can some one help me, to set default sequence to user defined sequence
and also set the count of the sequencer

Thanks in advance

hi
I want to set default sequence as user defined sequence.
here is what I wrote in agent’s build function
//****************************

sequencer = write_addr_ch_sequencer::type_id::create(“sequencer”,this);
driver= write_ch_driver::type_id::create(“driver”,this);
set_config_string(“write_addr_ch_sequencer”, “default_sequence”, “write_addr_ch_sequences”);
set_config_int(“write_addr_ch_sequencer”, “count”, 30);

but even after set_config , when do sequencer.print()
I get following
//**********************
default_sequence string 19 ovm_random_sequence
//**********************
implying the set_config did not worked.

The main reason why it did not work was due to the fact that you used the class name as the first argument of set_config_; the first argument of set_config_ needs to be an instance path name. I would change the above code to:

set_config_string("<font color=Red>sequencer</font>", "default_sequence", "write_addr_ch_sequences");
set_config_int("<font color=Red>sequencer</font>", "count", 30);    
sequencer = write_addr_ch_sequencer::type_id::create("<font color=Red>sequencer</font>",this);

driver= write_ch_driver::type_id::create("driver",this);

By the way, the above section of code should be done in the test rather than in the agent. The reason for this is that you want to have the option of selecting a specific sequence(s) for each test rather than having the sequence(s) “hard coded” in your testbench.

hey thanks for pointing that out.
It worked. Now I can see the default sequence as user defined sequence

hi,
Now I can see that the default sequence is set to user defined sequence and count is also set to 20 (greater than -1 or I could set it to user defined value),
but still only 2 transactions are generated.

part of sequence code
//*********
forever begin
`ovm_do(req);
end
//*********

part of driver code
//*********
forever begin
get_transaction();
drive();
read_response();// in this task item_done is placed
end
//*********

as per the above code i need to get transactions till global_stop_request is called but I am getting only 2. Also after the simulation ends i get big message about assertions. I know I have asked about this earlier as well, but at that time vishnuprashanth pointed that my default sequence was ovm_random_sequence.

But now default sequence is user defined sequence and I could set count also.

Please check the log of output in the attached file
Can some one explain why I am not getting more than 2 transactions.

Thanks in advance.