【问题标题】:Specman - Monitor doesn't recognize events which it is supposed to provideSpecman - Monitor 无法识别它应该提供的事件
【发布时间】: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


【解决方案1】:

你在使用 uvm 记分牌吗?如果是这样,它的端口(添加和匹配)是 TLM 端口。含义 - 他们希望将数据项写入他们。 但是你连接到他们的事件端口。

有些奇怪 - 在您的代码中,事件名称有一个较低的“s”,但在错误中 - 当您打印它时 - 有大写的 S。是 uart_frame_s_started 还是 uart_frame_S_started ?

【讨论】:

  • 我触发了与事件的连接。请查看通用验证方法 (UVM) 和 Cadence 规范的用户指南。有一些例子可以证明这一点。我在问题中写了他们的部分描述。
  • 为了连接计分板,您必须在监视器中实例化 TLM 端口。用户指南确实只显示了如何连接端口,但没有显示它们是如何定义的。例如,如果将记分牌定义为 struct uart_frame 的记分牌,则监视器必须实例化类似“uart_frame_ended : out interface_port of tlm_analysis of packet is instance;”的端口,然后将此端口连接到记分牌
  • 请看他们的例子:connect_ports() is also { // Connect the monitors for one flow: // Agent #1 TX connected to the add port // Agent #2 RX connected to the match port agent_1.tx_monitor.packet_ended.connect(scbd.packet_add_1); agent_2.rx_monitor.packet_ended.connect(scbd.packet_match_1);}; 你可以看到他们在连接函数中使用这些事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多