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

Synopsys PCIe VIP(2) Shadow Memory、后门读写和调试方法

Unified VIP

Synopsys的PCIe agent VIP由sv类和hdl module两部分组成,hdl模型又可以分为 Existing 模型和 Unified 模型,从verdi打开可以看到差别。简单地说,Existing模型通过全局define配置,而Unified模型通过parameter配置还多了interface,所以Unified模型更加灵活。VIP配置类中也将Existing模型称为single instance model。

看似Unified中没有target、requester、driver和port的hdl module,但实际都在m_ser中(serdes模式下generate if例化名),所以实现差别不大。

Existing VIP

Existing VIP中的HDL module通过全局define配置,因为没有interface,和DUT只能以信号形式连接,同时不同接口和速率实例化的模型也不一样(如下列举)。所以缺点是会在一些多样配置或多link场景使用受限。Existing VIP的示例在VIP 2018版本还有,后续版本就被删掉了。

svt_pcie_device_agent_serdes_x16_8g_hdl.sv svt_pcie_device_agent_serdes_x16_hdl.sv svt_pcie_device_agent_serdes_x32_8g_hdl.sv svt_pcie_device_agent_serdes_x32_hdl.sv svt_pcie_device_agent_pma_x16_8g_hdl.sv svt_pcie_device_agent_mpipe_x16_8g_hdl.sv svt_pcie_device_agent_spipe_x16_8g_hdl.sv

Unified VIP

(1)Unified VIP特点
• Unified VIP使用单一的module模型(svt_pcie_single_port_device_agent_hdl),模型通过parameter配置,不需要全局define。
• Unified VIP使用单一的接口(svt_pcie_if)。

(2)Unified VIP参数
简单列举部分参数,参数即svt_pcie_single_port_device_agent_hdl的parameter。

parameter描述
SVT_PCIE_UI_PCIE_SPEC_VER协议版本
SVT_PCIE_UI_PIPE_SPEC_VERPIPE协议版本
SVT_PCIE_UI_NUM_PHYSICAL_LANES最大支持lane数量
SVT_PCIE_UI_DISPLAY_NAMEHDL module例化名,symbol log用
SVT_PCIE_UI_ENABLE_SHADOW_M EMORY_CHECKING使能check
SVT_PCIE_UI_MON_PHY_INTERFACE_TYPE接口类型,支持serdes、PMA、PIPE
SVT_PCIE_UI_DEVICE_IS_ROOT1:RC 0:EP

Global Shadow Memory

自动检查

示例环境中可以看到和RC、EP同级还包含Global Shadow Memory,可以理解为PCIE总线空间的存储模型,会记录memory write和configuration write类型的写TLP包,然后对TLP读数据进行自动检查。Shadow Memory和Agent VIP相似同样包含uvm和HDL两部分,例化HDL的同时要通过宏定义指定hierarchy路径。

`define EXPERTIO_PCIESVC_GLOBAL_SHADOW_PATH test_top.global_shadow0 pciesvc_global_shadow #( .DISPLAY_NAME( "global_shadow0." ) ) global_shadow0();

后门读写

实际上RC、EP Agent VIP也有自己的target memory存储模型,所以总共是3个存储模型,这3个模型都可以后门读写。例如RC发起1次memory write,那可以通过对Shadow Memory做后门读,也可以通过对EP的target memory做后门读,然后进行比对。

后门读写可以通过VIP HDL部分的task实现,下为RC、EP和Shadow Memory读写示例。

bit [31:0] addr = 32'h2000_0000; bit [31:0] wdata = 32'h1234_5678; bit [31:0] byte_enable = 4'hf; bit [31:0] rdata; bit [31:0] status; test_top.endpoint0.mem_target0.Write(addr, byte_enable, wdata, status); test_top.endpoint0.mem_target0.Read(addr, byte_enable, rdata, status); test_top.global_shadow0.MemWrite(addr, byte_enable, wdata, status); test_top.global_shadow0.MemRead(addr, byte_enable, rdata, status);

后门读写也可以通过VIP的uvm部分的sequence实现,相关sequence可以参考svt_pcie_mem_target_service_sequence_collection.svp

调试方法

波形信号

VIP module模型中包含ascii格式的信号用于调试,路径在test_top.root0.port0.tl0/dl0/pl0.ascii*,这个是Existing模型示例,Unified模型port0路径有差别,但也能从port0再找到这些信号。

(1)TL层

TL层可以看到TLP包的类型。

信号名描述
ascii_rx_tlp_fc_type接收TLP flow control类型,例如P、NP、CPL
ascii_rx_tlp_type接收TLP类型 ,对应字段fmt+type
ascii_rx_tlp_vc接收TLP虚拟通道号
ascii_rx_tlp_xld接收TLP transaction ID,对应字段Requester ID(16bit)+Tag(10bit)
ascii_tx_tlp_fc_type发送TLP flow control类型
ascii_tx_tlp_type发送TLP类型
ascii_tx_tlp_vc发送TLP虚拟通道号
ascii_tx_tlp_xld发送TLP transaction ID

(2)DL层
列举部分DL层调试信号,可以看到流量控制初始化的DLLP包,和传递的TLP包。

信号名描述
ascii_tx_tlp_type发送 TLP包, 类型
ascii_tx_tlp_seq_num发送 TLP包, DL层加的序号
ascii_tx_tlp_ei_code发送 TLP包,有错误注入
ascii_tx_dllp_type发送 DLLP包, 类型
ascii_tx_dllp_seq_num发送 DLLP包, 序号
ascii_tx_dllp_credit_vc发送 DLLP包, 虚拟通道号
ascii_tx_dllp_credit_data_value发送 DLLP包, 流量控制,数据缓存数值
ascii_tx_dllp_credit_hdr_value发送 DLLP包 ,流量控制,包头缓存数值
ascii_dlcmsm_stateDL层状态机
ascii_aspm_state低功耗状态机
ascii_pm_state电源状态机

(3)PL层
列举部分PL层调试信号,数据以symbol形式表示。可以看到poll.cfg阶段下发送COM+PAD+…+D5.2 symbol(即1个TS2序列)。

信号名描述
ascii_ltssm_tx_state发送LTSSM状态机(这个信号在`include文件里,要全文件搜索)
ascii_ltssm_rx_state接收LTSSM状态机
ascii_lanen_tx_data发送数据,n为0~31
ascii_lanen_rx_data接收数据,n为0~31

http://www.jsqmd.com/news/1203259/

相关文章:

  • 阿里云 PolarDB-X vs 分库分表中间件对比:为什么推荐原生分布式数据库
  • 二极管对数特性在电流光学传感中的应用与实现
  • 电荷泵电路原理、设计与应用全解析
  • 风电光伏数据 99-201综合能源数据微电网数据 电负荷热负荷冷负荷气负荷数据全年热负荷,冷负荷,光负荷,风负荷,小时级
  • Xen虚拟化技术深度解析:OpenEuler下的高效虚拟化解决方案
  • BiSheng JDK-build性能调优:构建速度提升30%的优化策略
  • 零代码私有化自动化AI算法训练服务器DLTM让AI训练人人可用
  • 2026年光功率计品牌榜深度解析:从科研到工业的核心测量工具选型参考
  • ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表)
  • Upscayl终极指南:免费AI图像放大工具的完整使用教程
  • 亲身到店体验武汉亨得利官方名表服务中心|完整地址与客服电话(2026年7月更新) - 亨得利官方博客
  • 阿里云 PolarDB vs 华为云 GaussDB/TaurusDB:MySQL 生态云数据库选型指南
  • OpenClaw 2.6.4 Windows部署避坑指南:四层验证法实战
  • 联盛德W806开发板GPIO配置与LED点亮实践
  • HMIR前端架构详解:Vue3+TypeScript构建现代化管理界面
  • 深圳市2026年技术先进型服务企业认定申请指南
  • MasterGo MCP 重磅升级:赋予 AI 掌控画布的能力
  • Masstree社区贡献指南:如何参与开源项目开发与代码提交流程
  • 地理特征识别技术:基于图像的智能地理位置溯源工具实践
  • 用 Diffusion-TS 生成轴承振动信号
  • openEuler/splitter进阶:自定义切片规则优化你的容器镜像
  • TRAE AI 创造力大赛 - 趣赢分析器
  • 【WPS AI表格避坑白皮书】:实测发现87%用户正在误用AI函数——这5个致命错误导致结果偏差超42%
  • Domino: Decoupling Causal Modeling from Autoregressive Drafting in Speculative Decoding
  • 2026年制造业获客服务商权威榜单:五大实战驱动型厂商实力解析 - GEO优化
  • 从零到实战:手把手教你玩转均线交叉策略
  • 计算机毕业设计之基于SpringBoot的至强房屋租赁系统
  • 2026年洛阳无机水磨石定制厂家实力榜单一览 - 热点品牌推荐
  • 2026年枣庄水磨石地铺生产厂商优质实力榜单汇总 - 热点品牌推荐
  • 北京市发明专利奖如何申报?可获多少奖励?