当前位置: 首页 > news >正文

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

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

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

层级组件核心功能关键 TLM 端口 / 通信方式
激励生成层Sequence生成随机化 apb_transaction 事务隐式 seq_item_port(通过 finish_item 发送)
事务调度层Sequencer接收 Sequence 事务 + 分发给 Driverseq_item_export(收)+ seq_item_port(发)
信号驱动层Driver事务→DUT 物理信号(APB 时序)seq_item_port(从 Sequencer 取事务)
信号监测层Monitor采样 DUT 输出→apb_transactionuvm_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_portSequenceSequencer点对点(单向)Sequence 发送事务给 Sequencer
uvm_seq_item_portDriverSequencer点对点(双向)Driver 向 Sequencer 请求 / 确认事务
uvm_seq_item_exportSequencer-被动接收暴露 Sequencer 的事务接收能力
uvm_analysis_portMonitorScoreboard一对多(广播)Monitor 上报 DUT 响应事务
http://www.xdnf.cn/news/1410301.html

相关文章:

  • audioLDM模型代码阅读(三)——变分自编码器VAE
  • LeetCode100-160相交链表【链表介绍】
  • 基于AI的大模型在S2B2C商城小程序中的应用与定价策略自我评估
  • USBX移植(X是eXtended的意思)
  • 【python]变量及简单数据类型
  • Spring Data JPA 派生查询方法命名速查表
  • 平滑滤波器(Smooth Filter)的MATLAB与Verilog仿真设计与实现
  • linux内核trace_begin和trace_end使用分析
  • ICode总线原理
  • 【Bluedroid】A2DP Source 音频传输停止流程及资源管理机制(btif_a2dp_source_stop_audio_req)
  • ESP32学习笔记_Peripherals(5)——SPI主机通信
  • 编写一个名为 tfgets 的 fgets 函数版本
  • FPGA入门指南:从零开始的可编程逻辑世界探索
  • deep seek的对话记录如何导出
  • 【大数据技术实战】流式计算 Flink~生产错误实战解析
  • Springcloud-----Nacos
  • 【Spring Cloud微服务】7.拆解分布式事务与CAP理论:从理论到实践,打造数据一致性堡垒
  • Java试题-选择题(25)
  • 【Java进阶】Java与SpringBoot线程池深度优化指南
  • 【计算机组成原理·信息】2数据②
  • SpringAI应用开发面试全流程:核心技术、工程架构与业务场景深度解析
  • 第2.5节:中文大模型(文心一言、通义千问、讯飞星火)
  • 【系统分析师】高分论文:论网络系统的安全设计
  • 【51单片机】【protues仿真】基于51单片机音乐喷泉系统
  • Mysql什么时候建临时表
  • MySQL直接启动命令mysqld详解:从参数说明到故障排查
  • 策略模式:灵活应对算法动态切换
  • 探索数据结构中的 “树”:揭开层次关系的奥秘
  • 3【鸿蒙/OpenHarmony/NDK】如何在鸿蒙应用中使用NDK?
  • Makefile语句解析:头文件目录自动发现与包含标志生成