Specman - 将监视器连接到记分板时出错

时间:2017-12-27 15:36:12

标签: verification uvm specman e

我在我的项目中使用e(specman)。 我为uart构建了验证环境。 我有一个类似于any_sequence_item uart_frame_s.

的结构

我想在uart中为tx添加记分板。 我在uart_tx_agent

中有以下实例
uart_monitor: uart_tx_monitor_u is instance;

记分板的定义:

unit uart_tx_scoreboard_u like uvm_scoreboard{
scbd_port frame_add : add uart_frame_s;
scbd_port frame_match : match uart_frame_s;
};

我尝试连接:

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_scb(记分板)是uart_tx_agent中的实例

监视器中TLM端口的定义:

uart_frame_s_started : out iterface_port of tlm_analysis of uart_frame_s is instance;
uart_frame_s_ended : out iterface_port of tlm_analysis of uart_frame_s is instance;

我收到以下错误: 错误:' uart_monitor' (' uart_tx_monitor_u')没有' uart_frame_S_started'字段.... 错误:' uart_monitor' (' uart_tx_monitor_u')没有' uart_frame_S_ended'字段

1 个答案:

答案 0 :(得分:0)

根据您在上面提供的信息,我可以得出以下结论:

1.e记分板带有预定义的TLM实现端口,您需要将监视器TLM输出端口连接到。您似乎没有在监视器中定义TLM端口。请求在连接到记分板时需要定义那些TLM端口(在记分板文档中有这样的示例)。 我的建议是,一旦你从公交车上收集完帧后,发出一个事件通知一个帧已经完成(我猜你可以称之为#34; uart_frame_s_endded"),然后在那个事件发出时,通过Monitor的TLM输出端口将收集的帧发送到记分板以进行添加/匹配。 (我想'添加'适合UART tx)。

  1. 如果定义了端口,请确保在代码中的某个位置使用connect_portS()函数,解析器将在端口定义之后读取。
  2. 只是一个FYI:

    1. 您似乎在代理中定义了记分板。 (看起来tx_scbd和uart_monitor属于同一层次结构。 它被认为是不良做法'将系统级组件(记分板)放在uVC(在本例中是UART接口组件)中。
    2. 这有助于