seq_item_port.item_done(); end endtask: run_phase endclass: jelly_bean_driver 可以看到在run_phase里不用声明就直接调用了seq_item_port这个东西,那么它肯定是在driver类中系统已经定义好了的东西,我们打开uvm_driver看一看,uvm_driver的代码特别简单,我就连着注释整块放上来了。(属于uvm_driver) typedef c...
与driver类似,在jelly_bean_sequencer中的seq_item_export实际上是根据另一个参数化类uvm_seq_item_pull_imp为传输jelly_bean_transaction而专门扩展创建的一个对象。[class] uvm_seq_item_port类的详细内容可以参考UVM源码文档src/tlm1/uvm_sqr_connections.svh。简略的代码如下图5所示,该类的主要内容也是由两个...
driver的seq_item_port是uvm_seq_item_pull_port#(REQ,RSP)类型,是一种双向端口。 sequencer的seq_item_export是uvm_seq_item_pull_imp #(REQ, RSP, this_type)类型。 seq_item_port其包含了以下的内建方法 task get_next_item(output REQ) task try_next_item(output REQ) function void item_done(inpu...
这组特例 port 就是 uvm_seq_item_pull_port 和 uvm_seq_item_pull_imp ,通过名字可以知道,这组端口通常是在 sequencer 和 driver 中使用的,用于它们之间的数据传递。uvm library 中 原型代码如下所示: uvm_seq_item_pull_port classuvm_driver#(typeREQ=uvm_sequence_item,typeRSP=REQ)extendsuvm_c...
my_drv.seq_item_port.connect(my_seqr.seq_item_export); 我们从seq_item_port入手。 seq_item_port是driver的成员变量。在uvm_driver.svh中的声明如下: uvm_seq_item_pull_port #(REQ, RSP) seq_item_port;其中,REQ和RSP均为driver类的参数,RSP默认与REQ相同。在uvm_sqr_connections.svh中该类型定义如下...
uvm_driver 中 seq_item_pull_port 的句柄是 seq_item_port类型。driver代码用来与sequencer交互的 API 被 seq_item_port 引用,但实际上是在sequencer seq_item_export 中实现的(这是标准的 TLM )。 “说人话就是握手,driver收了可以不发rsp,不过这样sequence就就没有相关信息了。然后由于本质上还是通过tlm...
而uvm_seq_item_pull_port是一个uvm专用的tlm口同样,在uvm_sequencer中有 uvm_seq_item_pull_imp 19、#(REQ, RSP, this_type)seq_item_export;而在上层的uvm_agent中有 virtual function voidconnect_phase(uvm_phase phase); drv.seq_item_port.connect(sqr.seq_item_export); endfunction这里drv跟sqr...
//uvm_do_with这个宏负责把各个最基本的sequence_item加上约束发送出去。 endclass : read_rx_fifo_seq 如何把这个sequence发送出去呢?这就需要在testcase里边把这个sequence通过sequencer发出去。 class read_rx_fifo_test extends uvm_test; `uvm_component_utils(read_rx_fifo_test) ...
//uvm_do_with这个宏负责把各个最基本的sequence_item加上约束发送出去。 endclass : read_rx_fifo_seq 如何把这个sequence发送出去呢?这就需要在testcase里边把这个sequence通过sequencer发出去。 class read_rx_fifo_test extends uvm_test; `uvm_component_utils(read_rx_fifo_test) ...
(1)driver(参数化类):主动向sequencer索要sequence_item,即transaction。并将sequence_item的信息驱动到DUT的端口上。相当于完成从transaction到signal端口级别的转换。默认RSP=REQ //driver的端口 uvm_seq_item_pull_port #(REQ, RSP) seq_item_port(可以get和put) ...