这组特例 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...
可以看到,uvm_driver里面声明了三个port:seq_item_port/rsp_port/uvm_analysis_port,seq_item_port是一个uvm_seq_item_pull_port #(REQ, RSP)的类,这是个啥呢?这是uvm_port_base下面的一个子类。 它的代码部分特别简单。(属于uvm_seq_item_pull_port ) //--- // // Class: uvm_seq_item_pull_por...
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...
uvm_reg_item:它派生自uvm_sequence_item,用于register model中 常用的派生自uvm_component的类 uvm_driver:所有的driver都要派生自uvm_driver,uvm_driver多了如下几个成员变量: uvm_seq_item_pull_port #(REQ, RSP) seq_item_port; uvm_seq_item_pull_port #(REQ, RSP) seq_item_prod_if; // alias uv...
put/peek/get 等系列端口都具有阻塞和非阻塞之分,但对于 analysis_port(analysis_export)来说,没有阻塞和非阻塞的概念。 不同于put/peek/get 等系列端口,对于analysis_port(analysis_export)两种端口仅包含 write 操作,与之相连的 analysis_imp 所在的 component 必须定义一个名为 write 的函数。
(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) ...
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_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_seq_item_pull_imp #(REQ, RSP, this_type) seq_item_export uvm_analysis_export #(RSP) rsp_export 通常情况下,用户可以通过匹配的第一对TLM接口完成item的完整传送,即driver::seq_item_port和sequencer::seq_item_export。这一段端口在连接时的同其它端口连接一样,即通过driver::seq_item_port.connec...
但是,我不确定如何连接定序器和记分板,因为定序器拥有 uvm_seq_item_pull_imp并且不可能简单地将其连接到分析 imp。我的想法是检查uvm_driver使用的端口,即uvm_seq_item_pull_port。 不幸的是,连接定序器和记分板似乎并不常见,但出于我的目的,这是必要的。是否只能使用uvm_seq_item_pull_port进行序列器-记分...