生成测试用例的方法、电子设备及存储介质与流程

文档序号:27825993发布日期:2021-12-07 20:39阅读:114来源:国知局
1.本公开实施例涉及逻辑系统设计
技术领域
:,尤其涉及一种生成测试用例的方法、电子设备及存储介质。
背景技术
::2.在集成电路的验证领域,仿真一般是指将逻辑系统设计进行编译之后在计算机或硬件仿真设备上运行,以对设计的各种功能进行仿真测试。设计可以是,例如,用于供专门应用的集成电路(applicationspecificintegratedcircuit,简称asic)或者片上系统芯片(system‑on‑chip,简称soc)的设计。因此,在仿真中被测试或验证的逻辑系统设计又可以称为待测设备(deviceundertest,简称dut)。3.在生成仿真测试所需的测试用例时,以随机生成测试用例的方式需要较长的时间才能满足仿真测试所需的覆盖目标。此外,当用户自定义覆盖目标时,随机生成的测试用例难以精确的覆盖用户自定义的覆盖目标。技术实现要素:4.有鉴于此,本公开提出了一种用于生成测试用例的方法、电子设备及存储介质。5.本公开第一方面,提供了一种用于在便携激励标准(pss)环境下生成多个测试用例的方法,其中,所述测试用例用于测试逻辑系统设计。所述方法包括:获取所述逻辑系统设计的配置文件与覆盖目标;根据所述配置文件生成情景模型;根据所述情景模型生成多个测试用例;确定所述多个测试用例是否满足所述覆盖目标;响应于所述多个测试用例不满足所述覆盖目标,确定所述多个测试用例与所述覆盖目标的差异;以及基于所述差异更新所述情景模型。6.本公开第二方面,提供了一种电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以进行如第一方面所述的方法。7.本公开第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子装置的一组指令,该组指令用于使所述电子装置执行第一方面所述的方法。8.本公开实施例通过确定多个测试用例与覆盖目标的差异,并依据该差异进而生成多个新的测试用例,从而使得多个测试用例能更快的收敛于覆盖目标,提高仿真测试的有效性与精准性。附图说明9.为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。10.图1为根据本公开实施例的主机的示意图。11.图2a为根据本公开实施例的仿真测试系统的示意图。12.图2b为根据本公开实施例的pss工具的示意图。13.图3为根据本公开实施例的一种生成测试用例的方法的流程图。具体实施方式14.为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。15.需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。16.仿真测试是在运行仿真测试系统的主机上对逻辑系统设计施加各种激励以检测逻辑系统设计是否可以实现预定的功能。17.图1示出了根据本公开实施例的主机100的示意图。主机100可以是运行仿真系统的电子设备。如图1所示,主机100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中,处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在主机内部的通信连接。18.处理器102可以是中央处理器(centralprocessingunit,cpu)、图像处理器、神经网络处理器(npu)、微控制器(mcu)、可编程逻辑器件、数字信号处理器(dsp)、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路。处理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。19.存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。在一些实施例中,用于仿真测试设计的仿真测试系统可以是存储器104中存储的计算机程序。如图1所示,存储器存储的数据可以包括程序指令(例如,用于实现本公开的仿真方法的程序指令)以及要处理的数据(例如,存储器可以存储在编译过程产生的临时代码)。处理器102也可以访问存储器存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(ram)、只读存储器(rom)、光盘、磁盘、硬盘、固态硬盘(ssd)、闪存、存储棒等。20.网络接口106可以配置为经由网络向主机100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、wifi、近场通信(nfc)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(nic)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。21.外围接口108可以配置为将主机100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。22.总线110可以被配置为在主机100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器‑存储器总线)、外部总线(usb端口、pci‑e总线)等。23.需要说明的是,尽管上述主机架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该主机架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述主机架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。24.在逻辑系统设计领域(例如芯片设计领域),可以利用仿真系统对设计进行仿真。该仿真系统可以是运行在图1所示主机100上的计算机程序。25.图2a示出了根据本公开实施例的仿真测试系统200的示意图。如图2a所示,仿真测试系统200可以包括pss(portablestimulusstandard)工具210、测试环境220和待测设备230。仿真测试系统200可以根据用户输入202生成多个测试用例,用于在逻辑系统设计的仿真过程中测试逻辑系统设计的多个功能单元。26.pss工具210可以基于用户输入202跨平台地生成多个测试用例。在仿真测试场景下,需要兼顾测试的效率问题,比如同样的测试用例在不同的平台下或不同的层次下均能进行测试。pss工具210的提出就是为了缩短测试时间,并进而使得验证用例和验证计划在垂直复用和跨平台复用上实现连续性,pss工具210一般使用dsl(domainspecificlanguage)语言进行内部逻辑的处理。27.测试环境220用于从pss工具210中获取多个测试用例,并真正转化为可以执行的多个测试用例。测试环境220可以包括用systemverilog语言编写的验证环境,例如通用验证方法学(universalverificationmethodology,uvm)环境。在一些实施例中,测试环境220可以包括由硬件仿真器(emulator)和主机等构成的硬件仿真平台,以对待测设备230进行验证。在又一些实施例中,测试环境220可以包括软件仿真器(simulator)以对待测设备230进行软件仿真和测试。28.图2b示出了根据本公开实施例的pss工具210的示意图。如图2b所示,pss工具210可以进一步生成情景模型212、多个测试用例214、以及覆盖比较结果216。用户输入202可以包括配置文件202a和覆盖目标202b。通常,pss工具210可以是运行在图1所示主机100上的计算机程序。29.配置文件202a可以包括待测设备230的功能的描述。待测设备230的功能可以是待测设备230的一个功能单元(例如,通信单元、存储单元、计算单元)。功能单元也可以是一个大功能模块下的小功能模块(例如,计算模块中的通用计算模块、神经网络计算模块等)或者是功能模块的一部分(例如,存储模块的各个地址段等)。简而言之,待测设备230的功能的描述的粒度可以根据测试的要求而具体的设置。30.覆盖目标202b可以包括待测设备230在测试中需要被覆盖的功能单元。在一些实施例中,覆盖目标可以是pss工具210根据配置文件202a默认生成的覆盖目标。在一些实施例中,覆盖目标202b可以是用户用systemverilog语言描述的测试覆盖目标。pss工具210可以将systemverilog语言的覆盖目标202b转化为用dsl语言描述的覆盖目标,从而可以被pss工具解析并处理。31.pss工具210可以根据配置文件202a生成情景模型212。在一些实施例中,根据配置文件202a生成的情景模型可以被称为初始情景模型。32.情景模型的本质是通过将动作元素(action)、辅助资源以及逻辑控制组合在一起。可以理解的是,情景模型可以包括有效的动作元素以一定执行序列排列的组合。鉴于可移植激励标准(pss)的声明式的语言特性,动作元素是可移植激励标准中一个基本元素。比如,动作元素可以是读操作或者写操作,也可以是搬迁数据的操作。辅助资源包括一些辅助定义,例如struct、lock、share、pool等。33.情景模型212可以包括场景描述与约束条件。场景描述用于定义测试的场景。例如,对于一个总线,可以定义一个测试的场景为读取、写入、测试(一个随机读写1000次的测试)等。而约束条件则可以根据给定条件对测试内容(例如,访问方式、包的数量、一次传输数据的大小、访问的地址范围等等)进行限制。34.下面的代码给出了情景模型212的一个示例:componentpss_top{enumburst_type{single=0,incr=1,wrap4=2,incr4=3,wrap8=4,incr8=5,wrap16=6,incr16=7};enumoperation_type{write=1,read=0};enumtransfer_size{byte=0,halfword=1,word=2};//随机化情景模型212所需的所有变量bufferburst_packet{randburst_typeburst_t;randtransfer_sizetransfer_s;randbit[15:0]start_addr;randintin[1..50]length;ꢀꢀconstraint{ꢀꢀꢀꢀ//约束条件具体内容ꢀꢀif(transfer_s==halfword)start_addr%2==0;ꢀꢀif(transfer_s==word)start_addr%4==0;ꢀꢀꢀif(burst_t==burst_type::single)length=1;…};…poolburst_packetbuff_pool;bindbuff_pool{*};actionread{ꢀꢀ//定义一个读取的场景描述intoper_t=operation_type::read;inputburst_packetdata_read;ꢀꢀintaddr_array[]={{data_read.addr}};intdata_array[]={{data_read.data}};send_transaction(addr_array,data_array,{{oper_t}},{{data_read.burst_t}},{{data_read.transfer_s}},{{data_read.length}});};actionwrite{ꢀꢀ...//定义一个写入的场景描述};actiontest{...};在上述示例中,在一个pss_top的测试组件中,提供了约束条件和场景描述。例如,在情景模型212中,一个约束条件是根据字段的类型transfer_s对初始地址start_addr的值进行了限制。又例如,在情景模型212中,提供了场景描述read,并在其中定义了动作的类型、访问的地址、发送的数据等等。[0035]pss工具210可以进一步根据情景模型212来生成多个测试用例214。测试用例可以描述该测试用例所要测试的内容以及覆盖的功能单元。例如,一个测试用例可以描述其要测试存储单元的功能。例如,参考上面的示例,根据场景描述read中提供的参数以及约束条件的规定,pss工具210可以在特定的场景中根据所提供的参数以及约束条件生成满足情景模型212的多个测试用例214。[0036]pss工具210可以进一步确定该多个测试用例214是否满足覆盖目标202b。在一些实施例中,pss工具210可以根据多个测试用例来确定它们所覆盖的功能单元。pss工具210可以通过比较多个测试用例214所覆盖的功能单元以及覆盖目标202b要求覆盖的功能单元,从而产生比较结果216。比较结果216可以包括多个测试用例214是否满足覆盖目标202b以及目前尚未覆盖的功能单元。例如,覆盖目标202b可以是完备的验证四个cpu的内核做全部读写验证,因此,确定多个测试用例214是否满足覆盖目标202b,可以理解为,根据多个测试用例214的描述,查看是否对每一个cpu的内核的内存地址(比如0到ffff)全部做了读以及写的测试。如果描述中包括了每一个cpu的每一个地址的读与写,则多个测试用例214满足覆盖目标202b。[0037]响应于该多个测试用例214不满足覆盖目标202b,pss工具210可以根据比较结果216确定该多个测试用例214与覆盖目标202b的差异。该差异例如可以包括当前多个测试用例尚未覆盖的功能单元。pss工具210可以基于该差异更新情景模型212。例如,覆盖目标202b可以是检测b1~b4的内存地址,其中,b1、b2、b3与b4均表示一段地址,那么情景模型212的约束条件可以是检测b1~b4的内存地址的描述,而情景模型212的场景描述可以是读或写等方式检测内存地址,进一步的,甚至可以是连续的读或离散的写等方式检测内存地址,若根据该情景模型212生成了2个测试用例,分别为:读b1的内存地址与写b2的内存地址。通过逐一比较这两个测试用例与覆盖目标的差异,确定差异为检测b3~b4的内存地址,基于该差异更新情景模型212后,情景模型212的约束条件可以变更为检测b3~b4的内存地址的描述。[0038]这样,pss工具210可以根据更新的情景模型来生成新的多个测试用例。通过这种循环方式,直到更新的情景模型212最终生成的多个测试用例214满足覆盖目标202b。将最终生成的多个测试用例214输出给测试环境220从而进行仿真验证。在一些实施例中,整个pss工具210的操作可以是静态的,即并未进入到仿真阶段。pss工具210通过情景模型212静态的生成多个测试用例214,多个测试用例214是当前验证环境下需要的激励的描述方式。pss工具210正是通过该静态描述去确定多个测试用例214与覆盖目标202b的差异。[0039]在本公开的实施例中,pss工具210通过获取逻辑系统设计的配置文件202a与覆盖目标202b,并根据配置文件202a生成默认的情景模型212,进而生成多个测试用例214。通过判断多个测试用例214是否满足覆盖目标202b,若多个测试用例214不满足覆盖目标202b,进而利用多个测试用例214和覆盖目标202b之间的差异去修改情景模型212;若多个测试用例满足覆盖目标202b,则将多个测试用例214输出给测试环境220。[0040]图3为根据本公开实施例的一种生成测试用例的方法300的流程图。测试用例用于在逻辑系统设计的仿真过程中测试逻辑系统设计的多个功能单元。该方法可由图2a所示的pss工具210实施,该pss工具210可以运行在主机100上。参照图3所示,该方法300可以包括如下步骤。[0041]在步骤s310中,pss工具210可以获取配置文件(例如,图3所示的配置文件202a)与覆盖目标(例如,图2b所示的覆盖目标202b)。可以理解的是,配置文件可以包括逻辑系统设计的多个功能的描述。覆盖目标可以包括与多个功能对应的测试内容。在一些实施例中,覆盖目标可以是pss工具(例如,图2b所示的pss工具210)基于配置文件生成的默认覆盖目标。在另一些实施例中,覆盖目标可以是用户自定义的覆盖目标。比如:覆盖目标202b是用systemverilog语言描述的测试覆盖目标。[0042]在步骤s320中,pss工具210可以根据配置文件生成情景模型(例如,图2b所示的情景模型212)。[0043]在步骤s330中,pss工具210可以根据情景模型生成多个测试用例(例如,图2b所示的多个测试用例214)。[0044]在步骤s340中,pss工具210可以确定多个测试用例是否满足覆盖目标(例如,图2b所示的覆盖目标202b)。在一些实施例中,可以通过多个测试用例,先获得多个测试用例的场景描述,再通过该场景描述确定多个测试用例是否满足覆盖目标。[0045]在步骤s350中,当多个测试用例不满足覆盖目标时,pss工具210可以确定多个测试用例与覆盖目标的差异。例如,覆盖目标可以是连续的检测b1~b4的内存地址,其中,b1、b2、b3与b4均表示一段地址,多个测试用例分别可以是连续的读b1的内存地址与离散的写b2的内存地址,将这2个测试用例与覆盖目标逐个对比,发现第一个测试用例,即连续的读b1的内存地址满足一部分覆盖目标,因而认为b1已经检测完毕,而第二个测试用例由于用的是离散的检测方式,与覆盖目标无关,因此,差异就可以是连续的检测b2~b4的内存地址。[0046]在步骤s360中,pss工具210可以根据差异更新情景模型。在一些实施例中,在测试内容中确定与差异关联的差异测试内容;以及根据差异测试内容修改情景模型。例如,情景模型的约束条件可以是连续的检测b1~b4的内存地址,情景模型的场景描述可以是读或写等方式,差异可以是连续的检测b2~b4的内存地址,因此,可以根据差异测试内容来更新情景模型的约束条件为,例如,连续地检测b2~b4的内存地址。[0047]在步骤s370中,pss工具210可以输出多个测试用例测试逻辑系统设计。例如,如图2a所示,测试用例可以经由测试环境220被施加到待测设备230上。[0048]需要说明的是,本公开的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。[0049]本公开实施例还提供一种存储介质,该存储介质存储至少一组指令,该指令被执行时执行如本公开实施例提供的多个测试用例的生成方法。[0050]本公开实施例还提供存储了指令的计算机可读存储介质。该指令在被电子设备执行时用于进行上述方法。该计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd‑rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。[0051]上述对本公开的一些实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。[0052]所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。[0053]另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明性的而不是限制性的。[0054]尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。[0055]本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1