set_sequencer()函数会调用m_set_p_sequencer(),这个函数是一个空的虚函数。如果在sequence中调用了宏uvm_declare_p_sequencer则会重写这个函数,将成员变量p_sequencer指向sequence所挂载的sequencer上。所以使用者要保证start()函数传入的sequencer应该和宏 uvm_declare_p_sequencer声明的类型一致。否则$cast转换的时候...
在调用put_response前需要调用set_id_info函数,其将sequence发送的transaction id等相关信息复制到rsp内,以让sequencer知道将response返回给其哪个sequence(一个sequencer内可以有几个sequence)。 注意:get_response和put_response一一对应,当sequencer启动get_response后就会阻塞进程,直到response_queue被放入新的记录,即driver...
UVM中的类绝大部分都继承于 uvm_object, 每一个实例对象都有一个唯一的id,可以通过 get_inst_id 查看: object.sprint()中也会显示每个instance的value值,就是inst_id: ID作为唯一标识,在sequence, transaction中也有使用到。 m_sequence_id : get_sequence_id / set_sequence_id m_transaction_id: get_tran...
uvm_config_db#(uvm_object_wrapper)::set(this, "env.i_agt.sqr.main_phase", "default_sequence", case0_sequence::type_id::get()); uvm_config_db#(uvm_sequence_base)::set(this, "env.i_agt.sqr.main_phase", "default_sequence", cseq); sequence启动后会自动执行sequence的body任务,,还会自...
rsp.set_sequence_id(req.get_sequence_id()); seq_item_port.item_done(rsp); `uvm_info(get_type_name(), "sequencer item_done_triggered", UVM_HIGH) end endtask : get_and_drive reset_listener()方法 等待复位信号,将prdata <= 0,同时清空mem里面的数据。
确保item发送的准确性。4. config_db在sequence中的使用sequence中可以通过get_full_name获取组件路径,用于动态获取或设置config_db中的参数。5. Response机制sequence机制提供response机制,driver通过get_response获取sequence的反馈,set_id_info确保response与正确sequence关联。
set_sequencer 函数 会使m_sequencer 句柄指向执行当前 sequence 的 sequencer,即指向 env.vsqr 如果没有指定挂载的sequencer,则挂载到parent_sequence的sequencer上 `uvm_do() 宏: 相比直接调用start函数,uvm_do()宏节省了sequence的实例化和随机化的步骤 ...
uvm_config_db#(uvm_object_wrapper)::set(this, "i_agt.sqr.main_phase", "default_sequence", my_sequence::type_id::get()); endfunction 1. 2. 3. 4. 5. 6. 7. 8. 9. 1)与top_tb 中的config_db 不同,set 的第一个参数有null 变成了this,第二个参数去除了uvm_test_top。
隐式启动 ——使用uvm_config_db机制配置default_sequence启动。 //sequence的显式启动//该方法提起和落下objection,通过phase.raise_objection(this)/phase.drop_objection(this)my_sequence seq = my_sequence::type_id::create("seq"); phase.raise_objection(this); ...
uvm_config_db#(uvm_object_wrapper)::set(this, "env.i_agt.sqr.main_phase", "default_sequence", simple_seq_library::type_id::get()); uvm_config_db#(uvm_sequence_library_cfg)::set(this. "env.i_agt.sqr.main_phase", "default_sequence.config", cfg); or simple_seq_library seq_lib...