【发布时间】:2018-06-12 23:56:15
【问题描述】:
根据Cadence的通用验证方法(UVM)e用户指南:
监视器识别的事件取决于实际协议。通常,对于基本数据项,监视器 提供 item_started 和 item_ended 事件(例如,packet_started 和 packet_ended)。监视器收集 来自信号的项目数据并创建一个具有完整项目数据的 current_item,准备好在 item_ended 事件发生。除原始数据外,监控器还应收集相关的时间信息,例如 交易的持续时间。
我尝试在我的代理中执行以下操作:
connect_ports() is also {
uart_monitor.uart_frame_s_started.connect(tx_scb.uart_frame_s_add);
uart_monitor.uart_frame_s_ended.connect(tx_scb.uart_frame_s_match);
};
我收到以下错误:错误:'uart_monitor'('uart_tx_monitor_u')没有'uart_frame_S_started'字段...。错误:'uart_monitor'('uart_tx_monitor_u')没有'uart_frame_S_ended'字段
但是当我在监视器中声明事件时:
event uart_frame_s_started;
event uart_frame_s_ended;
没有错误。 如果这些事件应该由监视器提供,我为什么要声明它们?
【问题讨论】:
-
标准 uvm_monitor 没有定义任何这种方式的事件。一次,因为数据类型名称不是通用的(框架是协议特定的术语,而 uvm_monitor 是为可重用而设计的)。您需要自己定义这些事件。但是,您需要定义 TLM 端口以连接到记分板 TLM 端口。查看 Cadence 文档以获取更多信息,或向 Cadence 支持提交支持票。
-
@yuvalg - 正如我所写,我在通用验证方法 (UVM) 和 Cadence 规范的用户指南中阅读了此内容。
-
文档中确实没有显示'uart_frame_s_started'的定义,但这并不意味着它是为您定义的。请查看 Xcelium 安装中的 UVM 示例:Monitor :
/tools/methodology/UVM/CDNS-1.1d/e/uvm_examples/xcore/e/xcore_monitor.e 下的目录,记分牌: /tools/methodology/UVM/CDNS-1.1d/e/uvm_examples/xcore/e/xcore_checker.e。祝你好运
标签: monitor verification specman