Implementation issue: uvm_config_db method wait_modified

Q. Why doesn’t the control come out of wait_modifed method?

interface chip_intf;
   logic [7:0] lvds_clk_p;
   wire  [7:0] gpio;
   logic       rowsel0, rowsel256;
   logic       precharge0, precharge256;
   reg 	       gpio11_ind;   

   bit   [6:0] frm_row_end_t;

       initial 
          begin
               $display($time," - Waiting to receive RE\n");  // Gets displayed
               uvm_config_db#(bit[6:0])::**wait_modified(null,"*","RE");**
               $display($time," - Received RE value\n"); // time stamp and info not getting displayed

               if(!uvm_config_db #(bit[6:0])::get(null, "*", "RE",frm_row_end_t))
                   begin
	              `uvm_fatal("Chip Interface", "Could not find frm_row_end_t \n")
                   end
               $display("The value of frame_row_end = %0d\n",frm_row_end_t);  
          end
endinterface

// ENV Class

uvm_config_db#()::set with a variable in the End_of_Elaboration_Phase of my_env extended from uvm_env;

In reply to Viral Doshi 2013:
There was a bug in versions prior to UVM 1.1d where wait_modified did not work if the set() had a wildcard “*”.

But a much more efficient way of waiting for your environment to be set up is to use the wait_for_state() method.

   start_of_simulation_ph.wait_for_state(UVM_PHASE_STARTED);    

In reply to dave_59:

Thank you, Dave Rich.

The method wait_for_state worked.

Method 1: start_of_simulation_ph.wait_for_state(UVM_PHASE_STARTED); // Working*

So, did the normal wait_method worked

Method 2: uvm_config_db#(bit[6:0])::wait_modified(null,"",“RE”); // Working

In both cases* i.e. Method 1 and Method 2, use context only as NULL or uvm_root::get() while setting in ENV (as shown below):

uvm_config_db#()::set(null,““,“RE”,frm_row_end_t);
or
uvm_config_db#()::set(uvm_root::get(),”
”,“RE”,frm_row_end_t);

CAUTION

uvm_config_db#()::set(this,“*”,“RE”,frm_row_end_t); // Context as “this” will not work