Palladium模拟器和用于PCIe调试的FPGA有什么区别?
PCI-SIG外围组件互连 Express Gen5(PCIe Gen5)是一种系统协议,主要用于系统中高速的数据传输。PCIe Gen5可实现32 Gb/s的传输速率。PCIe 几乎集成在所有计算机系统中,包括服务器。
PCIe是一种复杂的协议,包括链路训练、TLP生成和事务、不同的有效载荷传输、错误TLP、流量控制以及RC和EP模式下的恢复状态验证。在对整个系统进行验证之前,验证协议至关重要。
验证工程师通过通用验证方法(UVM)测试平台参与验证PCIe协议。除了验证设置外,仿真工程师还提供验证PCIe协议及软件开发的平台。本文介绍了验证 PCIe Gen5 协议及 Palladium 模拟器软件所需的步骤。
模拟器用于PCIe验证的硬件需求
要在模拟器上验证PCIe Gen5协议,需要满足以下条件:
PCIe Gen5 RTL/IP
软件或作系统——都可以加载到模拟器中
PCIe Gen5 虚拟 SpeedBridge
这种硬件配置是验证PCIe Gen5协议所必需的:
钯金模拟器
一个Linux InfiniBand(IB)主机
PCIe Gen5 SpeedBridge 或 PCIe Gen5 高密度速度桥(HDSB)
支持Gen3、Gen4或Gen5的SSD版本
底座连接PCIe、SpeedBridge和SSD。
环境开发工具包(EDK),一种Linux主机或PCIe Gen5主机
PPOE和光纤电缆
PCIe 配置与硬件设置
在开始安装硬件之前,了解PCIe配置非常重要。这里的例子包括一个Linux或PCIe Gen5主机(EDK)和四个SSD目标。第五代我用了16条通道,支持32 Gb/s的数据速率。图中展示了完整的安装过程。这种配置可能会根据设计而变化。

这一设置展示了模拟器调试问题相较于FPGA原型的优势,凸显了仿真环境带来的更高可见性和灵活性。
在设计中,我们需要一个模拟封装文件,实例化PCIe IP设计和PCIe Gen5虚拟SpeedBridge。PCIe IP 支持EP和RC模式。在EP模式下,Linux主机(EDK)是根复合体,IP是端点;它使用全部16条通道进行数据传输。在RC模式下,IP(钯撯模拟器)是一个根复合体,四个SSD是终端。
因此,我们需要五个PCIe SpeedBridges实例——一个用于EP模式(16通道),四个用于RC模式。每个 SpeedBridge 的遥控模式实例都支持四条车道。
Palladium 模拟器包含用于模拟器与 SpeedBridge 之间通信所需的 TPOD。TPOD是模拟器上的端口,由电源端口和数据端口组成。电源端口为连接的SpeedBridges供电,光纤电缆传输数据。由于PCIe主机和SSD目标需要五个SpeedBridge,因此必须启用五个TPOD。
钯金仿真包含两个步骤:编译和合成;以及管理工作。
第一步有两种模式可选:
电路内仿真(ICE)模式/遗留模式,仅将可综合设计编译、合成并加载到模拟器中。不可综合部分,如UVM测试平台/系统任务,仅在IB主机上运行。IB 链路用于将交易导入模拟器。
通过IXCOM流程实现仿真加速(SA)模式,将不可综合和可合成设计编译、合成并下载到模拟器中。不可综合部分包括文件处理、初始语句、断言以及 Verilog/System Verilog HDL 支持的系统任务。
设计必须在Palladium上编译和合成,Palladium中使用IXCOM流程,因为它包含不可综合的结构,如文件处理和系统任务,这些都被下载到模拟器中。为了运行该作业,需要一个独立的仿真环境。请参阅 Cadence 官网,因为仿真流程包含 Cadence 专有信息。
调试Palladium仿真器上的PCIe设计
假设仿真流程已开发完成,仿真器已准备好用于测试PCIe IP和软件。以下场景描述了一些调试技术:
假设Palladium模拟器处于RC模式,四个SSD目标是终端。在这里,RC无法与任何SSD目标建立联系。导致这种失败有两种可能。设计本身存在漏洞,或者软件没有生成合适的训练序列。在这种情况下,钯金提供了一种非常强大的技术,可以在运行时探测设计信号并生成波形。优点是无需重新合成设计,因为整个或部分设计可以通过探测转化为波形。如果RTL运行正常,那么必须对软件进行潜在问题的调查。
如果设计正常,能与三个SSD目标建立连接,但无法与第四个目标连接,则调查该目标并进行断电重启。断电重启意味着将电源线和光纤电缆拔插并重新插入故障的SpeedBridge。如果还是不行,那就换速度新娘或线缆再试一次。如果还是不行,Cadence会帮忙调试这个问题。
考虑端点模式的钯,EDK是宿主或根复合体。虽然 EDK 启动,但它会与端点建立链接。可能是在读取端点配置寄存器时发生,EDK没收到TLP导致超时。这会导致EDK卡住,需要断电重启才能恢复正常状态。这是因为RTL端点模式出现了bug,或者EDK卡住并无法接收端点发送的TLP。或者软件给了端点错误的信息,设计中不支持这一点。同样,信号可以在不重新合成设计的情况下探测,并生成波形来调查问题。
一旦在RTL中发现漏洞,必须重新合成并在Palladium上实现该设计以测试修复。除非加入了大功能,否则重合成通常会使时钟频率增加几千赫兹。在这里,SpeedBridges将通过进行速率调整来确保数据完整性,并保持设计性能。
钯金上的再合成不需要满足时间安排、应用定位约束和耗时的实施策略。编译器将确定工作时钟频率,SpeedBridge通过速率调整确保其性能。该设计可在运行时调试,因此对钯金的调试效率高。
在基于FPGA的平台上调试PCIe设计
在FPGA上实现PCIe设计超出本文范围。假设所需的硬件、PCIe IP和软件都已实现,FPGA综合和PNR(布局与路由)流程也已可用。关于FPGA流程中的调试方面,以下场景描述了基于FPGA平台的调试技术:
以上述相同例子为例,PCIe无法枚举四个SSD目标。为了调试问题,必须探测设计以生成波形。信号可以通过集成逻辑分析仪(ILA)/芯片示波器进行探测,但需要保留信号以防止优化。设计必须在带有额外仪器逻辑的FPGA上综合并实现,以便ILA需要额外仪器逻辑。探测到ILA和仪器逻辑的信号需要相同的时钟来捕获数据。例如,如果PCIe信号在100M频率下工作,那么ILA逻辑也需要100M时钟。因此,为了探测调试信号,FPGA设计者还必须满足设计与ILA逻辑之间的时序。如果探测信号不足以调试设计,那么FPGA设计和实现循环将继续,直到发现并修复错误。
另一种可用的FPGA原型工具是Protium仿真器,这是一种基于FPGA的仿真器。Protium上的PCIe配置类似于Palladium,变化不大,但超出本文范围。要用Protium探测信号生成波形,必须保留信号,并在脚本中施加触发。它需要在Protium模拟器上重新合成并重新实现设计,并启用触发信号。探测信号所需的仪器逻辑由Protium CAD工具自动实现。因此,Protium的设计和实现周期会持续,直到发现并修复该漏洞。
显而易见的是,在FPGA平台上调试是一个充满挑战且耗时的过程。整个设计必须实现以生成波形,这涉及满足时序限制并成功将设计部署到FPGA上。显然,基于FPGA的调试效率低于基于钯的调试方法。
高级仿真是最佳调试路径
有效的验证和调试对于确保PCIe Gen5系统的可靠性和性能至关重要,而PCIe Gen5系统是现代计算中高速数据传输的核心。像Palladium这样的平台通过运行时信号探测和实时分析,提供了一种简化高效的调试方法,显著缩短了开发时间。
虽然基于FPGA的平台提供了替代的验证方法,但其复杂性和耗时性使得它们在迭代调试中效率较低。通过利用先进的仿真工具和方法,工程师可以优化设计流程,及早发现问题,并确保PCIe Gen5协议在复杂系统中的无缝集成。












评论