芯片的验证方法、验证装置以及存储介质与流程

文档序号:24075163发布日期:2021-02-26 16:43阅读:106来源:国知局
芯片的验证方法、验证装置以及存储介质与流程

[0001]
本公开的实施例涉及一种芯片的验证方法、芯片验证装置以及存储介质。


背景技术:

[0002]
随着现代集成电路的发展和规模不断扩大,验证逐渐成为片上系统(system on chip,soc)开发的最大挑战之一。随着芯片复杂度的提高,传统的软件验证方式模拟整体芯片运行所花费的时间会相应增加。如何提高验证效率同时又可以提高校验精度是本领域关注的问题。


技术实现要素:

[0003]
本公开至少一实施例提供一种芯片的验证方法,包括:通过硬件模拟器对所述芯片进行第一阶段测试,其中,所述第一阶段包括至少一个采样周期;通过同步采样器分别提取所述至少一个采样周期的每个的测试结果数据并进行存储,以及从所述同步采样器中导出所述至少一个采样周期的测试结果数据以用于比对从而对所述芯片进行验证。
[0004]
在一些示例中,所述每个采样周期包括一个或多个指令周期。
[0005]
在一些示例中,所述验证方法还包括:将所述至少一个采样周期的测试结果数据与参考结果进行比对以对所述芯片进行验证的同时在所述硬件加速器上对所述芯片进行第二阶段测试。
[0006]
在一些示例中,将导出的测试结果数据传输到计算装置以与所述参考结果进行比对。
[0007]
在一些示例中,从所述同步采样器中导出所述至少一个采样周期的测试结果数据以用于比对从而对所述芯片进行验证包括:在所述第一阶段测试后将所述硬件模拟器暂停运行一个时间间隔直至所述至少一个采样周期的测试结果数据从所述同步采样器中全部导出,其中,所述第二阶段测试在所述时间间隔之后。
[0008]
在一些示例中,当所述同步采样器存满或当前测试程序段运行结束时,所述第一阶段测试结束,所述硬件模拟器暂停运行。
[0009]
在一些示例中,所述同步采样器包括虚拟缓存器和虚拟存储器,通过所述同步采样器分别提取所述至少一个采样周期的每个的测试结果数据并进行存储包括:通过所述虚拟缓存器接收所述至少一个采样周期的测试结果数据并缓存,然后存入所述虚拟存储器中。
[0010]
在一些示例中,通过所述虚拟缓存器接收所述至少一个采样周期的测试结果数据并缓存,然后存入所述虚拟存储器中包括:通过所述虚拟缓存器将所述至少一个采样周期的测试结果数据分别压缩成至少一个数据帧并缓存,然后将所述至少一个数据帧存入所述虚拟存储器中,其中,所述至少一个数据帧的总长度小于或等于所述虚拟存储器的宽度。
[0011]
在一些示例中,所述至少一个数据帧的每个包括数据帧头、有效数据段和数据帧尾,所述数据帧头包括寄存器有效位信息,所述有效数据段包括寄存器有效数据信息,所述
数据帧尾包括指令释放的有效数据信息。
[0012]
在一些示例中,所述验证方法用于验证寄存器传输级设计验证,所述芯片为寄存器传输级虚拟芯片。
[0013]
在一些示例中,所述芯片包括中央处理器。
[0014]
本公开至少一实施例还提供一种芯片的验证装置,包括处理器和存储器。所述存储器中存储有计算机可执行代码,所述计算机可执行代码当由所述处理器运行时,执行上述任一实施例提供的验证方法。
[0015]
本公开至少一实施例还提供一种计算机可读存储介质,其上存储有计算机可执行代码,当所述计算机可执行代码被执行时,执行上述任一实施例提供的验证方法。
[0016]
本公开至少一实施例还提供一种芯片的验证装置,包括测试单元、采样单元和导出单元。所述测试单元配置为通过硬件模拟器对所述芯片进行第一阶段测试,所述第一阶段包括至少一个采样周期;所述采样单元配置为通过同步采样器分别提取所述至少一个采样周期的每个的测试结果数据并进行存储;所述导出单元配置为从所述同步采样器中导出所述至少一个采样周期的测试结果数据以用于比对从而对所述芯片进行验证。
附图说明
[0017]
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
[0018]
图1为本公开至少一实施例提供的一种验证方法的步骤流程图;
[0019]
图2a为本公开至少一实施例提供的同步采样器的结构示意图;
[0020]
图2b为本公开至少一实施例提供的数据帧的结构示意图;
[0021]
图3为本公开另一些实施例提供的验证方法的流程示意图;
[0022]
图4为本公开另一实施例提供的验证方法的步骤流程图;
[0023]
图5为本公开至少一实施例提供的一种验证装置的结构示意图;
[0024]
图6为本公开至少一实施例提供的一种存储介质的示意图;以及
[0025]
图7为本公开另一些实施例提供的验证装置的示意图。
具体实施方式
[0026]
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0027]
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
[0028]
超大规模集成电路开发的硬件模拟器工具(emulator)可以解决传统软件验证的
测试速度慢和测试指令规模小的问题。例如,通过使用硬件模拟器(例如zebu、veloce等硬件加速器工具)可以实现khz到mhz级别仿真速度,相比于传统软件仿真工具vcs(10-100hz)例如可以实现十万倍的提速。
[0029]
然而,单纯的硬件模拟仿真的校验粒度较粗,例如通常是千万条指令级别,测试程序运行过程当中的错误容易被掩盖,从而验证精度有限。
[0030]
一种使用硬件模拟器进行仿真测试的方法是在硬件模拟器平台上运行测试程序,在主机上搭建验证平台(如uvm验证平台)对测试结果进行比对,硬件模拟器在验证时能复用验证平台中的功能组件(如检测组件、比对组件等),实现事务(transaction)级别校验。然而,硬件模拟器需要与验证平台之间实现事务级别的数据交互,硬件模拟工具的运行速度仍然会受限于验证平台的仿真速度,使得硬件模拟器失去了验证速度上的优势。
[0031]
本公开至少一实施例提供一种芯片验证方法,通过将硬件模拟器的测试结果缓存后导出进行比对,不仅降低硬件模拟器与外部的交互频率,而且将硬件模拟器的运行与测试结果的校验进行分离,使得硬件模拟器不需要等待结果校验的时间就能接着运行其它程序,从而实现了运行和校验的并行处理,提高了验证效率;同时,在该验证方法中,测试结果可以按照采样周期进行提取,从而能够实现细校验粒度,提高了验证精度。
[0032]
图1为本公开至少一实施例提供的芯片验证方法的流程图,如图1所示,该验证方法包括步骤s101-s103。
[0033]
步骤s101:通过硬件模拟器对芯片进行第一阶段测试。
[0034]
该第一阶段包括至少一个采样周期,例如包括多个采样周期。例如,该采样周期可以自定义,例如可以包括一个或多个指令周期,这里,指令周期是指该芯片执行指令的时钟周期。例如,在一个指令周期中芯片执行一条或多条指令。
[0035]
例如,该硬件模拟器由超大规模集成电路实现,例如为zebu、veloce等硬件加速器。
[0036]
在芯片的设计过程中,需要用硬件描述语言(如verilog语言)将硬件电路形成为寄存器传输级(rtl级)的逻辑代码,使用验证工具对逻辑代码进行仿真验证后再通过综合工具将逻辑代码转换为门级电路网表,然后再使用自动布局布线工具将网表转换为要实现的具体电路布线结构。
[0037]
例如,该验证方法用于验证寄存器传输级设计验证,该芯片为寄存器传输级虚拟芯片,将该虚拟芯片的rtl代码烧入该硬件模拟器中,并运行该虚拟芯片的测试程序生成测试结果数据从而对芯片进行测试。
[0038]
例如,该芯片包括但不限于处理器、单片机、数字信号处理(digital signal process,dsp)、专用集成电路(application specific integrated circuits,asic)等器件中的一种或多种。处理器例如可以为中央处理单元(cpu)、现场可编程门阵列(fpga)或张量处理单元(tpu)等。
[0039]
步骤s102:通过同步采样器分别提取该第一阶段中的至少一个采样周期的每个的测试结果数据并进行存储。
[0040]
例如,该同步采样器按采样周期依次提取每个采样周期生成的测试结果数据并保存,从而每个采用周期生成的测试结果数据不会被之后生成的测试结果数据覆盖,实现了采样周期级别的校验粒度。例如,当该采样周期为指令周期时,可以实现指令周期级别的校
验粒度。
[0041]
例如,该同步采样器包括虚拟缓存器和虚拟存储器。例如,该虚拟缓存器和虚拟存储器均以rtl代码的形式烧入该硬件模拟器中,通过运行该rtl代码而实现。例如,每个虚拟缓存器包括一个虚拟寄存器,例如可以模拟第一级缓存、第二级缓存等。例如,该虚拟存储器为虚拟动态随机存取存储器(dram)。例如,该虚拟缓存器配置为提取每个采样周期的测试结果数据并缓存,然后将至少一个采样周期的测试结果数据一次性存入该存储器中。
[0042]
图2a示出了本公开至少一实施例提供的同步采样器的结构示意图,其中箭头方向示出了测试结果数据的传输方向。
[0043]
如图2a所示,该虚拟缓存器包括测试结果数据提取单元、数据包产生单元、数据包压缩单元及数据缓存单元。
[0044]
例如,该数据提取单元配置为提取每个采样周期生成的测试结果数据。例如,该测试结果数据包括该虚拟芯片中各寄存器的寄存器信息。例如,该寄存器信息包括定点寄存器信息、浮点寄存器信息和状态寄存器信息等。
[0045]
例如,该数据包产生单元配置为将每个采样周期产生的寄存器信息封装成一个数据包。
[0046]
例如,该数据压缩单元配置为将该数据包进行数据压缩形成数据帧并存入数据缓存单元。
[0047]
例如,该数据缓存单元配置为收集至少一个数据帧并一次性写入虚拟存储器。
[0048]
例如,通过同步采样器分别提取至少一个采样周期的测试结果数据并进行存储包括:通过该虚拟缓存器提取每个采样周期的测试结果数据并缓存,然后存入该虚拟存储器中。例如,通过该虚拟缓存器将该至少一个采样周期的测试结果数据分别压缩成至少一个数据帧并缓存,然后将该至少一个数据帧存入该虚拟存储器中,其中,该至少一个数据帧的总长度小于或等于该虚拟存储器的宽度。例如,该虚拟缓存器收集多个采样周期的测试结果数据并分别压缩成多个数据帧,然后将该多个数据帧一起存入该虚拟存储器中,该多个数据帧的总长度小于或等于该虚拟存储器的宽度。
[0049]
例如,由于虚拟存储器是按行写入,一次写入一行,为了提高该虚拟存储器的空间利用率,也为了提高验证效率,可以等该虚拟缓存器收集的数据帧的总长度接近该虚拟存储器的宽度时再将该数据帧一次性写入该虚拟存储器中。例如,该虚拟缓存器收集多个采用周期的测试结果数据并分别形成多个数据帧,然后将多个数据帧一次性存入该虚拟存储器中。
[0050]
例如,该数据帧包括数据帧头、有效数据段和数据帧尾。该数据帧头包括寄存器有效位信息,该有效数据段包括寄存器有效数据信息,所该数据帧尾包括指令释放的有效数据信息。
[0051]
图2b示出了一个数据帧的结构示意图。例如,该虚拟芯片包括5个寄存器,分别为2个定点寄存器、2个浮点寄存器和1个状态寄存器。图2b示出了对应于该5个寄存器的数据帧结构,该数据帧头分别包括该5个寄存器的寄存器有效位信息。
[0052]
例如,该5个寄存器在一个采样周期中对应生成的测试数据所形成的数据帧中,数据帧头为10100,也即一个定点寄存器有效位信息和一个浮点寄存器有效位信息分别为1,其它寄存器有效位信息均为0,这表示在该采样周期中,该5个寄存器中仅1个定点寄存器和
1个浮点寄存器的状态发生了变化;在这种情形,该数据帧的有效数据段可以仅包括该状态发生变化的1个定点寄存器和1个浮点寄存器的有效数据信息,如图2b所示,而无需包括所有寄存器的有效数据信息。这样可以有效降低测试结果数据的占用空间,提高验证效率。
[0053]
步骤s103:从同步采样器中导出至少一个采样周期的测试结果数据以用于比对从而对芯片进行验证。
[0054]
例如,该测试结果数据导出至外部计算装置(如服务器或主机)以进行比对。
[0055]
图3示出了本公开至少一实施例提供的芯片验证方法中测试数据结果的传输过程示意图。
[0056]
通过设置该同步采样器,不仅可以按照采样周期对测试数据进行采样从而提高校验粒度,还可以将多个采样周期的测试数据进行存储后一并导出到外部计算装置的验证平台中进行数据比对校验,降低了硬件模拟器与外部计算装置的交互频率,从而提高了校验效率。例如,硬件模拟器与外部计算装置在数据交互之前需要通过握手协议确认彼此身份,数据交互速度不仅取决于硬件模拟器的运行速度,还取决于验证平台的运行速度。因此,通过将多个采样周期的测试数据进行存储后一并导出,不仅降低了硬件模拟器与外部计算装置的交互频率,从而降低了数据交互的时间损耗对验证速度的影响;还使得硬件模拟器的运行不再受限于验证平台的运行速度。
[0057]
例如,从同步采样器中导出所述至少一个采样周期的测试结果数据以用于比对从而对芯片进行验证包括:在该第一阶段测试后将所述硬件模拟器暂停运行一个时间间隔直至该测试结果数据从同步采样器中全部导出。
[0058]
例如,当该虚拟存储器已存满(从而导致继续进行存储的存储空间不足)或当前测试程序段测试结束时,该第一阶段测试结束,将该第一阶段测试生成的测试结果数据导出至外部计算装置(例如主机或服务器)以进行比对校验。
[0059]
例如,在该导出过程中,该硬件模拟器暂停指令运行并保持现场状态,直至该虚拟寄存器中的测试结果数据全部导出,也就是说,该硬件模拟器暂停运行的时间间隔的时长也即该测试结果数据导出的时间。如果在测试结果数据导出的过程中,硬件模拟器仍然在运行生成测试数据,新的测试数据可能被提取至同步采样器中覆盖掉该同步采样器中尚未导出的数据,导致该部分数据未能导出进行校验,从而影响校验精度。
[0060]
例如,一些厂商开发的硬件加速器,如zebu、veloce等,可以在极短的时间内让硬件加速器内待验证设计模块(例如上述虚拟芯片)的时钟停下,从而让加速器停止运行并保持当前状态的同时,将同步采样器中的数据下载,可以在运行过程中,停下时钟保护现场,做数据传输。在数据传输完成之后,再将同步采样器的写指针复位到初始状态,从而继续进行后续的测试(例如下文的第二阶段测试),从而不遗漏芯片的测试结果。该第二阶段测试所测试的验证程序可以与第一阶段测试所测试的验证程序为同一程序段,也可以是不同的程序段。例如,该第二阶段测试包括一个或多个采样周期,该硬件模拟器在该第二阶段测试具有与第一阶段测试类似的测试行为。
[0061]
例如,该验证方法还包括:将导出的测试结果数据传输到计算装置以与参考结果进行比对以对芯片进行验证。
[0062]
例如,可以在计算装置中搭建一个测试平台(test bench),例如,可以用c语言等搭建该测试平台。
[0063]
例如,该测试平台包括预期组件(也可以称为reference model),该预期组件用于运行仿真程序或者测试激励并输出参考结果(也可以称为golden result)。例如,该测试平台还包括比对组件(也可以称为scoreboard),该比对组件用于将测试结果数据与该预期组件输出的参考结果进行比对并分析该测试结果数据是否正确,从而判断判断芯片的逻辑是否正确以实现芯片验证。例如,该预期组件可以按照采样周期同步输出参考结果。
[0064]
例如,该验证方法还包括:将该至少一个采样周期的测试结果数据与参考结果进行比对以对芯片进行验证的同时在所述硬件加速器上对所述芯片进行第二阶段测试。
[0065]
例如,在硬件模拟器暂停运行之后恢复运行并进行后续测试(例如第二阶段测试)时,计算装置可以同时对第一测试阶段生成的测试结果数据进行比对。通过将测试运行与结果校验分离,硬件模拟器不用等待测试平台的比较结果而直接恢复运行,真正实现了软硬件协同校验以及多个平台之间的同步验证。
[0066]
例如,在完成同步采样器的数据导出之后,测试平台主动唤醒处理程序(例如以python script实现)以解压数据并把完整解压后的数据流送给测试平台中的比对组件开始对测试结果数据和参考结果进行离线对比;同时,硬件模拟器不用等待测试平台的比较结果而直接恢复运行,从而极大地节省地硬件模拟器的等待时间。
[0067]
图4示出了本公开另一些实施例提供的芯片验证方法的流程图。该芯片验证方法包括步骤s201-s207。
[0068]
例如,先执行步骤s201,准备一个同步采样器,用于监测并存储虚拟芯片的每个采样周期的测试运行结果,并用于在虚拟芯片的每个采样周期结束之后,提取该采样周期生成的测试数据结果;然后执行步骤s202,通过硬件模拟器对芯片进行一个采样周期的测试并生成测试结果数据,再将该测试结果数据传输到同步采样器中进行存储(步骤s203),然后判断同步采样器是否存满或者当前测试程序段是否结束(步骤s204),如果同步采样器没有存满且当前测试程序段没有运行结束,则重新执行步骤s202,直至同步采样器已经存满(存储空间不足)或者当前测试程序段已经测试结束,则执行步骤s205,从同步采样器中将测试结果数据导出,同时将硬件模拟器暂停运行直至测试结果数据从同步采样器中全部导出;然后并行执行步骤s206和步骤s207,步骤s206:在外部计算装置中将测试结果数据与参考结果进行比对以对芯片进行验证,步骤s207:在硬件模拟器上对芯片进行后续测试。
[0069]
上述实施例的具体步骤可以参考图1所示实施例的描述,此处不再赘述。
[0070]
本公开至少一实施例还提供一种验证装置,适用如上任一实施例提供的验证方法。
[0071]
图5为本公开至少一实施例提供的一种验证装置的结构示意图。该验证装置400可以是个人电脑、笔记本电脑、平板电脑、移动电话等终端设备也可以是工作站、服务器、云服务等。需要注意的是,图5示出的该验证装置400仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
[0072]
如图5所示,验证装置400可以包括处理器410(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(rom)420中的程序或者从存储装置480加载到随机访问存储器(ram)430中的程序而执行各种适当的动作和处理。在ram430中,还存储有验证装置400操作所需的各种程序和数据。处理器410、rom 420以及ram 430通过总线440彼此相连。输入/输出(i/o)接口450也连接至总线440。
[0073]
通常,以下装置可以连接至i/o接口450:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置460;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置470;包括例如磁带、硬盘等的存储装置480;以及通信装置490。通信装置490可以允许验证装置400与其他电子设备进行无线或有线通信以交换数据。虽然图5示出了包括各种装置的验证装置400,但应理解的是,并不要求实施或具备所有示出的装置,验证装置400可以替代地实施或具备更多或更少的装置。
[0074]
例如,根据本公开的实施例,上述验证方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述验证方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置490从网络上被下载和安装,或者从存储装置480安装,或者从rom420安装。在该计算机程序被处理器410执行时,可以执行本公开实施例提供的验证方法中限定的功能。
[0075]
本公开至少一个实施例还提供一种存储介质,用于存储非暂时性计算机程序可执行代码(例如计算机可执行指令),当该非暂时性计算机程序可执行代码由计算机执行时可以实现本公开任一实施例所述的验证方法;或者,当该非暂时性计算机程序可执行代码由计算机执行时可以实现本公开任一实施例所述的验证方法。
[0076]
图6为本公开一实施例提供的一种存储介质的示意图。如图5所示,存储介质700非暂时性地存储有计算机程序可执行代码701。例如,当计算机程序可执行代码701由计算机执行时可以执行根据上文所述的验证方法中的一个或多个步骤。
[0077]
例如,该存储介质700可以应用于上述验证装置400中。例如,存储介质700可以为图5所示的验证装置400中的存储器420。例如,关于存储介质700的相关说明可以参考图5所示的验证装置400中的存储器420的相应描述,此处不再赘述。
[0078]
图7为本公开另一些实施例提供的一种芯片的验证装置,适用于上述任一实施例提供的验证方法。如图7所示,该验证装置600包括测试单元610、采样单元620和导出单元630。该测试单元610配置为通过硬件模拟器对芯片进行第一阶段测试,其中,第一阶段包括至少一个采样周期;该采样单元620配置为通过同步采样器分别提取该至少一个采样周期的每个的测试结果数据并进行存储;该导出单元630配置为从所述同步采样器中导出该至少一个采样周期的测试结果数据以用于比对从而对芯片进行验证。
[0079]
例如,该验证装置还可以进一步包括同步校验单元,该同步校验单元配置为将该至少一个采样周期的测试结果数据与参考结果进行比对以对所述芯片进行验证的同时在所述硬件加速器上对芯片进行后续阶段测试。
[0080]
例如,上述测试单元610、采样单元620、导出单元630以及同步校验单元等各单元可以为硬件、软件、固件以及它们的任意可行的组合。例如,上述各个单元可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
[0081]
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1