UVM Env 与 Agent (Active / Passive):灵活复用的组件化设计

同一 IP 在不同层级的角色切换

在 IP 级验证中,一个 UART、SPI 或 DMA 模块通常是完整的 DUT,验证环境需要为其提供激励(由 driver 驱动总线),同时也要监测其输出(monitor 采样),因此环境中的 agent 必须主动驱动——包含 driver 和 sequencer。

但在 SOC 级验证中,该 IP 只是整个芯片的一个子模块,大多数情况下它不需要被主动激励,只需要监测其接口行为即可(例如观察 CPU 发出的配置命令、或模块产生的数据流)。此时,如果每个 IP 的 agent 都还包含 driver/sequencer,不仅浪费资源,还可能导致多重驱动冲突。

解决方案就是让 agent 支持 active/passive 模式:通过一个配置变量 is_active 控制是否创建 driver 和 sequencer。这样,同一个 agent 类可以在 IP 级作为主动激励源,在 SOC 级变为被动观察者,实现“一次编写,到处复用”。

重点:agent 是验证平台中最基本的复用单元,active/passive 切换是它适应不同层级验证的核心机制。

Env 与 Agent 的职责划分

uvm_env —— 大容器,装“大件”

uvm_env 是环境容器,用于组织和管理验证平台中的主要组件,如 agent、scoreboard、reference model、coverage collector、virtual sequencer 等。它不直接与 DUT 接口交互,而是通过内部的 agent 来完成。

典型 env 结构:

  • 一个或多个 agent(例如一个 AHB master agent,一个 UART agent)
  • 一个 scoreboard
  • 一个 reference model
  • 覆盖率和协议检查组件

env 本身不产生或检查数据,它的职责是“组装和连接”。

uvm_agent —— 小容器,装“小件”

uvm_agent 是一个更细粒度的容器,专门用于封装与某个特定接口相关的组件。一个标准的 agent 通常包含:

  • monitor:被动采样接口信号,广播事务(分析端口)。无论 active 还是 passive 模式,monitor 通常都需要。
  • driver:主动驱动接口,将事务转换为信号级波形。仅在 active 模式下创建。
  • sequencer:调度 sequence 产生的事务给 driver。仅在 active 模式下创建。

此外,agent 还可以包含 coverage collector、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值