发明内容
本申请实施例提供了一种芯片测试方法、装置、电子设备及计算机可读存储介质,用于解决芯片开发效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种芯片测试方法,该方法包括:
确定待测芯片的原始仿真数据以及待测芯片的目标测试模块;
确定原始仿真数据中,与目标测试模块对应的目标仿真数据;
根据目标仿真数据,对目标测试模块进行测试。
可选地,上述确定待测芯片的原始仿真数据以及待测芯片的目标测试模块,包括:
基于预设仿真器对待测芯片进行仿真,生成原始仿真数据;
以及接收指示信息,根据指示信息确定待测芯片的目标测试模块。
可选地,上述确定原始仿真数据中,与目标测试模块对应的目标仿真数据,包括:
基于原始仿真数据的标签对原始仿真数据进行查询,确定与目标测试模块对应的目标仿真数据。
可选地,上述根据目标仿真数据,对目标测试模块进行测试,包括:
对目标仿真数据进行性能分析处理,得到性能数据;性能数据表征目标仿真数据的统计特征;
基于性能数据确定目标测试模块的测试结果。
可选地,上述对目标仿真数据进行性能分析,得到性能数据,包括:
确定目标仿真数据的数据类型;
基于数据类型对目标仿真数据进行性能分析,得到性能数据。
可选地,上述确定目标仿真数据的数据类型,包括:
判断目标仿真数据是否存在对应的目标对比数据;
当目标仿真数据不存在对应的目标对比数据,则确定目标仿真数据的数据类型为第一数据类型;
当目标仿真数据存在对应的目标对比数据,则确定目标仿真数据的数据类型为第二数据类型。
可选地,上述基于数据类型对目标仿真数据进行性能分析,得到性能数据,包括:
当数据类型为第一数据类型,对目标仿真数据的数值进行聚类统计,生成性能数据;
当数据类型为第二数据类型,将目标仿真数据与目标对比数据进行对比,得到目标仿真数据的判别信息,对判别信息进行聚类统计,生成性能数据。
可选地,上述基于性能数据确定目标测试模块的测试结果,包括:
获取与目标仿真数据对应的目标阈值;
基于目标阈值与性能数据确定测试结果。
根据本申请实施例的另一个方面,还提供了一种芯片测试装置,该装置包括:
第一确定模块,用于确定待测芯片的原始仿真数据以及待测芯片的目标测试模块;
第二确定模块,用于确定原始仿真数据中,与目标测试模块对应的目标仿真数据;
测试模块,用于根据目标仿真数据,对目标测试模块进行测试。
可选地,上述第一确定模块,用于:
基于预设仿真器对待测芯片进行仿真,生成原始仿真数据;
以及接收指示信息,根据指示信息确定待测芯片的目标测试模块。
可选地,上述第二确定模块,用于:
基于原始仿真数据的标签对原始仿真数据进行查询,确定与目标测试模块对应的目标仿真数据。
可选地,上述测试模块,包括:
分析单元,用于对目标仿真数据进行性能分析处理,得到性能数据;性能数据表征目标仿真数据的统计特征;
确定单元,用于基于性能数据确定目标测试模块的测试结果。
在另一个可能的实现方式中,上述分析单元,包括:
确定子单元,用于确定目标仿真数据的数据类型;
分析子单元,用于基于数据类型对目标仿真数据进行性能分析,得到性能数据。
可选地,上述确定子单元,用于:
判断目标仿真数据是否存在对应的目标对比数据;
当目标仿真数据不存在对应的目标对比数据,则确定目标仿真数据的数据类型为第一数据类型;
当目标仿真数据存在对应的目标对比数据,则确定目标仿真数据的数据类型为第二数据类型。
可选地,上述分析子单元,用于:
当数据类型为第一数据类型,对目标仿真数据的数值进行聚类统计,生成性能数据;
当数据类型为第二数据类型,将目标仿真数据与目标对比数据进行对比,得到目标仿真数据的判别信息,对判别信息进行聚类统计,生成性能数据。
可选地,上述确定单元,用于:
获取与目标仿真数据对应的目标阈值;
基于目标阈值与性能数据确定测试结果。
根据本申请实施例的另一个方面,提供了一种电子设备,该电子设备包括:
存储器、处理器及存储在存储器上的计算机程序,上述处理器执行计算机程序以实现本申请实施例第一方面所示方法的步骤。
根据本申请实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本申请实施例第一方面所示方法的步骤。
根据本申请实施例的一个方面,提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现本申请实施例第一方面所示方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例基于待测芯片的仿真数据进行芯片测试,相比于现有技术中基于硬件设计语言对芯片的逻辑功能和测试单元同时进行开发和设计的技术方案,本申请通过对仿真数据进行后处理的方式进行测试,提升了数据分析的灵活性和全面性,提高了芯片测试结果的可信度;同时,本申请实施例提供的测试方案独立于芯片的逻辑功能开发,保证了芯片从设计到发布的一致性,相比于现有技术中在芯片编译和发布阶段需要将测试单元的代码与芯片的逻辑功能代码进行分离操作,本申请的测试方法不会造成芯片设计代码的冗余,降低了芯片开发难度和出错率,有效提升了芯片的开发效率。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”指示实现为“A”,或者实现为“A”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
SoC(System-on-a-Chip)称为***级芯片,也称片上***,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整***并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定***功能开始,到软/硬件划分,并完成设计的整个过程。从狭义角度讲,它是信息***核心的芯片集成,是将***关键部件集成在一块芯片上;从广义角度讲,SoC是一个微小型***,如果说CPU(central processing unit,中央处理器)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的***。国内外学术界一般倾向将SoC定义为将微处理器、模拟IP(Interrupt Priority,中断优先寄存器)核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品。
随着设计与制造技术的发展,集成电路设计从晶体管的集成发展到逻辑门的集成,现在又发展到IP的集成,即SoC设计技术。SoC可以有效地降低电子/信息***产品的开发成本,缩短开发周期,提高产品的竞争力,是未来工业界将采用的最主要的产品开发方式。
在数位电路设计中,RTL(register-transfer level,寄存器传输级)是一种对同步数位电路的抽象模型,这种模型是根据数字信号在硬件寄存器、存储器、组合逻辑装置和总线等逻辑单元之间的流动,以及其逻辑代数运作方式来确定的。一般情况下,采用硬件描述语言来设计数字集成电路,例如在设计SoC芯片时,设计人员通常并不在晶体管级进行设计,而是在更高的抽象级别(层次)进行工程设计。在硬件描述语言中,设计人员只需要声明寄存器(就像在计算机编程语言中声明变量一样),然后使用类似计算机编程中的条件(if...then...else)、选择(case)等运算符来描述组合逻辑的功能。通常将上述这样级别的设计称为寄存器传输级的设计。
随着大数据处理,云计算,深度学习等应用场景的出现,对SoC芯片的开发和设计提出了更高更多样化的要求。现有技术中,技术人员通常基于RTL级模型采用硬件设计语言对SoC芯片的逻辑功能和测试单元同时进行开发和设计,其中测试单元的代码与SoC芯片的逻辑功能代码糅合在一起,申请人发现,上述方式会存在如下问题:
1、测试单元通常只在测试阶段使用,在SoC芯片编译和发布阶段往往需要将测试单元的代码去除,造成了SoC芯片设计代码的冗余,降低了SoC芯片开发效率。
2、从SoC芯片设计到发布的各阶段,SoC芯片的RTL设计代码无法保持一致性,RTL设计无法专注于SoC芯片自身的逻辑功能,造成SoC芯片开发的出错率较高。
3、基于RTL设计的测试单元只能对SoC芯片的当前仿真数据进行验证,当需要对测试单元新增临时功能时,需要基于更新后的测试单元重新仿真来进行最新仿真数据的提取与分析,该测试方案的适配性不高,开发成本较大。
本申请提供的芯片测试方法、装置、电子设备及计算机可读存储介质,旨在解决现有技术的如上技术问题。
本申请实施例提供了一种芯片测试方法,该方法可以由终端或服务器实现。本申请实施例涉及的终端或服务器能够独立于SoC芯片的逻辑功能开发工作,并通过对采集得到的仿真数据进行后处理的方式进行SoC芯片测试,使得本申请实施例的技术方案能够达到有效提升SoC芯片开发效率、提高测试的灵活性和全面性的效果。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
如图1所示,本申请的芯片测试方法,可以应用于图1所示的场景中,具体的,仿真***101对待测芯片进行仿真得到原始仿真数据,测试人员基于用户终端102指示针对待测芯片的目标测试模块,服务器103获取该原始仿真数据和目标测试模块之后,通过确定原始仿真数据中与目标测试模块对应的目标仿真数据,进而基于目标仿真数据进行针对目标测试模块的测试,输出测试结果。
图1所示的场景中,上述芯片测试方法可以在服务器中进行,在其他的场景中,也可以在终端中进行。
本技术领域技术人员可以理解,这里所使用的“终端”可以是手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、MID(Mobile Internet Device,移动互联网设备)等;“服务器”可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
本申请实施例中提供了一种芯片测试方法,如图2所示,该方法包括以下步骤:
S201,确定待测芯片的原始仿真数据以及待测芯片的目标测试模块。
其中,待测芯片可以是SoC芯片,SoC芯片可以包括多个IP内核模块,IP内核模块是一种预先设计好的甚至已经过验证的具有某种确定功能的集成电路、器件或部件。
通常,IP内核模块可以为CPU、DSP(Digital Signal Process数字信号处理器)、DRAM(Dynamic Random Access Memory,动态随机存取存储器)、SRAM(Static Random-Access Memory,静态随机存取存储器)、PCI总线(Peripheral Component Interconnect,外设组件互连标准)、标准接口、网络单元、编译器、编码/解码器和模拟器件模块等。可以将上述IP内核模块作为待测芯片的测试模块。
具体的,用于进行芯片测试的终端或服务器可以基于用户的指令从待测芯片的多个测试模块中确定目标测试模块。
在一些实施方式中,用于进行芯片测试的终端或服务器可以从预设数据库中获取已经存储好的待测芯片的原始仿真数据。
在另一些实施方式中,用于进行芯片测试的终端或服务器可以直接从仿真器中采集待测芯片的原始仿真数据,具体采集的过程将在下文详细介绍。
S202,确定原始仿真数据中,与目标测试模块对应的目标仿真数据。
其中,目标仿真数据是对目标测试模块的逻辑功能进行仿真得到的。例如在实际应用中,当目标测试模块为CPU时,其对应的目标仿真数据可以是分支预测结果、业务响应时间等;当目标测试模块为总线时,其对应的目标仿真数据可以是吞吐量、通道利用情况等。
在一些实施方式中,可以预先建立原始仿真数据与各测试模块的对应关系,然后基于该对应关系,确定与目标测试模块对应的目标仿真数据。
在另一些实施方式中,可以基于原始仿真数据的标签信息确定与目标测试模块对应的目标仿真数据,具体的确定过程将在下文详细介绍。
S203,根据目标仿真数据,对目标测试模块进行测试。
其中,目标仿真数据可以有一种,也可以有多种。每个目标测试模块对应至少一种目标仿真数据。
具体的,当目标仿真数据有一种时,可以基于该目标仿真数据对目标测试模块进行测试,得到测试结果;当目标仿真数据有多种时,可以分别基于各目标仿真数据对其对应的目标测试模块进行测试,然后根据各目标仿真数据对应的测试数据得到针对该目标测试模块的测试结果。
本申请实施例基于待测芯片的仿真数据进行芯片测试,相比于现有技术中基于硬件设计语言对芯片的逻辑功能和测试单元同时进行开发和设计的技术方案,本申请通过对仿真数据进行后处理的方式进行测试,提升了数据分析的灵活性和全面性,提高了芯片测试结果的可信度;同时,本申请实施例提供的测试方案独立于芯片的逻辑功能开发,保证了芯片从设计到发布的一致性,相比于现有技术中在芯片编译和发布阶段需要将测试单元的代码与芯片的逻辑功能代码进行分离操作,本申请的测试方法不会造成芯片设计代码的冗余,降低了芯片开发难度和出错率,有效提升了芯片的开发效率。
本申请实施例中提供了一种可能的实现方式,上述步骤S201中确定待测芯片的原始仿真数据以及待测芯片的目标测试模块,包括:
(1)基于预设仿真器对待测芯片进行仿真,生成原始仿真数据。
具体的,可以基于仿真器对待测芯片的逻辑功能进行仿真。
其中,待测芯片是基于硬件描述语言开发的;VHDL(Very High-Speed IntegratedCircuit hardware Description Language,超高速集成电路硬件描述语言)和VerilogHDL(一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字***建模)是当前最流行的两种硬件描述语言。
在本申请实施例中,以该硬件描述语言是Verilog为例,其对应的预设仿真器可以是VCS(Verilog Compiled simulator,编译型Verilog模拟器),VCS结合了节拍式算法和事件驱动算法,具有高性能、大规模和高精度的特点,适用于从行为级、RTL到Sign-Off(签发)等各个阶段。
其中,VCS可提供业内领先的性能和容量,同时支持一整套先进的调试、缺陷查找、覆盖率、验证规划和断言技术。其调试技术可以理解验证方法学,并提供了对随机约束的调试。VCS的多核技术可在多台多核机器上并行运行设计、测试平台、断言和调试功能,将验证速度提高2倍,缩短验证时间。VCS的分区编译(Partition Compile)流程仅重新编译被修改的代码,缩短用户的迭代编译周期多达10倍。VCS还可以提供一整套全面诊断工具,包括仿真内存消耗和仿真时间解析、交互式约束调试、智能记录等,帮助用户快速分析问题。VCS可以支持原生的低功耗仿真和UPF(Unified Power Format,统一电源格式)格式,在既有的完整的调试手段和高性能仿真的基础之上,可提供创新的电压感知验证技术,定位现代低功耗设计中的缺陷。VCS具有内置调试和可视化环境,支持所有流行设计和验证语言,包括Verilog、VHDL、SystemVerilog(一种建立在Verilog语言的基础上硬件设计和验证的语言)以及VMM(virtual Machine monitor,虚拟机监视程序)和UVM(Universal VerificationMethodology,通用验证方法学)等方法学,可帮助用户交付优质的设计。
具体的,可以基于VCS仿真器对待测芯片的源码即Verilog HDL源码进行编译、链接生成可执行文件,通过上述可执行文件,即可得到仿真波形。VCS可以结合Verdi(一种用于调试数字电路设计的高级解决方案)自动调试平台实现波形的可视化。此外,VCS还可以通过UCLI接口获取原始仿真数据。
(2)接收指示信息,根据指示信息确定待测芯片的目标测试模块。
其中,指示信息可以是用户基于鼠标、键盘、触屏等用于进行芯片测试的终端或服务器的外设输入的,用于指示用户指定的目标测试模块。
具体的,可以在用于进行芯片测试的终端或服务器的交互界面上显示待测芯片和测试模块的图标或文字标识对应的界面元素组件,然后基于用户的触发操作生成指示信息,以便从各测试模块中确定目标测试模块;其中用户的触发操作可以包括以下至少一项:
将界面元素组件拖拽或移动至当前界面的预设范围内的操作;
针对界面元素组件的点击操作;
在预设的输入控件中针对界面元素组件的标识的输入操作。
在一些实施方式中,可以在预设交互界面中以列表组件的形式呈现待测芯片及其包括的各测试模块的图标,用户可以对该列表组件进行点选操作,从各测试模块中选定目标测试模块。
本申请实施例,通过仿真器对待测芯片的逻辑功能进行仿真,生成原始仿真数据,然后基于用户的指示信息确定目标测试模块,以便对原始仿真数据进行后处理操作,相比于现有技术中,采用基于RTL的硬件设计语言对当前仿真数据进行测试的方案,本申请中通过仿真数据后处理分析的方式进行测试,可以使得芯片测试更加灵活、全面,测试结果的可信度更高。
本申请实施例中提供了一种可能的实现方式,上述步骤S202中确定原始仿真数据中,与目标测试模块对应的目标仿真数据,包括:
基于原始仿真数据的标签对原始仿真数据进行查询,确定与目标测试模块对应的目标仿真数据。
其中,原始仿真数据的标签可以表征该数据所对应的测试模块。
具体的,用于进行芯片测试的终端或服务器可以在预设交互界面中以界面元素组件的形式显示原始仿真数据和其对应标签的图标或文字标识,然后基于用户针对上述界面元素组件的输入操作,在各原始仿真数据进行查询,确定目标仿真数据。
在一些实施方式中,可以在预设交互界面中以列表组件的形式呈现原始仿真数据及其对应的测试模块的名称标识,用户可以对该列表组件进行点选操作,从原始仿真数据中选定与目标测试模块对应的目标仿真数据。
本申请实施例中提供了另一种可能的实现方式,上述步骤S203中根据目标仿真数据,对目标测试模块进行测试,包括:
(1)对目标仿真数据进行性能分析处理,得到性能数据;性能数据表征目标仿真数据的统计特征。
在一些实施方式中,用于进行芯片测试的终端或服务器可以直接对目标仿真数据进行聚类处理,分析得到对应目标测试模块的性能数据。
在另一实施方式,用于进行芯片测试的终端或服务器可以先确定目标仿真数据的数据类型,然后基于数据类型对目标仿真数据进行分析处理,确认得到对应目标测试模块的性能数据;具体的步骤将在下文进行详细说明。
本申请实施例中提供了另一种可能的实现方式,如图3所示,上述对目标仿真数据进行性能分析,得到性能数据,包括:
a、确定目标仿真数据的数据类型。
本申请实施例中,先对目标仿真数据进行分类,确认其数据类型,以便后续的数据分析与统计工作,可以使得性能数据具有多维度的数据特征。
本申请实施例中提供了又一种可能的实现方式,如图4所示,上述确定目标仿真数据的数据类型,包括:
a1、判断目标仿真数据是否存在对应的目标对比数据。
具体的,可以基于目标仿真数据的标签从预设数据库查询,判断是否存在对应的目标对比数据。其中,目标仿真数据的标签可以表征仿真类型。
在本申请实施例中,以目标测试模块为CPU为例,可以预先构建目标仿真数据的标签与对应的对比数据的数据库;当目标仿真数据为分支预测数据时,其对应的标签为“分支预测指令”,可以基于“分支预测指令”在预设的数据库中进行查询,得到对应的目标对比数据为分支预测结果;当目标仿真数据为响应时间10ms时,其对应的标签为“响应时间”,可以基于“响应时间”从预设的数据库查询,并不存在对应的目标对比数据。
a2、当目标仿真数据不存在对应的目标对比数据,则确定目标仿真数据的数据类型为第一数据类型。
在本申请实施例中,以目标测试模块为CPU为例,当目标仿真数据为响应时间10ms时,其对应的标签为“响应时间”,可以基于“响应时间”从预设的数据库查询,并不存在对应的目标对比数据,则可以确定该目标仿真数据为第一数据类型。
a3、当目标仿真数据存在对应的目标对比数据,则确定目标仿真数据的数据类型为第二数据类型。
在本申请实施例中,以目标测试模块为CPU为例,当目标仿真数据为分支预测数据时,其对应的标签为“分支预测指令”,可以基于“分支预测指令”从预设的数据库查询,得到对应的目标对比数据为分支预测结果,则确定该目标仿真数据的类型为第二数据类型。
其中,分支预测(Branch Prediction)是解决处理分支指令(if-then-else)导致流水线失败的数据处理方法,由CPU来判断程序分支的进行方向,能够加快运算速度。分支指令通常有两路后续执行分支,当对应的分支预测数据为“not taken”时,跳过接下来的JMP(计算机汇编语言中的一种跳转指令,指令必须指定转移的目标地址)指令,继续执行;当对应的分支预测数据为“taken”时,执行JMP指令,跳转到另一块程序内存去执行。
b、基于数据类型对目标仿真数据进行性能分析,得到性能数据。
具体的,在本申请实施例中,以目标测试模块为CPU为例,当目标仿真数据为分支预测数据时,其对应的标签为“分支预测指令”,可以基于“分支预测指令”从预设的数据库查询,得到对应的目标对比数据为分支预测结果,则确定该目标仿真数据的类型为第二数据类型。当该分支预测指令对应的目标对比数据可以为“taken”时,如果该目标仿真数据为“taken”,则表示CPU分支预测成功,得到的对比结果为“预测成功”;如果该目标仿真数据为“nottaken”,则表示CPU分支预测失败,得到对应的对比结果为“预测失败”。可以基于上述对比结果得到对应CPU的性能数据如分支预测失败率或分支预测成功率。
在另一个实施方式中,以目标测试模块为CPU为例,当目标仿真数据为响应时间10ms时,其对应的标签为“响应时间”,可以基于“响应时间”从预设的数据库查询,并不存在对应的目标对比数据,则可以确定该目标仿真数据为第一数据类型。此时,可以基于上述响应时间确定性能数据如平均响应时间。
本申请实施例中提供了又一种可能的实现方式,如图5所示,上述基于数据类型对目标仿真数据进行性能分析,得到性能数据,包括:
b1、当数据类型为第一数据类型,对目标仿真数据的数值进行聚类统计,生成性能数据。
具体的,在一个实施方式中,以目标测试模块为CPU为例,当目标仿真数据包括响应时间10ms、8ms和12ms时,其对应的标签为“响应时间”,可以基于“响应时间”从预设的数据库查询,并不存在对应的目标对比数据,则可以确定该目标仿真数据为第一数据类型。当性能数据为平均响应时间时,可以基于同类型目标仿真数据的响应时间,计算平均值,即计算上述10ms、8ms、12ms的平均值为10ms,则得到性能数据为平均响应时间10ms。
b2、当数据类型为第二数据类型,将目标仿真数据与目标对比数据进行对比,得到目标仿真数据的判别信息,对判别信息进行聚类统计,生成性能数据。
具体的,在一个实施方式中,以目标测试模块为CPU为例,当目标仿真数据为分支预测数据时,其对应的标签为“分支预测指令”,可以基于“分支预测指令”从预设的数据库查询,得到对应的目标对比数据为分支预测结果,则确定该目标仿真数据的类型为第二数据类型。当该分支预测指令对应的目标对比数据可以为“taken”时,如果该目标仿真数据为“taken”,则表示CPU分支预测成功,得到的对比结果为“预测成功”;如果该目标仿真数据为“nottaken”,则表示CPU分支预测失败,得到对应的对比结果为“预测失败”。当性能数据为分支预测失败率,则可以基于各目标仿真数据确定所对应的对比结果为4次“预测成功”、1次“预测失败”,进而可以得到性能数据为分支预测失败率20%。
(2)基于性能数据确定目标测试模块的测试结果。
本申请实施例中提供了又一种可能的实现方式,上述基于性能数据确定目标测试模块的测试结果,包括:
a、获取与目标仿真数据对应的目标阈值;
b、基于目标阈值与性能数据确定测试结果。
具体的,用于进行芯片预测的终端或服务器可以基于预设数据库查询目标仿真数据对应的目标阈值,还可以基于仿真数据与阈值的对应关系确定目标仿真数据对应的目标阈值。
在一个实施方式中,以目标测试模块为CPU为例,当目标仿真数据包括响应时间10ms、8ms和12ms时,其对应的标签为“响应时间”,可以基于“响应时间”从预设的数据库查询,并不存在对应的目标对比数据,则可以确定该目标仿真数据为第一数据类型。当性能数据为平均响应时间时,可以基于同类型目标仿真数据的响应时间,计算平均值,即计算上述10ms、8ms、12ms的平均值为10ms,则得到性能数据为平均响应时间10ms。当确定该性能数据对应的目标阈值为15ms,此时平均响应时间10ms小于15ms,则可以得到测试结果为CPU平均响应时间正常。
在另一个实施方式中,以目标测试模块为CPU为例,当目标仿真数据为分支预测数据时,其对应的标签为“分支预测指令”,可以基于“分支预测指令”从预设的数据库查询,得到对应的目标对比数据为分支预测结果,则确定该目标仿真数据的类型为第二数据类型。当该分支预测指令对应的目标对比数据可以为“taken”时,如果该目标仿真数据为“taken”,则表示CPU分支预测成功,得到的对比结果为“预测成功”;如果该目标仿真数据为“nottaken”,则表示CPU分支预测失败,得到对应的对比结果为“预测失败”。当性能数据为分支预测失败率,则可以基于各目标仿真数据确定所对应的对比结果为4次“预测成功”、1次“预测失败”,进而可以得到性能数据为分支预测失败率20%。当确定该性能数据对应的目标阈值为10%,此时分支预测失败率为20%,且大于目标阈值,则可以得到预测结果为CPU分支预测失败率异常。
为了更好的理解上述芯片测试方法,下面结合图6和图7详细阐述一个本申请的芯片测试方法的示例:
如图6所示,为芯片测试***的架构图示意图,该芯片测试***可以包括仿真模块601和数据处理模块602,具体的,仿真模块601可以先获取待测芯片的逻辑功能代码,然后对上述逻辑功能代码进行仿真,进而生成原始仿真数据并将该原始仿真数据输入到数据处理模块602进行处理。本申请的芯片测试方法包括如下步骤:
S701,仿真模块601基于预设仿真器对待测芯片进行仿真,生成原始仿真数据。
具体的,可以基于仿真器对待测芯片的逻辑功能进行仿真。仿真模块601首先基于VCS仿真器对待测芯片的源码即Verilog HDL源码进行编译、链接生成可执行文件,通过上述可执行文件,即可得到仿真波形。可以在VCS的基础上结合Verdi自动调试平台以实现波形的可视化,并且可以通过UCLI接口获取原始仿真数据。
S702,数据处理模块602接收指示信息,根据指示信息确定待测芯片的目标测试模块。
其中,指示信息可以是用户基于鼠标、键盘、触屏等芯片测试***的外设输入的,用于指示用户指定的目标测试模块。
S703,数据处理模块602基于原始仿真数据的标签对原始仿真数据进行查询,确定与目标测试模块对应的目标仿真数据。
其中,原始仿真数据的标签可以表征该数据所对应的测试模块。
具体的,数据处理模块602可以在预设交互界面中以界面元素组件的形式显示原始仿真数据和其对应标签的图标或文字标识对应的界面元素组件,然后基于用户针对上述界面元素组件的输入操作,对原始仿真数据进行查询,确定目标仿真数据。
S704,数据处理模块602确定目标仿真数据的数据类型;数据类型包括第一数据类型和第二数据类型。
本申请实施例中,数据处理模块602先对目标仿真数据进行分类,确认其数据类型,以便后续的数据分析与统计工作,可以使得性能数据具有多维度的数据特征。
S705,当数据类型为第一数据类型,对目标仿真数据的数值进行聚类统计,生成性能数据;其中,性能数据表征目标仿真数据的统计特征。
具体的,在一个实施方式中,以目标测试模块为CPU为例,当目标仿真数据包括响应时间10ms、8ms和12ms时,其对应的标签为“响应时间”,可以基于“响应时间”从预设的数据库查询,并不存在对应的目标对比数据,则可以确定该目标仿真数据为第一数据类型。当性能数据为平均响应时间时,可以基于同类型目标仿真数据的响应时间,计算平均值,即计算上述10ms、8ms、12ms的平均值为10ms,则得到性能数据为平均响应时间10ms。
S706,当数据类型为第二数据类型,将目标仿真数据与目标对比数据进行对比,得到目标仿真数据的判别信息,对判别信息进行聚类统计,生成性能数据。
具体的,在一个实施方式中,以目标测试模块为CPU为例,当目标仿真数据为分支预测数据时,其对应的标签为“分支预测指令”,可以基于“分支预测指令”从预设的数据库查询,得到对应的目标对比数据为分支预测结果,则确定该目标仿真数据的类型为第二数据类型。当该分支预测指令对应的目标对比数据可以为“taken”时,如果该目标仿真数据为“taken”,则表示CPU分支预测成功,得到的对比结果为“预测成功”;如果该目标仿真数据为“nottaken”,则表示CPU分支预测失败,得到对应的对比结果为“预测失败”。当性能数据为分支预测失败率,则可以基于各目标仿真数据确定所对应的对比结果为4次“预测成功”、1次“预测失败”,进而可以得到性能数据为分支预测失败率20%。
S707,数据处理模块602获取与目标仿真数据对应的目标阈值,并基于目标阈值与性能数据确定测试结果。
具体的,数据处理模块602可以基于预设数据库查询目标仿真数据对应的目标阈值,还可以基于仿真数据与阈值的对应关系确定目标仿真数据对应的目标阈值。
本申请实施例基于待测芯片的仿真数据进行芯片测试,相比于现有技术中基于硬件设计语言对芯片的逻辑功能和测试单元同时进行开发和设计的技术方案,本申请通过对仿真数据进行后处理的方式进行测试,提升了数据分析的灵活性和全面性,提高了芯片测试结果的可信度;同时,本申请实施例提供的测试方案独立于芯片的逻辑功能开发,保证了芯片从设计到发布的一致性,相比于现有技术中在芯片编译和发布阶段需要将测试单元的代码与芯片的逻辑功能代码进行分离操作,本申请的测试方法不会造成芯片设计代码的冗余,降低了芯片开发难度和出错率,有效提升了芯片的开发效率。
本申请实施例提供了一种芯片测试装置,如图8所示,该芯片测试装置80可以包括:第一确定模块801、第二确定模块802以及测试模块803;其中,第一确定模块801,用于确定待测芯片的原始仿真数据以及待测芯片的目标测试模块;
第二确定模块802,用于确定原始仿真数据中,与目标测试模块对应的目标仿真数据;
测试模块803,用于根据目标仿真数据,对目标测试模块进行测试。
本申请实施例基于待测芯片的仿真数据进行芯片测试,相比于现有技术中基于硬件设计语言对芯片的逻辑功能和测试单元同时进行开发和设计的技术方案,本申请通过对仿真数据进行后处理的方式进行测试,提升了数据分析的灵活性和全面性,提高了芯片测试结果的可信度;同时,本申请实施例提供的测试方案独立于芯片的逻辑功能开发,保证了芯片从设计到发布的一致性,相比于现有技术中在芯片编译和发布阶段需要将测试单元的代码与芯片的逻辑功能代码进行分离操作,本申请的测试方法不会造成芯片设计代码的冗余,降低了芯片开发难度和出错率,有效提升了芯片的开发效率。
本申请实施例中提供了一种可能的实现方式,上述第一确定模块801,用于:
基于预设仿真器对待测芯片进行仿真,生成原始仿真数据;
以及接收指示信息,根据指示信息确定待测芯片的目标测试模块。
本申请实施例中提供了一种可能的实现方式,上述第二确定模块802,用于:
基于原始仿真数据的标签对原始仿真数据进行查询,确定与目标测试模块对应的目标仿真数据。
本申请实施例中提供了一种可能的实现方式,上述测试模块803,包括:
分析单元,用于对目标仿真数据进行性能分析处理,得到性能数据;性能数据表征目标仿真数据的统计特征;
确定单元,用于基于性能数据确定目标测试模块的测试结果。
本申请实施例中提供了一种可能的实现方式,上述分析单元,包括:
确定子单元,用于确定目标仿真数据的数据类型;
分析子单元,用于基于数据类型对目标仿真数据进行性能分析,得到性能数据。
本申请实施例中提供了一种可能的实现方式,上述确定子单元,用于:
判断目标仿真数据是否存在对应的目标对比数据;
当目标仿真数据不存在对应的目标对比数据,则确定目标仿真数据的数据类型为第一数据类型;
当目标仿真数据存在对应的目标对比数据,则确定目标仿真数据的数据类型为第二数据类型。
本申请实施例中提供了一种可能的实现方式,上述分析子单元,用于:
当数据类型为第一数据类型,对目标仿真数据的数值进行聚类统计,生成性能数据;
当数据类型为第二数据类型,将目标仿真数据与目标对比数据进行对比,得到目标仿真数据的判别信息,对判别信息进行聚类统计,生成性能数据。
本申请实施例中提供了一种可能的实现方式,上述确定单元,用于:
获取与目标仿真数据对应的目标阈值;
基于目标阈值与性能数据确定测试结果。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现芯片测试方法的步骤,与现有技术相比可实现:本申请实施例基于待测芯片的仿真数据进行芯片测试,相比于现有技术中基于硬件设计语言对芯片的逻辑功能和测试单元同时进行开发和设计的技术方案,本申请通过对仿真数据进行后处理的方式进行测试,提升了数据分析的灵活性和全面性,提高了芯片测试结果的可信度;同时,本申请实施例提供的测试方案独立于芯片的逻辑功能开发,保证了芯片从设计到发布的一致性,相比于现有技术中在芯片编译和发布阶段需要将测试单元的代码与芯片的逻辑功能代码进行分离操作,本申请的测试方法不会造成芯片设计代码的冗余,降低了芯片开发难度和出错率,有效提升了芯片的开发效率。
在一个可选实施例中提供了一种电子设备,如图9所示,图9所示的电子设备90包括:处理器901和存储器903。其中,处理器901和存储器903相连,如通过总线902相连。可选地,电子设备90还可以包括收发器904,收发器904可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器904不限于一个,该电子设备90的结构并不构成对本申请实施例的限定。
处理器901可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器901也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线902可包括一通路,在上述组件之间传送信息。总线902可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线902可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器903可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器903用于存储执行本申请实施例的计算机程序,并由处理器901来控制执行。处理器901用于执行存储器903中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包括但不限于:诸如移动电话、笔记本电脑、PAD等等移动终端以及诸如数字TV、台式计算机等等固定终端。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行时实现如下情况:
确定待测芯片的原始仿真数据以及待测芯片的目标测试模块;
确定原始仿真数据中,与目标测试模块对应的目标仿真数据;
根据目标仿真数据,对目标测试模块进行测试。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。