CN117787155A - 一种芯片可测性代码动态仿真测试系统及测试方法 - Google Patents

一种芯片可测性代码动态仿真测试系统及测试方法 Download PDF

Info

Publication number
CN117787155A
CN117787155A CN202311846465.4A CN202311846465A CN117787155A CN 117787155 A CN117787155 A CN 117787155A CN 202311846465 A CN202311846465 A CN 202311846465A CN 117787155 A CN117787155 A CN 117787155A
Authority
CN
China
Prior art keywords
test
code
testability
chip
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311846465.4A
Other languages
English (en)
Inventor
洪志伟
朱鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hexin Technology Co ltd
Shanghai Hexin Digital Technology Co ltd
Original Assignee
Hexin Technology Co ltd
Shanghai Hexin Digital Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hexin Technology Co ltd, Shanghai Hexin Digital Technology Co ltd filed Critical Hexin Technology Co ltd
Priority to CN202311846465.4A priority Critical patent/CN117787155A/zh
Publication of CN117787155A publication Critical patent/CN117787155A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明涉及集成电路仿真测试技术领域,公开了一种芯片可测性代码动态仿真测试系统及测试方法,系统包括:软件模块,用于获取预设格式的测试向量,通过动态链接库对测试向量进行解析获得测试数据,并按照预设测试周期将测试数据动态加载至仿真测试平台,其中,测试数据包括测试向量的时钟输入、测试输入数据和预期结果;仿真测试平台,部署有芯片可测性代码,用于按照当前测试周期内测试输入数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比,来对芯片可测性代码进行验证。本发明能够支持不同格式、不同类型的测试向量输入,实现对芯片可测性代码进行批量测试和自动处理测试结果,节省测试时间。

Description

一种芯片可测性代码动态仿真测试系统及测试方法
技术领域
本发明涉及集成电路仿真测试技术领域,具体涉及一种芯片可测性代码动态仿真测试系统及测试方法。
背景技术
测试向量是一组用于测试集成电路或芯片可测性代码的输入信号。在测试芯片可测性代码时,需要向其输入一系列的测试向量,以激励芯片可测性代码内部的逻辑电路,并观察输出响应来验证其功能和性能。这些测试向量描述了在不同时间点上输入信号的状态,以及对应的期望输出。STIL作为一种测试程序语言,可以描述这些测试向量的模式、序列以及相关的时序约束等信息。
现有技术对芯片可测性代码进行仿真验证时,工具会生成一套verilog格式的向量以及对应的可综合测试台(testbench),但是仿真测试速度比较慢,尤其在可测试性代码的代码量过大时会导致仿真测试运行时间过长,而时间太长会无法满足测试需求。
发明内容
有鉴于此,本发明提供了一种芯片可测性代码动态仿真测试系统及测试方法,以解决现有技术进行芯片可测性代码仿真测试时耗时过长的问题。
第一方面,本发明提供了一种芯片可测性代码动态仿真测试系统,系统包括:软件模块和仿真测试平台;
软件模块,用于获取预设格式的测试向量,通过动态链接库对测试向量进行解析获得测试数据,并按照预设测试周期将测试数据动态加载至仿真测试平台,其中,测试数据包括测试向量的时钟输入、测试输入数据和预期结果;
仿真测试平台,部署有芯片可测性代码,用于按照当前测试周期内测试输入数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比,来对芯片可测性代码进行验证。
本发明提供实施例提供的芯片可测性代码动态仿真测试系统,通过软件模块的动态链接库将预设格式的测试向量进行解析获得测试数据,并将测试数据按照预设测试周期动态加载至仿真测试平台,仿真测试平台按照当前测试周期的测试数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比来对芯片可测性代码进行验证。本发明通过对芯片可测性代码进行动态测试,能够支持不同格式、不同类型的测试向量输入,实现对芯片可测性代码进行批量测试和自动处理测试结果,节省测试时间。
在一种可选的实施方式中,软件模块,包括:文件加载单元,用于获取预设格式的测试向量;文件传输单元,用于通过动态链接库对测试向量进行解析获得测试数据,并按照预设测试周期将测试数据动态加载至仿真测试平台,或接收仿真测试平台的验证结果;结果记录单元,用于存储文件传输单元所接收的验证结果。
本发明通过软件模块对不同格式的测试向量进行解析,使得仿真测试平台能够根据不同格式的测试向量对可测试性代码进行测试,提高测试的灵活性。
在一种可选的实施方式中,仿真测试平台,包括:模拟仿真平台,用于对芯片可测性代码的功能进行验证;硬件仿真平台,用于对芯片可测性代码的功能或芯片可测性代码所对应的电路物理特性的正确性进行验证。
本发明适用于不同的仿真平台,能够针对测试需求对可测试性芯片代码进行不同的仿真测试,进一步提高测试的灵活性。
在一种可选的实施方式中,文件传输单元通过预先部署的DPI交互接口进行实时数据传输。
本发明通过DPI接口进行交互数据传输,能够提供高效的数据传输通道,不用动手将测试向量导入测试平台中,使得软件模块实时将测试向量动态传送至仿真测试平台,并及时获取仿真测试平台的测试结果,实现了高效自动化测试。此外,无需将数据文件一次性加载至内存中,节省内存。
第二方面,本发明提供了一种芯片可测性代码动态测试方法,方法包括:
软件模块获取预设格式的测试向量,通过动态链接库对测试向量进行解析获得测试数据,并按照预设测试周期将测试数据动态加载至仿真测试平台,其中,测试数据包括测试向量的时钟输入、测试输入数据和预期结果;
仿真测试平台按照当前测试周期内测试输入数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比,来对芯片可测性代码进行验证。
本发明提供实施例提供的芯片可测性代码动态测试方法,通过软件模块的动态链接库将预设格式的测试向量进行解析获得测试数据,并将测试数据按照预设测试周期动态加载至仿真测试平台,仿真测试平台按照当前测试周期的测试数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比来对芯片可测性代码进行验证。本发明通过对芯片可测性代码进行动态测试,能够支持不同格式、不同类型的测试向量输入,实现对芯片可测性代码进行批量测试和自动处理测试结果,节省测试时间。
在一种可选的实施方式中,通过动态链接库对测试向量进行解析获得测试数据的过程,包括:通过预设编程语言创建动态链接库;将预设格式的测试向量输入至动态链接库进行解析,获得测试数据,其中,预设格式包括WGL、STIL或VCD中的至少一种。
本发明通过构建预设编程语言的动态链接库,能够无需人工干预即可将不同格式、不同类型的测试向量统一转化为同一格式的测试数据,从而提高测试效率和测试覆盖率。
在一种可选的实施方式中,仿真测试平台按照当前测试周期内测试输入数据对芯片可测性代码进行测试的过程,包括:对测试数据进行解析,获取测试数据的时钟输入、测试输入数据和预期结果;将解析后的测试数据存储至仿真测试平台的预设内存中;按照预设测试周期对预设内存中的测试数据的周期进行识别,判断测试数据是否处于当前测试周期内;若处于当前测试周期内,则按照测试输入数据对芯片可测性代码进行测试;在测试过程中,根据数据动态加载过程中为不同测试周期的测试数据所对应的测试向量分配的编号,判断测试过程是否结束。
本发明通过在测试过程中识别周期,能够保证测试有序进行,实现对芯片可测性代码的动态测量,提高测试的自动化程度。此外,通过为测试向量分配编号,能够在进行动态加载、动态测量时,实时掌握测试进度。
在一种可选的实施方式中,将芯片可测性代码的输出结果与预期结果进行对比,来对芯片可测性代码进行验证的过程,包括:获取芯片可测性代码的输出结果;将输出结果与预期结果进行对比;根据对比结果验证芯片可测性代码的功能和或芯片可测性代码所对应的电路物理特性的正确性。
本发明通过实施捕捉芯片可测性代码的输出结果,能够判断芯片可测性代码在测试向量下所实现功能和可测性代码对应设计的芯片的电路物理特性的正确性,快速完成对集成的电路芯片可测性代码的故障检测,避免人工操作,提高生产效率。
在一种可选的实施方式中,在将芯片可测性代码的输出结果与预期结果进行对比,来对芯片可测性代码进行验证后,还包括:将输出结果、预期结果、对比结果和当前测试周期作为测试结果存储至硬件平台的预设内存中;根据测试结果生成分析报告。
本发明通过将测试结果进行存储,并生成分析报告,能够方便对芯片可测性代码进行进一步分析、验证或调试,从而提高芯片可测性代码功能和正确性的验证可靠性,并通过调试提高芯片可测性代码质量。
在一种可选的实施方式中,还包括:将测试结果通过DPI交互接口输出至软件模块;根据测试结果验证测试向量的正确性,若测试向量存在错误,则对测试向量进行调整。
本发明通过DPI接口能够实现数据双向交互,为仿真测试平台提供测试数据的同时,获取仿真测试平台的测试结果,因此根据测试结果能够判断出测试向量的正确性,通过对测试向量进行调整能够保证测试过程的正确性,提高测试结果的可靠性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的芯片可测性代码动态仿真测试系统的结构框图;
图2是根据本发明实施例的芯片可测性代码动态仿真测试系统的具体结构框图;
图3是根据本发明实施例的芯片可测性代码动态测试方法的流程示意图;
图4是根据本发明实施例的芯片可测性代码动态测试方法的硬件仿真流程示意图;
图5是根据本发明实施例的芯片可测性代码动态测试方法的结果自动处理示意图;
图6是根据本发明实施例的另一芯片可测性代码动态测试方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例适用于对集成的电路芯片可测性代码进行故障检测的场景,提供了一种芯片可测性代码动态仿真测试系统,通过对芯片可测性代码进行动态测试以达到验证芯片可测性代码功能和正确性的效果。需要说明的是,如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
在本实施例中提供了一种芯片可测性代码动态仿真测试系统,图1是根据本发明实施例的芯片可测性代码动态仿真测试系统的接口框图,如图1所示,该系统包括:软件模块101和仿真测试平台102;
软件模块101,用于获取预设格式的测试向量,通过动态链接库对测试向量进行解析获得测试数据,并按照预设测试周期将测试数据动态加载至仿真测试平台102,其中,测试数据包括测试向量的时钟输入、测试输入数据和预期结果;
仿真测试平台102,部署有芯片可测性代码,用于按照当前测试周期内测试输入数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比,来对芯片可测性代码进行验证。
具体地,在本发明实施例中,如图2所示,本发明实施例的软件模块101包括:文件加载单元1011,用于获取预设格式的测试向量,如批量STIL文件;文件传输单元1012,用于通过动态链接库对测试向量进行解析获得测试数据,并按照预设测试周期将测试数据动态加载至仿真测试平台102,或接收仿真测试平台102的验证结果;结果记录单元1013,用于存储文件传输单元所接收的验证结果。
在一些可选的实施方式中,本发明实施例的仿真测试平台包括硬件仿真平台Emulaiton和模拟仿真平台Simulation,其中硬件仿真平台用于对芯片可测性代码的功能或芯片可测性代码所对应的电路物理特性的正确性进行验证,模拟仿真平台用于对芯片可测性代码的功能进行验证。本发明实施例以硬件仿真平台(以下用Emulaiton替代)对芯片可测性代码进行验证为例,能够很大程度上验证出芯片可测性代码本身可能存在的问题。与传统的纯软件仿真相比,Emulaiton具有更高的速度(减少数倍的仿真时间)和更接近实际硬件行为的仿真效果,它可以更好地模拟设计在实际硬件环境中的运行情况,帮助发现潜在的问题和缺陷。而测试向量是一组用于测试集成电路或芯片的输入信号,包括时钟输入、测试输入数据和预期结果。本发明实施例支持对不同格式、不同类型的测试向量进行验证,包括WGL、STIL或VCD,仅作为举例,不以此为限。
在一些可选的实施方式中,本发明实施例的软件模块101的文件传输单元1012和硬件仿真平台通过DPI交互接口进行实时数据传输,其中,DPI交互接口提供高效的数据传输通道,使用DPI在testbench中加载测试数据的好处如下:(1)灵活性:使用DPI可以在C代码中编写解析STIL文件的函数,并控制将测试数据加载到testbench的内存中。这种灵活性使得用户可以自定义解析和加载的逻辑,适应各种不同的测试需求。(2)扩展性:使用DPI可以方便地与其他外部库和工具进行集成。可以利用C的丰富生态系统,利用库和工具来处理更复杂的操作,如数据处理、格式转换等。这样可以更容易地扩展testbench的功能和性能。(3)跨平台支持:DPI是一种标准化的接口,被广泛支持和采用。这意味着可以在不同的仿真工具和平台上使用相同的DPI代码,而无需修改或重新编写。这提供了更大的灵活性和可移植性,使得代码能够在不同的环境中无缝运行。(4)调试和跟踪:使用DPI加载测试数据的方法使得调试和跟踪变得更加方便。可以在C代码中使用调试器进行单步执行、观察变量值等操作。这样可以更容易地定位和解决问题,提高调试效率。(5)性能优化:通过使用C代码加载测试数据,利用编程语言的性能优化特性,如多线程、并行计算等,这有助于提高加载速度和处理大规模测试数据的能力,从而加快仿真的执行速度。
在一些可选的实施方式中,本发明实施例以STIL格式的测试向量为例,将批量STIL文件输入至C脚本文件构建的.so动态链接库进行解析,将解析得到的测试数据按照预设测试周期,在实际测试中一个STIL文件对应一个测试周期,通过DPI交互接口将STIL文件的测试向量按照时钟周期动态加载至硬件仿真平台Emulaiton的可综合testbench中,不同STIL文件依次自动输入至硬件仿真平台,仅作为举例,不以此为限。其中,可综合测试台(testbench)是一种用于验证数字电路设计的仿真环境,它可以生成可综合的硬件描述语言代码,以便在综合和实现阶段使用。相对于不可综合的测试台,可综合测试台的主要特点是能够产生可综合的性质、组合逻辑和时序行为,以便进行后续的综合和实现工作。在Emulaiton中,可综合测试台非常重要。使用可综合测试台可以确保测试用例在Emulaiton和实际芯片可测性代码之间的一致性。如果测试台不可综合,那么在Emulaiton过程中可能会出现一些问题,例如某些信号无法传递到,或者测试用例无法正确地模拟芯片可测性代码的行为。这些问题可能会导致验证结果不准确。本发明实施例可综合testbench根据测试向量的时钟输入来按照当前测试周期将测试输入数据输入至芯片可测性代码(即待测模块),芯片可测性代码则根据测试输入数据运行,并在运行结束后输出结果,可综合testbench将输出结果与预期结果进行对比,来对芯片可测性代码进行验证。
本发明提供实施例提供的芯片可测性代码动态仿真测试系统,通过软件模块的动态链接库将预设格式的测试向量进行解析获得测试数据,并将测试数据按照预设测试周期动态加载至仿真测试平台,仿真测试平台按照当前测试周期的测试数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比来对芯片可测性代码进行验证。本发明通过对芯片可测性代码进行动态测试,能够支持不同格式、不同类型的测试向量输入,实现对芯片可测性代码进行批量测试和自动处理测试结果,节省测试时间。
根据本发明实施例,提供了一种芯片可测性代码动态测试方法,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种芯片可测性代码动态测试方法,可用于芯片可测性代码仿真测试中,图3是根据本发明实施例的芯片可测性代码动态测试方法的流程图,如图3所示,该流程包括如下步骤:
步骤S301,软件模块获取预设格式的测试向量,通过动态链接库对测试向量进行解析获得测试数据,并按照预设测试周期将测试数据动态加载至仿真测试平台,其中,测试数据包括测试向量的时钟输入、测试输入数据和预期结果。
具体地,在本发明实施例中,预先通过预设编程语言创建动态链接库,例如采用最常用的C/C++语言创建动态链接库,即通过使用编译器(如GCC、Clang或Visual C++等)将C/C++源代码编译成动态链接库;或采用Rust系统级编程语言构建动态链接库,即通过Rust的编译器可以将Rust代码编译成动态链接库;或采用Go语言直接创建动态链接库,即通过Go的构建工具将Go代码编译成动态链接库,仅作为举例,不以此为限。
在一些可选的实施方式中,如图2所示,将批量STIL文件输入至C脚本文件构建的.so动态链接库进行解析,将解析得到的测试数据按照预设测试周期,通过DPI交互接口动态加载至硬件仿真平台Emulaiton的可综合testbench中。本发明实施例通过动态链接库完成数据的进出,可被多个程序共享和重用,能够较少代码的冗余性,提高代码的可维护性,如果动态链接库需要更新或修复bug,只需替换动态链接库文件即可,无需重新编译整个程序,动态链接库可以被多种编程语言调用,使得不同语言的程序可以共享同一套底层实现。
在一些可选的实施方式中,本发明实施例在按照预设测试周期将测试数据动态加载至硬件仿真平台时,还为不同测试周期的测试数据所对应的测试向量分配编号。
步骤S302,仿真测试平台按照当前测试周期内测试输入数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比,来对芯片可测性代码进行验证。
具体地,本发明实施例在启动硬件仿真平台后会进行初始化设置,包括加载所需依赖的配置环境。初始化完成后,硬件仿真平台准备好与软件模块进行交互。
在一些可选的实施方式中,本发明实施例的硬件仿真平台支持批量测试,即一次性测试多个测试向量。它会按顺序执行每个测试向量,并自动处理测试结果。通过批量测试,可以高效地验证芯片可测性代码的功能和正确性,提升测试的效率。在需要测试大量用例的场景下,这种方法可以帮助测试人员更好地管理测试任务,提高测试覆盖率和测试效率。
在一些可选的实施方式中,如图4所示的仿真测试流程,本发明实施例硬件仿真平台的可综合testbench在接收到软件测的测试数据后,对测试数据进行解析,获取测试数据的时钟输入、测试输入数据和预期结果,并将解析后的测试数据存储至硬件仿真平台的预设内存中。因为本发明实施例可支持一次性测试多个测试向量,因此需按照预设测试周期对预设内存中的测试数据的周期进行识别,判断测试数据是否处于当前测试周期内。若处于当前测试周期内,则按照测试输入数据对芯片可测性代码进行测试,并在测试过程中,根据数据动态加载过程中为不同测试周期的测试数据所对应的测试向量分配的编号,判断测试过程是否结束。若测试向量的编号为最后一个编号,则代表测试过程结束。若不处于当前测试周期内,则代表此STIL文件中测试向量全部发送完成,当前测试结束。
在一些可选的实施方式中,如图5所示,本发明实施例的芯片可测性代码根据测试输入数据运行,并在运行结束后输出结果,可综合testbench实时捕捉芯片可测性代码的输出数据,当获得输出结果后将输出结果与预期结果进行对比,来验证芯片可测性代码的功能和芯片可测性代码所对应的电路物理特性的正确性。其中,功能指的是数字电路所要实现的功能。在IC设计中,功能是设计的核心目标,需要通过合适的数据通路和控制逻辑来实现。例如,一个IC设计可以实现一个加法器或乘法器,以完成特定的数学运算。电路物理特性的正确性指的是数字电路在各种条件下的行为是否正确。在IC设计中,正确性是设计的基础之一,需要通过各种验证工具来确保设计的正确性。例如,通过Emulaiton或Simulaiton来验证IC设计的正确性,以确保其在实际应用中的运行稳定和可靠。
本发明提供实施例提供的芯片可测性代码动态测试方法,通过软件模块的动态链接库将预设格式的测试向量进行解析获得测试数据,并将测试数据按照预设测试周期动态加载至仿真测试平台,仿真测试平台按照当前测试周期的测试数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比来对芯片可测性代码进行验证。本发明通过对芯片可测性代码进行动态测试,能够支持不同格式、不同类型的测试向量输入,实现对芯片可测性代码进行批量测试和自动处理测试结果,节省测试时间。
在本实施例中提供了一种芯片可测性代码动态测试方法,可用于芯片可测性代码仿真测试中,图6是根据本发明实施例的芯片可测性代码动态测试方法的流程图,如图6所示,该流程包括如下步骤:
步骤S601,软件模块获取预设格式的测试向量,通过动态链接库对测试向量进行解析获得测试数据,并按照预设测试周期将测试数据动态加载至仿真测试平台,其中,测试数据包括测试向量的时钟输入、测试输入数据和预期结果。详细请参见图3所示实施例的步骤S301,在此不再赘述。
步骤S602,仿真测试平台按照当前测试周期内测试输入数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比,来对芯片可测性代码进行验证。详细请参见图3所示实施例的步骤S302,在此不再赘述。
步骤S603,将输出结果、预期结果、对比结果和当前测试周期作为测试结果存储至硬件平台的预设内存中;根据测试结果生成分析报告。
具体地,在本发明实施例中,硬件仿真平台的可综合testbench为每个测试周期内的输出结果、预期结果、对比结果和当前测试周期作为测试结果存储至硬件平台的预设内存中,并生成详细的分析报告,在报告中标记处测试向量是否通过测试,可在后续处理中用保存在内存中的数据进行进一步分析、验证和调试,提高芯片可测性代码的质量。本发明实施例通过自动处理测试结果能够还原每个测试向量的执行情况。
步骤S604,将测试结果通过DPI交互接口输出至软件模块;根据测试结果验证测试向量的正确性,若测试向量存在错误,则对测试向量进行调整。
具体地,在本发明实施例中,DPI交互接口能够实现双向通信,因此在硬件仿真平台获得测试结果后可通过DPI交互接口反馈至软件模块,从而根据测试结果验证测试向量的正确性,从而对测试向量进行调整。本发明实施例将测试结果以用户可读的测试报告进行展示,还包括错误信息和其他关键数据,同时将结果保存到文件中,便于查阅和分项。例如包括测试失败次数和测试成功次数,失败的具体测试向量所在整体测试向量中的位置,除此之外还可以体现测试向量的覆盖率,帮助设计人员和测试人员了解测试的完整性和质量,并确定需要增加哪些测试向量来提高覆盖率。
本发明提供实施例提供的芯片可测性代码动态测试方法,通过软件模块的动态链接库将预设格式的测试向量进行解析获得测试数据,并将测试数据按照预设测试周期动态加载至仿真测试平台,仿真测试平台按照当前测试周期的测试数据对芯片可测性代码进行测试,并将芯片可测性代码的输出结果与预期结果进行对比来对芯片可测性代码进行验证。本发明通过对芯片可测性代码进行动态测试,能够支持不同格式、不同类型的测试向量输入,实现对芯片可测性代码进行批量测试和自动处理测试结果,节省测试时间。
在本实施例中以中央处理器芯片所对应的可测试性代码为例,对上述芯片可测试性代码动态仿真测试系统及测试方法进行说明。
具体地,在本发明实施例中,中央处理器芯片所对应的可测试性代码的测试系统如图2所示,是一种动态的想来能够测试,其中,动态批量解析测试向量的处理方式非常重要的,该方法可以确保测试系统能够实时解析不同格式的测试向量,并且能够自动处理测试结果和批量测试。测试系统的具体处理过程如下所示:
1.软件模块解析测试向量:
a.输入的测试向量解析部分:通过C代码转换的.so动态链接库对不同格式的输入(如WGL、STIL、VCD等)进行解析,解析后的数据会被标记并按照测试周期保存,并非一次性导入数据,而是对测试文件进行动态加载。本发明实施例通过设计C脚本用于自动化测试,这意味着测试可以在没有人工干预的情况下进行,脚本可以自动打开测试文件、解析测试向量、执行测试和记录结果,能够大大提高测试效率和覆盖率量。
2.软件模块传输数据至仿真测试平台
a.输出DPI:解析后的数据通过DPI接口传输给仿真测试平台,作为仿真测试平台的输入数据。DPI提供高效的数据交互接口,能够实时的解测试向量,不用动手动将测试向量导入Emulation中,实现了更高的自动化测试。
3.仿真测试平台动态批量处理测试向量
a.输入DPI:仿真测试平台接收软件模块传输过来的数据,并将其按行写入仿真测试平台的内存中。输入数据包括每个测试向量的时钟输入、输入数据和预期结果数据信息。本发明实施例通过DPI方式使仿真测试平台和软件模块之间进行数据传递,因为不需要一次性将整个数据文件加载到内存中,因此能够节省内存。另外,DPI加载是只有在需要时才会加载数据,因此可以避免在启动时出现长时间的等待时间,缩短仿真测试时间。
b.分配保存输入信息的内存:仿真测试平台为每个测试向量保存相应的信息,包括时钟输入、输入数据以及预期输出数据,存储在内存中方便读取和访问。
c.输入的解析部分:仿真测试平台对软件模块传输过来的数据进行解析,解析过程涉及周期识别,确定当前所处测试的周期。此外,还会解析测试向量编号和判断当前测试向量是否结束。与在emulation中通过preload方式导入数据的方式相比,本发明实施例占用内存少,加载时间短。
4.仿真测试平台捕捉输出结果并比较预期值
a.输出解析部分:仿真测试平台捕捉待测模块内中央处理器芯片的可测试性代码经过测试后输出的数据,并与预期值进行比较。输出结果经过解析处理,包括测试周期、期望值、实际值以及比较结果,并保存在内存中供后续分析和展示使用。
b.保存输出结果的内存:仿真测试平台为每个仿真周期保存输出结果的相关信息,包括测试周期、期望值、实际值以及对比结果等。保存在内存中的数据可用于进一步分析、生成报告或进行验证和调试。
5.传输结果至软件模块
a.输出DPI:仿真测试平台通过DPI接口将输出结果传输给软件模块,以便进行后续处理和分析。例如对批量测试向量通过情况进行分析,获得测试通过率和失败率,失败的具体测试向量所在所有测试向量中的位置。除此之外还可体系向量的覆盖率,可以帮助设计人员和测试人员了解测试的完整性和质量,并确定需要增加哪些测试向量来提高覆盖率,仅作为举例,不以此为限。DPI接口提供高效的数据传输通道,使得软件侧能够及时获取仿真平台的输出结果。
本发明实施例的整个执行流程中,核心是实时解析测试向量、自动处理测试结果和批量测试。软件模块能够实时解析不同格式的测试向量,并按照测试周期将每个测试向量的相关信息进行解析和保存。同时,仿真测试平台根据解析的信息进行动态批量处理测试向量。通过周期识别和测试向量编号解析,能够准确判断当前测试的周期和测试向量是否结束。此外,仿真测试平台还能够捕捉输出结果并与预期值进行比较,将解析后的结果保存在内存中,以便后续的分析和展示。最终,输出结果通过DPI接口传输给软件模块,用于进一步处理和分析。整个执行流程保证了测试平台能够实时解析测试向量、自动处理测试结果和批量测试的能力。
具体地,在本发明实施例中,中央处理器芯片所对应的可测试性代码的测试流程如图4所示,下面是流程介绍:
1.启动仿真测试平台并初始化:启动emulation后,会进行初始化设置,包括加载所需依赖和配置环境。初始化完成后,仿真测试平台准备好与软件模块进行交互。
2.解析测试向量:软件模块提供测试向量列表,即图2所示的STIL文件,仿真测试平台会实时解析这些测试向量,解析过程包括提取时钟、输入信号和期望输出等信息,解析后的测试向量会被存储在缓存中,以便后续通过DPI送入可综合的仿真测试平台中。
3.执行测试向量:仿真测试平台按顺序执行解析出的测试向量,能够根据时钟信号的变化和初始状态,模拟输入数据,并将其传递给待测模块(DUT)执行。同时,仿真测试平台会监测DUT的输出,并记录下周期数、输出结果等关键信息。
4.自动处理测试结果:在捕获DUT的输出后,仿真测试平台会自动处理测试结果,即比较期望输出与实际输出的一致性,并生成测试报告。本发明实施例的自动处理的过程包括计算周期数、比对输出、收集错误信息等,可以减少人工处理的工作量,并提高测试的效率和准确性。
5.批量测试:仿真测试平台支持批量测试,即一次性测试多个测试向量。它会按顺序执行每个测试向量,并自动处理测试结果。通过批量测试,可以高效地验证DUT的功能和性能,提升测试的效率。
6.输出测试结果:仿真测试平台将处理后的测试结果通过DPI输出并解析给用户。内容包括测试报告、错误信息以及其他关键数据,测试报告以可读的格式呈现,便于用户分析和评估测试结果,同时,也可以将结果保存到文件中,便于查阅和分享。
在一些可选的实施方式中,本发明实施例软件模块动态处理测试向量文件,即将测试向量通过DPI输入到仿真测试平台中,并对输出值进行抓取比对,再通过DPI输出解析结果,生成用户可读性高的文件。
在一些可选的实施方式中,本发明实施例可对测试向量进行批量测试,即一次性测试多个测试向量,能够提高测试效率,尤其在需要测试大量用例的场景下,可以帮助测试人员更好地管理测试任务,提高测试覆盖率和测试效率。
在一些可选的实施方式中,本发明实施例自动处理测试结果,在测试过程中,通过自动化测试工具对测试向量的输入和输出进行比对,以判断测试结果是否正确,从而减少了人工干预的成本和错误率。自动处理测试结果可以还原每个测试向量的执行情况,并将执行结果与预期结果进行比对,从而生成详细的测试报告,并标记出测试向量是否通过了测试,可以大大提高测试的准确性和效率,特别是在测试大量用例的场景下。
在一些可选的实施方式中,本发明实施例通过DPI方式将测试向量加载到内存,进行动态处理向量,可适用于simulation、emulation等多个平台,无需人工干预,可自动进行。
在一些可选的实施方式中,本发明实施例通过动态链接库(.so)完成数据的进出,将功能模块编译为动态链接库后,可以被多个程序共享和重用,能够减少代码的冗余性,提高代码的可维护性,如果动态链接库需要更新或修复bug,只需替换动态链接库文件即可,无需重新编译整个程序,动态链接库可以被多种编程语言调用,使得不同语言的程序可以共享同一套底层实现。
在一些可选的实施方式中,本发明实施例对输入的测试向量文件格式没有要求,虽然介绍了STIL格式的测试向量,但通过脚本可以对也WGL、VCD进行解析,体现了本发明的测试灵活性。
在一些可选的实施方式中,本发明实施例可大大减少DTF测试向量在纯软件仿真平台运行时间长的问题,与传统纯软件仿真相比,Emulation具有更高的速度(减少数倍的仿真时间)和更接近实际硬件行为的仿真效果,它可以更好地模拟设计在实际硬件环境中的运行情况,帮助发现潜在的问题和缺陷。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种芯片可测性代码动态仿真测试系统,其特征在于,所述系统,包括:软件模块和仿真测试平台;
所述软件模块,用于获取预设格式的测试向量,通过动态链接库对所述测试向量进行解析获得测试数据,并按照预设测试周期将所述测试数据动态加载至所述仿真测试平台,其中,所述测试数据包括所述测试向量的时钟输入、测试输入数据和预期结果;
所述仿真测试平台,部署有芯片可测性代码,用于按照当前测试周期内所述测试输入数据对所述芯片可测性代码进行测试,并将所述芯片可测性代码的输出结果与所述预期结果进行对比,来对所述芯片可测性代码进行验证。
2.根据权利要求1所述的系统,其特征在于,所述软件模块,包括:
文件加载单元,用于获取预设格式的测试向量;
文件传输单元,用于通过动态链接库对所述测试向量进行解析获得测试数据,并按照预设测试周期将所述测试数据动态加载至所述仿真测试平台,或接收所述仿真测试平台的验证结果;
结果记录单元,用于存储所述文件传输单元所接收的所述验证结果。
3.根据权利要求1所述的系统,其特征在于,所述仿真测试平台,包括:
模拟仿真平台,用于对所述芯片可测性代码的功能进行验证;
硬件仿真平台,用于对所述芯片可测性代码的功能或所述芯片可测性代码所对应的电路物理特性的正确性进行验证。
4.根据权利要求2或3所述的系统,其特征在于,
所述文件传输单元通过预先部署的DPI交互接口进行实时数据传输。
5.一种芯片可测性代码动态测试方法,其特征在于,基于权利要求1-4任一所述的系统对芯片可测性代码进行测试,所述测试方法,包括:
软件模块获取预设格式的测试向量,通过动态链接库对所述测试向量进行解析获得测试数据,并按照预设测试周期将所述测试数据动态加载至仿真测试平台,其中,所述测试数据包括所述测试向量的时钟输入、测试输入数据和预期结果;
所述仿真测试平台按照当前测试周期内所述测试输入数据对芯片可测性代码进行测试,并将所述芯片可测性代码的输出结果与所述预期结果进行对比,来对所述芯片可测性代码进行验证。
6.根据权利要求5所述的方法,其特征在于,所述通过动态链接库对所述测试向量进行解析获得测试数据的过程,包括:
通过预设编程语言创建所述动态链接库;
将预设格式的所述测试向量输入至所述动态链接库进行解析,获得测试数据,其中,所述预设格式包括WGL、STIL或VCD中的至少一种。
7.根据权利要求5所述的方法,其特征在于,所述仿真测试平台按照当前测试周期内所述测试输入数据对芯片可测性代码进行测试的过程,包括:
对所述测试数据进行解析,获取所述测试数据的时钟输入、测试输入数据和预期结果;
将解析后的所述测试数据存储至所述仿真测试平台的预设内存中;
按照预设测试周期对所述预设内存中的所述测试数据的周期进行识别,判断所述测试数据是否处于当前测试周期内;
若处于所述当前测试周期内,则按照所述测试输入数据对所述芯片可测性代码进行测试;
在测试过程中,根据数据动态加载过程中为不同测试周期的所述测试数据所对应的测试向量分配的编号,判断所述测试过程是否结束。
8.根据权利要求5所述的方法,其特征在于,所述将所述芯片可测性代码的输出结果与所述预期结果进行对比,来对所述芯片可测性代码进行验证的过程,包括:
获取所述芯片可测性代码的输出结果;
将所述输出结果与所述预期结果进行对比;
根据对比结果验证所述芯片可测性代码的功能或所述芯片可测性代码所对应的电路物理特性的正确性。
9.根据权利要求8所述的方法,其特征在于,在将所述芯片可测性代码的输出结果与所述预期结果进行对比,来对所述芯片可测性代码进行验证后,还包括:
将所述输出结果、所述预期结果、所述对比结果和当前测试周期作为测试结果存储至所述仿真测试平台的预设内存中;
根据所述测试结果生成分析报告。
10.根据权利要求9所述的方法,其特征在于,还包括:
将所述测试结果通过DPI交互接口输出至所述软件模块;
根据所述测试结果验证所述测试向量的正确性,若所述测试向量存在错误则对所述测试向量进行调整。
CN202311846465.4A 2023-12-28 2023-12-28 一种芯片可测性代码动态仿真测试系统及测试方法 Pending CN117787155A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311846465.4A CN117787155A (zh) 2023-12-28 2023-12-28 一种芯片可测性代码动态仿真测试系统及测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311846465.4A CN117787155A (zh) 2023-12-28 2023-12-28 一种芯片可测性代码动态仿真测试系统及测试方法

Publications (1)

Publication Number Publication Date
CN117787155A true CN117787155A (zh) 2024-03-29

Family

ID=90390770

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311846465.4A Pending CN117787155A (zh) 2023-12-28 2023-12-28 一种芯片可测性代码动态仿真测试系统及测试方法

Country Status (1)

Country Link
CN (1) CN117787155A (zh)

Similar Documents

Publication Publication Date Title
US7269773B2 (en) Test program debugger device, semiconductor test apparatus, test program debugging method and test method
CN110632499B (zh) 基于测试对象的测试向量生成方法及存储介质
US10209306B2 (en) Methods and systems for generating functional test patterns for manufacture test
CN115684896B (zh) 芯片可测性设计测试方法、测试平台及其生成方法及装置
CN111950212A (zh) 高效的多模式验证平台及方法
CN115656792B (zh) 芯片可测性设计的测试方法及测试平台
CN112597006A (zh) 一种嵌入式软件集成测试自动化执行系统及方法
CN112444731B (zh) 芯片测试方法、装置、处理器芯片及服务器
CN113849419B (zh) 芯片的测试向量生成方法、系统、设备及存储介质
CN110765716A (zh) 数字产品的仿真信号查看方法及系统
CN115656791B (zh) 芯片可测性设计的测试方法及测试平台
CN115684894B (zh) 芯片可测性设计的测试方法及测试平台
CN115684895B (zh) 芯片可测性设计测试方法、测试平台及其生成方法及装置
JP4213306B2 (ja) 半導体試験用プログラムデバッグ装置
CN117787155A (zh) 一种芯片可测性代码动态仿真测试系统及测试方法
CN112380133B (zh) 一种指令集模拟器利用功能库仿真的方法及装置
JP2002333469A (ja) 半導体試験用プログラムデバッグ装置
CN114756463A (zh) 一种测试环境开发方法、系统、设备以及介质
US6715134B2 (en) Method and apparatus to facilitate generating simulation modules for testing system designs
CN113032203B (zh) 一种可编程逻辑器件加速的测试装置及方法
JP2004348596A (ja) Icテスタ用プログラムのデバッグ装置、方法、及びプログラム
CN117172203A (zh) 处理脚本命令的方法、电子设备和存储介质
CN117332733A (zh) 一种定位逻辑系统设计的错误的方法、设备以及存储介质
CN117331764A (zh) 一种芯片功能测试方法、装置、设备及存储介质
CN114676064A (zh) 一种面向硬件语言代码的通用测试系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination