UVM APB 验证 VIP Agent 逻辑架构与数据流图

发布于:2025-09-01 ⋅ 阅读:(16) ⋅ 点赞:(0)

APB 验证组件通信与数据传输逻辑图(采用分层结构 + 箭头标注,清晰呈现组件交互、TLM 端口及数据流方向):
UVM APB 验证 VIP Agent 逻辑架构与数据流图
在这里插入图片描述
关键标注说明(对应图中交互关系)

1. 核心组件分层(从左到右 / 上到下)

层级 组件 核心功能 关键 TLM 端口 / 通信方式
激励生成层 Sequence 生成随机化 apb_transaction 事务 隐式 seq_item_port(通过 finish_item 发送)
事务调度层 Sequencer 接收 Sequence 事务 + 分发给 Driver seq_item_export(收)+ seq_item_port(发)
信号驱动层 Driver 事务→DUT 物理信号(APB 时序) seq_item_port(从 Sequencer 取事务)
信号监测层 Monitor 采样 DUT 输出→apb_transaction uvm_analysis_port(广播给 Scoreboard)
验证判断层 Scoreboard 比对 Monitor 事务与预期结果 uvm_analysis_imp(接收 Monitor 数据)
组件容器层 Agent 集成 Driver/Sequencer/Monitor 内部连接 Driver 与 Sequencer 的 TLM 端口

2. 三大核心数据流(箭头方向 = 数据传输方向)

(1)激励生成→DUT 驱动流(主动流)

Sequence → Sequencer → Driver → DUT

① Sequence:create(txn)→randomize(txn)→start_item(txn)→finish_item(txn)(事务发往 Sequencer);

② Sequencer:通过seq_item_export接收事务→存入内部队列→等待 Driver 请求;

③ Driver:run_phase循环中get_next_item(txn)(从 Sequencer 取事务)→drive_apb_signal(txn)(驱动 DUT 引脚)→item_done()(告知 Sequencer 完成);

(2)DUT 输出→验证比对流(被动流)

DUT → Monitor → Scoreboard

① DUT:执行 Driver 驱动的 APB 操作→输出响应信号(如读操作的 PRDATA);

② Monitor:run_phase中采样 DUT 引脚(如vif.psel/vif.prdata)→判断操作类型→create(mon_txn)→填充addr/data/we→ap.write(mon_txn)(广播事务);

③ Scoreboard:通过analysis_imp接收事务→比对 “预期结果”(如根据 addr 查寄存器模型)与 “实际结果”(mon_txn.data)→输出验证结果;

(3)Agent 内部组件连接(控制流)

Agent.connect_phase → 绑定Driver.seq_item_port ↔ Sequencer.seq_item_export

作用:建立 Driver 与 Sequencer 的 TLM 通信通道,确保 Driver 能 “按需拉取” Sequencer 中的事务,是激励流的关键连接点;

代码逻辑:drv.seq_item_port.connect(sqr.seq_item_export);(Agent 内部自动完成,无需用户干预核心通信);

3. TLM 端口核心作用(避免组件直接调用)

TLM 端口类型 发起方 接收方 通信模式 核心用途
uvm_seq_item_port Sequence Sequencer 点对点(单向) Sequence 发送事务给 Sequencer
uvm_seq_item_port Driver Sequencer 点对点(双向) Driver 向 Sequencer 请求 / 确认事务
uvm_seq_item_export Sequencer - 被动接收 暴露 Sequencer 的事务接收能力
uvm_analysis_port Monitor Scoreboard 一对多(广播) Monitor 上报 DUT 响应事务

网站公告

今日签到

点亮在社区的每一天
去签到