本发明属于软硬件处理的技术领域,具体涉及一种软硬件协同的验证方法。
背景技术:
随着ai技术的发展,越来越多的复杂应用场景对于深度学习网络模型要求也更高。在复杂的深度学习网络模型中,整个网络的数据传输量非常大,为了保证硬件架构的正确性,需要对整个网络结构的所有层进行验证仿真,这就导致需对上亿的数据进行存取操作,而真实的ddr控制器的仿真时间单位是在皮秒级,这就导致验证测试的时间非常的慢。并且从外设获取而来的图像数据需要进行一定的前处理才能输入到硬件架构,而硬件架构的计算结果也需要进行后处理才能反馈给外设。一般的验证平台只是对硬件架构模块进行仿真验证,忽略了软件驱动部分以及前后图像处理的正确性检验,这就会导致最终的硬件上板测试的时间增加,项目迭代周期变长。
技术实现要素:
本发明的目的在于:针对现有技术的不足,提供一种软硬件协同的验证方法,通过利用软件驱动控制仿真流程,接近实际硬件上板流程,有助于提高仿真速度,提升代码覆盖率,实现了验证流程自动化,还能缩短项目周期,提高工作效率。
为了实现上述目的,本发明采用如下技术方案:
一种软硬件协同的验证方法,包括如下步骤:
步骤一、将图像数据和参数进行前处理,传输到验证平台的模拟储存器中,然后根据所需测试的网络结构,对待测设计进行配置;
步骤二、所述待测设计根据配置,对所述图像数据和所述参数进行读取,并进行计算,同时,将所述图像数据和所述参数输入到参考模型中,进行对比结果的计算;
步骤三、所述待测设计将计算结果输入到所述模拟储存器中进行缓存;
步骤四、对所述模拟储存器的计算结果进行后处理,同时获取所述参考模型的计算结果,将两者的输入数据、配置参数及计算结果进行对比验证,若数据全部一致或数据差小于预设阈值,则测试通过,否则,测试失败。
作为本发明所述的一种软硬件协同的验证方法的一种改进,还包括:利用c语言编写的驱动程序对数据进行前处理及对所述待测设计配置。
作为本发明所述的一种软硬件协同的验证方法的一种改进,还包括:利用真实fpga开发板上测试所用的驱动程序对数据进行前处理、数据传输及对所述待测设计配置。
作为本发明所述的一种软硬件协同的验证方法的一种改进,所述模拟存储器包含数组或数据文件。
作为本发明所述的一种软硬件协同的验证方法的一种改进,所述步骤二中,还包括:
若需要对完整的网络模型进行仿真验证,则需要重复进行所述步骤一和所述步骤二,直到所述网络模型的最后一层结果计算完毕。
作为本发明所述的一种软硬件协同的验证方法的一种改进,所述步骤四中,所述对比验证还包括所述网络模型的每层网络层和整个所述网络模型。
作为本发明所述的一种软硬件协同的验证方法的一种改进,所述步骤一中,通过外部设备获取原始图像数据,所述外部设备包括传感器、摄像头或储存设备。
作为本发明所述的一种软硬件协同的验证方法的一种改进,所述步骤一中,所述前处理包括对图像进行解码、裁剪或压缩。
作为本发明所述的一种软硬件协同的验证方法的一种改进,所述参考模型包括待测设计的参考模型、前处理模块的参考模型及后处理的参考模型。
作为本发明所述的一种软硬件协同的验证方法的一种改进,所述参考模型为软件模型,所述软件模型采用c语言或systemverilog。
本发明的有益效果在于,本发明包括如下步骤:步骤一、将图像数据和参数进行前处理,传输到验证平台的模拟储存器中,然后根据所需测试的网络结构,对待测设计进行配置;步骤二、所述待测设计根据配置,对所述图像数据和所述参数进行读取,并进行计算,同时,将所述图像数据和所述参数输入到参考模型中,进行对比结果的计算;步骤三、所述待测设计将计算结果输入到所述模拟储存器中进行缓存;步骤四、对所述模拟储存器的计算结果进行后处理,同时获取所述参考模型的计算结果,将两者的输入数据、配置参数及计算结果进行对比验证,若数据全部一致或数据差小于预设阈值,则测试通过,否则,测试失败。由于一般的验证平台只是对硬件架构模块进行仿真验证,忽略了软件驱动部分以及前后图像处理的正确性检验,这就会导致最终的硬件上板测试的时间增加,项目迭代周期变长,步骤一,获取图像数据与权值,采用c语言编写的驱动程序,将外设获取到的原始图像数据以及权值输入进行前处理,并传入到验证平台的模拟储存器中,同时,将原始数据传输到参考模型;步骤二中,根据所需测试的网络结构,获取所需配置参数,其中主要包括读写数据地址与长度,测试用例网络层的参数,比如卷积层的权值参数、卷积核参数、步长参数等参数,以及控制参数,该参数可以为网络模型中任意一层的网络参数,或者为整个网络模型的所有网络层参数,软件驱动将对待测设计的控制寄存器按顺序进行配置;计算是待测设计的计算过程,而待测设计是一个卷积神经网络加速器,用硬件描述语言来实现卷积神经网络,具体包括卷积计算、池化计算、激活、全连接;步骤三中,图像数据读取完后,待测设计将开始计算权值进行对储存器的读取,由于计算权值的数据量较大,超出待测设计的片上储存器大小,因此将权值分成n(n=0,1,2,3…)组,即w0,w1,w2…,分别对参数进行读取,当前组权值全部计算完后,再进行下一组权值的读取,计算下一组权值的结果;步骤四中,由软件驱动来控制读取模拟储存器中的计算结果,与参考模型的计算结果进行对比验证,得到验证结果,其中包括:对应网络模型的每层网络层的输入数据与配置参数以及计算结果分别进行对比验证;对应整个网络模型的输入数据与配置参数以及最终计算结果对比验证。本发明通过利用软件驱动控制仿真流程,接近实际硬件上板流程,有助于提高仿真速度,提升代码覆盖率,实现了验证流程自动化,还能缩短项目周期,提高工作效率。
附图说明
图1为本发明的流程示意图。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接受的误差范围内,本领域技术人员能够在一定误差范围内解决技术问题,基本达到技术效果。
在本发明的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、水平”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
以下结合附图对本发明作进一步详细说明,但不作为对本发明的限定。
如图1所示,一种软硬件协同的验证方法,包括如下步骤:
步骤一、将图像数据和参数进行前处理,传输到验证平台的模拟储存器中,然后根据所需测试的网络结构,对待测设计进行配置;
步骤二、待测设计根据配置,对图像数据和参数进行读取,并进行计算,同时,将图像数据和参数输入到参考模型中,进行对比结果的计算;
步骤三、待测设计将计算结果输入到模拟储存器中进行缓存;
步骤四、对模拟储存器的计算结果进行后处理,同时获取参考模型的计算结果,将两者的输入数据、配置参数及计算结果进行对比验证,若数据全部一致或数据差小于预设阈值,则测试通过,否则,测试失败。
需要说明的是,本发明的验证方法中,由于一般的验证平台只是对硬件架构模块进行仿真验证,忽略了软件驱动部分以及前后图像处理的正确性检验,这就会导致最终的硬件上板测试的时间增加,项目迭代周期变长,步骤一,获取图像数据与权值,采用c语言编写的驱动程序,将外设获取到的原始图像数据以及权值输入进行前处理,并传入到验证平台的模拟储存器中,同时,将原始数据传输到参考模型;步骤二中,根据所需测试的网络结构,获取所需配置参数,其中主要包括读写数据地址与长度,测试用例网络层的参数,比如卷积层的权值参数、卷积核参数、步长参数等参数,以及控制参数,该参数可以为网络模型中任意一层的网络参数,或者为整个网络模型的所有网络层参数,软件驱动将对待测设计的控制寄存器按顺序进行配置;计算是待测设计的计算过程,而待测设计是一个卷积神经网络加速器,用硬件描述语言来实现卷积神经网络,具体包括卷积计算、池化计算、激活、全连接;步骤三中,图像数据读取完后,待测设计将开始计算权值进行对储存器的读取,由于计算权值的数据量较大,超出待测设计的片上储存器大小,因此将权值分成n(n=0,1,2,3…)组,即w0,w1,w2…,分别对参数进行读取,当前组权值全部计算完后,再进行下一组权值的读取,计算下一组权值的结果;步骤四中,由软件驱动来控制读取模拟储存器中的计算结果,与参考模型的计算结果进行对比验证,得到验证结果,其中包括:对应网络模型的每层网络层的输入数据与配置参数以及计算结果分别进行对比验证;对应整个网络模型的输入数据与配置参数以及最终计算结果对比验证。
优选的,还包括:利用c语言编写的驱动程序对数据进行前处理及对待测设计配置。
优选的,还包括:利用真实fpga开发板上测试所用的驱动程序对数据进行前处理、数据传输及对待测设计配置。
优选的,模拟存储器包含数组或数据文件。于本实施例中,模拟存储器包含数组或数据文件,但本发明不以此为限,模拟存储器还可以包含数组检索,通过索引地址的方式对数据进行存取,从而提高数据读取的速度,进而提高整个网络模型的数据处理速度。
优选的,步骤二中,还包括:
若需要对完整的网络模型进行仿真验证,则需要重复进行步骤一和步骤二,直到网络模型的最后一层结果计算完毕。
需要说明的是:输入数据可以是网络模型的第一层网络的输入数据,也可以是上一层网络的计算结果数据,具体操作为:若验证用例为单层网络层则输入数据为步骤一所存放的图像数据;若验证用例为整个网络模型,输入数据将会是前一层网络的计算结果,由于不同的数据将存放到数组或数据文件的不同的储存区域内,将根据不同需求建立不同的数据索引地址与长度来读取数据,一旦数据计算完毕,结果将开始从待测设计输入到验证平台的模拟储存器中进行缓存,若需要对完整网络模型进行仿真验证,则需要重复进行步骤一和步骤二,直到网络模型的最后一层结果计算完毕,确保完整计算网络模型的每一层,有助于提高数据读取的速度,进而提高整个网络模型的数据处理速度。
优选的,步骤四中,对比验证还包括网络模型的每层网络层和整个网络模型。计算结果可以为某一层的网络的计算结果,也可以为整个网络模型的最终计算结果。将两者的输入数据,配置参数以及计算结果进行对比验证,若数据全部一样,或者数据差小于预设阈值,则测试通过,否则,测试失败。这样设计提高了仿真速度,提升了代码验证的覆盖率,实现了自动化。
优选的,步骤一中,前处理包括对图像进行解码、裁剪或压缩。上述的输入数据可以是图像数据,上述的外部设备可以是传感器,比如摄像头,也可以是存储有图像数据的存储设备,比如移动硬盘或数据库服务器。对参与计算的神经网络权值按照待测设计的要求进行一定的处理,然后传入到验证平台的模拟储存器中。
优选的,步骤一中,通过外部设备获取原始图像数据,外部设备包括传感器、摄像头或储存设备。传感器、摄像头或储存设备均为常用的获取图像工具,可以根据实际设计需要,选择传感器、摄像头或储存设备作为外部设备,但本发明不以此为限,外部设备可以获取图像即可。
优选的,参考模型包括待测设计的参考模型、前处理模块的参考模型及后处理的参考模型。参考模型包含图片前后处理的参考模型进行对比,提高了仿真速度,提升了代码验证的覆盖率。
优选的,参考模型为软件模型,软件模型采用c语言或systemverilog。
根据上述说明书的揭示和教导,本发明所属领域的技术人员还能够对上述实施方式进行变更和修改。因此,本发明并不局限于上述的具体实施方式,凡是本领域技术人员在本发明的基础上所作出的任何显而易见的改进、替换或变型均属于本发明的保护范围。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。