CN116861829A - 用于定位逻辑系统设计中错误的方法、电子设备 - Google Patents
用于定位逻辑系统设计中错误的方法、电子设备 Download PDFInfo
- Publication number
- CN116861829A CN116861829A CN202310878806.XA CN202310878806A CN116861829A CN 116861829 A CN116861829 A CN 116861829A CN 202310878806 A CN202310878806 A CN 202310878806A CN 116861829 A CN116861829 A CN 116861829A
- Authority
- CN
- China
- Prior art keywords
- module
- system design
- logic system
- modules
- formal verification
- 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
Links
- 238000013461 design Methods 0.000 title claims abstract description 169
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012795 verification Methods 0.000 claims abstract description 143
- 238000013515 script Methods 0.000 claims abstract description 92
- 238000004088 simulation Methods 0.000 claims description 45
- 238000012360 testing method Methods 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 238000005457 optimization Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 235000000332 black box Nutrition 0.000 description 4
- 244000085682 black box Species 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000543370 Galax Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本申请提供一种用于定位逻辑系统设计中错误的方法、电子设备,所述方法包括:读取目标逻辑系统设计,所述目标逻辑系统设计包括多个模块,所述目标逻辑系统设计从参考逻辑系统设计修改而来,所述参考逻辑系统设计包括与所述多个模块分别对应的多个参考模块;为所述多个模块分别生成多个形式化验证脚本,所述多个形式化验证脚本用于分别比较所述多个模块和所述多个参考模块;执行所述多个形式化验证脚本以对所述多个模块进行形式化验证;根据所述多个模块的形式化验证结果定位所述目标逻辑系统设计的错误。通过上述方式,本申请无需人工定位错误,能够提高定位错误的效率。
Description
技术领域
本申请涉及计算机软件技术领域,尤其涉及一种用于定位逻辑系统设计中错误的方法、电子设备。
背景技术
在芯片设计的验证领域,仿真可以是指将逻辑系统设计进行编译之后使用仿真工具运行,以对设计的各种功能进行仿真测试。设计可以是,例如,用于供专门应用的集成电路(ApplicationSpecificIntegratedCircuit,简称ASIC)或者片上系统芯片(System-On-Chip,简称SOC)的设计。
在设计进行修改后,通常需要对修改后的设计进行仿真测试,而在仿真测试的过程中,在设计出现错误时,需要定位出现错误的具体的模块。传统技术中,通常使用特定的测试用例去测试设计,根据出现的错误,从而人工定位引发错误的具体模块。然而,伴随着设计的规模越发庞大,一个设计通常包括数量巨大的多个模块,通过人工定位的错误的方式效率较低。
发明内容
本申请的第一方面提供一种用于定位逻辑系统设计中错误的方法,所述方法包括:读取目标逻辑系统设计,所述目标逻辑系统设计包括多个模块,所述目标逻辑系统设计从参考逻辑系统设计修改而来,所述参考逻辑系统设计包括与所述多个模块分别对应的多个参考模块;
为所述多个模块分别生成多个形式化验证脚本,所述多个形式化验证脚本用于分别比较所述多个模块和所述多个参考模块;
执行所述多个形式化验证脚本以对所述多个模块进行形式化验证;
根据所述多个模块的形式化验证结果定位所述目标逻辑系统设计的错误。
本申请的第二方面提供一种电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行所述一组指令以使得所述电子设备执行如第一方面所述的方法。
本申请的第三方面提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使所述计算机执行如第一方面所述的方法。
本申请提供的一种用于定位逻辑系统设计中错误的方法,将目标逻辑系统设计中的多个模块分别生成多个形式化验证脚本,进而执行多个形式化验证脚本对多个模块进行形式化验证。在设计出现错误时,能够将定位目标逻辑系统设计的过程,拆分为对其中每个模块的进行形式化验证的过程。进而根据每个模块的形式化验证结果来定位目标逻辑系统设计的错误,形式化验证脚本的过程无需人工执行,并且仅根据形式化验证的结果即可定位目标逻辑系统设计的错误,无需人工定位错误,能够提高定位错误的效率。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本申请实施例的示例性电子设备的结构示意图;
图2A示出了根据本申请实施例的示例性仿真系统的示意图;
图2B示出了根据本申请实施例的示例性编译器的示意图;
图3A示出了根据本申请实施例的参考逻辑系统设计和目标逻辑系统之间的关系的示意图;
图3B示出了根据本申请实施例的形式化验证脚本示意图;
图4示出了根据本申请实施例的目标逻辑系统设计的结构树;
图5示出了根据本申请实施例的并行执行形式化验证脚本的示意图;
图6示出了根据本申请实施例的示例性一种用于定位逻辑系统设计中错误的方法的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
传统技术中,定位设计的错误的方式通常是利用验证工具,例如验证脚本。在使用验证脚本对设计进行定位错误时,会根据对整个设计进行验证,从而定位出该设计的错误。然而,由于设计通常包含的内容非常多,因此对整个设计进行验证时,会导致效率较低,定位设计错误时间较长,会影响芯片设计的其他过程,实用性较差。
图1示出了根据本申请实施例的电子设备100的结构示意图。电子设备100可以是运行仿真系统的电子设备。如图1所示,电子设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中,处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在电子设备内部的通信连接。
处理器102可以是中央处理器(CentralProcessingUnit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(ApplicationSpecificIntegrated Circuit,ASIC)、或者一个或多个集成电路。处理器102可以用于执行与本申请描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。在一些实施例中,用于仿真测试设计的仿真测试系统可以是存储器104中存储的计算机程序。如图1所示,存储器存储的数据可以包括程序指令(例如,用于实现本申请的用于定位逻辑系统设计中错误的方法的程序指令)以及要处理的数据(例如,存储器可以存储在编译过程产生的临时代码)。处理器102也可以访问存储器存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述电子设备架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该电子设备架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述电子设备架构中也可以仅包含实现本申请实施例方案所必需的组件,而不必包含图中所示的全部组件。
图2A示出了根据本公开实施例的示例性仿真工具200的示意图。仿真工具200可以是运行在电子设备100上的计算机程序。
在芯片设计领域,通常可以利用仿真工具对一个设计进行仿真。仿真工具例如可以是芯华章科技股份有限公司出品的GalaxSim仿真工具。图2A示出的示例性仿真工具200可以包括编译器210和仿真器220。编译器210可以接收源代码204(例如,VHDL、Verilog、SystemVerilog等硬件描述语言),并编译为执行代码206(例如,机器码、汇编代码、软件代码等)。可以理解的是,逻辑系统设计的描述可以是以硬件描述语言(HDL)、寄存器传输级(RegisterTransferLevel,RTL)语言、二进制代码、汇编代码、或机器码等描述的。仿真器220可以根据执行代码206进行仿真,并将仿真结果208输出。例如,仿真工具200可以将仿真结果208经由图1的外围接口108输出到输出设备上(例如,显示在显示器上)。
图2B为本申请实施例的示例性编译器210的示意图。如图2B所示,编译器210可以包括前端212、中端214以及后端216。
前端212可以用于根据具体的源语言来分析源代码的词法、语法、语义。
在源代码的词法、语法、语义分析完成后,中端214可以将源代码转换为中间表示(或中间代码),并可以优化该中间表示。中间语言(中间代码)是一种面向语法,是易于翻译成目标程序的源代码的等效内部表示代码。其可理解性及易于生成执行代码的程度介于源代码和执行代码之间。常用的中间代码有逆波兰表示、四元式、三元式和树表示等。例如,中端214可以移除无用的代码、移除不可访问的代码、清除未使用的变量等。优化可以包括机器相关的优化和机器无关的优化。其中,机器相关的优化,例如,可以是对测试平台(Testbench,TB)的优化,并可以利用一些测试平台的特性来帮助优化。机器无关的优化,例如,可以是待测设计(DesignUnderTest,DUT)的优化。优化后的中间表示则可以被传递给后端126进行进一步处理。
后端216可以根据目标处理器(例如,图1的处理器102)的架构来进一步优化中间表示,并生成执行代码。通常,执行代码是机器码。
可以理解的是,编译器的结构不限于图2B的示例。例如,前端212和中端214可以被合称为编译器的前端。
编译器210可以基于待编译的计算机代码来生成执行代码。待编译的计算机代码又可以称为源代码,例如编写的逻辑系统设计。通常,编写源代码的源语言是高级编程语言。高级编程语言可以是上述软件编程语言或硬件编程语言。执行代码则可以是例如汇编代码、机器码等。通常的,编译器210可以存储在图1所示的存储器104中,并且由处理器102执行,以将逻辑系统设计编译为执行代码。编译器210可以将逻辑系统设计的描述从高级语言描述(例如,HDL语言)转换为更低级的描述(例如,RTL语言或二进制代码),从而使得底层硬件可以运行逻辑系统设计。
如上所述,传统技术中定位设计中错误的方式效率较低。有鉴于此,本申请提出一种用于定位逻辑系统设计中错误的方法。
图3A示出了根据本申请实施例的参考逻辑系统设计和目标逻辑系统之间的关系的示意图。
在一些实施例中,参考逻辑系统设计320可以是芯片设计的一部分或者完整设计。参考逻辑系统设计320可以是经过验证,并且被认为是正确的设计。
由于市场需求的变化,芯片设计经常需要进行修改和迭代。而对芯片设计的任何修改都可能导致芯片设计出现设计错误,甚至一些没有被修改的模块都会因为其他模块的修改而暴露出隐藏的设计错误。如何快速定位这些设计错误是一个亟待解决的技术问题。
用户可以从主机的存储器或者云端来获取参考逻辑系统设计320以及参考逻辑系统设计320的仿真波形数据。如图3A所示,参考逻辑系统设计320中可以包括参考模块322、参考模块324、参考模块326。可以理解的是,参考模块322-326可以进一步包括子模块。用户可以对参考逻辑系统设计320进行修改得到目标逻辑系统设计330。由于参考逻辑系统320中存在多个参考模块(参考模块322、参考模块324、参考模块326),用户可以修改参考逻辑系统设计320中一个或者多个参考模块,得到目标逻辑系统设计。用户也可以修改参考逻辑系统设计320中的其他内容,得到目标逻辑系统设计。而得到的目标逻辑系统设计中通常也会存在多个模块,如图3A中的模块332、模块334、模块336。由于目标逻辑系统设计330是由参考逻辑系统设计320修改得到的,所以多个模块332-336可以分别与多个参考模块322-326相对应。如图3A中,模块332可以和参考模块322相对应,模块334可以和参考模块324相对应。模块336可以和参考模块326相对应。得到目标逻辑系统设计330后,可以对目标逻辑系统设计330进行仿真测试,得到目标逻辑系统设计330相对应的仿真测试结果(包括仿真波形数据)。当仿真测试结果未通过时,为了能够定位目标逻辑系统设计330中哪里出现了错误,可以通过读取设计的工具,例如vSyn或者Vivado等工具读取目标逻辑系统设计330。
在一些实施例中,读取到目标逻辑系统设计330以及对应的仿真测试结果之后,需要定位目标逻辑系统设计330是否出现错误。传统的根据仿真波形数据过于耗费人工,效率非常低,急需新的方法来加速验证。
本申请的发明人基于EDA工具上云以及不限量许可证等新技术,提出了利用形式化验证来加速错定定位的新技术方案。
利用等效性校验来确定两个模块是否等价并非新技术。但是,现有的等效性校验具有一些固有的缺陷。首先,等效性校验作为形式化验证的一种,只能运用于较小的逻辑系统设计,无法直接被运用于大规模的逻辑系统设计。其次,现有的等效性校验工具仅支持单许可证单线程运行。这意味着用户采购一个许可证就只能单线程运行一个等效性校验。由于大规模的逻辑系统设计都具有数量极为巨大的模块数量,现有的运行方式是无法在可以接受的时间内完成整个逻辑系统设计的验证的。
鉴于此,本申请实施例可以为目标逻辑系统设计330中的多个模块(如图3A中模块332、模块334、模块336)分别生成多个对应的形式化验证脚本。利用每个形式化验证脚本来并行调用等效性校验具来比较每个模块和参考模块。形式化验证脚本可以为利用python语言编写而成的脚本。
图3B示出了根据本申请实施例的形式化验证脚本示意图。
在一些实施例中,如图3B所示,目标逻辑系统设计330中存在模块332、模块334、模块336。可以分别为模块332、模块334、模块336生成对应的形式化验证脚本342、形式化验证脚本344和形式化验证脚本346。由于模块332可以和参考模块322相对应,模块334可以和参考模块324相对应。模块336可以和参考模块326相对应。因此,可以利用形式化验证脚本342比较模块332和参考模块322,利用形式化验证脚本344比较模块334和参考模块324,以及利用形式化验证脚本346比较模块336和参考模块326。
形式化验证脚本(例如,342-346)可以用于调用等效性校验工具以形式化验证的方式去比较目标模块和参考模块是否等价。这样,目标模块无需动态仿真就可以得出是否与参考模块等效的结论。由于参考模块是参考逻辑系统设计320的一部分,而参考逻辑系统设计320又通常被认为是正确的设计,所以如果目标模块与参考模块等价,则可以认为目标模块是正确的设计。
因此,在得到形式化验证脚本之后,可以执行(例如,并行执行)多个形式化验证脚本(如图3B中的形式化验证脚本342、形式化验证脚本344和形式化验证脚本346)来对目标逻辑系统设计330中的多个模块(如图3B中的模块332、模块334、模块336)进行形式化验证,得到多个模块的形式化验证结果。其中,形式化验证通常是指从数学上完备地证明或验证电路的实现方案是否实现了电路设计所描述的功能验证方法。形式化验证在一些实施例中可以是等效性校验。可以根据多个模块的形式化验证结果来定位目标逻辑系统设计330的错误。例如,某个模块的形式化验证结果为未通过,则该模块通常可以被认为是包括设计错误的模块。
这样,通过上述方式,将目标逻辑系统设计中的多个模块分别生成多个形式化验证脚本,进而执行多个形式化验证脚本对多个模块进行形式化验证。在设计出现错误时,能够将定位目标逻辑系统设计的过程,拆分为对其中每个模块的进行形式化验证的过程。进而根据每个模块的形式化验证结果来定位目标逻辑系统设计的错误,形式化验证脚本的过程无需人工执行,并且仅根据形式化验证的结果即可定位目标逻辑系统设计的错误,无需人工定位错误,能够提高定位错误的效率。
为了生成上述多个形式化验证脚本,仿真工具200可以读取目标逻辑系统设计320以获取相关信息。在一些实施例中,仿真工具200可以读取目标逻辑系统设计320的描述(例如,源代码),并生成一个信息文件(例如,json5文件)。该信息文件可以包括目标逻辑系统设计320的各个模块的模块信息,例如,模块名称、模块类型、连接关系、接口信息、子模块信息、内部实例信息等。上述模块信息的具体示例将在后文描述。
根据上述模块信息,仿真工具200可以构建目标逻辑系统设计320的树状结构,该树状结构描述了模块之间的关系,例如,一些模块是叶子模块(即,底层的模块);一些模块是另一些模块的父模块;等等。
图4示出了根据本申请实施例的目标逻辑系统设计的结构树400的示意图。
目标逻辑系统设计320可以包括多个模块,所述多个模块可以进一步分为多个层级。多个层级可以包括顶层(TOP)、底层和中间层。多个层级以及每个层级对应的模块构成了目标逻辑系统设计320的结构树。在一些实施例中,目标逻辑系统设计的结构树400如图4所示。结构树400通常可以在仿真的编译阶段获得。
仿真工具200可以根据上述模块信息构建目标逻辑系统设计320的结构树400。可以理解,结构树400中的一些模块是另一些模块的父模块,又一些模块是另外又一些模块的子模块。例如,如图4所示,模块402是模块406-407的父模块,模块406又是模块4010-4012的父模块。除了包含子模块,父模块中还可以包含不能单独划分出来成子模块的描述,即,非模块(或功能)的源代码。
在对目标逻辑系统设计320进行等效性校验时,仿真工具200可以首先给结构树400的多个叶子模块408-4012分别生成多个形式化验证脚本,并运行该多个形式化验证脚本。如上所述,等效性校验仅适用于小模块,因此可以对目标逻辑系统设计320中的叶子模块408-4012,即最底层的模块进行等效性校验。仿真工具200可以根据目标逻辑系统设计320的层级结构,逐级校验每个层级中每个模块。对于校验通过的模块(例如,叶子模块408),可以进一步为其父模块(例如,包括该叶子模块408的模块403)生成形式化验证脚本。对于父模块403而言,由于父模块403除了已经校验的子模块(例如,叶子模块408-409)还存在一些独立的代码,因此,需要进一步进行校验。此时,由于子模块(例如,叶子模块408-409)已经被校验,所以父模块(例如,模块403)中的子模块(例如,叶子模块408-409)可以被跳过。与此类似,如果一个子模块校验通过,可以进一步校验其父模块,直到最顶层的根模块(也称为顶层模块TOP)。
基于模块信息以及根据模块信息进一步处理得到的信息(例如,树状结构),仿真工具200可以各个模块生成多个形式化验证脚本。
在一些实施例中,仿真工具200可以根据模块的门级网表以及仿真工具200的编译参数(例如,--defparam<name>=<value>)生成形式化验证脚本。仿真工具200可以识别目标模块中的存储器以及未定义模块,并且在形式化验证脚本中将该存储器以及未定义模块设置为黑盒(blackbox),从而允许在等效校验中跳过该存储器以及未定义模块。可以理解的是,如上所述,已经验证无误的模块也可以被设置为黑盒,从而在等效校验中跳过。
以下给出示例性的形式化验证脚本生成过程。
在以下示例中,目标模块332为g.v,并且包括一个test_g.v模块。
如上所述,模块信息可以包括模块名称、模块类型、连接关系、接口信息、子模块信息、内部实例信息等。在上述代码中,模块名称可以包括g和test_g;模块类型可以确定为普通模块(非存储器模块);连接关系可以包括g.a到test_g.a的连接以及g.c到test_g.o的连接;接口信息可以包括线缆c的定义;子模块信息可以是模块test_g;内部实例信息可以包括i1。本领域技术人员可以理解,上述模块信息仅为示例,仿真工具200可以根据模块的描述获取更多或更少的模块信息,而不限于上述示例。
上述目标模块可以根据参考模块生成,在vSyn中设置脚本:vSyn-ovSyn.g.vtop.vtest_a.v-defparamA=1-formalityfm.tcl
其中,vSyn.g.v为编译目标模块g.v(例如,模块332)产生的门级网表,top.v为与目标模块g.v对应的参考模块322,test_a.v为目标模块test_g.v对应的参考模块,fm.tcl为要产生的formalityscript,-defparamA=1这里对g.v中的A重新赋值为1。
相应地,产生的形式化验证脚本可以为:
setauto_setuptrue
sethdlin_unresolvedmodulesblack_box
setverification_set_undriven_signalsBINARY
setverification_assume_reg_initLiberalo
setverification_failing_point_limit0
current_containeri
readsverilogtop.v
readsverilogtest_a.v
set_top{top}-parami{A=1}
current_containeri
read_sverilogg.v
'readsverilog-technology_library-civtech.v
set_top{top_A_1}
setv[verify]
setcode[expri($v==l)?0:1}]
if$codei
#erroroccured
save_session-replacefm.fss
report_failing_points
exit${code)
其中,上述top.v和test_a.v为参考逻辑系统设计,g.v和test_g.v为目标系统逻辑设计。上述代码中的“sethdlin_unresolvedmodulesblack_box”是将未解析的HDL文件设置为黑盒(blackbox),即将未定义成模块的代码部分设置为黑盒。同上述,因为父模块所有代码并不是都可以划分成子模块。
图5示出了根据本申请实施例的并行执行形式化验证脚本的示意图。
在一些实施例中,在执行多个形式化验证脚本的过程中,为了加速等效性校验的速度,可以在多个服务器中以并行的方式执行多个形式化验证脚本。多个形式化验证脚本中可以包括第一脚本。例如,本地服务器510可以将形式化验证脚本342放在云服务器502中运行,可以将形式化验证脚本344放在云服务器504中运行,可以将形式化验证脚本346放在云服务器506中运行。可以理解的是,将形式化验证脚本342-346放在一个云服务器上以不同的线程来并行执行。在完成形式化验证脚本的执行(例如,等效校验)后,每一个形式化验证脚本在执行后得到的形式化验证结果可以归集到一个服务器(例如,一个云服务器或者一个本地服务器)。这样,通过并行的方式可以快速的执行完成多个形式化验证脚本,并且可以将形式化验证脚本放在云服务器中进行运行,不会使用本地的计算资源,减少对本地的计算资源的消耗,另外,使用云服务器运行形式化验证脚本,利用云服务器庞大的计算资源,能够快速的执行形式化验证脚本,进而提高定位目标逻辑系统设计的错误的速度。
如上所述,传统根据仿真波形数据验证目标逻辑系统设计,需要耗费大量人工,且一个大规模的逻辑系统设计包括数量级巨大的模块,因此效率低下且耗时较长。本申请实施例为目标逻辑系统设计中的多个模块分别生成多个形式化验证脚本,并行调用等效性校验工具比较每个模块和参考模块,实现了在有限时间内完成大规模逻辑系统设计的验证,且验证不通过时能够精准定位到逻辑系统设计中的错误。相比之下,传统的等效性校验仅能对少量模块依次验证,无法实际应用到大规模芯片设计中。本申请对比传统方法,扩大等效性校验的应用范围到完整的大规模芯片设计,大大提升了验证效率和验证精确度。
图6示出了根据本申请实施例的一种用于定位逻辑系统设计中错误的示例性方法600的流程图。方法600可由图1所示的电子设备100实施。方法600可以包括如下步骤。
在步骤602,电子设备100读取目标逻辑系统设计(例如图3A中的目标逻辑系统设计330)。所述目标逻辑系统设计可以包括多个模块(例如图3A或图3B中的模块332、模块334、和模块336)。所述目标逻辑系统设计可以从参考逻辑系统设计(例如图3A中的参考逻辑系统设计320)修改而来。所述参考逻辑系统设计可以包括与所述多个模块分别对应的多个参考模块(例如图3A或图3B中的参考模块322、参考模块324、和参考模块326)。
在一些实施例中,所述读取目标逻辑系统设计进一步包括:对所述目标逻辑系统设计进行仿真测试,得到仿真测试结果;响应于所述仿真测试结果为未通过,读取所述目标逻辑系统设计。可以理解的是,当作为整体的目标逻辑系统设计未能通过仿真测试时,用户需要进一步确定仿真测试失败的根本原因,并且定位到具体的模块。
在步骤604,电子设备100为所述多个模块分别生成多个形式化验证脚本(例如图3B中的形式化验证脚本342、形式化验证脚本344和形式化验证脚本346)。所述多个形式化验证脚本用于分别比较所述多个模块和所述多个参考模块。例如,形式化验证脚本342用于比较目标模块332和参考模块322。
在一些实施例中,所述多个模块可以包括第一模块(如图3B的模块332)。
为所述多个模块分别生成多个形式化验证脚本进一步包括:根据所述目标逻辑系统设计确定的所述第一模块的模块信息;根据所述第一模块的模块信息,确定与所述第一模块对应的第一参考模块(如图3B中的322);以及根据所述第一模块和所述第一参考模块生成用于比较所述第一模块和所述第一参考模块的第一脚本(例如,形式化验证脚本342)。所述模块信息可以包括所述第一模块的模块名称(如上述代码实例中的模块名称可以包括g和test_g)、模块类型(如上述代码实例中的模块都是普通模块(非存储器模块))、接口信息(如上述代码中的连接关系可以包括g.a到test_g.a的连接以及g.c到test_g.o的连接)、或子模块信息(如上述代码中test_g是g的子模块)的至少一个。
在一些实施例中,根据所述第一模块和所述第一参考模块生成用于比较所述第一模块和所述第一参考模块的第一脚本进一步包括:分析所述第一模块的子模块信息(例如,在模块332中test_g是g的子模块);根据所述子模块信息,在所述第一脚本中跳过所述第一模块的子模块的形式化验证。
所述存储器模块通常不包含运算功能。存储器模块的主要作用是存储数据,并提供读取和写入数据的接口。因此,存储器模块通常无法用形式化验证(包括等效性校验)的方式来进行验证。相应地,存储器模块无需进行等效性校验,可以在等效性校验时被设置为黑盒(blackbox),从而在等效性校验中跳过存储器模块,以便提高验证效率。
在一些实施例中,所述第一模块是所述目标逻辑系统设计中最底层的模块(例如,叶子模块)。所述形式化验证是等效性校验。
在步骤606,电子设备100执行所述多个形式化验证脚本(例如图3B中的形式化验证脚本342、形式化验证脚本344和形式化验证脚本346)以对所述多个模块(例如图3A、图3B中的模块332、模块334、模块336)进行形式化验证。
在一些实施例中,执行所述多个形式化验证脚本进一步包括:并行执行所述多个形式化验证脚本。所述多个形式化验证脚本可以包括所述第一脚本。并行执行的描述可以参考图5。
在步骤608,电子设备100根据所述多个模块的形式化验证结果定位所述目标逻辑系统设计的错误。
在一些实施例中,根据所述多个模块的形式化验证结果定位所述目标逻辑系统设计的错误进一步包括:确定所述第一模块是否通过形式化验证;以及响应于所述第一模块未通过所述形式化验证,确定所述第一模块是所述目标逻辑系统设计的错误;或者响应于所述第一模块通过所述形式化验证,为所述第一模块的父模块(如图4的叶子模块408的父模块403)生成第二脚本,其中,在所述第二脚本中跳过所述第一模块的形式化验证。
如上所述,传统根据仿真波形数据验证目标逻辑系统设计,需要耗费大量人工,且一个大规模的逻辑系统设计包括数量级巨大的模块,因此效率低下且耗时较长。本申请实施例为目标逻辑系统设计中的多个模块分别生成多个形式化验证脚本,并行调用等效性校验工具比较每个模块和参考模块,实现了在有限时间内完成大规模逻辑系统设计的验证,且验证不通过时能够精准定位到逻辑系统设计中的错误。相比之下,传统的等效性校验仅能对少量模块依次验证,无法实际应用到大规模芯片设计中。本申请对比传统方法,扩大等效性校验的应用范围到完整的大规模芯片设计,大大提升了验证效率和验证精确度。
本申请实施例还提供一种电子设备。该电子设备可以是图1的电子设备100。该电子设备100可以包括存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以使得所述电子设备执行方法600。
本申请实施例还提供一种非暂态计算机可读存储介质。该非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使该电子设备执行方法600。
上述对本申请的一些实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明它们没有在细节中提供。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种用于定位逻辑系统设计中错误的方法,其特征在于,所述方法包括:
读取目标逻辑系统设计,所述目标逻辑系统设计包括多个模块,所述目标逻辑系统设计从参考逻辑系统设计修改而来,所述参考逻辑系统设计包括与所述多个模块分别对应的多个参考模块;
为所述多个模块分别生成多个形式化验证脚本,所述多个形式化验证脚本用于分别比较所述多个模块和所述多个参考模块;
执行所述多个形式化验证脚本以对所述多个模块进行形式化验证;以及
根据所述多个模块的形式化验证结果定位所述目标逻辑系统设计的错误。
2.如权利要求1所述的方法,其特征在于,所述多个模块包括第一模块,为所述多个模块分别生成多个形式化验证脚本进一步包括:
根据所述目标逻辑系统设计确定的所述第一模块的模块信息,所述模块信息包括所述第一模块的模块名称、模块类型、接口信息、或子模块信息的至少一个;
根据所述第一模块的模块信息,确定与所述第一模块对应的第一参考模块;
根据所述第一模块和所述第一参考模块生成用于比较所述第一模块和所述第一参考模块的第一脚本。
3.如权利要求2所述的方法,其特征在于,所述第一模块是所述目标逻辑系统设计中最底层的模块。
4.如权利要求2或3所述的方法,其特征在于,执行所述多个形式化验证脚本进一步包括:
并行执行所述多个形式化验证脚本,所述多个形式化验证脚本包括所述第一脚本。
5.如权利要求4所述的方法,其特征在于,根据所述多个模块的形式化验证结果定位所述目标逻辑系统设计的错误进一步包括:
确定所述第一模块是否通过形式化验证;以及
响应于所述第一模块未通过所述形式化验证,确定所述第一模块是所述目标逻辑系统设计的错误;或者
响应于所述第一模块通过所述形式化验证,为所述第一模块的父模块生成第二脚本,其中,在所述第二脚本中跳过所述第一模块的形式化验证。
6.如权利要求2所述的方法,其特征在于,根据所述第一模块和所述第一参考模块生成用于比较所述第一模块和所述第一参考模块的第一脚本进一步包括:
分析所述第一模块的子模块信息;
根据所述子模块信息,在所述第一脚本中跳过所述第一模块的子模块中的存储器模块的形式化验证。
7.如权利要求1所述的方法,其特征在于,所述形式化验证是等效性校验。
8.如权利要求1所述的方法,其特征在于,所述读取目标逻辑系统设计,包括:
对所述目标逻辑系统设计进行仿真测试,得到仿真测试结果;
响应于所述仿真测试结果为未通过,读取所述目标逻辑系统设计。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8中任一项所述的方法。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,其特征在于,所述计算机指令用于使计算机执行根据权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310878806.XA CN116861829B (zh) | 2023-07-17 | 2023-07-17 | 用于定位逻辑系统设计中错误的方法、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310878806.XA CN116861829B (zh) | 2023-07-17 | 2023-07-17 | 用于定位逻辑系统设计中错误的方法、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116861829A true CN116861829A (zh) | 2023-10-10 |
CN116861829B CN116861829B (zh) | 2024-04-26 |
Family
ID=88231931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310878806.XA Active CN116861829B (zh) | 2023-07-17 | 2023-07-17 | 用于定位逻辑系统设计中错误的方法、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116861829B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093729A1 (en) * | 2001-11-06 | 2003-05-15 | Fujitsu Limited | Method of and apparatus for timing verification of LSI test data and computer product |
CN107644128A (zh) * | 2017-09-08 | 2018-01-30 | 郑州云海信息技术有限公司 | 一种DC综合与Formality形式化验证协同的方法及系统 |
-
2023
- 2023-07-17 CN CN202310878806.XA patent/CN116861829B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093729A1 (en) * | 2001-11-06 | 2003-05-15 | Fujitsu Limited | Method of and apparatus for timing verification of LSI test data and computer product |
CN107644128A (zh) * | 2017-09-08 | 2018-01-30 | 郑州云海信息技术有限公司 | 一种DC综合与Formality形式化验证协同的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116861829B (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189479B (zh) | 一种用于处理器指令集的并行自动化验证方法 | |
US8892386B2 (en) | Method and apparatus for post-silicon testing | |
CN114662427B (zh) | 一种逻辑系统设计的调试方法及设备 | |
CN117094269B (zh) | 一种验证方法、装置、电子设备及可读存储介质 | |
CN112597064B (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
CN101263498A (zh) | 用于集成电路设计仿真的断言的开发 | |
CN115827636B (zh) | 存储及从波形数据库读取逻辑系统设计的仿真数据的方法 | |
US7673288B1 (en) | Bypassing execution of a software test using a file cache | |
CN117910398A (zh) | 仿真逻辑系统设计的方法、电子装置和存储介质 | |
CN112731117A (zh) | 芯片的自动验证方法和系统,及存储介质 | |
CN115470125B (zh) | 基于日志文件的调试方法、设备以及存储介质 | |
CN116861829B (zh) | 用于定位逻辑系统设计中错误的方法、电子设备 | |
CN114328062B (zh) | 校验缓存一致性的方法、装置和存储介质 | |
Goli et al. | Through the looking glass: Automated design understanding of SystemC-based VPs at the ESL | |
CN112506806B (zh) | 用于调试程序的方法、电子设备及存储介质 | |
CN113434390B (zh) | 一种基于变异的fpga逻辑综合工具模糊测试方法 | |
CN112464636A (zh) | 约束文件的比较方法、装置、电子设备和存储介质 | |
CN112989736B (zh) | 用于检测修改设计的错误实例的方法、设备及存储介质 | |
US20240241809A1 (en) | Methods, electronic devices and storage media for executing assertions | |
US10614181B2 (en) | Electronic design tools using non-synthesizable circuit elements | |
CN117370168B (zh) | 设置逻辑系统设计的仿真还原点的方法及相关设备 | |
CN114169287B (zh) | 生成验证环境的连接示意图的方法、电子设备及存储介质 | |
CN117172203A (zh) | 处理脚本命令的方法、电子设备和存储介质 | |
CN117332733A (zh) | 一种定位逻辑系统设计的错误的方法、设备以及存储介质 | |
CN115563930A (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 |