欢迎光临
我们一直在努力

UVM Monitor 与 Analysis Port:观察者与广播站

激励之外,我们还需要“眼睛”

在 UVM 验证平台中,激励的产生、驱动和响应只是故事的一半。验证的本质是检查行为是否符合预期,这就要求平台能够观察 DUT 的输入输出、内部状态,并将观察结果传递给检查组件。

于是,monitor 应运而生。它像一名安静的观察者,从不主动改变 DUT 的任何信号,只是被动地采样接口上的事务,然后通过 analysis port 将观察到的事务“广播”给所有感兴趣的组件(如 scoreboard、coverage collector、register predictor)。

重点:monitor 的核心使命是“采样 + 广播”,绝不参与激励生成或接口驱动,也不应阻塞仿真流程。

Monitor 与 Analysis Port

Monitor —— 被动的采样者

uvm_monitor 是一个 UVM 组件,通常与某个 interface 关联,在 run_phase 中不断监听接口信号的变化。当它识别到一个完整的事务(例如一次总线读写、一个数据包)发生时,它会创建一个 transaction 对象,将接口上的信号采样进去,然后通过 analysis port 发送出去。

Monitor 的原则:

  • 只采样,不驱动:不得对接口信号赋值(使用阻塞/非阻塞赋值),避免影响 DUT。
  • 不阻塞:采样后立即广播,不能等待 subscriber 处理完成。
  • 不管理 objection:monitor 不应 raise/drop objection,因为它不能决定仿真何时结束。

Analysis Port —— 一对多的广播通道

uvm_analysis_port #(T) 是 UVM TLM 中用于非阻塞广播的端口。它是一个参数化的类,T 通常是事务类型(如 my_trx)。通过调用 ap.write(trx),所有连接到该端口上的 subscriber(如 uvm_analysis_imp)都会收到这个事务,完成一对多的分发。

特点:

  • 广播:一个 producer 可以同时通知多个 consumer,互不影响。
  • 非阻塞:write() 调用立即返回,不会等待 subscriber 处理,适合被动监控。
  • 无握手:不提供背压机制,producer 不关心 consumer 是否准备好。

赞(0)
未经允许不得转载:171主机测评 » UVM Monitor 与 Analysis Port:观察者与广播站
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址