一种基于替代链路宽度的pcie接口电路验证装置及方法
技术领域
1.本发明属于集成电路设计技术领域,具体涉及一种基于替代链路宽度的pcie接口电路验证装置及方法。
背景技术:2.pcie总线是在第一代eisa、isa、vesa总线和第二代agp、pci、pci-x总线之后推出的第三代高性能io总线,在计算机系统中获得广泛应用。
3.集成电路的硬件验证是在电路的设计开发阶段,在设计流片前为了证明电路的各种设计功能正确而将设计的全部或部分功能在fpga中实现后进行的验证,是电路设计过程中的重要环节;硬件验证对于电路的系统适配性和电路在多种工作强度下的可靠性验证发挥着软件仿真验证等其它验证工作不可替代的作用,是电路设计质量的重要保障。
4.pcie接口电路可分为单端口电路和多端口电路,电路的单个pcie接口可以为x1单通路也可以是x2、x4、x8、x12、x16或x32多通路。如图1所示,pcie接口一般由应用层、控制器和物理层(physical layer,phy)组成,两个pcie接口通过链路进行互联通信。控制器和phy之间采用pcie物理层接口(physical interface for pci express,pipe)工业标准接口连接。
5.通常,pcie接口电路尤其是多端口、多通路链路接口电路的功能复杂、逻辑规模大、工作频率高,仅其pcie接口逻辑的时钟工作频率就高达62.5mhz甚至1000mhz,使得大部分pcie接口电路在硬件验证时遇到了fpga可实现的时钟频率远达不到pcie接口设计频率的问题,或因资源限制无法在fpga中实现较多的pcie接口。而pcie接口又具有协议规定的标准总线速率,无法同某些控制类电路一样采用同时线性降低fpga频率和外部连接测试设备接口频率的方法进行验证。专利cn 103164314b提出了一种基于异步物理层接口的pcie接口芯片硬件验证方法,可以进行单通路链路等规模适中的pcie接口电路的硬件验证。然而,随着pcie总线协议版本的不断演进并面对多通路、多端口pcie接口电路市场需求的井喷,该方法除了需要在fpga中使用大容量的接收和发送缓存降低了fpga的可用资源并需要过多的fpga的phy资源等缺点外仅能将fpga的验证频率最大降到设计频率的2/5,仍然不能满足大部分pcie接口电路的硬件验证的需求。如果电路的pcie接口功能无法进行硬件验证,给设计的正确性和可靠性带来巨大隐患,或者为了验证投入了数月的设计优化和fpga时序优化时间,严重影响了电路的研制进度,甚至错失产品的上市时机。
技术实现要素:6.本发明的目的在于克服上述现有技术的缺点,提供一种基于替代链路宽度的pcie接口电路验证装置及方法,以解决现有技术中针对pcie接口电路的硬件验证,难以满足pcie接口电路的硬件验证需求的问题。
7.为达到上述目的,本发明采用以下技术方案予以实现:
8.一种基于替代链路宽度的pcie接口电路验证方法,包括:
9.识别从fpga的phy接收到的信号类型,将信号类型通过data_type[2:0]信号表示为7类包序列;将包序列根据指示信号输出的不同状态进行转换,转换后包序列的格式、信息和位宽符合待验证pcie控制器接口要求,将包序列送入至待验证pcie控制器的pipe接口上;
[0010]
接收待验证pcie控制器的pipe接口输出的数据信号,根据指示信号输出的不同状态将信号转换,转换后信号指示的7种包序列格式、信息和位宽符合fpga的phy的pipe接口类型,将转换后的包序列发送;所述7类包序列包括物理层包plp、数据链路层包dllp和事务层包tlp;所述物理层包plp包括链路训练有序集ts1、链路训练有序集ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲序列eieos;
[0011]
将待验证电路的pcie控制器的pipe接口输出的控制信号或状态信号转换,转换后控制信号或状态信号为符合fpga的phy的pipe接口要求的接收信号,或者是fpga的phy的pipe接口输出的控制信号或状态信号转换为符合待验证pcie控制器的pipe接口的输入信号。
[0012]
本发明的进一步改进在于:
[0013]
优选的,所述指示信号包括链路训练状态机指示信号ltssm_state、快速训练有序集指示信号fts_flag和电气闲指示信号eie_flag。
[0014]
优选的,7种包序列转换,包括物理层包plp的通路复制和plp的数据转换、tlp的拆解及重排列、dllp的拆解及重排列,所述plp的数据转换包括链路训练有序集ts1中通路号的转换和链路训练有序集ts2中通路号的转换。
[0015]
优选的,所述物理层包plp的通路复制为,将接收的所述phy的通路0的plp包在送往所述待验证pcie控制器的通路0时,将plp包复制nlc-1份,将复制的plp包送入至所述待验证pcie控制器的其它nlc-1条通路中。
[0016]
优选的,当指示信号ltssm_state指示pcie控制器状态为链路训练状态中的通路号协商状态时,将复制的链路训练有序集ts1中通路号按照pcie控制器pipe接口对应的实际通路号进行转换,将复制的链路训练有序集ts2中通路号按照pcie控制器pipe接口对应的实际通路号进行转换;
[0017]
当指示信号ltssm_state指示pcie控制器状态为正常工作状态时,phy的pipe接口数据信号和数据指示信号为tlp时,将起始字符stp置于pcie控制器的通路0中,将后续字符按照字节剥解规则依次按pcie控制器的通路号排列;当phy的pipe接口的数据信号和数据指示信号为dllp时,将起始字符sdp置于pcie控制器的通路0中,将后续字符按照字节剥解规则依次按pcie控制器的通路号排列。
[0018]
优选的,当接收待验证pcie控制器的pipe接口输出的数据信号,包序列为tlp或dllp时,将接收的数据信号组合并重排列后送入fpga的phy的pipe接口发送
[0019]
当接收待验证pcie控制器的pipe接口输出的数据信号,包序列为链路训练有序集ts1、链路训练有序集ts2时,若指示信号指示pcie控制器状态为链路训练状态中的链路号协商状态时,链路训练有序集ts1和链路训练有序集ts2的链路号由pad字符变更为phy的实际链路号若指示信号指示pcie控制器状态为链路训练状态中的通路号协商状态时,链路训练有序集ts1和链路训练有序集ts2中的通路号由pad字符变更为phy的实际通路号。
[0020]
优选的,当所述待验证pcie控制器发送快速训练有序集fts时,phy的每条有效通
路构造快速训练有序集fts并送入所述phy的pipe接口并发送,构造的fts的个数由所述待验证pcie控制器输出的状态指示信号指定;
[0021]
当所述待验证pcie控制器发送电气闲有序集eieos时,phy的每条有效通路构造电气闲有序集eieos送入所述phy的pipe接口并发送;
[0022]
按照pcie协议要求的间隔时间在所述phy的每条有效通路上构造skip有序集,所述skip有序集送入所述phy的pipe接口并发送。
[0023]
优选的,当phy的pipe接口输出时钟补偿有序集skip时,将接收的所述phy的通路0的skip有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的skip送入待验证pcie控制器的其它nlc-1条通路中。
[0024]
当所述通路转换装置检测到所述phy的pipe接口输出快速训练有序集fts时,将接收的所述phy的通路0的fts有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的fts送入所述待验证pcie控制器的其它nlc-1条通路中。
[0025]
当所述通路转换装置检测到所述phy的pipe接口输出电气闲有序集eieos时,将接收的所述phy的通路0的eieos有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的eieos送入所述待验证pcie控制器的其它nlc-1条通路中。
[0026]
一种基于替代链路宽度的pcie接口电路验证装置,包括:
[0027]
检测模块,识别从fpga的phy接收到的信号类型,将信号类型通过data_type[2:0]信号表示为7类包序列;
[0028]
接收模块,用于将包序列根据指示信号输出的不同状态进行转换,转换后包序列的格式、信息和位宽符合待验证pcie控制器接口要求,将包序列送入至待验证pcie控制器的pipe接口上;
[0029]
发送模块,接收待验证pcie控制器的pipe接口输出的数据信号,根据指示信号输出的不同状态将信号转换,转换后信号指示的7种包序列格式、信息和位宽符合fpga的phy的pipe接口类型,将转换后的包序列发送;所述7类包序列包括tlp、dllp、链路训练有序集ts1、链路训练有序集ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲序列eieos;
[0030]
信号转换模块,用于将待验证电路的pcie控制器的pipe接口输出的控制信号或状态信号转换,转换后控制信号或状态信号为符合fpga的phy的pipe接口要求的接收信号,或者是fpga的phy的pipe接口输出的控制信号或状态信号转换为符合待验证pcie控制器的pipe接口的输入信号。
[0031]
与现有技术相比,本发明具有以下有益效果:
[0032]
本发明公开了一种基于替代链路宽度的pcie接口电路验证装置及方法,通过在验证fpga的控制器和phy之间的pipe接口之间增加通路转换装置,高效方便的实现了多通路pcie接口电路的硬件验证,有效解决了现有技术在多通路和多端口pcie接口电路硬件验证中遇到的问题,具有以下优点:一、验证fpga的时钟工作频率降低比例高,可以将工作频率降低为原电路设计的1/2~1/32,可以在验证fpga中轻松实现综合和布局布线;二、增加的通路转换装置无需使用大容量的接收和发送缓存,在fpga中给设计留下了更多可使用存储和逻辑资源,降低了fpga的性能要求;三、降低了fpga中phy的链路宽度,可以在同一fpga中实现更多pcie接口,解决了因高速phy的通道数量限制无法在fpga中进行多端口pcie接口电路硬件验证的问题;四、与待验证pcie接口的链路宽度无关,可以采用标准的x1链路接口
进行外部连接,降低了硬件验证系统中对链路对端设备的性能要求和链路宽度多样性的要求,简化了验证系统复杂性并提高了验证系统的通用性;五、增加的通路转换装置结构简单易于设计。本发明提供的一种基于替代链路宽度的pcie接口电路硬件验证方法以极小的资源极大的降低了验证fpga中多通路pcie接口电路的控制器和应用逻辑的工作频率,可轻松实现pcie接口电路的验证。
附图说明
[0033]
图1为现有技术pcie接口电路组成和两个pcie电路组成的通信链路示意图;
[0034]
图2为本发明实施例pcie接口电路asic中单个pcie端口的原理框图;
[0035]
图3为本发明实施例的pcie接口电路中单个pcie端口的通路转换装置及其在端口中的位置原理框图;
[0036]
图4为本发明实施例的pcie接口电路硬件验证平台示意图;
具体实施方式
[0037]
下面结合附图对本发明做进一步详细描述:
[0038]
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制;术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性;此外,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0039]
本发明提供的一种基于替代链路宽度的pcie接口电路硬件验证方法,该方法在保持待验证电路的pcie控制器和应用层逻辑设计不变的基础上,通过在验证fpga中待验证电路的pcie控制器和fpga的phy之间的pipe接口之间增加通路转换装置,使验证fpga中待验证pcie控制器和应用层的工作频率降低,使验证fpga中phy的链路宽度变小,在fpga中降频,实现待验证电路的功能后将其pcie接口和外部较窄链路宽度的标准pcie设备连接后进行硬件功能验证。
[0040]
所述待验证电路的pcie控制器的链路宽度nlc可以为2、4、8、12、16或32且必须大于所述fpga的phy的链路宽度nlp;所述链路宽度nlp可以为1、2、4、8、12或16且必须小于所述链路宽度nlc;所述验证fpga中待验证pcie控制器和应用层的工作频率ff和所述待验证pcie接口电路的控制器和应用层在电路中的原设计工作频率fs的关系为ff/fs=nlp/nlc;与所述待验证电路的pcie接口的链路宽度nlc相关,待验证pcie控制器和应用层的降频比例ff/fs最小为1/2,最大为1/32。为了实现上述工作频率的降低,使验证fpga中phy的链路宽度变小,在fpga中降频,通过本发明中的通路转换装置实现。
[0041]
参见图3,本发明在验证fpga中待验证电路的pcie控制器和fpga的phy之间的pipe接口之间增加的通路转换装置。通路转换装置由接收转换装置和发送转换装置构成;其中,接收转换装置包括检测模块、接收模块和位宽转换模块,各模块说明如下:
[0042]
检测模块和phy及接收模块交互,用于识别从fpga的phy接收到的数据类型,可识别的数据类型有tlp、dllp和plp。tlp的长度为4的倍数个字节,其起始字符为stp,结束字符为end或edb。plp包括链路训练有序集ts1、链路训练有序集ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲序列eieos。dllp的长度为8个字节,其起始字符为sdp,结束字符为end。链路训练有序集ts1和ts2由16个字符组成,其起始字符均为com字符。ts1的符号0为起始字符com,符号1为pad字符或链路号,符号2为pad字符或通路号,符号3为fts的个数,符号4为链路速率,符号5携带链路控制信息,包括热复位、链路禁止、环回、乱序使能和速率改变等,符号6至符号15为训练序列标识符(training sequence id,ts id)。ts2除了ts id与ts1不同外,其余符号都相同。skip有序集的起始字符为com,由com和3个skp字符组成。fts有序集的起始字符为com,由com和3个fts字符组成。检测模块检测并识别上述7种不同的包格式并送入接收模块中进一步处理。检测模块将识别到的x1 phy接收到的数据类型通过data_type[2:0]信号表示,data_type[2:0]的值1~7对分别对应tlp、dllp、链路训练有序集ts1、链路训练有序集ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲序列eieos共7种包格式。
[0043]
接收模块与检测模块、位宽转换模块和pcie控制器交互,用于接收检测模块识别的包序列,根据待验证pcie控制器输出的链路训练状态机指示信号ltssm_state指示的不同状态转换包序列,使得经过通路转换装置转换后的fpga的phy的pipe接口数据的包序列的格式、信息和位宽符合待验证pcie控制器x4 pipe接口要求后,通过数据信号rxdata_x4和数据指示信号rxdatak_x4送入待验证pcie控制器pipe接口上。ltssm_state指示待验证pcie控制器的链路训练状态机从0x00到0x11共17种状态。ltssm_state在从状态00跳转至状态11期间,链路处于链路训练状态,链路上交换plp。ltssm_state为状态11时,链路处于链路全开状态,能够发送和接收tlp、dllp和plp。接收模块在链路训练过程中进行plp的数据转换、通路复制以及链路训练有序集ts1和ts2中通路号的转换;在链路正常工作状态中,进行tlp和dllp拆解及重排列并送入待验证pcie控制器的pipe接口上。
[0044]
位宽转换模块与pcie控制器和接收模块交互,用于在链路训练状态时对plp进行的数据位宽转换和通路复制。当fpga的phy的pipe接口的单通路数据位宽和待验证pcie控制器pipe接口的单通路位宽不一致时,位宽转换模块根据待验证pcie控制器输出的ltssm_state指示信号和检测模块输出的当前数据类型的data_type指示信号转换链路训练有序集ts1、ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲有序集eieos,使得phy的pipe接口的单通路数据位宽和待验证pcie控制器pipe接口的单通路位宽一致,并将转换好位宽的数据复制成3份送往待验证pcie控制器中。
[0045]
发送转换装置由发送模块和信号转换模块两部分组成,两个模块的说明如下:
[0046]
发送模块与pcie控制器和phy模块交互,用于接收待验证接口电路的pcie控制器的pipe接口输出的信号,根据待验证pcie控制器输出的ltssm_state指示的从0x00到0x11之间的不同状态,转换待验证pcie控制器输出的pipe接口数据信号,使得转换后的数据信号指示的包序列的格式、信息和位宽符合fpga的phy的pipe接口,接收的包序列后送入fpga的x1 phy的pipe接口并发送。发送模块在链路训练状态中,根据待验证pcie控制器输出的状态指示信号ltssm_state构造相应plp替代待验证pcie控制器的pipe接口的发送数据;在链路工作状态中,发送模块接收待验证pcie控制器的tlp及dllp,进行组合和重排列后送入
fpga的phy的pipe接口发送。
[0047]
信号转换模块与pcie控制器和phy模块交互,用于待验证电路的pcie控制器和fpga的phy之间的pipe接口的控制信号和状态信号的双向转换,将待验证电路的pcie控制器的pipe接口输出的mac_phy_*_x4信号转换为符合fpga的phy的pipe接口要求的接收信号mac_phy_*_x1,将phy的pipe接口输出的phy_mac_*_x4转换为符合待验证pcie控制器的pipe接口的phy_mac_*_x1输入信号。
[0048]
上述通路转换装置基于pipe接口协议完成所述待验证电路的pcie控制器和所述fpga的phy之间pipe接口的控制信号、状态信号和数据信号的双向转换,使所述待验证pcie控制器和应用层在降频后通过通路转换装置和phy可以和外部标准的较窄链路宽度的pcie设备连接。所述通路转换装置可以是异步的也可以是同步的。
[0049]
所述通路转换装置还从所述pcie控制器接收三种状态指示信号用于控制转换,具体包括链路训练状态机指示信号ltssm_state、快速训练有序集指示信号fts_flag和电气闲指示信号eie_flag。
[0050]
对于接收转化装置具体的实现方法包括以下步骤:
[0051]
所述通路转换装置的接收转换功能实现了所述phy的pipe接口输出到所述待验证电路pcie控制器的pipe接口输入间的信号转换,主要包括物理层包plp(physical layer packet)的通路复制和数据转换、tlp和dllp的拆解及重排列以及链路训练有序集ts1和ts2中通路号的转换。
[0052]
所述物理层包的通路复制是指将接收的所述phy的通路0的plp包在送往所述待验证pcie控制器的通路0时,将其复制nlc-1份并送入所述待验证pcie控制器的其它nlc-1条通路中。
[0053]
进一步的,当所述phy的pipe接口的单通路数据位宽和所述待验证pcie控制器pipe接口的单通路数据位宽不一致时,所述通路转换装置在进行所述物理层包的通路复制时还需要进行两个pipe接口之间的通路数据和数据指示信号位宽的转换。
[0054]
在链路训练过程中,链路的每条通路都传送完整的链路训练有序集ts1和ts2,当接收的phy的通路上的数据为链路训练有序集ts1和ts2时,将接收的所述phy的通路0的ts1和ts2有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的ts1和ts2送入所述待验证pcie控制器的其它nlc-1条通路中。
[0055]
当所述pcie链路训练状态机指示信号ltssm_state指示当前状态为通路号协商状态时,在所述物理层包的通路复制时,需要将复制的ts1和ts2有序集中的符号2指示的通路号按照所述待验证pcie控制器pipe接口对应的实际通路号进行转换,以匹配待验证pcie接口控制器的相应通路编号。
[0056]
当所述pcie链路训练状态机指示信号ltssm_state指示当前状态为链路正常工作状态时,链路上传输tlp和dllp。当所述通路转换装置检测到phy的pipe接口数据信号和数据指示信号为tlp时,将起始字符stp置于所述控制器的通路0中,将后续字符按照字节剥解规则依次按控制器的通路号排列;当检测到phy的pipe接口的数据信号和数据指示信号为dllp时,将起始字符sdp置于所述pcie控制器的通路0中,将后续字符按照字节剥解规则依次按所述pcie控制器的通路号排列。
[0057]
任何状态下,当所述通路转换装置检测到所述phy的pipe接口输出时钟补偿有序
集skip时,将接收的所述phy的通路0的skip有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的skip送入待验证pcie控制器的其它nlc-1条通路中。
[0058]
当所述通路转换装置检测到所述phy的pipe接口输出快速训练有序集fts时,将接收的所述phy的通路0的fts有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的fts送入所述待验证pcie控制器的其它nlc-1条通路中。
[0059]
当所述通路转换装置检测到所述phy的pipe接口输出电气闲有序集eieos时,将接收的所述phy的通路0的eieos有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的eieos送入所述待验证pcie控制器的其它nlc-1条通路中。
[0060]
发送转换装置具体实现的方法包括以下步骤:
[0061]
所述通路转换装置的发送转换功能,实现了所述待验证pcie控制器的pipe接口输出到所述phy的pipe接口输入间的信号转换。发送过程中,根据待验证pcie控制器输出的所述状态指示信号构造相应的物理层包替代所述待验证pcie控制器的pipe接口数据和数据指示信号并送入所述phy的pipe接口中;对于数据链路层包dllp和事务层包tlp,所述通路转换装置接收所述pcie控制器的pipe接口数据组合并重排列后送入所述phy的pipe接口发送。
[0062]
在链路训练过程中,链路的每条通路都发送完整的链路训练有序集ts1和ts2,当所述pcie链路训练状态机指示信号ltssm_state指示当前为发送链路训练有序集ts1和ts2状态polling时,所述通路转换装置构造符合phy的pipe接口链路宽度的链路训练有序集ts1和ts2送入phy的pipe接口并发送。当所述pcie链路训练状态机指示信号ltssm_state指示当前状态为链路号协商状态时,所述通路转换装置将当前和随后构造的ts1和ts2有序集中的链路号由pad字符变更为phy的实际链路号;当所述pcie链路训练状态机指示信号ltssm_state指示当前状态为通路号协商状态时,所述通路转换装置将当前和随后构造的ts1和ts2有序集中的通路号由pad字符变更为phy的实际通路号。
[0063]
在链路训练完成后链路按照待验证pcie接口电路的功能进行各种事务的功能验证,此时链路上主要传送tlp和dllp。当传送tlp或dllp时,将所述待验证pcie控制器输出的tlp或dllp的起始字符stp或sdp置于phy的通路0上,将tlp或dllp中的其余字符按照phy的实际通路号依次排列,按照字节剥解规则送入phy的pipe接口进行发送。
[0064]
当所述pcie快速训练有序集指示信号fts_flag指示待验证pcie控制器发送快速训练有序集fts时,由所述通路转换装置为phy的每条有效通路构造快速训练有序集fts送入所述phy的pipe接口并发送,构造的fts序列的个数由所述待验证pcie控制器输出的状态指示信号指定。
[0065]
当所述pcie电气闲有序集指示信号eie_flag指示待验证pcie控制器发送电气闲有序集eieos时,由所述通路转换装置为所述phy的每条有效通路构造电气闲有序集eieos送入所述phy的pipe接口并发送。
[0066]
任何状态下,所述通路转换装置按照pcie协议要求的间隔时间在所述phy的每条有效通路上构造skip有序集送入phy的pipe接口并发送。
[0067]
实施例
[0068]
本实施例公开了一种基于一款12通路、链路宽度为4的3端口pcie 2.0接口电路。
图2为本实施例pcie 2.0接口电路asic(application specific integrated circuit)中的单个pcie端口的原理框图。如图2所示,asic的phy及pcie控制器的链路宽度均为x4,asic中phy和pcie控制器之间通过x4 pipe接口连接。
[0069]
本实施例在保持待验证电路的pcie控制器和应用层逻辑设计不变的基础上,通过在验证fpga中待验证电路的三个x4 pcie控制器和验证fpga的三个phy之间的pipe接口之间增加通路转换装置,使验证fpga中待验证pcie控制器和应用层的工作频率降低,使验证fpga中可以使用小于asic中phy的链路宽度的phy,在fpga中降频实现待验证电路的功能后采用较窄的链路和标准的pcie设备连接进行硬件功能验证。
[0070]
本实施例待验证电路的三个端口的pcie控制器的链路宽度nlc均为4,验证fpga的phy的链路宽度nlp必须小于所述链路宽度nlc;为达到最大降频比例,确定nlp为1;待验证fpga中待验证pcie控制器和相关应用层的工作频率ff和待验证pcie接口电路的控制器和应用层在电路中的原设计工作频率fs的关系为ff/fs=nlp/nlc=1/4;待验证pcie接口电路的pcie控制器和相关应用层在电路中的原设计工作频率在gen1(generation 1,即第一代pcie技术)接口速率下fs=125mhz,在gen2(generation 2,即第二代pcie技术)接口速率下fs=250mhz;待验证fpga中待验证pcie控制器和相关应用层的工作频率ff在gen1接口速率下为31.25mhz,在gen2接口速率下为62.5mhz。
[0071]
图3为采用本发明一种基于替代链路宽度的pcie接口电路硬件验证方法后实施例的pcie2.0接口电路在硬件验证时单个端口的通路转换装置及其在端口中的位置原理框图。如图3所示,该实施例验证fpga中phy的链路宽度为x1,待验证的pcie控制器的链路宽度为x4。通过在待验证电路的pcie控制器和fpga的phy之间的pipe接口之间增加通路转换装置,可以使得待验证电路链路宽度为x4的pcie控制器和fpga的链路宽度为x1的phy对接。增加的通路转换装置与待验证电路的pcie控制器和fpga的phy的pipe接口工作在同一时钟模式下。
[0072]
本发明一种基于替代链路宽度的pcie接口电路硬件验证方法在本实施例的验证fpga中待验证电路的pcie控制器和fpga的phy之间的pipe接口之间增加的通路转换装置由接收转换装置和发送转换装置构成;其中,接收转换装置包括检测模块、接收模块和位宽转换模块,各模块说明如下:
[0073]
检测模块和phy及接收模块交互,用于识别从fpga的phy接收到的数据类型,可识别的数据类型有tlp、dllp和plp。tlp的长度为4的倍数个字节,其起始字符为stp,结束字符为end或edb。plp包括链路训练有序集ts1、链路训练有序集ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲序列eieos。dllp的长度为8个字节,其起始字符为sdp,结束字符为end。链路训练有序集ts1和ts2由16个字符组成,其起始字符均为com字符。ts1的符号0为起始字符com,符号1为pad字符或链路号,符号2为pad字符或通路号,符号3为fts的个数,符号4为链路速率,符号5携带链路控制信息,包括热复位、链路禁止、环回、乱序使能和速率改变等,符号6至符号15为训练序列标识符(training sequence id,ts id)。ts2除了ts id与ts1不同外,其余符号都相同。skip有序集的起始字符为com,由com和3个skp字符组成。fts有序集的起始字符为com,由com和3个fts字符组成。检测模块检测并识别上述7种不同的包格式并送入接收模块中进一步处理。检测模块将识别到的x1 phy接收到的数据类型通过data_type[2:0]信号表示,data_type[2:0]的值1~7对分别对应tlp、dllp、链路训练有序
集ts1、链路训练有序集ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲序列eieos共7种包格式。
[0074]
接收模块与检测模块、位宽转换模块和pcie控制器交互,用于接收检测模块识别的包序列,根据待验证pcie控制器输出的链路训练状态机指示信号ltssm_state指示的不同状态转换包序列,使得经过通路转换装置转换后的fpga的phy的pipe接口数据的包序列的格式、信息和位宽符合待验证pcie控制器x4 pipe接口要求后,通过数据信号rxdata_x4和数据指示信号rxdatak_x4送入待验证pcie控制器pipe接口上。ltssm_state指示待验证pcie控制器的链路训练状态机从0x00到0x11共17种状态。ltssm_state在从状态00跳转至状态11期间,链路处于链路训练状态,链路上交换plp。ltssm_state为状态11时,链路处于链路全开状态,能够发送和接收tlp、dllp和plp。接收模块在链路训练过程中进行plp的数据转换、通路复制以及链路训练有序集ts1和ts2中通路号的转换;在链路正常工作状态中,进行tlp和dllp拆解及重排列并送入待验证pcie控制器的pipe接口上。
[0075]
位宽转换模块与pcie控制器和接收模块交互,用于在链路训练状态时对plp进行的数据位宽转换和通路复制。当fpga的phy的pipe接口的单通路数据位宽和待验证pcie控制器pipe接口的单通路位宽不一致时,位宽转换模块根据待验证pcie控制器输出的ltssm_state指示信号和检测模块输出的当前数据类型的data_type指示信号转换链路训练有序集ts1、ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲有序集eieos,使得phy的pipe接口的单通路数据位宽和待验证pcie控制器pipe接口的单通路位宽一致,并将转换好位宽的数据复制成3份送往待验证pcie控制器中。
[0076]
3、本实施例一种基于替代链路宽度的pcie接口电路硬件验证方法的发送转换功能由转换装置中发送转换装置实现。如图3所示,发送转换装置由发送模块和信号转换模块两部分组成,两个模块的说明如下:
[0077]
发送模块与pcie控制器和phy模块交互,用于接收待验证接口电路的pcie控制器的pipe接口输出的信号,根据待验证pcie控制器输出的ltssm_state指示的从0x00到0x11之间的不同状态,转换待验证pcie控制器输出的pipe接口数据信号,使得转换后的数据信号指示的包序列的格式、信息和位宽符合fpga的phy的pipe接口,接收的包序列后送入fpga的x1 phy的pipe接口并发送。发送模块在链路训练状态中,根据待验证pcie控制器输出的状态指示信号ltssm_state构造相应plp替代待验证pcie控制器的pipe接口的发送数据;在链路工作状态中,发送模块接收待验证pcie控制器的tlp及dllp,进行组合和重排列后送入fpga的phy的pipe接口发送。
[0078]
信号转换模块与pcie控制器和phy模块交互,用于待验证电路的pcie控制器和fpga的phy之间的pipe接口的控制信号和状态信号的双向转换,将待验证电路的pcie控制器的pipe接口输出的mac_phy_*_x4信号转换为符合fpga的phy的pipe接口要求的接收信号mac_phy_*_x1,将phy的pipe接口输出的phy_mac_*_x4转换为符合待验证pcie控制器的pipe接口的phy_mac_*_x1输入信号。
[0079]
本实施例pcie接口的接收转换的具体过程为:当待验证电路的pcie链路处于链路训练状态时,检测模块检测fpga的phy接收到的数据信号和数据指示信号,当检测模块输出的data_type=0x03时表示待验证电路的fpga的phy解析出的数据信号类型为链路训练有序集ts1;检测模块输出的data_type=0x04时表示待验证电路的fpga的phy解析出的数据
信号类型为链路训练有序集ts2。接收模块将待验证fpga的phy的单通路数据信号rxdata_x1和数据指示信号rxdatak_x1送入位宽转换模块,由位宽转换模块将其转换为符合待验证pcie控制器单通路位宽的数据和数据指示信号送给接收模块;同时,位宽转换模块将单通路rxdata_x1和rxdata_x1复制3份送入接收模块,接收模块将rxdata_x1、rxdatak_x1和复制的3份信号形成4通路的数据信号rxdata_x4和数据指示信号rxdatak_x4送给待验证pcie控制器。特别地,当pcie链路训练状态机指示信号ltssm_state指示链路处于configuration状态时,链路通过ts1和ts2进行通路号协商,在ts1和ts2的通路复制时,需要将复制的ts1和ts2有序集中的符号2指示的通路号按照待验证pcie控制器pipe接口对应的实际通路号进行转换,以匹配待验证pcie接口控制器的通路编号。
[0080]
当链路训练完成后,链路上传输tlp和dllp。检测模块检测fpga的phy接收到的数据信号和数据指示信号,当检测模块输出的data_type=0x01时表示检测到fpga的phy的pipe接口数据信号和数据指示信号为tlp;当检测模块输出的data_type=0x02时表示检测到fpga的phy的pipe接口数据信号和数据指示信号为dllp。当检测模块检测到tlp的起始字符stp时,接收模块将起始字符stp置于待验证pcie控制器的通路0中,tlp的其它字符按照次序依次送入待验证pcie控制器的各通路中,此时end和edb位于通路3上。当检测模块检测到dllp的起始字符sdp时,接收模块将起始字符sdp置于待验证pcie控制器的通路0中,其它字符按照次序依次送入待验证pcie控制器的各通路中,此时end位于通路3上。
[0081]
在任何状态下,当检测模块输出data_type=0x05时表示待验证电路的fpga的phy接收到的数据类型为时钟补偿有序集skip信号,此时接收模块将检测模块输出的skip有序集送入待验证pcie控制器的通路0,同时将检测模块复制的3路skip有序集送入待验证pcie控制器的其它3条通路中;当检测模块输出data_type=0x06时表示待验证电路的fpga的phy接收到的数据类型为快速训练有序集fts信号,此时接收模块将检查模块输出的phy的通路上的fts有序集送入待验证pcie控制器的通路0中,同时将检测模块复制的3路fts有序集送入待验证pcie控制器的其它3条通路中;当检测模块输出data_type=0x07时表示待验证电路的fpga的phy接收到的数据类型为电气闲有序集eieos信号,此时接收模块将检测模块输出的phy的通路上的eieos有序集送入待验证pcie控制器的通路0中,同时将检测模块复制的3路eieos有序集送入待验证pcie控制器的其它3条通路中。
[0082]
5、本实施例pcie接口的发送转换的具体过程为:发送模块接收待验证pcie控制器的pipe接口输出的数据信号txdata_x4和数据指示信号txdata_x4,将其转换为txdata_x1和txdatak_x1输出到fpga的phy的pipe接口中。当待验证电路的链路处于链路训练状态时,当待验证pcie控制器输出的链路状态指示信号ltssm_state表示待验证pcie控制器的pipe接口输出的数据信号和数据指示信号为ts1和ts2时,发送模块丢弃待验证pcie控制器pipe接口输出的信号并构造符合fpga的phy的pipe接口位宽的ts1和ts2有序集替代待验证pcie控制器pipe接口输出的信号送入fpga的phy的pipe接口并发送;当ltssm_state指示当前状态为configuration状态的链路号协商子状态时,链路进行链路协商,发送模块将当前和随后构造的ts1和ts2有序集中的链路号由pad字符变更为fpga的phy的实际链路号0;当ltssm_state指示当前状态为configuration状态的通路号协商子状态时,发送模块将当前和随后构造的ts1和ts2有序集中的通路号由pad字符变更为phy的实际通路号0。在链路正常工作时,发送模块将待验证pcie控制器输出的tlp或dllp的起始字符stp或sdp置于fpga
的phy的通路0上,将其余字符按顺序依次置于通路0上起始字符之后。
[0083]
当待验证pcie控制器输出的fts_flag置位时,表示待验证pcie控制器发送快速训练有序集fts,发送转换装置的发送模块为fpga的phy构造快速训练有序集fts送入fpga的phy的pipe接口上并发送;当待验证pcie控制器输出的eie_flag置位时,表示待验证pcie控制器发送电气闲有序集eieos,发送模块为fpga的phy构造电气闲有序集eieos送入fpga的phy的pipe接口上并发送;在任何状态下,发送模块每隔1180个时钟周期为fpga的phy构造skip有序集送入fpga的phy的pipe接口上并发送。
[0084]
特别的,在链路训练过程中,当待验证电路的pcie控制器的链路训练状态信号ltssm_state指示链路进入recovery的速率切换子状态时,发送转换装置中的发送模块丢弃待验证pcie控制器的pipe接口输出的数据,构造链路训练有序集ts1和ts2,并将该链路训练有序集ts1和ts2的符号4的bit7置位为1后送入fpga的phy的pipe接口并发送。
[0085]
6、本实施例验证fpga选用xilinx公司的virtex7系列fpga,在待验证电路各端口的pcie控制器和相应的fpga phy之间均增加了通路转换装置,将集成有通路转换装置的待验证pcie接口电路asic代码迁移到fpga硬件验证平台上,以远低于asic中的时钟频率综合、布局布线并生成可执行文件下载至验证fpga上进行验证。本实施例构建了具有标准x1链路pcie接口的硬件验证平台,验证平台硬件连接如图4所示。图中,待验证pcie接口电路的端口0、端口1和端口2分别与标准pcie设备1、标准pcie设备2和标准pcie设备3通过x1链路相连;通过测试程序在标准pcie设备1、标准pcie设备2、标准pcie设备3和待验证pcie接口电路的各端口之间传输不同的测试事务包进行待验证pcie接口电路的功能性能验证。
[0086]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:1.一种基于替代链路宽度的pcie接口电路验证方法,其特征在于,包括:识别从fpga的phy接收到的信号类型,将信号类型通过data_type[2:0]信号表示为7类包序列;将包序列根据指示信号输出的不同状态进行转换,转换后包序列的格式、信息和位宽符合待验证pcie控制器接口要求,将包序列送入至待验证pcie控制器的pipe接口;接收待验证pcie控制器的pipe接口输出的数据信号,根据指示信号输出的不同状态将信号转换,转换后信号指示的7种包序列格式、信息和位宽符合fpga的phy的pipe接口类型,将转换后的包序列发送;所述7类包序列包括物理层包plp、数据链路层包dllp和事务层包tlp;所述物理层包plp包括链路训练有序集ts1、链路训练有序集ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲序列eieos;将待验证电路的pcie控制器的pipe接口输出的控制信号或状态信号转换,转换后控制信号或状态信号为符合fpga的phy的pipe接口要求的接收信号,或者是fpga的phy的pipe接口输出的控制信号或状态信号转换为符合待验证pcie控制器的pipe接口的输入信号。2.根据权利要求1所述的一种基于替代链路宽度的pcie接口电路验证方法,其特征在于,所述指示信号包括链路训练状态机指示信号ltssm_state、快速训练有序集指示信号fts_flag和电气闲指示信号eie_flag。3.根据权利要求1所述的一种基于替代链路宽度的pcie接口电路验证方法,其特征在于,7种包序列转换,包括plp的通路复制和plp的数据转换、tlp的拆解及重排列、dllp的拆解及重排列,所述plp的数据转换包括链路训练有序集ts1中通路号的转换和链路训练有序集ts2中通路号的转换。4.根据权利要求3所述的一种基于替代链路宽度的pcie接口电路验证方法,其特征在于,所述plp的通路复制为,将接收的所述phy的通路0的plp包在送往所述待验证pcie控制器的通路0时,将plp包复制nlc-1份,将复制的plp包送入至所述待验证pcie控制器的其它nlc-1条通路中。5.根据权利要求3所述的一种基于替代链路宽度的pcie接口电路验证方法,其特征在于,当指示信号ltssm_state指示pcie控制器状态为链路训练状态中的通路号协商状态时,将复制的链路训练有序集ts1中通路号按照pcie控制器pipe接口对应的实际通路号进行转换,将复制的链路训练有序集ts2中通路号按照pcie控制器pipe接口对应的实际通路号进行转换;当指示信号ltssm_state指示pcie控制器状态为正常工作状态时,phy的pipe接口数据信号和数据指示信号为tlp时,将起始字符stp置于pcie控制器的通路0中,将后续字符按照字节剥解规则依次按pcie控制器的通路号排列;当phy的pipe接口的数据信号和数据指示信号为dllp时,将起始字符sdp置于pcie控制器的通路0中,将后续字符按照字节剥解规则依次按pcie控制器的通路号排列。6.根据权利要求1所述的一种基于替代链路宽度的pcie接口电路验证方法,其特征在于,当接收待验证pcie控制器的pipe接口输出的数据信号,包序列为tlp或dllp时,将接收的数据信号组合并重排列后送入fpga的phy的pipe接口发送;当接收待验证pcie控制器的pipe接口输出的数据信号,包序列为链路训练有序集ts1、链路训练有序集ts2时,若指示信号指示pcie控制器状态为链路训练状态中的链路号协商状态时,链路训练有序集ts1和链路训练有序集ts2的链路号由pad字符变更为phy的实际链
路号若指示信号指示pcie控制器状态为链路训练状态中的通路号协商状态时,链路训练有序集ts1和链路训练有序集ts2中的通路号由pad字符变更为phy的实际通路号。7.根据权利要求1所述的一种基于替代链路宽度的pcie接口电路验证方法,其特征在于,当所述待验证pcie控制器发送快速训练有序集fts时,phy的每条有效通路构造快速训练有序集fts并送入所述phy的pipe接口并发送,构造的fts的个数由所述待验证pcie控制器输出的状态指示信号指定;当所述待验证pcie控制器发送电气闲有序集eieos时,phy的每条有效通路构造电气闲有序集eieos送入所述phy的pipe接口并发送;按照pcie协议要求的间隔时间在所述phy的每条有效通路上构造skip有序集,所述skip有序集送入所述phy的pipe接口并发送。8.根据权利要求1所述的一种基于替代链路宽度的pcie接口电路验证方法,其特征在于,当phy的pipe接口输出时钟补偿有序集skip时,将接收的所述phy的通路0的skip有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的skip送入待验证pcie控制器的其它nlc-1条通路中;当所述通路转换装置检测到所述phy的pipe接口输出快速训练有序集fts时,将接收的所述phy的通路0的fts有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的fts送入所述待验证pcie控制器的其它nlc-1条通路中;当所述通路转换装置检测到所述phy的pipe接口输出电气闲有序集eieos时,将接收的所述phy的通路0的eieos有序集送往所述待验证pcie控制器的通路0;同时进行所述物理层包的复制,将复制后的eieos送入所述待验证pcie控制器的其它nlc-1条通路中。9.一种基于替代链路宽度的pcie接口电路验证装置,其特征在于,包括:检测模块,识别从fpga的phy接收到的信号类型,将信号类型通过data_type[2:0]信号表示为7类包序列;接收模块,用于将包序列根据指示信号输出的不同状态进行转换,转换后包序列的格式、信息和位宽符合待验证pcie控制器接口要求,将包序列送入至待验证pcie控制器的pipe接口上;发送模块,接收待验证pcie控制器的pipe接口输出的数据信号,根据指示信号输出的不同状态将信号转换,转换后信号指示的7种包序列格式、信息和位宽符合fpga的phy的pipe接口类型,将转换后的包序列发送;所述7类包序列包括tlp、dllp、链路训练有序集ts1、链路训练有序集ts2、时钟补偿有序集skip、快速训练有序集fts和电气闲序列eieos;信号转换模块,用于将待验证电路的pcie控制器的pipe接口输出的控制信号或状态信号转换,转换后控制信号或状态信号为符合fpga的phy的pipe接口要求的接收信号,或者是fpga的phy的pipe接口输出的控制信号或状态信号转换为符合待验证pcie控制器的pipe接口的输入信号。
技术总结本发明公开了一种基于替代链路宽度的PCIe接口电路验证装置及方法,通过在验证FPGA的控制器和PHY之间的PIPE接口之间增加通路转换装置,高效方便的实现了多通路PCIe接口电路的硬件验证,有效解决了现有技术在多通路和多端口PCIe接口电路硬件验证中遇到的问题,本发明提供的一种基于替代链路宽度的PCIe接口电路硬件验证方法以极小的资源极大的降低了验证FPGA中多通路PCIe接口电路的控制器和应用逻辑的工作频率,可轻松实现PCIe接口电路的验证。证。证。
技术研发人员:翟宝峰 王蕊琪 王剑峰 杨靓
受保护的技术使用者:西安微电子技术研究所
技术研发日:2022.07.25
技术公布日:2022/11/1