driver在调用get_next_item,尝试从req fifo中取出数据,但实际上get_next_item真正是在哪里执行的呢,实际上是在sequencer中执行的,这与TLM1.0通信有关。port调用get_next_item函数,port的get_next_item函数调用imp的get_next_item函数,imp的get_next_item函数再调用组件的get_next_item函数,归根结底实际上调用的是...
首先我们看下在uvm_sequencer里是如何实现get_next_item这样一个通信方法的 这里需要注意的是get_next_item_called(sequence_item_requested同理)这样一个变量,也就是说调用get_next_item的时候get_next_item_c…
get_next_item:阻塞式获取下一个transaction,若无transaction则等待。try_next_item:非阻塞式尝试获取下一个transaction,若无transaction则立即返回。2.4.3 default_sequence的使用 引入原因:简化测试用例的编写,提高代码复用性。使用方法:在environment中指定default_sequence,从而在启动测试时自动运行该...
sequence中的uvm_do宏发送transaction后,会一直等待,直到driver返回item_done信号。 在某个component(如my_sequencer、 my_env)的main_phase中启动这个sequence,即可让sequence向sequencer发送transaction。 get_next_item和try_next_item的比较 get_next_item是阻塞的,它会一直等到有新的transaction才会返回; try_next_i...
在driver中通过get_next_item任务来得到一个新的req,并且驱动它,驱动完成后调用item_done通知sequencer(完成握手)。 sequencer和sequence之间: sequence中的uvm_do宏发送transaction后,会一直等待,直到driver返回item_done信号。 在某个component(如my_sequencer、 my_env)的main_phase中启动这个sequence,即可让sequence向...
taskget_next_item(output REQ req_arg):采取blocking的方式等待从sequence获取下一个item。 tasktry_next_item(output REQ req_arg):采取nonblocking的方式从sequencer获取item,如果立即返回的结果req_arg为null,则表示sequence还没有准备好。 function voiditem_done(input RSP rsp_arg=null):用来通知sequence当前的...
当driver中调用**seq_item_port.get_next_item(req)**时,实际调用的是uvm_sequencer中的get_next_item函数。从m_req_fifo容器中拿到之前sequence放入的transaction。 driver中的seq_item_port.item_done(),实际调用的是uvm_sequencer中的item_done函数。sequence通过wait_for_item_done和sequencer的item_done握手,...
item_done 是一个非阻塞方法,应该在get_next_item() 或成功的 try_next_item() 调用之后调用。如果不传参数或者传一个空句柄,也可以完成握手,然后sequencer的fifo也不会有item进去,如果传的不是空句柄的话,就会送进对应的fifo。 peek 如果在sequencer的对应 FIFO 中没有可用的 REQ sequence_item,peek() 方法...
uvm中的try_next_item 文章目录 一、基本概念 二、寄存器模型的集成 1. 寄存器模型与总线的桥接 2. adapter的实现 3. 寄存器模型rgm和adapter的集成 三、访问寄存器的方式 1. 前门访问 2. 后门访问 3.前门访问和后门访问的比较 四、寄存器模型的常规方法...
uvm item 文章目录 1.与sequencer之间完成握手。 2.与sequence之间完成握手。 总结 PS:sequencer 的仲裁机制 1.与sequencer之间完成握手。 当driver 使用 get_next_item( ) 得到一个 transaction 时,sequencer 同时也会保留一份这个刚刚发送出去的 transaction。当 driver 没有得到 transaction 的情况下,sequencer会将...