RGM ovm_rgm_read_all_reg sequence not initiating properly
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
piece of code of that file:
class ovm_rgm_read_all_reg_seq extends ovm_rgm_built_in_base_seq;
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
virtual function void get_configs();
virtual task body();
for(int i=0; i>=`OVM_RGM_DWIDTH-regs[j].get_num_bits();
"Register \"%s\" is holding unknown value. 1Skipping it from built-in-sequence %d",
function new(string name="ovm_rgm_read_all_reg_seq");
endfunction // new
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)
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.