CN117291132A - 一种芯片验证***、方法及存储介质 - Google Patents

一种芯片验证***、方法及存储介质 Download PDF

Info

Publication number
CN117291132A
CN117291132A CN202311584732.5A CN202311584732A CN117291132A CN 117291132 A CN117291132 A CN 117291132A CN 202311584732 A CN202311584732 A CN 202311584732A CN 117291132 A CN117291132 A CN 117291132A
Authority
CN
China
Prior art keywords
simulation
simulation platform
training sample
test
sample set
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.)
Granted
Application number
CN202311584732.5A
Other languages
English (en)
Other versions
CN117291132B (zh
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.)
Shanghai Xiaoli Technology Co ltd
Original Assignee
Shanghai Xiaoli 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 Shanghai Xiaoli Technology Co ltd filed Critical Shanghai Xiaoli Technology Co ltd
Priority to CN202311584732.5A priority Critical patent/CN117291132B/zh
Publication of CN117291132A publication Critical patent/CN117291132A/zh
Application granted granted Critical
Publication of CN117291132B publication Critical patent/CN117291132B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种芯片验证***、方法及存储介质,***包括:数据库、第一仿真平台、第二仿真平台及第三仿真平台;数据库用于存储测试用例;第一仿真平台,用于从数据库获取测试用例,并根据测试用例,输出第一仿真结果;第二仿真平台,用于从数据库获取测试用例,并根据测试用例,输出第二仿真结果;第三仿真平台,用于从数据库获取测试用例,并根据测试用例,输出第三仿真结果;第一仿真平台还用于在第一仿真结果分别与第二仿真结果、第三仿真结果一致时,更新训练样本集,训练样本集包括第二测试用例;第三仿真平台根据第二测试用例进行仿真,输出第四仿真结果,用于芯片验证。本申请从源头上减少芯片验证硬件仿真测试时间,提高芯片验证效率。

Description

一种芯片验证***、方法及存储介质
技术领域
本申请涉及芯片验证技术领域,特别涉及一种芯片验证***、方法及存储介质。
背景技术
随着集成电路技术的发展,芯片的复杂性和密度不断增加。因此,对芯片进行全面而有效的验证变得至关重要。芯片验证旨在通过各种测试和分析手段来确保芯片在各种工作条件下的正确运行。传统的验证方法包括仿真验证、静态验证和时序验证等,但面对日益增长的芯片复杂性和设计约束,这些方法已经无法满足验证的需求。
芯片具有多样和多变性,现有技术从算法层面来优化模型性能,硬件设计在实现上如果不能完全支持验证过程时则进行相应调整,调整后的方案又需要回溯评估对整体模型性能的影响程度,所以芯片产品研发从方案设计,开发到芯片验证的过程是不断迭代的。同时,基于System Verilog的抽象级验证语言和C的编译平台,容易忽视各个环节之间的相关性,一定程度增加了芯片研发的工作量。芯片验证由于其***复杂性和工作繁琐性,一直占据很大的人力和时间成本。为了使该芯片产品适用复杂多样的模型和应用场景,提升产品市场竞争力,芯片本身设计也更加灵活以及具有更快的迭代速度,因此一款轻量级,高拓展的芯片验证方法及***用来缩短芯片研发周期至关重要。
芯片验证覆盖率收敛流程存在三大挑战,它们是:
1.覆盖率规划:在测试平台的覆盖率定义中,开发者很难确定应该包括哪些内容,确定涵盖哪些类型的覆盖组件,在哪些方面存在差距,并且还需要考虑其他需要补充的内容,不断追求100%的覆盖率。
2.覆盖率收敛:开发者很难确定哪些测试用例对于提高覆盖率最有帮助,同一个测试用例经过多次运行才能达到50%的覆盖率,当覆盖率越来越接近100%时,剩下的几个百分点可能需要花费几周的时间才能完成,直接编写测试用例是一种有效的覆盖方法,但需要投入大量人力资源。
3.激励开发和根本原因分析:开发者可能会遇到一些不应该执行特定配置或错误的情况,激励的编写方式导致无法实现覆盖目标。解决此问题需要激励的开发者进行根本原因分析,找出激励编写的问题并进行改进。
在传统的芯片验证周期中,验证开发者会设定一个目标,并运行回归环境。在这个过程中,开发者会设置测试平台来生成随机激励,并观察设计的响应。通常情况下,一个设计会运行10000到15000条测试用例,而验证团队对每条测试用例的回报率往往没有清晰的概念,回归运行可能需要数天时间,并占用宝贵的计算资源。
发明内容
有鉴于此,本申请提供的一种芯片验证***、方法及存储介质,以期解决上述芯片验证周期长,验证效率低的技术问题。
本申请提供了一种芯片验证***,包括:数据库、第一仿真平台、第二仿真平台以及第三仿真平台;
数据库,用于存储测试用例;
第一仿真平台,用于从数据库获取测试用例,并根据测试用例,输出第一仿真结果;
第二仿真平台,用于从数据库获取测试用例,并根据测试用例,输出第二仿真结果;
第三仿真平台,用于从数据库获取测试用例,并根据测试用例,输出第三仿真结果;
第一仿真平台还用于在第一仿真结果分别与第二仿真结果、第三仿真结果一致时,更新训练样本集,训练样本集包括第二测试用例;充分利用三个仿真模型验证过程各自的优点,在确认对比结果一致的基础上,保证初始的测试用例可靠,进而通过此测试用例进行迭代更新产生更优的测试用例。
第三仿真平台根据第二测试用例进行仿真,输出第四仿真结果,用于芯片验证。
在一些实现中,第一仿真平台包括:
代码覆盖率统计模块,用于在第一仿真平台进行仿真过程中统计影响芯片验证的代码覆盖率,代码覆盖率至少包括:函数覆盖率、语句覆盖率、分支覆盖率和条件覆盖率;
特征变化统计模块,用于在第一仿真平台进行仿真过程中统计寄存器变量、条件case和芯片测试状态的特征变化,特征变化至少包括:变量分布热力、变量翻转和分支变化。
在一些实现中,第一仿真平台还包括:
训练样本集构建模块,用于设置自变量和因变量构建训练样本集;自变量根据激励数据和测试用例获得,因变量是根据自变量在仿真过程中记录的目标变量;目标变量包括代码覆盖率和特征变化。
在一些实现中,第一仿真平台还包括:
主控因素分析模块,用于分析训练样本集中的主控因素,主控因素为根据自变量对因变量产生影响的关键特征;
训练样本迭代模块,用于学习自变量和因变量之间的关系,更新训练样本集;
测试用例筛选模块,用于分类训练样本集,筛选有利于提高芯片验证效率的第二测试用例用于芯片验证。
在一些实现中,第一仿真平台还包括第一上位机,用于运行第一仿真平台中的第一仿真模型,第一仿真模型为基于高级语言建立的仿真模型,高级语言包括:C/C++、Python、Java;
第二仿真平台还包括第二上位机,用于运行第一仿真平台中的第二仿真模型,第二仿真模型为基于UVM建立的RTL软仿真模型;
第三仿真平台还包括第三上位机,用于运行第三仿真平台中的第三仿真模型,第三仿真模型为基于FPGA建立的RTL硬件仿真模型。
基于相同的技术构思,本申请还提供了一种芯片验证方法,包括:
第一仿真平台从数据库获取测试用例,并根据测试用例,输出第一仿真结果;
第二仿真平台从数据库获取测试用例,并根据测试用例,输出第二仿真结果;
第三仿真平台从数据库获取测试用例,并根据测试用例,输出第三仿真结果;
将第一仿真结果分别对比第二仿真结果和第三仿真结果,若对比结果均一致时,第一仿真平台更新训练样本集,训练样本集包括第二测试用例;
将第二测试用例输入至第三仿真平台进行仿真,输出第四仿真结果,用于芯片验证。
在一些实现中,第一仿真平台输出第一仿真结果之前还包括:
统计影响芯片验证的代码覆盖率,代码覆盖率至少包括:函数覆盖率、语句覆盖率、分支覆盖率和条件覆盖率;
统计寄存器变量、条件case和芯片测试状态的特征变化,特征变化至少包括:变量分布热力、变量翻转和分支变化。
在一些实现中,第一仿真平台更新训练样本集具体包括:
设置自变量和因变量构建训练样本集;自变量根据激励数据和测试用例获得,因变量是根据自变量在仿真过程中记录的目标变量;目标变量包括代码覆盖率和特征变化;
分析训练样本集中的主控因素,主控因素根据自变量对因变量产生影响的关键特征;
学习自变量和因变量之间的关系,更新训练样本集。针对影响因变量的主控因素进行分析和学习,分类、筛选出高效的测试用例用于仿真测试,能够从影响芯片测试效率的根源上解决问题。
在一些实现中,第一仿真平台更新训练样本集之后,还包括:
分类训练样本集,筛选有利于提高芯片验证效率的测试用例作为第二测试用例。
基于相同的技术构思,本申请还提供了一种计算机可读存储介质,用于存储程序,程序被处理器执行时实现上述任一项的芯片验证方法。
与现有技术相比,本申请至少具有以下一项有益效果:
1.通过第一仿真平台的第一仿真结果分别与第二仿真平台的第二仿真结果和第三仿真平台第三仿真结果进行对比,为后续更新训练样本集,提供出高效的第二测试用例的可靠性提供保证。
2.充分利用三个仿真模型验证过程各自的优点,在确认对比结果一致的基础上,迭代找寻效率最高、最适宜硬件仿真过程的测试用例进行测试,规避RTL软件仿真模型速度慢,RTL硬件仿真模型灵活度低的问题,提高了芯片测试效率。
3.在更新样本训练集的过程中,对仿真过程中代码覆盖率、特征变化等重要信息进行统计,合理设置自变量和因变量,针对影响因变量的主控因素进行分析和学习,分类、筛选出有利于提高芯片验证效率的测试用例,从影响芯片测试效率的根源上解决问题。
附图说明
下面将以通俗易懂的方式,结合附图说明具体实施方式,对本申请的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本申请一种芯片验证***的结构示意图;
图2是本申请一种芯片验证方法训练样本集更新过程示意图。
具体实施方式
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对照附图说明本申请的具体实施方式。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与申请相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
另外,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述关联对象,而不能理解为指示或暗示关联对象之间的相对重要性或顺序。
在一个实现中,参考说明书附图1,本申请提供的一种芯片验证***,包括:数据库400、第一仿真平台100、第二仿真平台200以及第三仿真平台300;
数据库400,用于存储测试用例;
具体的,该数据库400可以与第一、第二、第三仿真平台集中布置或分开布置,例如数据库400和仿真平台位于同一服务器,或者位于分布的不同服务器,数据库400所在的服务器例如为数据代理服务器,如此测试用例可以保存于该服务器,并基于需求不断更新,且可以由第三方更新,且独立维护,增加了布局的灵活性,对硬件资源需求可以更加分散,无需集中布置所需资源。
测试用例是用于验证和评估硬件或软件是否按照预期工作的具体测试场景或测试情况。每个测试用例都是一个独立的测试单元,描述了一组输入数据和预期输出结果,以及执行测试所需的前提条件,其目的是确保被测对象在各种条件下都能正确地运行,并且能够捕捉潜在的错误和缺陷。在三个平台最开始获取的测试用例,是由验证人员从芯片设计规范入手单独设计完成的。测试用例由激励数据和激励数据在寄存器中的具体配置方法组成。在数据库400中的测试用例由不同的仿真平台进行获取时,相应地输出匹配某仿真平台的激励数据和配置,测试用例在不同仿真平台的实现过程可能存在差异,但整体的仿真目的是一致的。
第一仿真平台100,用于从数据库400获取测试用例,并根据测试用例,输出第一仿真结果;
具体的,第一仿真平台100是为运行基于高级语言建立的仿真模型的第一上位机120(Firmware)的载体。高级语言是面向过程的语言,它可以在不同的计算机上运行,这类语言的指令非常接近普通英语、数学符号和实际问题。用这些语言编制的程序也称作源程序,当要在计算机上运行时,需要通过编译和(或)解释程序翻译成机器语言才能执行,但不同的语言有不同的处理方法。在第一仿真平台100上运行的第一仿真模型110所使用的高级语言包括但不限于:C、C++、Python、Java等;第一仿真平台100主要实现参考模型结果的输出,从而验证RTL逻辑实现的逻辑功能正确性。高级语言仿真模型在第一上位机120中进行运行,第一上位机120的环境可以是Win或Linux等操作***,从而实现具体的仿真过程。第一仿真平台100上的仿真模型是根据需要进行测试的芯片的具体实现过程与实现目的而建立的,通过从数据库400中获取测试用例,从而实现整个仿真过程,输出第一仿真结果。
第二仿真平台200,用于从数据库400获取测试用例,并根据测试用例,输出第二仿真结果;
具体的,第二仿真平台200是为运行基于UVM(Universal VerificationMethodology)建立的RTL(Register Transfer Level)软仿真模型的第二上位机220的载体,RTL是“寄存器传输级”,在计算机硬件设计中,RTL是一种硬件描述语言的抽象级别,它用于描述数字电路中的寄存器、数据传输和逻辑运算等操作。UVM是“通用验证方法学”,它是一种硬件验证方法学,用于验证集成电路设计中的功能正确性。在集成电路设计中,硬件验证是确保设计在硬件级别上按照预期工作的过程,UVM提供了一种标准化的、基于对象的验证方法学,使得验证工程师可以更加高效地进行验证任务。UVM提供了一套用于创建可重用验证环境和测试的类库,以及一组验证方法学的最佳实践。UVM利用面向对象的编程技术,将测试、验证组件和环境建模为对象,并提供了丰富的功能来管理和控制验证过程。测试用例在RTL软仿模型中,输出第二仿真结果。
同时,第一仿真平台100和第二仿真平台200可以设置在同一个服务器或PC等硬件中同时运行(即在一个服务器或PC等硬件上同时使用第一上位机120和第二上位机220分别运行第一仿真模型110和第二仿真模型210),同时运行时,能够有效提高硬件资源的利用率,如果需要进行验证的芯片复杂程度相对较低时,所需要的算力和硬件资源较少的情况下可以选择将两个上位机在同一个硬件中进行实现。
第三仿真平台300,用于从数据库400获取测试用例,并根据测试用例,输出第三仿真结果;
具体的,第三仿真平台300是为运行基于FPGA(Field-Programmable Gate Array)建立的第三仿真模型310的第三上位机320的载体,第三仿真模型310为RTL硬件仿真模型,此第三上位机320的环境可以是ARM或X86等嵌入式***;FPGA通常包含大量的可编程逻辑单元(如逻辑门、查找表等)和存储器单元(如寄存器、RAM和ROM等),以及一些可编程的连线资源,可以用于在逻辑单元之间建立连接。通常使用硬件描述语言(如Verilog HDL或VHDL)来描述电路设计,并通过特定的开发工具将其编译成FPGA可识别的配置位流文件并加载到FPGA中,使其实现所需的电路功能。
第一仿真平台100还用于在第一仿真结果分别与第二仿真结果、第三仿真结果一致时,更新训练样本集,训练样本集包括第二测试用例;
第三仿真平台300根据第二测试用例进行仿真,输出第四仿真结果,用于芯片验证。
具体的,当第一仿真结果分别与第二仿真结果、第三仿真结果一致时,说明使用的测试用例是可靠的,则可以通过此测试用例来建立训练样本集,因此,通过此测试用例建立的训练样本集在经过多次训练和迭代后的结果也可以认为是可靠的。如果第一仿真结果分别与第二仿真结果、第三仿真结果不一致时,则说明测试用例的设计和选择存在一定的问题,需要开发人员介入纠正测试用例,防止由于测试用例的选择问题,导致后续训练样本集的迭代结果也出现问题,则会使得芯片测试结果不可靠。第二测试用例是适合进行硬件仿真测试过程的测试用例,传统硬件验证平台需要完全依赖于开发人员针对覆盖率规划、收敛和激励开发和原因分析,进行用例设计,不仅仅对开发人员要求高,而且开发者很难确定什么测试用例对覆盖最有用,只能依靠提高测试用例数量的方式来提高芯片验证的可靠性和覆盖率,这种做法更像是穷举法,导致测试回归时间长,验证周期长。通过更新训练样本集得出测试用例的做法,相比于开发人员提高测试用例数量的方式来提高覆盖率方式,具有使用测试用例数量有限、测试用例在验证过程中效率高的优点,从而极大地缩短了验证工作周期,大幅度降低了人力成本。
在现有技术中,验证人员使用主流的UVM框架进行验证时,在此过程中,即使是只验证其中一个处理器的功能,都需要使验证结构中的所有部件参与其中,这使得验证资源消耗大、花费的时间也相对长。UVM库的复杂建模基础和基于System Verilog的抽象级验证语言并不能很好的匹配深度定制化的芯片验证需求,且人员掌握门槛高,实际验证使用的测试用例量并未减少。部分验证人员会采用FPGA进行验证,但是出于成本方面的考虑,选用的FPGA芯片的容量会有一定的限制,单一的FPGA芯片往往无法提供运行较大工程所需要的全部资源,这就使多个FPGA芯片在同一电路板上搭配使用成为一种必然;对于FPGA芯片的选择,成为设计验证开发板时存在的一个问题:如果选择容量较小的芯片,当需要验证的工程较大时,芯片的资源不足,验证跑不起来;如果都选择容量较大的芯片,而一般的工程又不需要这么多的资源,就会造成芯片容量的浪费。综上,现有方案主要针对验证的技术手段,例如验证平台的功能扩展,验证的管理,测试自动化以及成本方面。未从测试耗时的本质问题出发,减少RTL前/后仿真的用例数,从构建数量有限且高效的测试用例角度进行着手。
第一仿真平台100、第二仿真平台200以及第三仿真平台300的仿真结果以数据文件的形式进行输出,同时将载有仿真结果的文件进行对比,第一仿真平台100和第二仿真平台200之间的对比过程可以在第一上位机120或第二上位机220中进行;第三仿真平台300与第一仿真平台100的仿真结果的对比过程,如果对比过程设置在第一上位机120中,则需要对第三仿真平台300的仿真结果文件进行编译后完成对比,如果对比过程设置在第三上位机320中,则需要对第一仿真平台100的仿真结果文件进行编译后对比。主要是由于第三仿真平台300的仿真环境为嵌入式***,两者之间可能存在初始的结果文件因为使用的程序语言不同无法对比的情况。
在一个实现中,第一仿真平台100包括:
代码覆盖率统计模块,用于在第一仿真平台100进行仿真过程中统计影响芯片验证的代码覆盖率,代码覆盖率至少包括:函数覆盖率、语句覆盖率、分支覆盖率和条件覆盖率;
具体的,在第一仿真平台100进行仿真的过程中,高级语言程序会依据测试用例来执行,而代码覆盖率是一种通过计算测试过程中被执行的源代码占全部源代码的比例,基于此在程序中寻找没有被测试用例测试过的地方,进一步创建新的测试用例来增加覆盖率。按性质,它属于白盒测试的范畴,即主要依据源代码的内部结构来设计测试用例,常见的编程语言,如C/C++,python和Java等,都有相应的代码覆盖率测试工具。
特征变化统计模块,用于在第一仿真平台100进行仿真过程中统计寄存器变量、条件case和芯片测试状态的特征变化,特征变化至少包括:变量分布热力、变量翻转和分支变化;
具体的,在第一仿真平台100进行仿真的过程中,寄存器中的变量会发生相应的改变,同时,不同的条件case和状态也会发生相应的改变,通过记录此改变过程中的特征变化,比如寄存器中变量在寄存器分布的热力图的变化、变量在寄存器中发生的翻转情况,以及状态机所表征的芯片测试状态的变化等特征变化。
在一个实现中,第一仿真平台100还包括:
训练样本集构建模块,用于设置自变量和因变量构建训练样本集;自变量根据测试用例获得,因变量是根据自变量在仿真过程中记录的目标变量;目标变量包括代码覆盖率和特征变化。
具体的,训练样本集由自变量和因变量组成,自变量即测试用例所提供的激励数据基础以及寄存器配置,因变量是自变量在仿真过程中,具体的某一特征发生变化后的结果,比如因变量中的函数覆盖率、语句覆盖率、分支覆盖率和条件覆盖率等代码覆盖率,以及寄存器中寄存器变量、条件case和芯片测试状态的特征变化。
在一个实现中,第一仿真平台100还包括:
主控因素分析模块,用于分析训练样本集中的主控因素,主控因素为自变量到因变量的过程中导致代码覆盖率和寄存器变量覆盖率发生变化的关键特征;
具体的,主控因素分析模块可以使用机器学习交叉特征筛选模型,根据递归消除特征法分析输入和影响代码覆盖率与寄存器变量覆盖率的主控因素。变量覆盖率是指在寄存器中特定特征的覆盖程度或出现频率。它用于衡量寄存器中特征的分布情况,即有多少样本包含某个特定特征。通过了解每个特征的覆盖率,可以判断哪些特征是广泛存在的,哪些特征可能比较稀疏,高覆盖率的特征表示在整个数据集中出现频率较高,几乎每个样本都包含这个特征,这种特征在仿真时可能会提供更多信息和重要性。反之,低覆盖率的特征表示出现频率较低,可能只在一小部分样本中出现,这种特征在仿真时可能提供较少的信息,甚至可能产生负面影响。对于包含较多低覆盖率特征的测试用例,可以有选择性地滤除,对于一些具有高覆盖率特征的测试用例予以采用,以提高芯片验证的全面性。
训练样本迭代模块,用于学习自变量和影响代码覆盖率与寄存器变量变化率之间的关系,结合寄存器变量分布热力更新训练样本集;
具体的,训练样本迭代模块基于集成算法回归模型,学习输入的测试用例中的激励数据以及寄存器配置同代码覆盖率、寄存器变量变化率之间的关系,同时根据能够反映芯片设计寄存器覆盖程度的寄存器变量分布热力图信息,从而在迭代过程中创建出高效、高覆盖率的测试用例。在经过若干次迭代后,记录每次迭代产生的测试样例,作为进一步筛选适合芯片验证的测试用例的基础;记录的方式有两种,第一种是每一次的迭代结果都进行记录作为训练样本集的一部分,第二种是对每一测试用例的代码覆盖率、寄存器变量变化率以及寄存器变量分布热力图作出一定程度的限定,每个关键指标设置一个阈值,达到此阈值时记录此测试用例,附加条件的训练样本可以人为指导机器学习的训练方向,寻找出更加个性化更符合生产需求的测试样例。
测试用例筛选模块,用于分类训练样本集,筛选代码覆盖率高和变量分布热力覆盖率高的测试用例用于芯片验证。
具体的,测试用例筛选模块基于集成算法分类模型对更新后的训练样本集中的测试用例进行分类,筛选出训练样本集中代码覆盖率高和寄存器变量分布热力覆盖率高的测试用例,筛选出的测试用例作为第三仿真平台300的硬件仿真验证,以期解决硬件仿真过程耗时、量大的问题,仿真结果与第一仿真平台100的仿真结果进行一致性对比。
基于相同的技术构思,本申请还提供了一种芯片验证方法,包括:第一仿真平台100从数据库400获取测试用例,并根据测试用例,输出第一仿真结果;第二仿真平台200从数据库400获取测试用例,并根据测试用例,输出第二仿真结果;第三仿真平台300从数据库400获取测试用例,并根据测试用例,输出第三仿真结果。
具体的,在三个平台最开始获取的测试用例,是由验证人员从芯片设计规范入手单独设计完成的。测试用例由激励数据和配置寄存器的具体配置组成。在数据库400中的测试用例由不同的仿真平台进行获取时,相应地输出匹配某仿真平台的激励数据和配置,测试用例在不同仿真平台的实现过程可能存在差异,但整体的仿真目的是一致的。第一仿真平台100是为运行基于高级语言建立的仿真模型的第一上位机120(Firmware)的载体。在第一仿真平台100上运行的仿真模型所使用的高级语言包括但不限于:C、C++、Python、Java等;第一仿真平台100主要实现参考模型结果的输出,从而验证芯片设计RTL逻辑实现的逻辑功能正确性。第一仿真平台100中的高级语言仿真模型在此第一上位机120中进行运行,第一上位机120的环境可以是Win或Linux等操作***,从而实现具体的仿真过程。第二仿真平台200是为运行基于UVM(Universal Verification Methodology)建立的RTL(RegisterTransfer Level)软仿真模型的第二上位机220的载体,RTL是“寄存器传输级”,在计算机硬件设计中,RTL是一种硬件描述语言的抽象级别,它用于描述数字电路中的寄存器、数据传输和逻辑运算等操作。第三仿真平台300是为运行基于FPGA(Field-Programmable GateArray)建立的RTL硬件仿真模型的第三上位机320的载体。第一仿真平台100、第二仿真平台200和第三仿真平台300中的仿真模型是根据需要进行验证芯片的具体实现过程与实现目的而建立的,因此通过从数据库400中获取测试用例,且每个平台所获得的测试用例均需要根据其从而实现整个仿真过程,输出仿真结果。
将第一仿真结果分别对比第二仿真结果和第三仿真结果,若对比结果均一致时,第一仿真平台100更新训练样本集,训练样本集包括第二测试用例;
将第二测试用例输入至第三仿真平台300进行仿真,输出第四仿真结果,用于芯片验证。
具体的,当第一仿真结果分别与第二仿真结果、第三仿真结果一致时,说明使用的测试用例是可靠的,则可以通过此测试用例来建立训练样本集,因此,通过此测试用例建立的训练样本集在经过更新后的结果也可以认为是可靠的。如果第一仿真结果分别与第二仿真结果、第三仿真结果不一致时,则说明测试用例的设计和选择存在一定的问题,需要开发人员介入纠正测试用例,防止由于测试用例的选择问题,导致后续训练样本集的迭代结果也出现问题,则会使得芯片测试结果不可靠。第二测试用例是适合进行硬件仿真测试过程的测试用例,传统硬件验证平台需要完全依赖于开发人员针对覆盖率规划、收敛和激励开发和原因分析,进行用例设计,不仅仅对开发人员要求高,而且开发者很难确定什么测试用例对覆盖最有用,只能依靠提高测试用例数量的方式来提高芯片验证的可靠性和覆盖率,这种做法更像是穷举法,导致测试回归时间长,验证周期长。通过更新训练样本集得出测试用例的做法,相比于开发人员提高测试用例数量的方式来提高覆盖率方式,具有使用测试用例数量有限、测试用例在验证过程中效率高的优点,从而极大地缩短了验证工作周期,大幅度降低了人力成本。在更新测试用例的训练样本集的过程中,根据芯片验证仿真过程中能够影响最终仿真结果的主控因素进行迭代,并筛选出最适合硬件仿真过程的测试用例用于芯片验证。第四仿真结果输出后再次与第一仿真结果进行对比,判断测试用例的可靠性,如果对比结果一致,则说明此时的测试用例既符合提高硬件仿真效率的目的又能够进行芯片验证,是最佳测试用例。
优选的,迭代筛选出的最适合硬件仿真过程的测试用例(即第二测试用例)同时也可以输入进第二仿真平台200,RTL软仿真模型根据第二测试用例输出仿真结果,将仿真结果与第一仿真结果进行对比,进一步确定第二测试用例的可靠性。
在一个实现中,参考说明书附图2,第一仿真平台100输出第一仿真结果之后还包括:
统计影响芯片验证的代码覆盖率,代码覆盖率至少包括:函数覆盖率、语句覆盖率、分支覆盖率和条件覆盖率;
统计寄存器变量、条件case和芯片测试状态的特征变化,特征变化至少包括:变量分布热力、变量翻转和分支变化。
具体的,在第一仿真平台100进行仿真的过程中,高级语言程序会依据测试用例来执行,而代码覆盖率是一种通过计算测试过程中被执行的源代码占全部源代码的比例,基于此在程序中寻找没有被测试用例测试过的地方,进一步创建新的测试用例来增加覆盖率。按性质,它属于白盒测试的范畴,即主要依据源代码的内部结构来设计测试用例,常见的编程语言,如C/C++,python和Java等,都有相应的代码覆盖率测试工具。在第一仿真平台100进行仿真的过程中,寄存器中的变量会发生相应的改变,同时,不同的条件case和状态也会发生相应的改变,通过记录此改变过程中的特征变化,比如寄存器中变量在寄存器分布的热力图的变化、变量在寄存器中发生的翻转情况,以及状态机所表征的芯片测试状态的变化等特征变化,将上述的内容进行记录,作为训练样本集更新迭代过程中需要重点关注的内容,从而在不断更新的过程中找到最佳的测试用例。
在一个实现中,参考说明书附图2,第一仿真平台100更新训练样本集具体包括:
设置自变量和因变量构建训练样本集;自变量根据激励数据和测试用例获得,因变量是根据自变量在仿真过程中记录的目标变量;目标变量包括代码覆盖率和特征变化;
具体的,训练样本集由自变量和因变量组成,自变量即测试用例所提供的激励数据基础以及寄存器配置,因变量是自变量在仿真过程中,具体的某一特征发生变化后的结果,比如因变量中的函数覆盖率、语句覆盖率、分支覆盖率和条件覆盖率等代码覆盖率,以及寄存器中寄存器变量、条件case和芯片测试状态的特征变化。
分析训练样本集中的主控因素,主控因素为根据自变量对因变量产生影响的关键特征;
具体的,基于机器学习交叉特征筛选模型分析主控因素,根据递归消除特征法分析测试用例(自变量)和因变量中影响代码覆盖率与寄存器变量覆盖率的主控因素。变量覆盖率是指在寄存器中特定特征的覆盖程度或出现频率。它用于衡量寄存器中特征的分布情况,即有多少样本包含某个特定特征。通过了解每个特征的覆盖率,可以判断哪些特征是广泛存在的,哪些特征可能比较稀疏,高覆盖率的特征表示在整个数据集中出现频率较高,几乎每个样本都包含这个特征,这种特征在仿真时可能会提供更多信息和重要性。反之,低覆盖率的特征表示出现频率较低,可能只在一小部分样本中出现,这种特征在仿真时可能提供较少的信息,甚至可能产生负面影响。对于包含较多低覆盖率特征的测试用例,可以有选择性地滤除,对于一些具有高覆盖率特征的测试用例予以采用,以提高芯片验证的全面性。
学习自变量和所述因变量之间的关系,更新训练样本集。
具体的,基于机器学习集成算法回归模型学习输入的测试用例(自变量)中的激励数据以及寄存器配置同因变量中代码覆盖率、寄存器变量变化率之间的关系,同时根据能够反映芯片设计寄存器覆盖程度的寄存器变量分布热力图信息,从而在迭代过程中创建出高效、高覆盖率的测试用例。在经过若干次迭代后,记录每次迭代产生的测试样例,作为进一步筛选适合芯片验证的测试用例的基础;记录的方式有两种,第一种是每一次的迭代结果都进行记录作为训练样本集的一部分,第二种是对每一测试用例的代码覆盖率、寄存器变量变化率以及寄存器变量分布热力图作出一定程度的限定,每个关键指标设置一个阈值,达到此阈值时记录此测试用例,附加条件的训练样本可以人为指导机器学习的训练方向,寻找出更加个性化更符合生产需求的测试样例。
在一个实现中,第一仿真平台100更新训练样本集之后,还包括:
分类训练样本集,筛选有利于提高芯片验证效率的测试用例作为第二测试用例。
具体的,基于机器学***台300的硬件仿真验证,以期解决硬件仿真过程耗时、量大的问题。第三仿真平台300获取第二测试用例后输出的第四仿真结果与第一仿真平台100的仿真结果进行一致性对比,判断此第二测试用例的可靠性。
优选的,迭代筛选出的最适合硬件仿真过程的测试用例(即第二测试用例)同时也可以输入进第二仿真平台200,RTL软仿真模型根据第二测试用例输出仿真结果,将仿真结果与第一仿真结果进行对比,进一步确定第二测试用例的可靠性。
同时,上述分析过程采用的交叉特征筛选模型、学习过程采用的集成算法回归模型,分类筛选过程采用的集成算法分类模型均可以根据其分析、学习、分类筛选的实现目的,根据实际情况选用其他机器学习模型。
基于相同的技术构思,本申请还提供了一种计算机可读存储介质,用于存储程序,程序被处理器执行时实现上述任一种芯片验证方法。
应当说明的是,上述实施例均可根据需要自由组合。以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种芯片验证***,其特征在于,包括:数据库、第一仿真平台、第二仿真平台以及第三仿真平台;
所述数据库,用于存储测试用例;
所述第一仿真平台,用于从所述数据库获取所述测试用例,并根据所述测试用例,输出第一仿真结果;
所述第二仿真平台,用于从所述数据库获取所述测试用例,并根据所述测试用例,输出第二仿真结果;
所述第三仿真平台,用于从所述数据库获取所述测试用例,并根据所述测试用例,输出第三仿真结果;
所述第一仿真平台还用于在所述第一仿真结果分别与所述第二仿真结果、所述第三仿真结果一致时,更新训练样本集,所述训练样本集包括第二测试用例;
所述第三仿真平台根据所述第二测试用例进行仿真,输出第四仿真结果,用于芯片验证。
2.根据权利要求1所述的一种芯片验证***,其特征在于,所述第一仿真平台包括:
代码覆盖率统计模块,用于在所述第一仿真平台进行仿真过程中统计影响所述芯片验证的代码覆盖率,所述代码覆盖率至少包括:函数覆盖率、语句覆盖率、分支覆盖率和条件覆盖率;
特征变化统计模块,用于在所述第一仿真平台进行仿真过程中统计寄存器变量、条件case和芯片测试状态的特征变化,所述特征变化至少包括:变量分布热力、变量翻转和分支变化。
3.根据权利要求2所述的一种芯片验证***,其特征在于,所述第一仿真平台还包括:
训练样本集构建模块,用于设置自变量和因变量构建所述训练样本集;所述自变量根据激励数据和所述测试用例获得,所述因变量是根据所述自变量在仿真过程中记录的目标变量;所述目标变量包括所述代码覆盖率和所述特征变化。
4.根据权利要求3所述的一种芯片验证***,其特征在于,所述第一仿真平台还包括:
主控因素分析模块,用于分析所述训练样本集中的主控因素,所述主控因素为根据所述自变量对所述因变量产生影响的关键特征;
训练样本迭代模块,用于学习所述自变量和所述因变量之间的关系,更新所述训练样本集;
测试用例筛选模块,用于分类所述训练样本集,筛选有利于提高所述芯片验证的效率的所述第二测试用例用于所述芯片验证。
5.根据权利要求1所述的一种芯片验证***,其特征在于,所述第一仿真平台还包括第一上位机,用于运行所述第一仿真平台中的第一仿真模型,所述第一仿真模型为基于高级语言建立的仿真模型,所述高级语言包括:C/C++、Python、Java;
所述第二仿真平台还包括第二上位机,用于运行所述第一仿真平台中的第二仿真模型,所述第二仿真模型为基于UVM建立的RTL软仿真模型;
所述第三仿真平台还包括第三上位机,用于运行所述第三仿真平台中的第三仿真模型,所述第三仿真模型为基于FPGA建立的RTL硬件仿真模型。
6.一种芯片验证方法,其特征在于,包括:
第一仿真平台从数据库获取测试用例,并根据所述测试用例,输出第一仿真结果;
第二仿真平台从所述数据库获取所述测试用例,并根据所述测试用例,输出第二仿真结果;
第三仿真平台从所述数据库获取所述测试用例,并根据所述测试用例,输出第三仿真结果;
将所述第一仿真结果分别对比所述第二仿真结果和所述第三仿真结果,若对比结果均一致时,所述第一仿真平台更新训练样本集,所述训练样本集包括第二测试用例;
将所述第二测试用例输入至所述第三仿真平台进行仿真,输出第四仿真结果,用于芯片验证。
7.根据权利要求6所述的一种芯片验证方法,其特征在于,所述第一仿真平台输出所述第一仿真结果之前还包括:
统计影响所述芯片验证的代码覆盖率,所述代码覆盖率至少包括:函数覆盖率、语句覆盖率、分支覆盖率和条件覆盖率;
统计寄存器变量、条件case和芯片测试状态的特征变化,所述特征变化至少包括:变量分布热力、变量翻转和分支变化。
8.根据权利要求7所述的一种芯片验证方法,其特征在于,所述第一仿真平台更新训练样本集具体包括:
设置自变量和因变量构建所述训练样本集;所述自变量根据激励数据和所述测试用例获得,所述因变量是根据所述自变量在仿真过程中记录的目标变量;所述目标变量包括所述代码覆盖率和所述特征变化;
分析所述训练样本集中的主控因素,所述主控因素根据所述自变量对所述因变量产生影响的关键特征;
学习所述自变量和所述因变量之间的关系,更新所述训练样本集。
9.根据权利要求6所述的一种芯片验证方法,其特征在于,所述的所述第一仿真平台更新训练样本集之后,还包括:
分类所述训练样本集,筛选有利于提高所述芯片验证效率的测试用例作为所述第二测试用例。
10.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时实现权利要求6至9中任一项所述的芯片验证方法。
CN202311584732.5A 2023-11-27 2023-11-27 一种芯片验证***、方法及存储介质 Active CN117291132B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311584732.5A CN117291132B (zh) 2023-11-27 2023-11-27 一种芯片验证***、方法及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311584732.5A CN117291132B (zh) 2023-11-27 2023-11-27 一种芯片验证***、方法及存储介质

Publications (2)

Publication Number Publication Date
CN117291132A true CN117291132A (zh) 2023-12-26
CN117291132B CN117291132B (zh) 2024-02-20

Family

ID=89252172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311584732.5A Active CN117291132B (zh) 2023-11-27 2023-11-27 一种芯片验证***、方法及存储介质

Country Status (1)

Country Link
CN (1) CN117291132B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440195A (zh) * 2013-07-11 2013-12-11 盛科网络(苏州)有限公司 基于逻辑芯片的交换机芯片验证方法和装置
US20140005992A1 (en) * 2012-06-27 2014-01-02 Michael Deindl Accelerating functional verification of an integrated circuit
US20200042434A1 (en) * 2018-08-06 2020-02-06 International Business Machines Corporation Analysis of verification parameters for training reduction
CN113297060A (zh) * 2020-05-11 2021-08-24 阿里巴巴集团控股有限公司 一种数据测试方法及其装置
CN114139475A (zh) * 2021-12-07 2022-03-04 上海西井信息科技有限公司 芯片验证方法、***、设备及存储介质
US20230059703A1 (en) * 2021-08-18 2023-02-23 Xepic Corporation Limited Method, apparatus, and storage medium for generating test cases
CN115712574A (zh) * 2022-11-25 2023-02-24 北京航空航天大学 一种面向人工智能组件的测试用例生成方法
WO2023125821A1 (zh) * 2021-12-31 2023-07-06 华为技术有限公司 一种芯片的测试用例生成方法、装置及存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140005992A1 (en) * 2012-06-27 2014-01-02 Michael Deindl Accelerating functional verification of an integrated circuit
CN103440195A (zh) * 2013-07-11 2013-12-11 盛科网络(苏州)有限公司 基于逻辑芯片的交换机芯片验证方法和装置
US20200042434A1 (en) * 2018-08-06 2020-02-06 International Business Machines Corporation Analysis of verification parameters for training reduction
CN113297060A (zh) * 2020-05-11 2021-08-24 阿里巴巴集团控股有限公司 一种数据测试方法及其装置
US20230059703A1 (en) * 2021-08-18 2023-02-23 Xepic Corporation Limited Method, apparatus, and storage medium for generating test cases
CN114139475A (zh) * 2021-12-07 2022-03-04 上海西井信息科技有限公司 芯片验证方法、***、设备及存储介质
WO2023125821A1 (zh) * 2021-12-31 2023-07-06 华为技术有限公司 一种芯片的测试用例生成方法、装置及存储介质
CN116432570A (zh) * 2021-12-31 2023-07-14 华为技术有限公司 一种芯片的测试用例生成方法、装置及存储介质
CN115712574A (zh) * 2022-11-25 2023-02-24 北京航空航天大学 一种面向人工智能组件的测试用例生成方法

Also Published As

Publication number Publication date
CN117291132B (zh) 2024-02-20

Similar Documents

Publication Publication Date Title
US10372859B2 (en) System and method for designing system on chip (SoC) circuits using single instruction multiple agent (SIMA) instructions
US9892223B1 (en) System and method for designing system on chip (SoC) circuits by synchronizing a hierarchy of SMDPs
JP2022036889A (ja) チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム
US8156457B2 (en) Concurrent simulation of hardware designs with behavioral characteristics
CN109189479B (zh) 一种用于处理器指令集的并行自动化验证方法
US7865346B2 (en) Instruction encoding in a hardware simulation accelerator
US11836641B2 (en) Machine learning-based prediction of metrics at early-stage circuit design
US9665674B2 (en) Automating a microarchitecture design exploration environment
US11922106B2 (en) Memory efficient scalable distributed static timing analysis using structure based self-aligned parallel partitioning
Mariani et al. OSCAR: An optimization methodology exploiting spatial correlation in multicore design spaces
US7194726B2 (en) Method for automatically decomposing dynamic system models into submodels
US20030037305A1 (en) Method and apparatus for evaluating logic states of design nodes for cycle-based simulation
Cruz et al. Automated functional test generation for digital systems through a compact binary differential evolution algorithm
US8868396B1 (en) Verification and debugging using heterogeneous simulation models
US6847927B2 (en) Efficient array tracing in a logic simulator machine
US20120166168A1 (en) Methods and systems for fault-tolerant power analysis
Thomas The automatic synthesis of digital systems
CN110210046B (zh) 应用程序及专用指令集处理器一体化敏捷设计方法
CN117291132B (zh) 一种芯片验证***、方法及存储介质
Tan et al. Verilog hdl simulator technology: a survey
US11636244B1 (en) Performance tuning of a hardware description language simulator
CN116976252A (zh) 一种回归仿真方法、装置、设备、介质及程序产品
Mao et al. Automated synthesis of asynchronous Tsetlin machines on FPGA
US6813751B2 (en) Creating standard VHDL test environments
CN116670677A (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
GR01 Patent grant
GR01 Patent grant