一种PCIE验证方法与流程

文档序号:12063968阅读:639来源:国知局

本发明涉及一种基于UVM验证方法学的PCIE验证方法。



背景技术:

芯片设计和验证技术的快速发展使得模块的功能验证的要求越来越高,在短时间内完成模块功能验证,保证逻辑功能正确,对验证环境的完备性,自动化和重用性上有着很高的要求。

PCIE是一种最新最流行的总线和接口标准,其主要优势是传输速率极高,以及多路高速串行传输带来的高带宽。PCIE的功能正确性是至关重要的,尤其每款重新设计或者设计改动的PCIE都需要经过大量的回归测试,甚至多次流片才能够真正使用到项目中。因此PCIE的验证通常需要大量时间和人力投入。

以往在验证PCIE模块的过程中,重新生成各种不同的PCIE数据包不但很麻烦,而且临时的编写很容易出现错误,因为通过验证平台来验证PCIE模块的效率很低,且无法重用。



技术实现要素:

本发明的目的在于克服上述不足,提供一种基于UVM验证方法学的PCIE验证方法,能够搭建一个可移植、重用、扩展,且完全自动检查的具有层次化结构的PCIE验证平台。

本发明的目的是这样实现的:一种基于UVM验证方法学的PCIE验证方法,它通过系统级硬件描述语言SystemVerilog来搭建一个基于UVM验证方法学的可移植,重用,扩展,完全自动检查,具有层次化结构的PCIE验证平台。

所述方法采用验证方法学UVM和系统级硬件描述语言(SystemVerilog),利用AXI总线行为模型构建验证环境平台,对PCIE模块实施功能验证。

所述功能验证是指随机化自动产生对PCIE模块的随机激励,自动化的判断响应结果,以及自动化的统计功能覆盖率。

所述实施功能验证是指,可约束的PCIE数据包的产生,分类发送PCIE数据包,自动完成数据响应。

所述验证方法中的验证环境平台采用系统级硬件描述语言SystemVerilog完成,所述验证环境平台包括:

1)测试用例完成随机化序列的定义,不同的测试用例使用不同的序列,用于验证PCIE的不同功能;

2)序列产生器,完成随机化数据包的定义;包括事务层数据包的事务类型、接收者地址、顺序属性、缓存一致性属性、流量类别、传送事务包的数据及其大小;包括数据链路层数据包的类型及其数据,以及不同有序集的类型和错误包的类型;在约束完数据的具体特征之后,由自动生成数据包函数自动生成数据包;定序器的功能是组织管理序列产生器,当驱动器要求数据时,定序器把序列产生器生成的事务转发给驱动器;

3)AXI驱动模块与AXI定序器相连接,将接收到的数据包,转换成AXI接口上实际的信号激励,这里的AXI驱动模块为总线行为模型;

4)PCIE驱动模块与PCIE定序器相连接,将接收到的数据包,转换成PIPE接口上的实际信号激励;

5)通过驱动模块的监视器从待验证的PCIE模块的接口上接收数据,并且把接收到的数据转化成数据包级别,并发送给PCIE参考模型。参考模型采用SystemVerilog编写;

本发明运行UVM验证方法学,能够实现一个层次化的验证结构,可以较简单的移植并验证不同配置的PCIE,并且通过约束产生随机数据包激励,可以实现遍历所有指令以及地址,另外功能覆盖率模型能够收集并监测覆盖率。

具体实施方式

本发明所创建的PCIE模块验证环境平台,采用系统级硬件描述语言SystemVerilog完成:主要包括以下9个组件:测试用例,序列产生器(sequence),AXI驱动模块(AXI in_agent),PIPE驱动模块(PIPE in_agent),AXI监测模块(AXI out_agent),PIPE监测模块(PIPE out_agent),PCIE参考模型(reference model),记分板(scoreboard),功能覆盖率模块。UVM组件之间通过端口(port)相连接或者通信。

测试用例完成随机化序列的定义,不同的测试用例使用不同的序列,用于验证PCIE的不同功能;序列产生器完成随机化数据包的定义,包括事务层数据包的事务类型、接收者地址、顺序属性、缓存一致性属性、流量类别、传送事务包的数据及其大小,数据链路层数据包的类型以及数据,以及不同有序集的类型,错误包的类型;在约束完数据的具体特征之后,由自动生成数据包函数自动生成数据包;

定序器的功能是组织管理序列产生器,当驱动器要求数据时,定序器把序列产生器生成的事务转发给驱动器;

AXI驱动模块将相应的数据包,转换成PCIE模块在AXI总线上实际的输入信号激励;

AXI监测模块将PCIE模块在AXI总线上的实际输出信号激励;

PIPE驱动模块将相应的数据包,转换成PCIE模块在PIPE接口上实际输入信号激励;

PIPE监测模块将PCIE模块在PIPE接口上的实际输出信号激励。

PCIE参考模型接收通过驱动模块的监视器从待验证的PCIE模块的接口上接收数据转化成的数据包,将处理过的数据包发送到记分板,参考模型采用SystemVerilog编写;

记分板,通过端口分别从PCIE参考模型和监测模块中的监视器中获取数据包,实时比较数据;

功能覆盖率模块通过功能覆盖组(cover_group)函数定义功能覆盖点,并通过采样功能覆盖点动统计覆盖率。

本发明利用PCIE验证模块作为根复合体(Root Complex),PCIE模块作为终端(Endpoint),模拟实际情况收发数据包。PCIE模块一端与根复合体相连接,另一端通过AXI总线与应用程序(Application)通信和配置相应的寄存器。

当用AXI总线配置好相应的寄存器之后,根复合体完成与待验证模块的连接,复位,链路初始化以及通信。数据结果被采集到记分板(scoreboard)进行自动比较。

按照PCIE模块的通信流程,当用AXI总线配置好相应的寄存器之后,PIPE驱动模块应该先进行链路初始化,发送PCIE协议规定的有序集,包括定向序列1和定向序列2(TS1和TS2)、电气空闲、快速定向序列(FTS)、Skip有序集(SKIP),来确定链路配置(速度选择、链路宽度、链路号、通道反转、极性倒置和执行通道到通道的相位补偿)。然后进入工作状态,PIPE驱动模块发送PCIE协议规定的事务层数据包(TLP),在每一个事务层数据包执行后,PCIE的参照模型写出一个参照结果;PCIE的参照模型通过存储单元保存或者读取数据,系统IO映射单元保存或者读取数据,PCIE设备配置空间保存或者读取数据,通过对比PCIE的参照模型与待验证模块PCIE的存储单元和设备配置空间中的数据,来保证待验证模块PCIE的每一条指令的工作状态和参照模型都是一致的;在PCIE工作中,数据链路层进行链路电源管理、TLP流控制和通过链路成功传送TLP的确认提供方便,因此数据链路层会发送数据链路层数据包(DLLP),包括ACK/NAK数据包、电源管理数据包和流量控制包。PIPE监测模块同时可以监测PCIE工作状态,将所需信息反馈给PIPE驱动模块,PIPE驱动模块根据PIPE监测模块所反馈的监测信息来驱动PIPE接口上的实际信号激励。AXI驱动模块和AXI检测模块类似于AXI总线中的主设备和从设备,处理入站(InBound)和出战(OutBound)事务。例如,PIPE驱动模块解析到当前需要通过PIPE接口发送一个存储器读请求的事务层数据包,发送完成后,通过PCIE模块解析后,读请求通过AXI总线信号由AXI监测模块监测到。AXI监测模块返回给AXI驱动模块后,AXI驱动模块则通过AXI总线发送给PCIE模块一个带读数据、地址以及完成包(Cpl)标志的数据,在PCIE模块中进行正确的组包后,通过PIPE接口由PIPE接口监测到一个带数据的完成包(CplD)。再将监测模块监测的数据包与参考模型中输出的数据包进行实时比较。

以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。

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