Search form

Main menu

My Account Menu

RGM ovm_rgm_read_all_reg sequence not initiating properly

nipoonv
nipoonv
Full Access
6 posts

Hi All,

when I try to run the sequence ovm_rgm_read_all_reg_seq sequence.The rgm_sequencer is unable to send any packet to my driver.
I get following message :

OVM_INFO @ 1000 ns: ovm_test_top.m_usp_mas_env_h.m_mas_rgm_agent_h.m_rgm_sqr [ovm_rgm_read_all_reg_seq] Register "RX_STATUS" is holding unknown value. Skipping it from built-in-sequence
OVM_INFO @ 1000 ns: ovm_test_top.m_usp_mas_env_h.m_mas_rgm_agent_h.m_rgm_sqr [ovm_rgm_read_all_reg_seq] Register "TX_STATUS" is holding unknown value. Skipping it from built-in-sequence

I grep ed this message in the rgm library and I found it to be in this file
ovm_rgm_sequence_library.sv
piece of code of that file:
class ovm_rgm_read_all_reg_seq extends ovm_rgm_built_in_base_seq;
/*
Variable: skip_uninitialized_regs
This field can be used to skip registers which hold un-initialized values. By default it
is set. Use can reset it by using set_cnfig mechanism or by setting this field value
*/
bit skip_uninitialized_regs=1;

virtual function void get_configs();
bit sur;
super.get_configs();
if(p_sequencer.get_config_int("ovm_rgm_read_all_reg_seq.skip_uninitialized_regs", sur))
skip_uninitialized_regs=sur;
endfunction

virtual task body();
ovm_rgm_reg_op regop;
setup();
ovm_test_done.raise_objection(this);

for(int i=0; i>=`OVM_RGM_DWIDTH-regs[j].get_num_bits();
if(e===v) begin
p_sequencer.ovm_report_info(get_type_name(), $sformatf(
"Register \"%s\" is holding unknown value. 1Skipping it from built-in-sequence %d",
regs[j].get_name(),v), OVM_LOW);
continue;
end
end
`ovm_create(regop)
read_reg(regop, regs[j]);
end
end
post_body();
ovm_test_done.drop_objection(this);

endtask


`ovm_sequence_utils(ovm_rgm_read_all_reg_seq, ovm_rgm_sequencer)


function new(string name="ovm_rgm_read_all_reg_seq");
super.new(name);
endfunction // new
endclass

----------------------------------------------------------------
as a result of this rgm sequencer is not able to send any requests to the driver.

I am sure setting this skip_uninitialized_regs to 0 is not the solution.
Also the fact that the address string gets printed properly in the warning message says that the database linking with the rgm_sqr is correct.

Can anyone tell me what can go wrong?
There is no issue with xml file generation ..
Do I need to set any flags etc so that the default values of all the register are not taken as X. from the xml file i can see that the default value of the registers are non 0 .

Let me add that my write sequence is working perfectly fine (ovm_rgm_write_all_seq)

Thanks,
Nipoon

Answers

Abhishek Arora
Abhishek Arora
Full Access
1 post

Hi Nipoon,

I also encountered similar issue waith built-in sequence: uvm_rgm_read_all_reg_seq.
I guess you must have got some solution for this issue, can you pls share the same.
It will be of great help.

Thanks,
Abhishek