在将事务随机化并设置了数据值之后,它会使用“finish_item”发送给driver进行处理,finish_item应该被真正称为“EXECUTE_ITEM”。此时,driver获取句柄并执行它。一旦driver调用“item_done”,然后finish_item将返回并且事务将会被执行。 执行一个序列——The Driver(驱动器) Driver的代码相对简单,它从uvm_driver派生并...
Finish_item实际上应该称为execute_item。此时,驱动程序将获取事务句柄并执行它。一旦驱动程序调用item_done(),然后finish_item将返回并且交易已执行。 执行驱动程序 驱动程序代码相对简单。它从uvm_driver派生并包含run_phase。run_phase是由UVM核心自动启动的线程。run_phase被实现为永远的开始-结束循环。在开始到结束...
seqr_execute_item [-new_thread <0|1>] 在序列发生器中执行一个序列项。 f. 用户自定义调试命令 除了uvm_debug库附带的内置调试命令之外,用户还可以通过创建调试命令回调函数来创建自定义调试命令,用户可以在其中调用测试平台中的任何函数或任务。用户不必显式注册自定义调试命令。唯一需要的设置是创建调试命令回调...
rw=uvm_reg_item::type_id::create("write_item",,get_full_name());rw.kind=UVM_WRITE;rw.value[0]=value;//...do_write(rw);endtask// do_writetask uvm_reg::do_write(uvm_reg_item rw);//...// EXECUTE WRITE...case(rw.path)//...UVM_FRONTDOOR:begin//...// ...VIA BUILT-...
也可以使用非阻塞的方式,利用try_next_item()方法对上面的run_phase进行重写。 taskrun_phase(uvm_phasephase);foreverbegin// Try the next data item from sequencer (does not block).seq_item_port.try_next_item(s_item);if(s_item==null)begin// No data item to execute, send an idle transaction...
现在,我们已准备好开始从主节点创建事务。下面的示例创建一个 WRITE 事务,设置所有必填字段,并使用 execute_item() 方法将其发送到 VIP 主驱动程序。 1 2 3 4 5 6 7 8 9 10 18 19 20 21 登录后复制/* Create and Send atomic transaction */ ...
tasksfr_driver::run_phase(uvm_phasephase);sfr_seq_itemitem;foreverbeginseq_item_port.get_next_item(item);SFR.execute(item);seq_item_port.item_done();end '''The Driver BFM''' taskexecute(sfr_seq_itemitem);if(reset==1)beginwait(reset==0);endelsebegin@(posedgeclk);address=item.address...
· execute(uvm_component comp, uvm_phase phase):执行该组件comp的top-down phase。 classmy_custom_phaseextendsuvm_topdown_phase;classmy_custom_phaseextendsuvm_bottomup_phase; uvm_bottomup_phase则是UVM定义的另一个虚拟基类,用于自下而上地运作的函数phase。当execute()函数被层次架构中所有适用的组件调用...
item.end_event.wait_on(); // get_response(rsp, item.get_transaction_id()); //if needed endtask 9. A simple two-stage pipeline driver that can execute address and data phases concurrently might be implemented as follows: task run(); ...
model都是直接派生自uvm_component。reference model的作用就是模仿DUT,完成与DUT相同的功能。DUT是用Verilog写成的时序电路,而reference model则可以直接使用SystemVerilog高级语言的特性,同时还可以通过DPI等接口调用其他语言来完成与DUT相同的功能。UVM中还有一个比较常用的元素uvm_sequence_item,它不构成UVM树 ...