本文包含有关Vivado Design Suite环境中提供的测试平台(Test Bench)的信息。
一、Endpoint的Root Port模型测试平台
PCI Express Root Port Model是一个强大的测试平台环境,它提供了一个测试程序接口,可以与提供的PIO设计(Programmed Input-Output,指的是可编程输入输出。在PCIe通信中,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理)或用户设计一起使用。Root Port Model的目的是提供一个源机制,用于生成下游PCI Express TLP(事务层数据包)流量以便对设计进行仿真,并提供一个目标机制,用于在仿真环境中接收来自设计的上游PCI Express TLP流量。
源代码中包含Root Port Model,这是为测试平台提供起点模型。所有关于初始化配置空间、创建TLP事务、生成TLP日志以及提供创建和验证测试的接口的重要工作都已经完成,这方便设计师将精力集中在验证设计的正确功能上,而不是花费时间在开发Endpoint core测试平台基础设施上。
Root Port Model包括以下内容:
• 测试程序接口(TPI),这是为了模拟模型中的Endpoint设备。
• 示例测试,说明如何使用测试程序TPI。
图1展示了Root Port Model与PIO设计相结合的情景。
二、架构
Root Port Model主要由以下模块组成,这些模块在图6-1中进行了说明:
• dsport(Root Port)
• usrapp_tx
• usrapp_rx
• usrapp_com(仅Verilog)
usrapp_tx和usrapp_rx模块与dsport模块进行接口连接,以便向待测试的Endpoint Design Under Test (DUT)发送和接收TLPs(事务层数据包)。Endpoint DUT包括AXI-PCIe的Endpoint和Block RAM控制器设计(Figure 6-1中已展示)或用户设计。
usrapp_tx模块将TLPs发送到dsport模块,以便通过PCI Express链路传输到Endpoint DUT。反过来,Endpoint DUT设备通过PCI Express链路将TLPs传输到dsport模块,然后这些TLPs被传递给usrapp_rx模块。在通过PCI Express逻辑进行通信时,dsport和core负责数据链路层和物理链路层的处理。usrapp_tx和usrapp_rx都使用usrapp_com模块来执行共享功能,例如TLP处理和日志文件输出。
事务序列或测试程序由usrapp_tx模块发起,以模拟Endpoint设备的逻辑接口。来自Endpoint设备的TLP响应由usrapp_rx模块接收。usrapp_tx和usrapp_rx模块之间的通信允许usrapp_tx模块验证Endpoint设备的正确行为,并在usrapp_rx模块从Endpoint设备接收到TLPs时相应地采取行动。
通过这种架构和机制,测试人员能够精确地控制测试流程,并实时地验证Endpoint设备的响应是否符合预期。
三、Root Port的Endpoint模型测试平台
Root Port配置中AXI Memory Mapped to PCI Express core的Endpoint模型测试平台是一个简单的示例测试平台,它连接Configurator示例设计和PCI Express Endpoint模型,使两者像物理系统中的两个设备一样运行。由于Configurator示例设计包含初始化自身的逻辑以及生成和消耗总线流量的逻辑,因此示例测试平台仅实现了用于监控系统运行和终止仿真的逻辑。
Endpoint模型测试平台包含以下部分:
• 所有Endpoint模型组件的Verilog源代码
• PIO从设备设计
PIO从设备设计通常指的是一个可编程输入/输出(PIO)的接口,它作为PCI Express Endpoint的一个组件,允许主机(或Root Port)访问和控制Endpoint的某些功能或资源。PIO从设备设计通常包括逻辑来解码传入的TLPs,识别它们是否是针对PIO空间的请求,并执行相应的读写操作。在测试平台中,PIO从设备设计将模拟Endpoint的PIO接口,并与Configurator示例设计进行交互,以验证PIO操作的正确性。
测试平台通过配置和连接这些组件,能够模拟一个完整的PCI Express通信环境,从而验证Endpoint设计的正确性和性能。通过监控仿真过程中的系统行为,测试人员可以收集有关Endpoint模型如何响应不同TLPs的信息,并检查是否有任何错误或不符合预期的行为。
四、架构
Endpoint模型由以下模块组成:
• PCI Express Endpoint(在Endpoint配置中AXI Memory Mapped to PCI Express)模型。
• PIO从设备设计,包括:
pio_rx_engine(PIO接收引擎)
pio_tx_engine(PIO发送引擎)
pio_ep_mem(PIO端点内存)
pio_to_ctrl(PIO到控制器的接口)
pio_rx_engine和pio_tx_engine模块与ep模块进行接口连接,用于从Root Port DUT接收和发送TLPs(事务层数据包)。Root Port DUT由配置为Root Port的core以及Block RAM控制器组成,同时包含σ_αξι和s_axi_ctl模型,用于在s_axi和s_axi_ctl上驱动流量。
PIO从设备设计提供了与Root Port进行通信的接口,使得Endpoint能够响应来自Root Port的PIO读写请求。pio_rx_engine负责接收来自Root Port的PIO读请求,并协调从Endpoint内存中读取相应的数据,然后通过pio_tx_engine发送回Root Port。相反,当Root Port发起PIO写请求时,pio_rx_engine接收TLPs,并将数据写入Endpoint内存。
PIO从设备设计还包括pio_ep_mem,它代表Endpoint的内存空间,并存储PIO操作所需的数据。pio_to_ctrl模块可能用于管理PIO操作的控制逻辑,确保PIO引擎与Endpoint内存之间的数据一致性。
通过这种架构,Endpoint模型能够模拟一个真实的PCI Express Endpoint设备,并与Root Port DUT进行交互,以验证PIO操作的功能性和性能。这有助于测试人员确保Endpoint模型在PCI Express通信环境中的正确性和可靠性,为进一步的集成和验证工作奠定基础。