CN107480327B - 一种仿真验证方法、装置和电子设备 - Google Patents

一种仿真验证方法、装置和电子设备 Download PDF

Info

Publication number
CN107480327B
CN107480327B CN201710534427.3A CN201710534427A CN107480327B CN 107480327 B CN107480327 B CN 107480327B CN 201710534427 A CN201710534427 A CN 201710534427A CN 107480327 B CN107480327 B CN 107480327B
Authority
CN
China
Prior art keywords
entry
configuration
simulation
parameter
code
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.)
Active
Application number
CN201710534427.3A
Other languages
English (en)
Other versions
CN107480327A (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.)
Beijing Wuxin Technology Co ltd
Beijing Armyfly Technology Co Ltd
Original Assignee
Beijing Wuxin Technology Co ltd
Beijing Armyfly 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 Beijing Wuxin Technology Co ltd, Beijing Armyfly Technology Co Ltd filed Critical Beijing Wuxin Technology Co ltd
Priority to CN201710534427.3A priority Critical patent/CN107480327B/zh
Publication of CN107480327A publication Critical patent/CN107480327A/zh
Application granted granted Critical
Publication of CN107480327B publication Critical patent/CN107480327B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种仿真验证方法、装置和电子设备,所述方法包括:对设计代码和仿真代码进行编译后,获取仿真代码对应的配置文件;解析配置文件得到仿真代码对应的配置信息,其中配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,测试流程用于验证被验证对象实现的功能,表项内容包括验证对象的配置信息,表项包含若干个条目,每一条目包含若干个验证对象,验证对象位于设计代码中;以及根据配置信息对设计代码进行仿真验证。采用本发明提供的方法,当仿真验证过程中更改流程或更改表项时,有效避免了对设计代码的重新编译,进而大大节省了仿真验证的时间,提高仿真验证效率。

Description

一种仿真验证方法、装置和电子设备
技术领域
本发明涉及数字集成电路验证技术领域,尤其涉及一种仿真验证方法、装置和电子设备。
背景技术
目前数字集成电路领域常使用EDA(Electronic Design Automation,电子设计自动化)工具验证芯片的设计代码,其验证流程一般为:首先编写用于验证芯片设计代码的仿真代码,然后分别对设计代码和仿真代码进行编译,待编译完成后执行仿真测试。其验证环境示意图可参考图1所示,包括测试平台Testbench、编译平台Compile和仿真验证平台Simulation Verification。Testbench主要用于设计以下模块的代码:DUT、Diver和Reference model1和Scoreboard。编译平台Compile,用于对Testbench中设计的仿真代码和设计代码进行编译得到可执行文件。仿真验证平台Simulation Verification,用于通过选择用例对编译后的设计代码进行仿真验证操作。仿真验证大致过程为:图1中,Testbench中的仿真代码用于验证设计代码,编写仿真代码时需要编写生成器Generator仿真代码、驱动Diver仿真代码、Monitor 1和Monitor 2仿真代码、参考模型Reference model仿真代码和计分板Scoreboard仿真代码;其中,Testbench中Monitor 1用于监控DUT的输入数值,即提取输入DUT的数值,然后发送给Reference model。Reference model的功能与DUT设计代码功能相同,但实现语言不同,旨在获得提取的输入DUT数值对应的DUT输出值,并显示在计分板Scoreboard上。Monitor 2用于监控提取的输入DUT数值对应的DUT输出值,显示在Scoreboard上。Scoreboard用于将Reference model和Monitor 2分别显示的DUT输出值进行比较得到设计代码的验证结果。
现有的仿真验证环境存在以下问题:
(1)当执行仿真验证后,需要修改环境重新进行仿真验证时,需要面临重新编译的问题。例如,针对芯片设计代码,修改操作流程后,就要重新执行编译再仿真过程,而编译过程又非常耗费时间,由此,因重新编译会导致时间的浪费。
(2)目前的仿真测试过程中,在对表项进行配置时,是在仿真测试平台中以固定形式编写的,这样会导致配置表项的灵活性较低。此外,如果要更改表项的配置,就需要修改仿真代码,同样会存在因重新执行编译过程而导致浪费较多时间的问题;另外,把所有的表项的配置都编写在仿真环境中,会导致不清晰,体现不出重点,对后期维护也有一定的影响。
综上所述,当仿真验证过程中更改流程或更改表项时,如何避免重新编译而导致的时间的浪费,提高仿真验证效率是亟待解决的技术问题之一。
发明内容
本发明实施例提供一种仿真验证方法、装置和电子设备,用以解决现有技术采用的仿真验证方法中因更改流程或表项时需重新执行编译过程而导致时间的浪费问题。
第一方面,本发明实施例提供一种仿真验证方法,包括:
对设计代码和仿真代码进行编译后,获取所述仿真代码对应的配置文件;
解析所述配置文件得到所述仿真代码对应的配置信息,其中所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中;以及
根据所述配置信息对所述设计代码进行仿真验证。
较佳地,所述流程配置文件包含若干个流程配置操作指令,每一流程配置操作指令至少包括以下一项内容:所述仿真代码的参数名称和参数值、函数名称或任务名称。
进一步地,所述流程配置操作指令中包含的函数名称对应的函数存储于对设计代码和仿真代码进行编译后得到的可执行文件中,以及所述流程配置操作指令中包含的任务名称对应的实现任务的代码存储于对设计代码和仿真代码进行编译后得到的可执行文件中,其中,所述任务包含单个原子操作或由若干个原子操作组合得到的流程操作,所述原子操作包括读操作、写操作、等待操作、比较操作、强制force操作或恢复release操作。
较佳地,所述表项配置文件为配置文件生成器按照下述方法生成的:
获得描述表项数据类型的文件,所述描述表项数据类型的文件,用于定义表项中各个条目包含的参数的数据类型,所述描述表项数据类型的文件包含若干条描述表项数据类型的信息,每条信息包括以下至少一项内容:描述表项中各个条目包含的参数名称和参数的数据类型;以及
根据所述描述表项数据类型的文件,为每个条目包含的参数配置相应的参数值和配置模式;
根据为所有条目包含的参数配置的参数值和配置模式,以及所有条目的标识符生成所述表项配置文件。
较佳地,根据为所有条目包含的参数配置的参数值和配置模式,以及所有条目的标识符生成所述表项配置文件,具体包括:
以任一条目为基准,分别判断所述表项中除该条目以外的其他条目包含的、为任一参数配置的参数值和该参数的配置模式,与该条目包含的为该参数配置的参数值和该参数的配置模式是否相同;
如果相同,则对所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式不进行保存处理,只保留该条目包含的为该参数配置的参数值和该参数的配置模式;
如果不相同,则保留该条目包含的为该参数配置的参数值和该参数的配置模式,以及保留所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式;
根据所有条目包含的为保留的参数配置的参数值和保留的参数的配置模式,以及所有条目的标识符生成所述表项配置文件。
第二方面,本发明实施例提供一种仿真验证装置,包括:
获取单元,用于对设计代码和仿真代码进行编译后,获取所述仿真代码对应的配置文件;
解析单元,用于解析所述配置文件得到所述仿真代码对应的配置信息,其中所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中;
仿真验证单元,用于根据所述解析单元解析出的所述配置信息对所述设计代码进行仿真验证。
较佳地,所述流程配置文件包含若干个流程配置操作指令,每一流程配置操作指令至少包括以下一项内容:所述仿真代码的参数名称和参数值、函数名称或任务名称。
进一步地,所述流程配置操作指令中包含的函数名称对应的函数存储于对设计代码和仿真代码进行编译后得到的可执行文件中,以及所述流程配置操作指令中包含的任务名称对应的实现任务的代码存储于对设计代码和仿真代码进行编译后得到的可执行文件中,其中,所述任务包含单个原子操作或由若干个原子操作组合得到的流程操作,所述原子操作包括读操作、写操作、等待操作、比较操作、强制force操作或恢复release操作。
较佳地,所述表项配置文件为配置文件生成器按照下述方法生成的:获得描述表项数据类型的文件,所述描述表项数据类型的文件,用于定义表项中各个条目包含的参数的数据类型,所述描述表项数据类型的文件包含若干条描述表项数据类型的信息,每条信息包括以下至少一项内容:描述表项中各个条目包含的参数名称和参数的数据类型;以及根据所述描述表项数据类型的文件,为每个条目包含的参数配置相应的参数值和配置模式;根据为所有条目包含的参数配置的参数值和配置模式,以及所有条目的标识符生成所述表项配置文件。
进一步地,所述配置文件生成器,具体用于以任一条目为基准,分别判断所述表项中除该条目以外的其他条目包含的、为任一参数配置的参数值和该参数的配置模式,与该条目包含的为该参数配置的参数值和该参数的配置模式是否相同;如果相同,则对所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式不进行保存处理,只保留该条目包含的为该参数配置的参数值和该参数的配置模式;如果不相同,则保留该条目包含的为该参数配置的参数值和该参数的配置模式,以及保留所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式;根据所有条目包含的为保留的参数配置的参数值和保留的参数的配置模式,以及所有条目的标识符生成所述表项配置文件。
第三方面,本发明实施例提供一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行本发明提供的仿真验证方法。
第四方面,本发明提供一种电子设备,,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明提供的仿真验证方法。
第五方面,本发明实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,其中,当所述程序指令被计算机执行时,使所述计算机执行本发明提供的仿真验证方法。
本发明有益效果:
本发明实施例提供的仿真验证方法、装置和电子设备,对设计代码和仿真代码进行编译后,获取所述仿真代码对应的配置文件;解析所述配置文件得到所述仿真代码对应的配置信息,其中所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中;以及根据所述配置信息对所述设计代码进行仿真验证。采用本发明提供的方法,当仿真验证过程中更改流程或更改表项时,无需对设计代码执行重新编译过程,大大节省了仿真验证的时间,提高了仿真验证的效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明现有技术中基于验证环境的仿真验证结构示意图;
图2为本发明实施例一提供的仿真验证方法应用的仿真验证结构示意图;
图3a为本发明实施例一提供的仿真验证方法的流程示意图;
图3b为本发明实施例一提供的编译后的设计代码的仿真验证示意图;
图4a为本发明实施例二提供的流程配置文件对应的仿真验证方法的流程示意图;
图4b为本发明实施例二提供的任务名称cpu_move对应的实现任务的代码示意图;
图4c为本发明实施例二提供的任务名称cpu_read对应的实现任务的代码示意图;
图5为本发明实施例三提供的表项配置文件对应的仿真验证方法的流程示意图之一;
图6a为本发明实施例三提供的生成所述表项配置文件的方法的流程示意图;
图6b为本发明实施例三提供的描述表项数据类型的文件的示意图;
图6c为本发明实施例三提供的生成表项配置文件的方法的流程示意图之二;
图6d为本发明实施例三提供的表项配置文件的示意图;
图7为本发明实施例四提供的仿真验证装置的结构示意图;
图8为本发明实施例六提供的执行仿真验证方法的电子设备的结构示意图。
具体实施方式
本发明实施例提供一种仿真验证方法、装置和电子设备,用以解决现有技术采用的仿真验证方法中因更改流程或表项时需重新执行编译过程而导致浪费较多时间的问题。
需要说明的是,本发明实施例提供的仿真验证方法可以验证各种芯片的设计代码,通用性比较高,可移植性强。此外,执行本发明实施例提供的仿真验证方法的主体可以为PC机(Personal Computer,个人电脑),该PC机上安装有芯片的开发环境,如在PC机上安装有针对FPGA(Field Programmable Gate Array,现场可编程门阵列)的开发环境ISE软件等。
本发明提供的仿真验证方法的基本原理为:在对设计代码进行仿真验证时,首先对设计代码配置相应的仿真代码;待仿真代码配置成功后,当用户对设计代码的测试流程或表项内容进行更改时,只需将更改设计代码的测试流程或表项内容编写在配置文件中,所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中。当对设计代码进行仿真验证时,首先基于验证环境在该设计代码设定的存储位置处查找是否存在可执行文件,如果存在,则表明已对该设计代码和仿真代码执行编译处理,然后利用本发明提供的编译后的自编程组件包含的代码读取所述仿真代码对应的配置文件;再者,解析出所述配置文件中的配置信息,并根据解析出的配置信息对所述设计代码进行仿真验证,通过新增了独立于仿真代码的配置文件,由此可以避免因修改表项内容或测试流程重新执行编译过程的发生,也就是说针对设计代码只需要执行一次编译处理,即使对设计代码的测试流程或表项内容进行修改,无需再次执行编译处理,只需通过配置文件实现对设计代码的测试流程或表项内容的修改,并根据配置文件中的配置信息实现对设计代码的仿真验证,大大节省了对设计代码进行仿真验证的时间,提高了验证效率。
另外,如果基于验证环境在该设计代码设定的存储位置处未查找到设计代码的可执行文件时,则表明未对该设计代码执行编译处理,则对设计代码进行编译。此外,本发明提供了自编程组件,该自编程组件存储有原子操作,以及由若干个原子操作组合得到的流程操作和解析所述配置文件后得到的配置信息。因此,在执行编译处理时,需要编译的代码有设计代码,以及验证设计代码所需的仿真代码和自编程组件中实现读取配置文件的代码、和原子操作对应的代码等。待编译完成后,在利用编译后的自编程组件读取配置文件,然后解析出所述配置文件中的配置信息,再根据所述配置信息对所述设计代码进行仿真验证。
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
如图2所示,为本发明实施例一提供的仿真验证结构示意图,包括:测试平台Testbench、编译平台Compile和仿真验证平台Simulation Verification。其中,Testbench用于编写芯片设计代码DUT对应的仿真代码,本发明实施例中提供的Testbench中新增了一个自编程组件Programmer,该自编程组件内设置有本开发环境下应用到的所有基本操作指令和编译后的设计代码。Testbench中其他模块用于生成设计代码所需的仿真代码,与现有技术中Testbench中包含的模块的功能相同,在此不再赘述。
具体实施时,所述Programmer模块,集成了对于DUT(Device Under Test,被测器件)的设计代码的原子操作,比如读/写原子操作、等待操作、比较操作、强制force操作或恢复release操作等。
具体地,所述读/写原子操作可以为读/写所述设计代码包含的任一寄存器或memory(只读、只写或可读可写memory);所述强制操作是对所述设计代码保护的任两个模块间连接线的强制操作,如强制写“1”等;恢复操作,是对所述设计代码保护的任两个模块间连接线执行恢复操作。例如,所述设计代码包含的A和B两个模块,两模块间设置有连接线,在未执行强制操作下,B的输入值为A的输出值,当执行强制操作时,B的输入值为强制写入的值,不再为A的输出值;当执行恢复操作后,则B的输入值再次为A的输出值,不再为强制写入的值。
具体地,本发明实施例一提供的设计代码的仿真验证方法的验证原理为:当开发人员需要对设计代码的测试流程或表项内容进行更改时,只需要通过修改配置文件来修改测试流程和修改表项内容。然后本发明新增的、编译后的Programmer模块在读取所述配置文件后,解析所述配置文件中的配置信息,然后根据所述配置文件中的配置信息对设计代码进行仿真验证,由此可以避免当修改测试流程或表项内容时因重新执行编译过程而导致的时间的浪费问题。
较佳地,所述Programmer模块在获取配置文件后,还可以判断所述配置文件是否为空,如果不为空,则再按照上述方法对所述设计代码进行仿真验证;如果为空,则按照现有测试流程或现有的表项内容对所述设计代码进行仿真验证。
在执行本发明实施例提供的仿真验证方法时,可以按照图3a所示的流程执行,包括以下步骤:
S11、对设计代码和仿真代码进行编译后,获取所述仿真代码对应的配置文件。
具体实施时,所述设计代码可以但不限于为芯片的设计代码和软件的设计代码。
较佳地,在执行步骤S11时,可以基于设计代码的验证环境判断是否对所述设计代码和仿真代码执行编译处理,如果判断结果为是,则获取所述仿真代码的配置文件;否则对所述设计代码和仿真代码执行编译处理。具体地,所述验证环境可以理解为编写及验证所述设计代码和仿真代码的语言环境。
具体实施时,可以按照下述方法判断是否对所述设计代码和所述仿真代码执行编译处理,包括:
基于设计代码的验证环境,判断是否存在所述设计代码和所述仿真代码对应的可执行文件。
具体地,基于验证环境对设计代码进行仿真验证时,如果执行过编译处理则在该验证环境设定的存储文件中存储有可执行文件,如果找到该可执行文件时,则表明已对设计代码执行过编译处理。
S12、解析所述配置文件得到所述仿真代码对应的配置信息。
其中,所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中。
具体实施时,所述验证对象可以是存储单元,例如所述仿真代码中寄存器,还可以是构成所述设计代码的各个模块中任一模块。所述测试流程相应用于验证所述仿真代码中寄存器实现的功能,或者用于验证所述设计代码中各个模块实现的功能。
具体可参考图3b所示的获取配置文件的示意图,图3b为执行编译后获取所述仿真代码对应的配置文件,并根据解析配置文件中的配置信息对设计代码进行仿真验证的示意图,包括编译后的设计代码DUT和编译后的仿真代码,对生成器Generator生成的仿真代码执行编译处理后得到的编译后的仿真代码等。在确定过已对设计代码执行编译处理后,由图3b中提供的编译过的自编程组件Programmer获取所述仿真代码对应的配置文件,所述配置文件为图3b中的Configuration。
具体地,可以用简单易于理解的语言编写所述配置文件,但该语言为本发明中自编程组件能够识别的语言,可以预先约定好编写语言,从而可以提高配置文件的易读性。
较佳地,每次仿真验证时自编程组件都要读取配置文件,由于在对设计代码进行验证时,已设定了一个测试流程或已为设计代码的表项进行配置,如果仿真验证人员不需要更改测试流程或表项,则可以设置读取的配置文件为空,如果在获取配置文件后,判断出所述配置文件为空时,即表示按照所述仿真代码当前测试流程或当前表项内容对所述设计代码进行仿真验证。
如果判断出所述配置文件不为空时,则表明需要对当前测试流程或配置的表项进行更改,然后按照更改后的流程或表项对设计代码进行仿真验证。
具体地,利用预设规则解析所述配置文件得到所述仿真代码对应的配置信息。
另外,每次仿真验证时,在读取仿真代码和设计代码的可执行文件后,均读取配置文件,如果配置文件有更改则读取更改后的配置文件,如果配置文件则读取原有的配置文件。
S13、根据所述配置信息对所述设计代码进行仿真验证。
具体实施时,根据步骤S12解析出的所述配置信息更改所述仿真代码的测试流程或更改所述仿真代码的表项内容,然后按照更改后的测试流程和/或更改后的表项对所述设计代码进行仿真验证。在判断出已对设计代码执行编译处理后,利用编译后的Programmer读取配置文件,根据配置文件中解析出的配置信息对所述编译后的设计代码进行仿真验证,避免了当更改测试流程或更改表项内容时再次执行编译处理,进而节省了设计代码的仿真验证时间,提高仿真测试效率。
需要说明的是,在对设计代码进行仿真验证时,所述设计代码是编译后的设计代码,同样所述仿真代码也为编译后的仿真代码。
具体实施时,由于本发明Testbench中新增了自编程组件,因此在执行编译Compile时,除了对设计代码和仿真代码执行编译处理,还需要对自编程组件对应的代码进行编译,待编译完成后相应的存储文件中会存储可执行文件,表明编译完成。
待编译完成后再对所述设计代码进行仿真验证时,再按照步骤S11~S13的方法对所述设计代码进行仿真验证。
此外,由于本发明实施例一中涉及的配置文件包含流程配置文件和表项配置文件,后续详细介绍基于流程配置文件和表项配置文件分别对应的仿真验证流程。
本发明实施例一提供的仿真验证方法,首先基于设计代码的验证环境判断是否对所述设计代码和仿真代码执行编译处理;以及在判断结果为是时,获取所述仿真代码对应的配置文件;如果所述配置文件不为空,则解析所述配置文件得到所述仿真代码对应的配置信息,其中其中所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中;以及根据所述配置信息对所述设计代码进行仿真验证。采用本发明提供的方法,当仿真验证过程中更改流程或更改表项时,无需对设计代码执行重新编译过程,大大节省了仿真验证的时间,提高了仿真验证的效率。
实施例二
本发明实施例二在实施例一的基础上对基于流程配置文件的仿真验证方法进行详细说明,如图4a所示,为本发明实施例二提供的流程配置文件下的仿真验证方法的流程示意图,可以包括以下步骤:
S21、基于设计代码的验证环境判断是否对所述设计代码和仿真代码执行编译处理,如果是则执行步骤S22;否则执行步骤S28。
S22、获取所述仿真代码对应的流程配置文件。
具体实施时,所述流程配置文件包含若干个流程配置操作指令,每一流程配置操作指令至少包括以下一项内容:所述仿真代码的参数名称和参数值、函数名称或任务名称。
较佳地,所述流程配置操作指令中包含的函数名称对应的函数存储于对设计代码和仿真代码进行编译后得到的可执行文件中,以及所述流程配置操作指令中包含的任务名称对应的实现任务的代码存储于对设计代码和仿真代码进行编译后得到的可执行文件中,其中,所述任务包含单个原子操作或由若干个原子操作组合得到的流程操作。
具体实施时,当流程配置操作指令为:函数名称、所述仿真代码的参数名称和/或参数值时,则当读取并解析流程配置文件中的流程配置操作指令时,由于流程配置操作指令为仿真代码设计人员预先写入的,仿真代码设计人员已知该操作指令为函数操作指令,但自编程组件Progrmmer不知道读取的名称的属性,则需要确定该名称确实为函数名称,例如,可以预先在Progrmmer中存储两个列表,分别为函数名称列表和任务名称列表,然后将从流程配置文件中获取的名称分别在两个列表查找是否有一致的,如果在函数名称列表中查找到,则确定获取的名称为函数名称。然后再执行该函数名称的实际功能,此外,由于在执行函数时消耗的是CPU的时间,而并不消耗仿真验证时间,由此不会额外消耗仿真验证时间。
当流程配置操作指令为:任务名称、所述仿真代码的参数名称和/或参数值时,自编程组件Progrmmer同样也需要确定获取的名称为任务名称,即如果确定出在任务名称列表中查找到与获取的名称一致的名称,则确定从流程配置文件中获取的名称为任务名称,然后再在设计代码和仿真代码编译后得到的可执行文件中查找该任务名称对应的实现任务的代码,然后再根据任务名称后接的所述仿真代码的参数名称和参数值,对所述可执行文件中查找该任务名称对应的实现任务代码中、流程配置操作指令中指定的参数名称的参数值设置为该流程配置操作指令中设置的参数值。虽然执行任务时,例如对参数的赋值最终会写入到芯片中,因此会消耗仿真验证时间,但避免了重新执行编译的过程,相对来说大大节省的仿真验证时间。
需要说明的是,任务可以是一条原子操作,如读操作或写操作等;任务还可以是由若干个原子操作组合得到的流程操作,如该任务的流程操作由读操作、写操作、读操作和写操作等组成,其中该流程操作也在可执行文件中。
具体地,以函数名称为例,所述流程配置操作指令可以为:
(1)REG_WD ANA_CL:PORT:STACKING_CTRL 0xffff_ffff
该操作指令为写操作指令,其含义为:向寄存器ANA_CL:PORT:STACKING_CTRL写入全FFFF。
(2)REG_CMP ANA_CL:PORT:STACKING_CTRL 0x0000_0fff
该操作指令为比较操作指令,其含义为:读取寄存器ANA_CL:PORT:STACKING_CTRL的数值,然后判断该数值是否为0x0000_0fff,如果否则报错。
再者,以任务名称为例,通过修改TCAM流程配置文件,修改TCAM存储器的操作,其流程配置操作指令及含义分别为:
INI_TCAM TCAM_A;初始化TCAM
WR_TCAM TCAM_A 000FFF RAND;向TCAM存储器的地址000~地址FFF随机写入随机数
LOOKUP_TCAM TCAM_A RAND;判断随机写入TCAM的数值是否命中,进行逻辑查找TCAM_A
较佳地,所述设计代码或仿真代码的参数名称可以为寄存器名称或memory名称等。
上述例子中,REG_WD和REG_CMP为函数名称,INI_TCAM、WR_TCAM和LOOKUP_TCAM均为任务名称,ANA_CL:PORT:STACKING_CTRL为寄存器和TCAM_A为三态memory,上述各操作指令涉及的0fff、ffff为参数值,即ffff为寄存器ANA_CL:PORT:STACKING_CTRL中的数值。
具体地,所述函数名称对应的函数REG_WD等存储于对REG_WD对应的设计代码和仿真代码进行编译后得到的可执行文件中,以及任务名称INI_TCAM等对应的实现该任务的代码均存储于对INI_TCAM对应设计代码和仿真代码进行编译后得到的可执行文件中。
此外,所述任务名称对应的流程配置文件还可以为下述操作指令:
cpu_move CPU_MU E00 000 010RAND
cpu_read 0000 0FFF nc nc nc
具体地,上述操作指令中cpu_move和cpu_read为任务名称,其后CPU_MU为参数名称,cpu_move对应的实现任务的代码如图4b所示,以及cpu_read对应的实现任务的代码如图4c所示,其中图4b和图4c中的代码已在可执行文件中。
S23、判断所述流程配置文件是否为空,如果否则执行步骤S24;否则执行步骤S27。
具体实施时,可以参考实施例一中的描述,重复之处不再赘述。
S24、解析所述流程配置文件得到用于验证被验证对象实现的功能的测试流程的配置信息。
具体实施时,所述被验证对象位于所述设计代码中,可以验证所述设计代码中寄存器实现的功能,也可以验证设计代码包含的任一模块的功能。
S25、根据解析出的所述用于验证被验证对象实现的功能的测试流程的配置信息,更改所述仿真代码的测试流程。
例如,实施例一中对TCAM的操作:流程配置文件中将设计代码中的TCAM_A首先执行了初始化操作,然后又向TCAM_A的地址随机写满随机数,最后对TCAM_A执行了逻辑查找操作等,自编程组件在读取该流程配置文件后,按照流程配置文件中的配置信息对设计代码中的TCAM_A执行上述操作,以实现测试流程的更改。
S26、根据更改后的测试流程,对所述设计代码进行仿真验证。
具体实施时,在测试流程更改后,再按照现有技术利用测试用例对所述设计代码进行仿真验证。
S27、直接对所述设计代码进行仿真验证。
S28、基于所述设计代码的验证环境对所述设计代码和仿真代码执行编译处理,然后再执行步骤S22~S27的过程。
本发明实施例二提供的流程配置文件对应的仿真验证方法,首先基于设计代码的验证环境判断是否对所述设计代码和仿真代码执行编译处理,并在判断结果为是时,获取所述仿真代码对应的流程配置文件;在判断出所述流程配置文件不为空时,解析所述流程配置文件得到用于验证被验证对象实现的功能的测试流程的配置信息,并根据解析出的所述用于验证被验证对象实现的功能的测试流程的配置信息,更改所述仿真代码的测试流程,最后根据更改后的测试流程,对所述设计代码进行仿真验证。采用本发明实施例二提供的方法,当修改仿真代码的测试流程时,在确定出已对设计代码执行过编译处理后,无需再次执行编译过程,直接根据流程配置文件对所述设计代码进行仿真验证,有效得节省了仿真验证的时间,提高了验证环境的测试效率和验证的灵活性。
实施例三
本发明实施例三在实施例一的基础上对基于表项配置文件的仿真验证方法进行详细说明,如图5所示,为本发明实施例三提供的表项配置文件下的仿真验证方法的流程示意图。
需要说明的是,在芯片仿真测试过程中,为了避免因表项的配置而导致需要重新编译、耗费较长时间的问题的发生,本发明实施例提出将配置与仿真测试环境解耦,可以灵活、简便、清晰、高效地对表项进行配置。
需要说明的是,关于表项可以理解为:在芯片中,多个存储单元(例如寄存器)组成一组,多组这样的存储单元就组成了一个表项,其中表项中的每一组就可以称为一个条目。例如,在交换芯片中,每一个端口都有一套独自的配置(该配置需要多个存储单元来实现),那么所有端口的配置我们就称为一个表项,其中每个端口的配置称为一个条目。
具体地,存储单元可以是寄存器,或者存储器等,本发明实施例对此不进行限定。
具体实施时,本发明实施例三提供的表项配置文件对应的仿真验证方法可以包括以下步骤:
S31、基于设计代码的验证环境判断是否对所述设计代码和仿真代码执行编译处理;如果是则执行步骤S32;否则执行步骤S38。
S32、获取所述仿真代码对应的表项配置文件。
具体实施时,所述表项配置文件用于存储编写内容,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,以及每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中。
较佳地,所述表项配置文件为配置文件生成器按照图6a所示的方法生成的,可以包括以下步骤:
S41、获得描述表项数据类型的文件。
具体地,所述描述表项数据类型的文件,用于定义表项中各个条目包含的参数的数据类型,所述描述表项数据类型的文件包含若干条描述表项数据类型的信息,每条信息包括以下至少一项内容:描述表项中各个条目包含的参数名称和参数的数据类型。
具体实施时,所述各个条目包含的参数可以为验证对象,也可以为验证对象包含的参数。
具体实施时,描述表项数据类型的文件的内容可以参考图6b所示,图6b操作指令定义了表项中各个条目包含的参数的名称、参数的数据类型和函数名。如rand int m_index,m_index为参数名称,int表示该参数的类型为整型数值;再者rand bit[2:0]m_cmd,m_cmd为参数名称,该参数的类型为寄存器,且该寄存器的位宽为3位。
较佳地,描述表项中各个条目包含的参数的数据类型可以但不限于包括struct和class等。
S42、根据所述描述表项数据类型的文件,为每个条目包含的参数配置相应的参数值和配置模式。
具体实施时,根据所述描述表项数据类型的文件,为各个参数配置参数值和配置该参数的配置模式时,所述配置模式为配置任意参数的参数值的生成模式,如随机模式或固定模式,其中,所述随机模式为随机生成任意参数的参数值,但需要指定该参数值的随机范围;所述固定模式为生成任意参数的参数值为固定值。
以参数m_index为例说明,为该参数配置的参数值和配置模式可以为:m_index 01024,其中,“0”表示m_index的配置模式,以及“1024”表示m_index的参数值。
S43、根据为所有条目包含的参数配置的参数值和配置模式,以及所有条目的标识符生成所述表项配置文件。
具体实施时,当为描述表项数据类型的文件中定义的各个参数配置好参数值和配置模式后,由于表项由各个条目组成。为了区分各个条目还需为各个条目设置标识符,如表项包含8个条目,其条目的标识符分别为:TBL_IDX0~TBL_IDX 7。
在各个条目设定好标识符后,结合为所有条目包含的参数配置的参数值和配置模式生成表项配置文件。
具体实施时,每个条目包含的参数可以相同也可以不相同,但对于参数相同的,为了节省存储空间及使得生成的表项配置文件的清晰性,能够直接识别出表项各个条目中参数的区别,本发明实施例三提出针对各个条目中参数、参数值和配置模式相同的参数,只在一个条目中显示。只有不相同的参数才在各个条目中显示,由此可以保证生成的表项配置文件的易读性和清晰性。即在执行步骤S43时,配置文件生成器可以按照图6c所示的流程生成所述表项配置文件:
S431、以任一条目为基准,分别判断所述表项中除该条目以外的其他条目包含的、为任一参数配置的参数值和该参数的配置模式,与该条目包含的为该参数配置的参数值和该参数的配置模式是否相同,如果是则执行步骤S432;否则执行步骤S433。
具体实施时,以表项中包含8个条目(TBL_IDX0~TBL_IDX7)为例进行说明,上述基准条目可以为第一个条目TBL_IDX0,然后分别判断标识符为TBL_IDX1~TBL_IDX7的条目包含的为任一参数配置的参数值和该参数的配置模式,与标识符为TBL_IDX0的条目包含的为该参数配置的参数值和该参数的配置模式是否相同。
例如,TBL_IDX0条目包含如图6b中第8~23行所示的参数,以参数m_index为例进行说明,分别判断TBL_IDX1~TBL_IDX7的条目是否包含m_index参数,如果判断再判断m_index参数的配置模式和参数值是否与TBL_IDX0条目包含的m_index的配置模式和参数值是否相同,如果相同则执行步骤S432;如果不相同则执行步骤S433。
按照上述方法可以再判断TBL_IDX1~TBL_IDX7中其他参数的参数值和配置模式与TBL_IDX0条目包含的其他参数的参数值和配置模式是否相同。
S432、对所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式不进行保存处理,只保留该条目包含的为该参数配置的参数值和该参数的配置模式。
具体实施时,在步骤S431判断出TBL_IDX1~TBL_IDX7的条目包含的m_index参数的配置模式和参数值,与TBL_IDX0条目包含的m_index的配置模式和参数值相同时,只保留TBL_IDX0条目包含的m_index的配置模式和参数值,对所述表项中TBL_IDX1~TBL_IDX7条目包含的m_index的参数值和配置模式不进行保存处理。
S433、保留该条目包含的为该参数配置的参数值和该参数的配置模式,以及保留所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式。
具体实施时,在步骤S431判断出TBL_IDX1~TBL_IDX7的条目包含的m_index参数的配置模式和参数值,与TBL_IDX0条目包含的m_index的配置模式和参数值不相同时,则不仅保留TBL_IDX0条目包含的m_index的参数值和配置模式,还保留TBL_IDX1~TBL_IDX7的条目包含的m_index参数的参数值和配置模式。
S434、根据所有条目包含的为保留的参数配置的参数值和保留的参数的配置模式,以及所有条目的标识符生成所述表项配置文件。
根据步骤S432和S433保留的所有参数的参数值和参数的配置模式,及各个条目的标识符生成图6d所示的表项配置文件。由于TBL_IDX1~TBL_IDX7条目包含的、图6b中第8~第23行所示的参数中,除m_index参数的参数值与配置模式与TBL_IDX0条目不相同,其他都相同,由此在TBL_IDX0保留第4行~第23行所示的参数、参数值和参数的配置模式;以及在TBL_IDX1~TBL_IDX7条目只保留m_index参数的参数值与配置模式,其他参数不予保留,也就是说对应表项配置文件中各条目中参数及其参数值和配置模式相同的只描述一次,其它条目中只描述不同的参数及其参数值和配置模式,由此可以节省存储空间并使得生成的表项配置文件清晰度较高。
较佳地,所述描述表项中各个条目包含的参数名称包括所述仿真代码的参数名称;以及所述描述表项中各个条目包含的参数的数据类型包括所述仿真代码的参数的数据类型。
由配置文件生成器生成表项配置文件时,不仅验证人员可以利用配置文件生成器生成表项配置文件,其他工作人员也可以利用配置文件生成器生成所述表项配置文件,进而实现对设计代码的表项进行配置。不仅使得配置直观和归一化,同时还减少了验证人员和设计人员之间的沟通成本。
S33、判断所述表项配置文件是否为空,如果否则执行步骤S34;否则执行步骤S37。
S34、解析所述表项配置文件得到所述验证对象的配置信息。
具体实施时,在解析出所述验证对象的配置信息后,可以将其保存在预设的数据结构中,例如该数据结构可以但不限于为array型和queue型等。并将保存的配置信息转换成type_T型,在仿真验证时直接可以利用转换后的type_T型数据对所述仿真代码的表项进行配置,然后将根据配置后的表项,对所述设计代码进行仿真验证。
S35、根据解析出的所述验证对象的配置信息,更改所述仿真代码的表项内容。
S36、根据更改后的表项内容,对所述设计代码进行仿真验证。
S37、直接对所述设计代码进行仿真验证。
S38、基于所述设计代码的验证环境对所述设计代码和仿真代码执行编译处理,然后再执行步骤S32~S37的过程。
采用本发明实施例三提供的方法,可以将对表项的配置与对设计代码的仿真验证进行解耦,可以随意更改表项配置文件进而对设计代码进行仿真验证,无需重新执行编译处理,有效提高测试效率。
本发明实施例三提供的表项配置文件对应的仿真验证方法,首先基于设计代码的验证环境判断是否对所述设计代码和仿真代码执行编译处理,并在判断结果为是时,获取所述仿真代码对应的表项配置文件;且在判断出所述表项配置文件不为空时,解析所述表项配置文件得到所述验证对象的配置信息,并根据解析出的所述验证对象的配置信息,更改所述仿真代码的表项内容;然后根据更改后的表项内容,对所述设计代码进行仿真验证。采用本发明实施例三提供的方法,当修改仿真代码的表项内容时,在确定出已对设计代码和仿真代码执行过编译处理后,无需再次执行编译过程,直接根据表项配置文件对所述设计代码进行仿真验证,有效得节省了仿真验证的时间,提高了验证环境的测试效率和验证的灵活性。
实施例四
基于同一发明构思,本发明实施例中还提供了一种仿真验证装置,由于上述装置解决问题的原理与仿真验证方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图7所示,为本发明实施例四提供的仿真验证装置的结构示意图,包括:获取单元51、解析单元52和仿真验证单元53,其中:
获取单元51,用于对设计代码和仿真代码进行编译后,获取所述仿真代码对应的配置文件;
解析单元52,用于解析所述配置文件得到所述仿真代码对应的配置信息,其中所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中;
仿真验证单元53,用于根据所述解析单元52解析出的所述配置信息对所述设计代码进行仿真验证。
具体实施时,所述配置文件包括流程配置文件,以及
所述解析单元52,具体用于解析所述流程配置文件得到更改所述仿真代码测试流程的配置信息;
所述仿真验证单元53,具体用于根据所述解析单元52解析出的所述更改所述仿真代码测试流程的配置信息,更改所述仿真代码的测试流程;并根据更改后的测试流程,对所述设计代码进行仿真验证。
较佳地,所述配置文件还包括表项配置文件,以及
所述解析单元52,还用于解析所述表项配置文件得到更改所述仿真代码表项内容的配置信息;
所述仿真验证单元53,还用于根据所述解析单元52解析出的所述更改所述仿真代码表项内容的配置信息,更改所述仿真代码的表项内容;并根据更改后的表项内容,对所述设计代码进行仿真验证。
进一步地,所述流程配置文件包含若干个流程配置操作指令,每一流程配置操作指令至少包括以下一项内容:所述仿真代码的参数名称和参数值、函数名称或任务名称。
较佳地,所述流程配置操作指令中包含的函数名称对应的函数存储于对设计代码和仿真代码进行编译后得到的可执行文件中,以及所述流程配置操作指令中包含的任务名称对应的实现任务的代码存储于对设计代码和仿真代码进行编译后得到的可执行文件中,其中,所述任务包含单个原子操作或由若干个原子操作组合得到的流程操作,所述原子操作包括读操作、写操作、等待操作、比较操作、强制force操作或恢复release操作。
进一步地,所述表项配置文件为配置文件生成器按照下述方法生成的:获得描述表项数据类型的文件,所述描述表项数据类型的文件,用于定义表项中各个条目包含的参数的数据类型,所述描述表项数据类型的文件包含若干条描述表项数据类型的信息,每条信息包括以下至少一项内容:描述表项中各个条目包含的参数名称和参数的数据类型;以及根据所述描述表项数据类型的文件,为每个条目包含的参数配置相应的参数值和配置模式;根据为所有条目包含的参数配置的参数值和配置模式,以及所有条目的标识符生成所述表项配置文件。
较佳地,所述配置文件生成器,具体用于以任一条目为基准,分别判断所述表项中除该条目以外的其他条目包含的、为任一参数配置的参数值和该参数的配置模式,与该条目包含的为该参数配置的参数值和该参数的配置模式是否相同;如果相同,则对所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式不进行保存处理,只保留该条目包含的为该参数配置的参数值和该参数的配置模式;如果不相同,则保留该条目包含的为该参数配置的参数值和该参数的配置模式,以及保留所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式;根据所有条目包含的为保留的参数配置的参数值和保留的参数的配置模式,以及所有条目的标识符生成所述表项配置文件。
优选地,所述描述表项中各个条目包含的参数名称包括所述仿真代码的参数名称;以及所述描述表项中各个条目包含的参数的数据类型包括所述仿真代码的参数的数据类型。
具体实施时,所述获取单元51,具体用于基于设计代码的验证环境,判断是否存在所述设计代码和仿真代码对应的可执行文件,在判断结果为是时,获取所述仿真代码的配置文件。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。例如,本发明实施例四提供的仿真验证装置可以设置于计算机中,由计算机完成对设计代码的仿真验证。
实施例五
本申请实施例五提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的仿真验证方法。
实施例六
图8是本发明实施例六提供的实施仿真验证方法的电子设备的硬件结构示意图,如图8所示,该电子设备包括:
一个或多个处理器610以及存储器620,图8中以一个处理器610为例。
执行仿真验证方法的电子设备还可以包括:输入装置630和输出装置640。
处理器610、存储器620、输入装置630和输出装置640可以通过总线或者其他方式连接,图8中以通过总线连接为例。
存储器620作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的仿真验证方法对应的程序指令/模块/单元(例如,附图7所示的获取单元51、解析单元52和仿真验证单元53)。处理器610通过运行存储在存储器620中的非易失性软件程序、指令以及模块/单元,从而执行服务器或者智能终端的各种功能应用以及数据处理,即实现上述方法实施例仿真验证方法。
存储器620可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据仿真验证装置的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器620可选包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至仿真验证装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可接收输入的数字或字符信息,以及产生与仿真验证装置的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器620中,当被所述一个或者多个处理器610执行时,执行上述任意方法实施例中的仿真验证方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
实施例七
本申请实施例七提供了一种计算机程序产品,其中,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,其中,当所述程序指令被计算机执行时,使所述计算机执行本申请上述任意方法实施例中仿真验证方法。
本发明实施例提供的仿真验证方法、装置和电子设备,对设计代码和仿真代码进行编译后,获取所述仿真代码对应的配置文件;解析所述配置文件得到所述仿真代码对应的配置信息,其中所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中;以及根据所述配置信息对所述设计代码进行仿真验证。采用本发明提供的方法,当仿真验证过程中更改流程或更改表项时,无需对设计代码执行重新编译过程,大大节省了仿真验证的时间,提高了仿真验证的效率。
本申请的实施例所提供的仿真验证装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要仿真验证装置具有上述功能,都应该在本申请的保护范围之内。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种仿真验证方法,其特征在于,包括:
对设计代码和仿真代码进行编译后,获取所述仿真代码对应的配置文件;
解析所述配置文件得到所述仿真代码对应的配置信息,其中所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中;以及
根据所述配置信息对所述设计代码进行仿真验证;
所述表项配置文件为配置文件生成器按照下述方法生成的:
获得描述表项数据类型的文件,所述描述表项数据类型的文件,用于定义表项中各个条目包含的参数的数据类型,所述描述表项数据类型的文件包含若干条描述表项数据类型的信息,每条信息包括以下至少一项内容:描述表项中各个条目包含的参数名称和参数的数据类型;以及
根据所述描述表项数据类型的文件,为每个条目包含的参数配置相应的参数值和配置模式;
根据为所有条目包含的参数配置的参数值和配置模式,以及所有条目的标识符生成所述表项配置文件。
2.如权利要求1所述的方法,其特征在于,所述流程配置文件包含若干个流程配置操作指令,每一流程配置操作指令至少包括以下一项内容:所述仿真代码的参数名称和参数值、函数名称或任务名称。
3.如权利要求2所述的方法,其特征在于,所述流程配置操作指令中包含的函数名称对应的函数存储于对设计代码和仿真代码进行编译后得到的可执行文件中,以及所述流程配置操作指令中包含的任务名称对应的实现任务的代码存储于对设计代码和仿真代码进行编译后得到的可执行文件中,其中,所述任务包含单个原子操作或由若干个原子操作组合得到的流程操作,所述原子操作包括读操作、写操作、等待操作、比较操作、强制force操作或恢复release操作。
4.如权利要求1所述的方法,其特征在于,根据为所有条目包含的参数配置的参数值和配置模式,以及所有条目的标识符生成所述表项配置文件,具体包括:
以任一条目为基准,分别判断所述表项中除该条目以外的其他条目包含的、为任一参数配置的参数值和该参数的配置模式,与该条目包含的为该参数配置的参数值和该参数的配置模式是否相同;
如果相同,则对所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式不进行保存处理,只保留该条目包含的为该参数配置的参数值和该参数的配置模式;
如果不相同,则保留该条目包含的为该参数配置的参数值和该参数的配置模式,以及保留所述表项中除该条目以外的其他条目包含的为该参数配置的参数值和该参数的配置模式;
根据所有条目包含的为保留的参数配置的参数值和保留的参数的配置模式,以及所有条目的标识符生成所述表项配置文件。
5.一种仿真验证装置,其特征在于,包括:
获取单元,用于对设计代码和仿真代码进行编译后,获取所述仿真代码对应的配置文件;
解析单元,用于解析所述配置文件得到所述仿真代码对应的配置信息,其中所述配置文件独立于所述仿真代码,所述配置文件包含用于存储测试流程的流程配置文件,和/或用于存储表项内容的表项配置文件,所述测试流程用于验证被验证对象实现的功能,所述表项内容包括所述验证对象的配置信息,所述表项包含若干个条目,每一条目包含若干个所述验证对象,所述验证对象位于所述设计代码中;
仿真验证单元,用于根据所述解析单元解析出的所述配置信息对所述设计代码进行仿真验证;
所述表项配置文件为配置文件生成器按照下述方法生成的:
获得描述表项数据类型的文件,所述描述表项数据类型的文件,用于定义表项中各个条目包含的参数的数据类型,所述描述表项数据类型的文件包含若干条描述表项数据类型的信息,每条信息包括以下至少一项内容:描述表项中各个条目包含的参数名称和参数的数据类型;以及
根据所述描述表项数据类型的文件,为每个条目包含的参数配置相应的参数值和配置模式;
根据为所有条目包含的参数配置的参数值和配置模式,以及所有条目的标识符生成所述表项配置文件。
6.如权利要求5所述的装置,其特征在于,所述流程配置文件包含若干个流程配置操作指令,每一流程配置操作指令至少包括以下一项内容:所述仿真代码的参数名称和参数值、函数名称或任务名称;所述流程配置操作指令中包含的函数名称对应的函数存储于对设计代码和仿真代码进行编译后得到的可执行文件中,以及所述流程配置操作指令中包含的任务名称对应的实现任务的代码存储于对设计代码和仿真代码进行编译后得到的可执行文件中,其中,所述任务包含单个原子操作或由若干个原子操作组合得到的流程操作,所述原子操作包括读操作、写操作、等待操作、比较操作、强制force操作或恢复release操作。
7.一种非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令用于执行如权利要求1至4任一权利要求所述的方法。
8.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至4任一权利要求所述的方法。
CN201710534427.3A 2017-07-03 2017-07-03 一种仿真验证方法、装置和电子设备 Active CN107480327B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710534427.3A CN107480327B (zh) 2017-07-03 2017-07-03 一种仿真验证方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710534427.3A CN107480327B (zh) 2017-07-03 2017-07-03 一种仿真验证方法、装置和电子设备

Publications (2)

Publication Number Publication Date
CN107480327A CN107480327A (zh) 2017-12-15
CN107480327B true CN107480327B (zh) 2020-11-13

Family

ID=60595365

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710534427.3A Active CN107480327B (zh) 2017-07-03 2017-07-03 一种仿真验证方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN107480327B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018951B (zh) * 2018-01-10 2022-12-27 武汉斗鱼网络科技有限公司 一种js代码的测试方法、存储介质、设备和系统
CN110018952B (zh) * 2018-01-10 2022-12-27 武汉斗鱼网络科技有限公司 一种js代码的测试方法、存储介质、设备和系统
CN110018953B (zh) * 2018-01-10 2022-12-23 武汉斗鱼网络科技有限公司 使用python测试JS代码的方法、存储介质、设备和系统
CN108616387B (zh) * 2018-03-30 2021-02-02 北京润科通用技术有限公司 一种基于afdx总线的虚拟终端的配置方法及装置
CN110471782B (zh) * 2018-05-09 2023-04-07 杭州海康汽车技术有限公司 一种配置信息一致性处理方法、装置及电子设备
CN110413464B (zh) * 2019-07-12 2023-10-27 杭州迪普科技股份有限公司 一种配置表项测试方法、系统
CN111859833B (zh) * 2020-07-22 2024-07-05 中国人民解放军国防科技大学 可配置系统级验证环境构造方法、系统及介质
CN113204939A (zh) * 2021-04-29 2021-08-03 山东华芯半导体有限公司 一种全芯片仿真验证方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149700A (zh) * 2006-09-19 2008-03-26 中兴通讯股份有限公司 通过配置文件实现命令显示的方法
CN102880474A (zh) * 2012-10-09 2013-01-16 无锡江南计算技术研究所 并行源代码生成、编译及驱动执行的测试方法
CN105608258A (zh) * 2015-12-16 2016-05-25 苏州同元软控信息技术有限公司 一种基于模型的系统设计及信息流可视化仿真系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149700A (zh) * 2006-09-19 2008-03-26 中兴通讯股份有限公司 通过配置文件实现命令显示的方法
CN102880474A (zh) * 2012-10-09 2013-01-16 无锡江南计算技术研究所 并行源代码生成、编译及驱动执行的测试方法
CN105608258A (zh) * 2015-12-16 2016-05-25 苏州同元软控信息技术有限公司 一种基于模型的系统设计及信息流可视化仿真系统及方法

Also Published As

Publication number Publication date
CN107480327A (zh) 2017-12-15

Similar Documents

Publication Publication Date Title
CN107480327B (zh) 一种仿真验证方法、装置和电子设备
CN107436762B (zh) 一种寄存器代码文件生成方法、装置和电子设备
CN106940428B (zh) 芯片验证方法、装置及系统
EP2706459B1 (en) Apparatus and method for validating a compiler for a reconfigurable processor
CN112486863B (zh) 软件虚拟仿真方法、装置和电子设备
US10380283B2 (en) Functional verification with machine learning
JP5004566B2 (ja) 設計を検証するシステム
CN113901745A (zh) 芯片测试方法、装置、电子设备及计算机可读存储介质
JP2017084082A (ja) シミュレーション装置、試験シナリオファイル作成方法、及び試験シナリオファイルを用いた試験方法
US9690681B1 (en) Method and system for automatically generating executable system-level tests
JP2002099584A (ja) 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体
CN112286750A (zh) 一种gpio验证方法、装置、电子设备和介质
CN108228965B (zh) 一种存储单元的仿真验证方法、装置和设备
CN117112447B (zh) 一种数据传输方法、装置、电子设备及可读存储介质
CN102331961A (zh) 并行模拟多个处理器的方法及系统、调度器
CN112434478B (zh) 仿真逻辑系统设计的虚拟接口的方法及相关设备
CN109783837A (zh) 仿真设备、仿真系统、仿真方法和仿真程序
CN113919158A (zh) 一种用于飞行控制面板的仿真方法、装置及存储介质
US9280627B1 (en) GUI based verification at multiple abstraction levels
CN117435483A (zh) 基于Formal工具的仿真验证激励生成方法、装置、介质及终端
CN117494407A (zh) 一种加速中央处理单元验证的方法及计算设备
Karmore et al. Universal methodology for embedded system testing
CN108334313A (zh) 用于大型soc研发的持续集成方法、装置及代码管理系统
CN110968342B (zh) 一种版本比对方法、装置及系统
CN100527138C (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