掌桥专利:专业的专利平台
掌桥专利
首页

基于Python的FPGA验证方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 11:45:49


基于Python的FPGA验证方法、装置、计算机设备及存储介质

技术领域

本发明涉及基于Python的FPGA验证技术领域,尤其是指基于Python的FPGA验证方法、装置、计算机设备及存储介质。

背景技术

SSD的设计阶段需要对不同的IP模块(一种集成电路、器件或部件)进行FPGA(Field Programmable Gate Array,现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物)验证,IC设计人员在开发不同的IP模块时会迭代大量的bitfile(bitfile就是FPGA设计的最终文件,用于配置FPGA的配置比特流)文件,验证人员在FPGA中加载该bitfile文件以测试IP模块的稳定性和可靠性,并根据测试结果反馈修改建议。由于IP模块开发过程中的迭代周期短,且不同的IP功能独立,导致需要验证的bitfile较多,验证固件也各不相同,如Nvme、NFC都对应不同的IP模块和验证固件。传统的验证方法需要验证人员手动下载bitfile到FPGA板上,并在Dstream(仿真器)上加载对应的固件进行测试,当某个模块出错后,Dstream和FPGA会挂死,导致验证无法连续进行,需要手动重启Dstream和FPGA,重新下载bitfile来维持验证的连续性。

发明内容

本发明的目的在于克服现有技术的不足,提供基于Python的FPGA验证方法、装置、计算机设备及存储介质。

为了解决上述技术问题,本发明采用如下技术方案:

基于Python的FPGA验证方法,包括以下步骤:

运行验证脚本;

根据验证脚本到待验证的IP模块路径下加载bitfile至FPGA;

根据IP模块选择验证固件路径,并调用仿真器加载该验证固件;

判断验证固件是否加载成功;

若加载成功,则根据IP模块选择测试脚本,在串口中加载测试脚本命令,并对IP模块进行测试;

判断IP模块测试中测试Case是否挂死;

若未挂死,则判断IP模块测试中测试Case是否全部测试完成;

若全部测试完成,则记录该IP模块的测试信息;

修改验证脚本中IP模块的bitfile路径,重启主机,开始下一轮IP模块的测试,直至完成所有IP模块的测试;

汇总所有IP模块的测试信息,并分析测试结果,输出分析文档。

其进一步技术方案为:所述运行验证脚本步骤之前,还包括:预先将验证脚本植入至主机内。

其进一步技术方案为:所述判断IP模块测试中测试Case是否挂死步骤之后,还包括:若挂死,则记录Case ID与log信息,标记该Case在下一次测试中不执行,然后重启主机,返回执行所述运行验证脚本步骤。

其进一步技术方案为:所述汇总所有IP模块的测试信息,并分析测试结果,输出分析文档步骤中,测试信息包括IP模块在测试中产生的log信息、时间信息、及测试次数信息;测试结果包括IP模块测试完成后的结果状态,有PASS、FAIL、或挂死;分析文档包括对测试结果为FAIL与挂死的Case中的测试信息进行分析后,输出关键时间与对应的部分log文档。

基于Python的FPGA验证装置,包括:运行单元,加载单元,选择加载单元,第一判断单元,选择加载测试单元,第二判断单元,第三判断单元,记录单元,修改测试单元,及汇总分析单元;

所述运行单元,用于运行验证脚本;

所述加载单元,用于根据验证脚本到待验证的IP模块路径下加载bitfile至FPGA;

所述选择加载单元,用于根据IP模块选择验证固件路径,并调用仿真器加载该验证固件;

所述第一判断单元,用于判断验证固件是否加载成功;

所述选择加载测试单元,用于根据IP模块选择测试脚本,在串口中加载测试脚本命令,并对IP模块进行测试;

所述第二判断单元,用于判断IP模块测试中测试Case是否挂死;

所述第三判断单元,用于判断IP模块测试中测试Case是否全部测试完成;

所述记录单元,用于记录该IP模块的测试信息;

所述修改测试单元,用于修改验证脚本中IP模块的bitfile路径,重启主机,开始下一轮IP模块的测试,直至完成所有IP模块的测试;

所述汇总分析单元,用于汇总所有IP模块的测试信息,并分析测试结果,输出分析文档。

其进一步技术方案为:还包括:植入单元,用于预先将验证脚本植入至主机内。

其进一步技术方案为:还包括:记录标记单元,用于记录Case ID与log信息,标记该Case在下一次测试中不执行,然后重启主机,运行验证脚本。

其进一步技术方案为:所述汇总分析单元中,测试信息包括IP模块在测试中产生的log信息、时间信息、及测试次数信息;测试结果包括IP模块测试完成后的结果状态,有PASS、FAIL、或挂死;分析文档包括对测试结果为FAIL与挂死的Case中的测试信息进行分析后,输出关键时间与对应的部分log文档。

一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如上述所述的基于Python的FPGA验证方法。

一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现如上述所述的基于Python的FPGA验证方法。

本发明与现有技术相比的有益效果是:通过在启动配置文件中添加测试验证脚本,通过脚本实现不同IP模块对应的bitfile文件和测试固件的加载,记录验证中产生的log信息并输出分析报告,对于验证中出现挂死,会记录相关的信息并执行下一项验证,保证验证IP模块的连续性,实现了对SSD的IP模块进行自动化FPGA验证,减少了人工操作,大幅提高了验证效率,且输出验证结果分析报告,方便验证和设计人员排查问题。

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

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的基于Python的FPGA验证方法的流程示意图;

图2为本发明实施例提供的基于Python的FPGA验证装置的示意性框图;

图3为本发明实施例提供的计算机设备的示意性框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1到图3所示的具体实施例,目前,使用FPGA验证SSD IP模块功能及稳定性的方法如下:主机上电,验证人员使用Player Pro将设计人员开发的对应模块的bitfile下载到FPGA,然后通过Dstream将验证固件在FPGA上加载起来,接着在串口输入该IP模块需要验证的Case命令,直到所有Case测试完成,当一个IP模块验证完成后,需要重新下载bitfile和验证固件,在串口输入对应的测试命令,直到将所有IP模块验证完成,最后查看串口的log记录并进行结果分析。其中,该方法既需要人为切换不同的bitfile和验证固件,又需要在串口输入命令行,涉及的人为操作步骤多,当验证Case出现挂死的情况,也需要人为介入重新测试,否则测试无法连续进行,使用该方法做测试验证将耗费大量人力和时间。

请参阅图1所示,本发明公开了一种基于Python的FPGA验证方法,包括以下步骤:

S1,运行验证脚本;

其中,在S1步骤之前,还包括:预先将验证脚本植入至主机内,以提高测试验证效率。

S2,根据验证脚本到待验证的IP模块路径下加载bitfile至FPGA;

S3,根据IP模块选择验证固件路径,并调用仿真器加载该验证固件;

S4,判断验证固件是否加载成功;若未加载成功,则执行S12步骤,重启主机,然后返回执行S1步骤;

S5,若加载成功,则根据IP模块选择测试脚本,在串口中加载测试脚本命令,并对IP模块进行测试;

S6,判断IP模块测试中测试Case是否挂死;若挂死,则执行S11步骤,记录Case ID与log信息,标记该Case在下一次测试中不执行,然后执行S12步骤,重启主机,再返回执行S1步骤;

S7,若未挂死,则判断IP模块测试中测试Case是否全部测试完成;若未全部测试完成,则返回执行步骤S5;

S8,若全部测试完成,则记录该IP模块的测试信息;

S9,修改验证脚本中IP模块的bitfile路径,重启主机,开始下一轮IP模块的测试,直至完成所有IP模块的测试;

S10,汇总所有IP模块的测试信息,并分析测试结果,输出分析文档。

其中,在本实施例中,测试信息包括IP模块在测试中产生的log信息、时间信息、及测试次数信息;测试结果包括IP模块测试完成后的结果状态,有PASS、FAIL、或挂死;分析文档包括对测试结果为FAIL与挂死的Case中的测试信息进行分析后,输出关键时间与对应的部分log文档。

本发明的基于Python的FPGA验证方法,只需要提前准备好需要验证的bitfile、验证固件以及测试脚本命令,设置其放入的路径,在启动配置文件中添加验证脚本,开机后运行该脚本,自动加载IP模块的bitfile和验证固件,接管串口并加载测试脚本命令,从而对该IP模块的功能和稳定性做出验证,记录IP模块的测试信息,接着自动进行下一轮IP模块的验证,最后输出分析结果,整个过程不需要人工参与,大大提高了验证效率,保证了测试连续性,降低了人为因素导致的测试风险,并为验证人员和IC设计人员提供了分析信息。

请参阅图2所示,本发明还公开了一种基于Python的FPGA验证装置,包括:运行单元10,加载单元20,选择加载单元30,第一判断单元40,选择加载测试单元50,第二判断单元60,第三判断单元70,记录单元80,修改测试单元90,及汇总分析单元100;

所述运行单元10,用于运行验证脚本;

所述加载单元20,用于根据验证脚本到待验证的IP模块路径下加载bitfile至FPGA;

所述选择加载单元30,用于根据IP模块选择验证固件路径,并调用仿真器加载该验证固件;

所述第一判断单元40,用于判断验证固件是否加载成功;

所述选择加载测试单元50,用于根据IP模块选择测试脚本,在串口中加载测试脚本命令,并对IP模块进行测试;

所述第二判断单元60,用于判断IP模块测试中测试Case是否挂死;

所述第三判断单元70,用于判断IP模块测试中测试Case是否全部测试完成;

所述记录单元80,用于记录该IP模块的测试信息;

所述修改测试单元90,用于修改验证脚本中IP模块的bitfile路径,重启主机,开始下一轮IP模块的测试,直至完成所有IP模块的测试;

所述汇总分析单元100,用于汇总所有IP模块的测试信息,并分析测试结果,输出分析文档。

其中,该装置还包括:植入单元110,用于预先将验证脚本植入至主机内。

其中,该装置还包括:记录标记单元120,用于记录Case ID与log信息,标记该Case在下一次测试中不执行,重启主机,然后运行验证脚本。

其中,所述汇总分析单元100中,测试信息包括IP模块在测试中产生的log信息、时间信息、及测试次数信息;测试结果包括IP模块测试完成后的结果状态,有PASS、FAIL、或挂死;分析文档包括对测试结果为FAIL与挂死的Case中的测试信息进行分析后,输出关键时间与对应的部分log文档。

需要说明的是,所属领域的技术人员可以清楚地了解到,上述基于Python的FPGA验证装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。

上述基于Python的FPGA验证装置可以实现为一种计算机程序的形式,该计算机程序可以在如图3所示的计算机设备上运行。

请参阅图3,图3是本申请实施例提供的一种计算机设备的示意性框图;该计算机设备500可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。

参阅图3,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。

该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种基于Python的FPGA验证方法。

该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。

该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种基于Python的FPGA验证方法。

该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。

因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中计算机程序包括程序指令,所述程序指令当被处理器执行时可实现上述的基于Python的FPGA验证方法。

所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

上述实施例为本发明较佳的实现方案,除此之外,本发明还可以其它方式实现,在不脱离本技术方案构思的前提下任何显而易见的替换均在本发明的保护范围之内。

相关技术
  • 基于Python的FPGA验证方法、装置、计算机设备及存储介质
  • 基于python的工位坐标自定位方法、装置、计算机设备及存储介质
技术分类

06120113047749