(1) PORT可以与IMP相连接,同样EXPORT也可以与IMP相连接,其连接方法与PORT和IMP的连接完全一样; 4.2 同种类型port之间的连接(port与port, export与export) 4.2.1 PORT->PORT(以uvm_blocking_put_*为例) (1) 在UVM中,支持带层次的连接关系;PORT与PORT之间的连接不止局限于两层,可以有无限多层. 4.2.2 EXPOR...
1、不同组件之间进行通信时的需求决定了所需port/imp对的类型 需要阻塞那就需要选择blocking的PORT对 initiator是producer还是consumer决定了通信方法选择用put(阻塞)/try_put(非阻塞)还是get/try_get 如果是一对多的情况就得用analysis_port/analysis_imp,对应的通信方法就是write 2、确定了port/imp对之后就在initiato...
1.数据流还是从A 到B,但是A由动作发起者变成了接受者,B 变成了动作发起者: A 要实现名字为 get 的task/function。 2.A: 1)A中每接收到一个get就检查tr_q 是否有数据,如果没有B 的get一直等待,不返回。 3.B: 4:env 5. 也可以互相连接。
UVM中常用的EXPORT有uvm_blocking_put_export/uvm_blocking_get_export等。 无论是PORT端口还是EXPORT端口,都可以进行put、get等对transaction的基本操作。在UVM中使用connect函数来实现组件间的链接。如下图所示:组件A要将transaction发送到B组件,则可以在A组件中建立PORT端口,在B组件中建立EXPORT端口,来实现组件间的...
方法二:使用FIFO通信 将imp的实现逻辑放在FIFO中,而component(my_scoreboard)作为PORT端,主动请求get到FIFO中的数据,关键代码如下: // my_scoreboard类中 uvm_blocking_get_port #(my_transaction) exp_port; uvm_blocking_get_port #(my_transaction) act_port; ...
uvm_get_peek_PORT 按照UVM 端口名的命名规则, 它们指出了通信的两个要素: • 是不是阻寒的方式(即可以等待延时); • 何种通信方法。 单向通信--方法 • 阻塞传输方式将blocking前缀作为函数名的一部分, 而非阻塞方式则名为nonblocking。 阻塞端口的方法类型为task, 这保证了可以实现事件等待和延时;非阻塞...
与上面put()一样,get_consumer的get()将阻塞,直到get_producer的方法完成。在TLM术语中,put()和get()是阻塞方法(blocking )。 在这两个示例中,都有一个进程在运行,控制流都是从port 传递到export ,而数据流都是从producer 到consumer。 进程间通信 ...
2.2.2. 方法模式 2.2.2.1. put模式实例 2.2.2.2. get模式实例 2.2.2.3. FIFO模式 FIFO的本质是一块缓存加两个IMP。 在monitor与FIFO的连接关系中,monitor中依然是 analysis_port,FIF0中是uvm_analysis_imp,数据流和控制流的方向相同。 在scoreboard与FIFO的连接关系中,scoreboard中使 blocking_get_port端口。
UVM的transaction级别通信的数据接收方式也有多种,其中一种就是使用uvm_blocking_get_port。这也是一个参数化的类,其参数是要在其中传递的transaction的类型。在my_model的第6行中,定义了一个端口,并在build_phase中对其进行实例化。在main_phase中,通过port.get任务来得到从i_agt的monitor中发出的transaction。