一种PCIE设备的调试装置和方法与流程

文档序号:20683068发布日期:2020-05-08 18:35阅读:493来源:国知局
一种PCIE设备的调试装置和方法与流程

本发明属于计算机系统结构领域,具体涉及一种pcie设备的调试装置和方法。



背景技术:

pcie(peripheralcomponentinterconnectexpress)是一种高速串行计算机扩展总线标准,旨在替代旧的pci,pci-x和agp总线标准。pcie属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(qos)等功能。典型pcie的拓扑结构包括四个功能类型,根联合体(rootcomplex)、交换器(switch)、端点(endpoints)和桥(bridge)。

对于rootcomplex、switch与endpoints等pcie设备,在调试与测试时,需要验证其功能是否能够协议要求。但是目前的调试与测试装置,比如pcie协议分析仪,只能抓取pcie数据包与分析数据;缺少一种可控的能够精确产生pcie数据包激励,对pcie底层协议进行调试的装置。在pcie设备(特别pcie芯片)设计与测试过程中,缺乏可控的调试手段。



技术实现要素:

针对现有技术中所存在的问题,为了支持上述可控的调试与测试手段,需要设计一种可以精确控制产生pcie数据包激励,且可以自动收集测试结果的装置。本发明的目的在于提供一种pcie设备调试装置及方法,用以对pcie设备底层协议进行调试与测试。通过主机端的通信模块,可以精确控制产生pcie存储、io、配置与消息包,并可以读取链路训练、测试、枚举、事务收发过程中的状态信息与数据。

为达到以上目的,本发明采用的技术方案是一种pcie设备调试装置,包括:主机客户端、jtag主机通信模块、协议解析模块、内部缓冲与总线请求生成模块、pcie协议包生成与发送模块,其中:

所述主机客户端用于配置待测试设备的pcie端口数量与链路宽度,将pcie调试命令脚本翻译成调试序列,通过jtag接口送入jtag主机通信模块;同时收集调试结果,并打印输出;

所述jtag主机通信模块用于接收主机端下发的jtag请求,并实现jtag指令和数据扩展寄存器;

所述协议解析模块用于检测jtag对指令和数据寄存器的读写状态,对调试与测试协议进行解析,将jtag协议转换为测试请求命令;

所述内部缓冲与总线请求生成模块包括读写请求缓冲区与接收响应数据缓冲区,以及总线请求生成模块,读写请求缓冲区用于存放来自jtag的读写请求,接收响应数据缓冲区用于存放读请求返回的数据,总线请求生成模块用于将缓冲区的测试请求转换为片内总线请求。

进一步,所述的pcie协议包生成与发送模块包括以下子模块:amba总线控制器子模块、若干个rcctrltop子模块、若干个epctrltop子模块、若干个gtx子模块。

进一步,所述amba总线控制器子模块为其他各子模块之间提供互联通道。

进一步,所述gtx子模块为fpga自带的高速serdes模块,实现pcie的物理层功能,其具体个数根据待测试设备的pcie端口数量的需求确定。

进一步,所述rcctrltop子模块是符合pcie标准的rootcomplex控制器,所述epctrltop子模块作为符合pcie标准的endpoint控制器,二者共享amba总线通信接口,实现的通信功能包括:pcie存储事务包收发、pcieio读写事务收发、通信状态监测、消息组包与发送、中断事件监测、链路协商、数据链路层包形成与发送功能。

进一步,所述rcctrltop子模块和epctrltop子模块包括:rcctrl模块、epctrl模块、片上ram、app模块、csr模块、biu模块,其中:

所述app模块实现将调试请求转化成pcie请求;

所述csr模块实现pcie输入控制与输出状态;

所述biu模块直接与amba总线相接,实现与内部缓冲区数据交互。

进一步,所述的pcie协议包生成与发送模块的pipe-mux数据选择器实现pcie链路宽度可动态配置,同时支持x32、x16、x8、x4、x2、x1各种链路宽度的pcie设备。

一种pcie设备调试方法,包括以下步骤:

根据待测试设备的pcie端口数量与链路宽度,将所需要的pcie端口的个数,以及每个pcie端口的链路宽度输入客户端,加载相应的fpga位流文件;

将编写好的调试脚本输入主机客户端,主机客户端软件翻译成调试请求序列;

jtag主机通信模块接收请求序列,并送至协议解析模块,再由协议解析模块对请求序列进行解析,并将解析后的请求序列存放入内部缓冲区,由总线请求生成模块将缓冲区的测试请求转换为片内总线请求;

pcie协议包生成与发送模块从内部缓冲与总线请求生成模块收到总线请求序列,转换成pcie协议包,发送给待调试的pcie设备;同时,读取调试结果信息存入内部缓冲区的接收响应数据缓冲模块中;

协议解析模块从内部缓冲与总线请求生成模块的接收响应数据缓冲模块中读取调试结果信息;

通过jtag主机通信模块发送到主机客户端端软件,并打印输出。

进一步,所述的调试脚本包括但不限于pcie配置、mem事务、io事务、消息事务、dma事务、测试结果等。

进一步,所述的pcie协议包生成与发送模块读取的调试结果信息包括但不限于链路训练、测试、枚举、事务收发等过程中数据信息。

本发明的效果在于:

(1)通过为每个pcie控制器分配规定的地址空间,jtag主机通信模块可以利用片内总线统一调度、控制多个pcierc与ep控制器,这样既可以调试pcierootcomplex与endpoint设备,又可以调试pcieswitch;

(2)采用pipe-mux实现pcie链路宽度可动态配置,同时支持x32、x16、x8、x4、x2、x1各种链路宽度的pcie设备;

(3)调试方法:采用导入编写好的调试与测试脚本以精确控制pcie包的产生,同时方便读取内部寄存器与ram中的数据以观察调试结果。

附图说明

图1是本发明所述一种pcie设备调试装置结构图;

图2是本发明所述一种pcie设备调试装置内部缓冲与总线请求生成模块结构图;

图3是本发明所述一种pcie设备调试装置pcie协议包生成与发送模块结构图;

图4是本发明所述一种pcie设备调试方法流程图;

图5是本发明所涉及到pcie事务层协议头格式示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步描述。

如图1所示,一种pcie设备调试装置,包括以下装置:主机客户端(101)、jtag主机通信模块(102)、协议解析模块(103)、内部缓冲与总线请求生成模块(104)、pcie协议包生成与发送模块(105),其中:

主机客户端(101)用于配置待测试设备的pcie端口数量与链路宽度,将pcie调试命令脚本翻译成调试序列,通过jtag接口送入jtag主机通信模块(102);同时收集调试结果,并打印输出;

jtag主机通信模块(102)用于接收主机端下发的jtag请求,并实现jtag指令和数据扩展寄存器;

协议解析模块(103)用于检测jtag对指令和数据寄存器的读写状态,对调试与测试协议进行解析,将jtag协议转换为pcie的请求命令;

内部缓冲与总线请求生成模块(104)包括读写请求缓冲与接收响应数据缓冲,以及总线请求生成模块,读写请求缓冲区用于存放来自jtag的读写请求,接收响应数据缓冲区用于存放读请求返回的数据,总线请求生成模块用于将测试请求转换生成片内总线请求;

pcie协议包生成与发送模块(105)根据调试脚本生成的命令生成协议数据包并通过通信接口进行发送。

如图2所示,内部缓冲与总线请求生成模块(104)结构包括reqcfifo(201)、reqdfifo(202)、rspfifo(203)与ambamu接口请求执行模块(204),其中:

reqc/dfifo模块(201):接收来自jtag的读写请求的命令缓冲;

reqdfifo模块(202):接收来自jtag的读写请求的数据缓冲;

rspfifo模块(203):接收amba读请求的响应数据;

ambamu接口请求执行模块(204):实现ambamaster控制器的功能,当检测到reqcfifo模块(201)与reqdfifo模块(202)的缓冲中有jtag请求时,则根据协议格式,对请求命令进行解析,然后转换成amba请求发出;返回amba读请求的数据,保存至rspfifo模块(203)的缓冲中。

如图3所示,pcie协议包生成与发送模块(105)包括以下子模块:amba总线控制器子模块(301)、若干个gtx子模块(302)、若干个rcctrltop子模块(303)、若干个epctrltop子模块(304)和pipe-mux数据选择器(305),其中:

amba总线控制器子模块(301)为各子模块之间提供互联通道;

gtx子模块(302)为fpga自带的高速serdes模块,实现pcie的物理层功能,其具体个数由使用者通过主机端根据待测试设备的pcie端口的数量来配置;

rcctrltop子模块(303)和epctrltop子模块(304)共享amba总线通信接口,实现的通信功能包括:pcie存储事务包收发、pcieio读写事务收发、通信状态监测、消息组包与发送、中断事件监测、链路协商、数据链路层包形成与发送功能,其中:

rcctrltop子模块(303)是符合pcie标准的rootcomplex控制器,包括rcctrl模块、片上ram、app模块、csr模块、biu模块。epctrltop子模块(304)作为符合pcie标准的endpoint控制器,包括epctrl模块、片上ram、app模块、csr模块、biu模块。其中,app模块实现将调试请求转化成pcie请求;csr模块实现pcie输入控制与输出状态;biu模块直接与amba总线相接,实现与内部缓冲区的数据交互;

pipe-mux数据选择器(305)实现pcie链路宽度可动态配置,同时支持x32、x16、x8、x4、x2、x1各种链路宽度的pcie设备;pipe-mux(305)负责物理链路的选择,使用者根据链路宽度配置的需求,在主机端选择对应的配置,则本装置自动加载对应链路配置的fpga位流文件;通过pipe_mux模块,将各个pcie控制器的pipe接口信号映射到各个pcielane对应的gtx上。

举例说明,如果需要配置成x4模式,则首先在主机端选择对应的设置,然后fpga自动选择加载x4配置方式的位流文件。fpga内部的逻辑映射为,x4的pcie控制器的pipe接口与x4gtx的pipe接口对接。

如果需要配置成4个x1模式,则首先在主机端选择对应的设置,然后fpga自动选择加载4个x1配置方式的位流文件。fpga内部的逻辑映射为,4个x1pcie控制器的pipe接口与4个x1的gtx的pipe接口对接。

如图4所示,一种pcie设备调试方法包括以下步骤:

s401:根据待测试设备的pcie端口数量与链路宽度,将所需要的pcie端口的个数,以及每个pcie端口的链路宽度输入客户端,加载相应的fpga位流文件;

s402:将编写好的调试脚本输入主机客户端,主机客户端软件翻译成调试请求序列;

s403:jtag主机通信模块接收请求序列,并送至协议解析模块,再由协议解析模块对请求序列进行解析,并将解析后的请求序列存放入内部缓冲区,由总线请求生成模块将内部缓冲区的测试请求转换为片内总线请求;

s404:pcie协议包生成与发送模块从内部缓冲与总线请求生成模块接收到的总线请求序列,转换成pcie协议包,发送给待调试的pcie设备;同时,读取调试结果信息存入内部缓冲区的接收响应数据缓冲模块中;

s405:协议解析模块从内部缓冲区的接收响应数据缓冲模块中读取调试结果信息;

s406:通过jtag主机通信模块发送到主机客户端端软件,并打印输出。

进一步,调试脚本包括但不限于pcie配置、mem事务,io事务,消息事务,dma事务,测试结果等。

进一步,pcie协议包生成与发送模块读取的调试结果信息包括但不限于链路训练、测试、枚举、事务收发等过程中数据信息。

进一步,pcie协议包生成与发送模块的协议包(tlp),可支持如下四种事务类型:pcie配置、mem事务、io事务和消息事务,包括两种地址格式:32位和64位。

优选地,pcie协议包协议头格式的相同部分如图5所示,其中:

fmt[1:0]字段表示头标长度和该协议包是否含有数据载荷的信息,其中:00表示3个双字长度头标,无数据;01表示4个双字长度头标,无数据;10表示3个双字长度头标,有数据;11表示4个双字长度,有数据;

type[4:0]字段与fmt[1:0]字段一起来规定事务类型、头标长度和是否有数据载荷,其中,tc[2:0]位表示传输类别,是指设备核施加于请求协议包及完成协议包的传输类别编号,tc0是默认的类别,tc1-tc7用来要求对tlp提供有区别的服务;

td位表示事务汇总存在位,td=1表示本协议包含有digest字段,值为ecrc;

ep位表示错误和中毒位,ep=1时表示包中数据视为无效;

attr[1:0]表示属性,其中,高位为宽松排序位,高位为1时则使能pci-x式的宽松排序,高位为0时则使用pci式的严格排序;低位为不监听缓存位,低位为1时表明本协议包不存在处理器缓存一致性问题,不要求系统硬件去监听处理器缓存,低位为0时要求pci式缓存监听;

at位表示地址类型,表示mem读写请求是否进行了地址转换;

length表示本tlp的数据载荷长度,以双字为单位,最大长度为1024双字;

r位表示保留字段。

本领域技术人员应该明白,本发明所述的方法和系统并不限于具体实施方式中所述的实施例,上面的具体描述只是为了解释本发明的目的,并非用于限制本发明。本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围,本发明的保护范围由权利要求及其等同物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1