DV-E Posted October 31, 2018 Report Share Posted October 31, 2018 HI All. I am not sure if we already had this discussion or not. In uvm1.2, it seems get_starting_phase() can only be inside of default tasks (pre/post/body/start) of sequence with uvm_config_db#(....)::set(this,"sqr.main_phase", "default_phase", seq) flow. In below test case, line 10 locked the phase while line 30 try to set_starting_phase(), or anyway document that line 10 is not right usage ? it is not a case in seq.start(..) flow. Thanks AM [/code] import uvm_pkg::*; `include "uvm_macros.svh" class seq extends uvm_sequence; `uvm_object_utils(seq) line 10: uvm_phase phase_ = get_starting_phase(); // not ok. this will lock the phase function new(string name ="seq"); super.new(name); endfunction task pre_body(); // uvm_phase phase_ = get_starting_phase(); //ok if( phase_ != null) phase_.raise_objection(this); endtask task body; #10; `uvm_info("whatever", "whatever", UVM_LOW); endtask task post_body(); // uvm_phase phase_ = get_starting_phase(); //ok if( phase_ != null) phase_.drop_objection(this); endtask endclass class seqr extends uvm_sequencer; `uvm_component_utils(seqr); function new(string name = "seqr", uvm_component p = null); super.new(name, p); endfunction endclass class test extends uvm_test; `uvm_component_utils(test) seqr sqr; seq sq; function new(string name ="test", uvm_component p = null); super.new(name, p); endfunction function void build_phase(uvm_phase phase); sqr = seqr::type_id::create("sqr",this); // sq = seq::type_id::create("sq"); line 30 : uvm_config_db#(uvm_object_wrapper)::set(this,"sqr.run_phase", "default_sequence", seq::type_id::get()); // not ok, it tries to set_starting_phase() but phase is locked. endfunction task run_phase(uvm_phase phase); //phase.raise_objection(this); // this flow is ok //sq.start(this.sqr); //phase.drop_objection(this); endtask endclass module top; test t=new(); initial run_test(); endmodule Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.