概要:
UVM中的analysis port
是一种特殊的TLM(Transaction Level Modeling)端口,主要用于一对多的广播式通信,常见于验证环境中监测数据的分发(如Monitor将数据广播给Scoreboard、Coverage Collector等组件)。
一、Analysis Port的特点
- 一对多通信
默认支持一个analysis_port
连接到多个uvm_analysis_imp
(IMP),实现广播功能。 - 非阻塞特性
与put
/get
端口不同,analysis_port
没有阻塞/非阻塞之分,发送数据时无需等待接收方响应。 - 仅支持
write
操作
接收方需在组件内定义write
函数,发送方调用write
方法传递事务(transaction)。
二、连接规则
- 层级限制
analysis_port
可连接至analysis_export
或analysis_imp
,但最终必须终止于analysis_imp
。- 错误示例 :
analysis_port
直接连接analysis_export
而未连接analysis_imp
会导致错误。
- 典型连接方式
- 直接连接 :
analysis_port → analysis_imp
(最简形式)。 - 间接连接 :
analysis_port → analysis_export → analysis_imp
(多层级)。
- 直接连接 :
三、使用步骤
1. 发送方(如Monitor)
- 定义
analysis_port
并调用write
方法 :class my_monitor extends uvm_monitor; `uvm_component_utils(my_monitor) uvm_analysis_port#(my_transaction) ap; // 声明analysis_port function void