Best way to access the uvm_config_db from the testbench?

…衆ロ難τιáo~ 提交于 2019-12-02 23:53:28

I found it buried in the class reference: You can access the global singleton versions of each phase with <phase name>_ph. Then I can use the wait_for_state function to block until the start of the start of simulation phase. Simulated and it seems to work:

module testbench_top;
  int clk_period;

  bit clk = 0;

  initial begin
    start_of_simulation_ph.wait_for_state(UVM_PHASE_STARTED);    
    if(!uvm_config_db #(int) ::get(null, "uvm_test_top.env", "clk_period", clk_period))
      `uvm_fatal("CONFIG", "clk_period not set");
    // Create clk
    forever begin
      #(clk_period/2) clk = !clk;
    end
  end

Another alternative that can help is wait_modified function of uvm_config_db... Here is the excerpt from uvm reference manual

wait_modified:

static task wait_modified(uvm_component cntxt,
                          string  inst_name,
                          string  field_name)

Wait for a configuration setting to be set for field_namein cntxtand inst_name. The task blocks until a new configuration setting is applied that effects the specified field.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!