CN116663463A - 一种电路验证方法、装置、电子设备及可读存储介质 - Google Patents
一种电路验证方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN116663463A CN116663463A CN202310934163.6A CN202310934163A CN116663463A CN 116663463 A CN116663463 A CN 116663463A CN 202310934163 A CN202310934163 A CN 202310934163A CN 116663463 A CN116663463 A CN 116663463A
- Authority
- CN
- China
- Prior art keywords
- assertion
- circuit
- design
- statement
- tested
- 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
- 238000012795 verification Methods 0.000 title claims abstract description 92
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000003860 storage Methods 0.000 title claims abstract description 20
- 238000013461 design Methods 0.000 claims abstract description 258
- 238000012360 testing method Methods 0.000 claims abstract description 78
- 238000006243 chemical reaction Methods 0.000 claims abstract description 20
- 238000004088 simulation Methods 0.000 claims abstract description 19
- 238000012544 monitoring process Methods 0.000 claims abstract description 16
- 230000014509 gene expression Effects 0.000 claims description 27
- 238000004458 analytical method Methods 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 18
- 230000015572 biosynthetic process Effects 0.000 claims description 17
- 238000003786 synthesis reaction Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 13
- 238000005070 sampling Methods 0.000 claims description 12
- 230000003068 static effect Effects 0.000 claims description 11
- 230000009466 transformation Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 28
- 230000008569 process Effects 0.000 description 20
- 230000006399 behavior Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 239000000523 sample Substances 0.000 description 5
- 238000000654 solvent vapour annealing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000008439 repair process Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 238000012942 design verification Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000220317 Rosa Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 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/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- 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/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- 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/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing analysis
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
本发明实施例提供一种电路验证方法、装置、电子设备及可读存储介质,该方法包括:获取设计文件,所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;将所述断言语句转化为断言电路,所述断言电路为寄存器转换级电路;基于所述被测设计和所述断言电路,生成目标网表;根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;运行所述集成电路芯片,并监测所述被测设计的断言结果;在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。本发明实施例可以利用断言电路来揭示被测设计内部状态和潜在问题,解决了FPGA仿真缺乏设计细节的低级可见性的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种电路验证方法、装置、电子设备及可读存储介质。
背景技术
随着计算机体系结构和硬件设计的复杂化,功能验证成为芯片开发中耗时的过程。验证工作占据了高达70%的开发周期。在验证环节中,其中一个瓶颈是寄存器转换级别(Register-Transfer Level,RTL)电路的软件仿真。虽然软件仿真提供了完整的设计细节可见性以帮助调试,但对于复杂设计的长时间仿真而言,RTL仿真会非常耗时,这使得验证效率明显地降低。此外,软件仿真仍然依赖人工判断来检查波形和调试信息,以定位设计中的问题。
断言通常被用作一种高效的验证方法,以减轻数字电路功能验证中的调试工作量。超过75%的ASIC设计和近50%的FPGA设计采用了基于断言的验证(assertion-basedverification, ABV)。与传统的使用printf或display调试技术相比,ABV可以同时执行自动监测和检查,以验证给定的硬件设计是否符合预期行为。一旦断言被违反,验证系统会自动标记问题。工程师们可以使用仿真软件调查断言失败的原因,并追溯到根本原因。在工业设计过程中,设计工程师通常添加断言以预防未来的意外行为,并识别潜在错误。断言在检查具有时序信息的复杂逻辑行为时非常有价值。
FPGA作为硅前验证的标准方法和加速器,可以显著提升性能。然而,使用FPGA调试RTL设计并不简单。目前供应商提供的调试工具如Signaltap和ILA,引入显著的面积开销,并且只能监视有限数量的内部信号。而且现有基于硬件对RTL进行测试的方案在指令集体系结构级别执行,缺乏设计细节的低级可见性,无法揭示设计内部错误和缺陷。断言适用于这个目的,但不幸的是,断言含有大量不可综合的关键字,不能直接用于硬件测试。
发明内容
本发明实施例提供一种电路验证方法、装置、电子设备及可读存储介质,可以解决FPGA仿真缺乏设计细节,可见性低,以及软件仿真的验证效率低的问题。
为了解决上述问题,本发明实施例公开了一种电路验证方法,所述方法包括:
获取设计文件,所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
将所述断言语句转化为断言电路,所述断言电路为寄存器转换级电路;
基于所述被测设计和所述断言电路,生成目标网表;
根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;
运行所述集成电路芯片,并监测所述被测设计的断言结果;
在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。
另一方面,本发明实施例公开了一种电路验证装置,所述装置包括:
文件获取模块,用于获取设计文件,所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
断言转化模块,用于将所述断言语句转化为断言电路,所述断言电路为寄存器转换级电路;
网表生成模块,用于基于所述被测设计和所述断言电路,生成目标网表;
芯片配置模块,用于根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;
断言监测模块,用于运行所述集成电路芯片,并监测所述被测设计的断言结果;
结果确定模块,用于在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。
再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的电路验证方法。
本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的电路验证方法。
本发明实施例包括以下优点:
本发明实施例提供了一种电路验证方法,将断言语句的转换为断言电路,该断言电路为可综合的寄存器转换级电路,可以直接用于硬件测试;根据断言电路和被测设计生成目标网表,进而根据目标网表将断言电路和被测设计配置到FPGA中,利用断言电路来揭示被测设计内部状态和潜在问题,解决了FPGA仿真缺乏设计细节的低级可见性的问题。并且,用硬件对被测设计进行调试加速,提升了被测设计的验证效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种电路验证方法实施例的步骤流程图;
图2是本发明的一种电路验证装置的结构框图;
图3是本发明的一种电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
方法实施例
本发明实施例提供的电路验证方法,可以将断言语句转换为可综合的断言电路,用硬件断言电路对被测设计进行验证,提供了验证效率。
为了便于理解本发明提供的实施例,做出以下几点说明:
1、SV语言(SystemVerilog)和SV断言(SystemVerilog Assertion,SVA)
SystemVerilog是一种硬件描述语言(Hardware Description Language,HDL),用于设计和验证数字电路。它扩展了Verilog HDL,提供了许多新的特性和功能,使得它更适合用于复杂的硬件设计和验证任务。
SVA是SystemVerilog的一个重要特性,用于在设计和验证过程中描述和验证系统的行为和性质。SVA允许设计人员在硬件描述中插入一些断言语句,用于表达关于设计行为和状态的属性。SVA使用一种类似于时序逻辑的语法,它具有丰富的表达能力,可以描述时间相关性、序列、并发性等属性。SVA语句可以被用于设计验证、形式验证和错误调试等方面。SVA语句通常包括以下部分:
i. 属性(Property):描述一个期望或规定的系统行为。
ii.序列(Sequence):描述一个事件或状态序列。
iii. 断言(Assertion):将属性和序列结合起来,并指定其成立的时机
iv. 时钟块(Clocking Block):定义时钟和采样时机。
v.覆盖(Coverage):用于评估设计的属性覆盖率。
2、基于断言的验证(Assertion-based Verification)
基于断言的验证是一种有效的硬件设计验证方法,用于确保设计满足特定的规范和要求。断言(assertions),是一些描述设计行为和性质的语句,用于检查设计在运行时是否满足这些性质。基于断言的验证,通过使用断言语句来验证设计是否满足特定的规范和要求。它可以提高验证效率、减少错误,并帮助设计团队快速发现和解决设计中的问题。
在断言验证中,设计被分为被测设计(Design Under Test,DUT)和测试环境(Testbench)两个部分。测试环境包含测试向量生成器、时钟、监控器和断言检查器等组件。测试向量生成器产生输入数据,时钟提供时序信息,监控器用于检测设计的输出,而断言检查器用于检查设计是否满足指定的断言。断言验证的基本原理是,当测试向量驱动设计运行时,监控器会监测设计的输出,并将其与预期结果进行比较。同时,断言检查器会评估断言语句,如果断言失败(即断言为假),则会发出验证错误。这种方式可以在验证过程中快速发现设计中的错误,并帮助开发人员确认设计是否满足规范要求。
3、电路综合
在硬件电路设计中,“综合”(synthesize)用来描述硬件描述语言代码是否可以被转换为等效的硬件电路的属性,这个转换过程通常由电路综合工具(如逻辑综合器)完成。
可综合代码是可以通过逻辑综合器将其转换为硬件电路的代码。逻辑综合是将高级抽象的硬件描述语言代码(如SystemVerilog)转换为基本逻辑门和寄存器等低级硬件元素的过程。可综合代码应该是结构清晰、时序明确的,只使用综合工具支持的硬件原语和构造。
不可综合代码是指无法通过逻辑综合器直接转换为硬件电路的代码。它包含了一些在高级抽象层面上有意义但无法映射到硬件电路的特性,例如延迟、循环、条件分支等。这些代码通常用于模拟、验证和测试等非综合的目的。
SVA中的一些语法和特性是不可综合的,因为它们主要用于描述和验证系统的行为和性质,而不是直接描述硬件结构。比如:
i.含时延的行为,时延在综合过程中无法直接映射到硬件的时序逻辑。
ii.采样函数,如“$rose()”、“$stable()”、“$past()”,一般是在仿真环境下使用,用于验证和调试设计。而在综合过程中,这些采样函数通常是不可综合的,因为采样函数不能直接映射到硬件电路的等效元素。综合工具无法直接将这些函数转换为硬件逻辑。
iii.序列操作关键词,如intersect、firstmatch等,通常用于验证阶段,以检查设计是否满足特定的时序属性。综合工具无法直接将这些操作符转换为硬件逻辑。
由于这些特性无法直接映射到硬件电路,因此综合工具无法将包含不可综合特性的SVA代码转换为等效的硬件电路。在实际设计中,SVA通常用于验证阶段,而不是用于直接生成硬件。可综合的硬件描述语言代码和不可综合的验证代码通常是分开编写和使用的。
4、寄存器转换级(Register-Transfer Level,RTL)电路
RTL电路是一种常见的硬件描述级别电路。RTL电路描述了数字电路的行为和结构,并使用寄存器传输级的抽象层次表示。RTL电路描述通常使用硬件描述语言(HDL)编写,例如VHDL(VHSIC Hardware Description Language)、Verilog HDL、SystemVerilog HDL。设计人员可以使用RTL级描述来定义和实现所需的数字电路功能,然后使用综合工具将RTL级描述转换为现场可编程门阵列(Field-Programmable Gate Array,FPGA)中的物理实现。在FPGA、芯片设计和验证领域,RTL级描述对于设计、验证和调试非常重要。它提供了一种抽象层次,使设计人员能够在较高的抽象级别上描述电路行为,并使用适当的工具进行仿真、验证和综合,最终生成可配置到FPGA芯片中的位流(bitstream)文件,以实现特定的数字电路功能。
5、FPGA
FPGA是一种可重构的集成电路芯片,具有广泛的应用领域。与传统的固定功能集成电路(ASIC)不同,FPGA可以根据用户的需求进行灵活的重新编程和重新配置,使其适应不同的应用和功能。FPGA由大量的可编程逻辑块(logic block)和可编程互连资源(interconnect resources)组成。可编程逻辑块通常由查找表(Look-Up Tables,LUTs)、寄存器和其他逻辑元件组成,可以执行各种逻辑功能。可编程互连资源用于连接逻辑块,形成所需的电路结构。使用FPGA,设计工程师可以使用硬件描述语言描述所需的电路功能,并通过编程工具将其转化为与FPGA芯片相兼容的位流(bitstream)。位流包含了对FPGA内部逻辑和互连资源进行编程和配置的信息。FPGA的主要优势之一是其可编程性和灵活性。它允许设计工程师在硬件级别上实现自定义的功能和算法,而无需进行传统的定制集成电路设计和制造过程。这使得FPGA在原型开发、快速设计迭代中起着重要作用。
6、动态部分重配置(Dynamic Partial Reconfiguration,DPR)
FPGA的动态部分重配置是指在FPGA运行时,可以对部分电路进行重新配置的能力。传统的FPGA设计中,通常需要将整个电路重新编程并重新加载到FPGA中才能改变其功能。而DPR技术则允许在FPGA运行时,仅重新配置部分电路,而不影响其他正在运行的电路。动态部分重配置的主要优势在于其灵活性和资源利用率的提高。通过使用DPR,可以在FPGA中实现多个功能模块,每个模块可以根据需要进行独立的重新配置,而无需重新加载整个设计。这种灵活性使得FPGA能够适应多种应用需求,同时减少了重新编程和重新加载的时间,加快了设计迭代的速度。
7、抽象语法树
抽象语法树(Abstract Syntax Tree,AST)是一种用于表示程序代码结构的树形数据结构。它在编译器和解析器中广泛使用,用于将源代码转换为易于处理和分析的形式。AST反映了代码的语法结构,并且丢弃了不必要的细节,如空格、注释和具体的标记。它捕捉了代码的逻辑结构和语义,并提供了一种方便的方式来分析、转换和优化代码。在AST中,每个代码元素(如表达式、语句、函数声明等)都表示为一个节点,节点之间通过父子关系和兄弟关系连接起来。树的根节点代表整个代码,而叶节点代表最基本的代码单元。
AST的优点包括:
a.结构化表示:AST提供了一种结构化的方式来表示代码,使得代码的解析和分析更加直观和灵活。
b.语法独立性:AST不依赖于特定编程语言的语法规则,因此可以用于解析和处理多种编程语言。
c.易于分析和转换:通过遍历和操作AST节点,可以进行静态分析、代码优化、重构等操作。
总之,抽象语法树是一种用于表示程序代码结构的树形数据结构,它提供了一种方便的方式来分析、转换和优化代码。
相比于在硬件上运行,软件仿真速度较慢,在软件仿真中被测设计运行速度较慢,仿真到断言失败的时刻往往需要十分漫长的运行时间,验证效率较低。对此,本发明实施例提供了一种电路验证方法,将断言语句转换为可综合的断言电路,并将断言电路和被测设计烧录到FPGA中,用硬件(FPGA)对被测设计进行调试加速,可以快速到达断言失败时刻,提升了验证效率。
参照图1,示出了本发明的一种电路验证方法实施例的步骤流程图,所述方法具体可以包括如下步骤:
步骤101、获取设计文件,所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
步骤102、将所述断言语句转化为断言电路,所述断言电路为寄存器转换级电路;
步骤103、基于所述被测设计和所述断言电路,生成目标网表;
步骤104、根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;
步骤105、运行所述集成电路芯片,并监测所述被测设计的断言结果;
步骤106、在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。
设计文件中包含可以被综合的被测设计和不可综合的断言语句。其中,断言语句用于验证被测设计是否满足测试条件。可以理解的是,断言语句是一种在测试过程中用于检查特定条件是否满足的语句,测试项目是为了验证软件或系统的正确性而执行的一系列测试活动。在针对被测设计的一个测试项目中可以包含多条断言语句,通过这些断言语句,可以定义测试的目标和期望结果,从而指导测试的设计和执行。具体地,可以通过在测试代码中插入断言语句,自动化地验证测试过程中的各种条件和约束,确保测试结果的正确性。当测试项目中出现问题或错误时,通过断言语句的失败信息,可以快速识别导致问题的具体条件,从而加快问题的排查和修复。
断言语句是不可综合的,无法直接配置在FPGA中以实现对被测设计的硬件仿真。因此,在本发明实施例中,可以根据断言语句实现的功能,将断言语句转化为断言电路,所述断言电路为寄存器转换级电路(RTL电路)。断言电路可以实现与断言语句相同的功能。示例性地,可以对断言语句进行解析,识别出断言语句中不可综合的关键字,如含时延的行为、采样函数、序列操作关键词,等等,然后根据这些关键字的验证逻辑、状态转换等信息,生成这些关键字对应的等效电路,最后,根据断言语句的整体验证逻辑,对这些关键字对应的等效电路进行连接,得到断言语句对应的断言电路。可以理解的是,本发明实施例中生成的断言电路,可以由逻辑寄存器、状态机、触发器等逻辑器件组成,用于监测和报告被测设计中的错误或异常情况。
接下来,基于被测设计和断言电路,生成目标网表。需要说明的是,网表(Netlist)在电子设计自动化中,是指用基础的逻辑门来描述数字电路连接情况的描述方式。由于逻辑门阵列有着连线表一样的排列外观,因此称之为“网表”。网表通常传递了电路连接方面的信息,例如模块的实例、线网以及相关属性。如果需要包含更多的硬件信息,通常会使用硬件描述语言,例如Verilog、VHDL或其他的专用语言来进行描述、验证和仿真。高抽象层次(如寄存器传输级)的硬件描述可以通过逻辑综合转换为低抽象层次(逻辑门级)的电路连线网表,这一步骤目前可以使用自动化工具完成,这也大大降低了设计人员处理超大规模集成电路的繁琐程度。硬件厂商利用上述网表,可以制造具体的专用集成电路或其他电路。一些相对较小的电路也可以在现场可编程逻辑门阵列上实现。
在本发明实施例中,目标网表用于采用逻辑门描述所述被测设计与所述断言电路之间的连接情况。具体地,在目标网表中,断言电路的输入端与被测设计中待监测信号的输出端相连。
基于目标网表可以将被测设计与断言电路配置到集成电路芯片中。本发明实施例中的集成电路芯片,即为FPGA。可以理解的是,要在FPGA上运行设计,需要先通过FPGA厂商提供的软件生成相应的位流文件,利用位流文件将设计导入FPGA。位流文件是一种二进制文件,用于存储和传输可编程逻辑设备(如FPGA)的配置信息,它包含了将FPGA配置为特定硬件功能的位信息。在本发明实施例中,可以先根据目标网表生成目标位流文件,目标位流文件中包含将FPGA配置为用于利用断言电路对被测设计进行硬件验证的位信息。具体地,目标位流文件包含了FPGA的逻辑门配置、寄存器设置和连接信息等。利用目标位流文件,就可以将断言电路和被测设计烧录到FPGA板卡上,实现对FPGA的配置。在FPGA中,断言电路的信号输入端与被测设计的RTL电路设计中待监测信号的输出端相连接。
运行PFGA,并监测被测设计的断言结果。一旦被测设计中待监测信号以违反断言语句所描述的方式运行,断言电路就会自动标记问题,并输出断言失败信号。此外,断言电路还可以定位断言失败的时刻和相关信号,通过断言电路的失败信息,可以快速识别导致问题的具体条件,从而加快问题的排查和修复。
当被测设计的断言覆盖率满足预设条件的情况下,就可以确定该被测设计通过验证。其中,断言覆盖率是一种测试度量指表,用于衡量在测试过程中断言语句被执行的程度。断言覆盖率通常以百分比的形式表示,具体为已正确执行的断言语句数与总断言语句数之间的比例。例如,如果设计文件中有100个断言语句,而在测试中有80个断言语句被正确执行了,那么断言覆盖率为80%。较高的断言覆盖率表示测试覆盖了更多的断言语句,从而提供了更全面的测试保证。在本发明实施例中,预设条件可以根据具体的验证需求进行设置,例如,预设条件可以为被测设计的断言覆盖率大于或等于预设阈值,等等。
本发明实施例提供的电路验证方法,将断言语句的转换为断言电路,该断言电路为可综合的寄存器转换级电路,并根据断言电路和被测设计生成目标网表,进而根据目标网表将断言电路和被测设计配置到FPGA中,用硬件对被测设计进行调试加速,提升了被测设计的验证效率。
并且,当前供应商提供的FPGA调试工具存在面积开销大和只能监视有限数量内部信号的问题。而本发明实施例用断言电路替代了FPGA调试工具,相比于FPGA调试工具,断言电路的资源开销小,可以同时监视多组信号。
在实际测试过程中,利用本发明实施例提供的电路验证方法,通过断言电路在FPGA上对被测设计进行验证,实现了相比软件仿真高达40989倍的性能提升。与现有供应商提供的调试工具相比,本发明具有最小的面积开销,对被测设备的时序行为没有影响。
在本发明的一种可选实施例中,步骤102所述将所述断言语句转化为断言电路,包括:
步骤S11、对所述设计文件进行解析,得到抽象语法树;所述抽象语法树用于反映所述设计文件的逻辑结构和语义;
步骤S12、遍历所述抽象语法树,以获取所述抽象语法树中的断言语句子树;
步骤S13、对所述断言语句子树进行电路综合处理,得到断言电路,所述断言电路为寄存器转换级电路。
设计文件中的被测设计和断言语句通常使用硬件描述语言(如HDL)描写,不易于处理和分析。在本发明实施例中,可以先对设计文件进行解析,将设计文件转化为更易于处理和分析的抽象语法树。该抽象语法树可以反映设计文件(包括被测设计和断言语句)的逻辑结构和语义。在实际应用中,可以通过抽象语法树的生成工具,例如语法分析器(Parser),等等。
然后,对转换得到的抽象语法树进行遍历,找到断言语句对应的断言语句子树,对断言语句子树进行电路综合处理,就可以得到断言电路。具体地,可以对抽象语法树中的每一个断言语句子树进行分析,识别出关键字(如时钟信号、采样函数、序列操作关键词,等等)和断言语句表达式,其中,断言语句表达式用于反映断言语句的断言验证规则,也即断言正确需要满足的条件。采用RTL电路中的各个逻辑器件,如逻辑寄存器、状态机、触发器等,对各个关键字实现的功能进行硬件模拟,并基于断言语句表达式确定各个关键字对应的等效逻辑器件之间的连接方式,按照确定出来的连接方式对各个等效逻辑器件进行连接,就可以得到断言电路。
可选地,步骤S13所述对所述断言语句子树进行电路综合处理,得到断言电路,包括:
子步骤S131、对所述抽象语法树中的断言语句子树进行分析,识别所述断言语句子树的关键字和断言语句表达式;
子步骤S132、将所述断言语句子树中的关键字例化为基础电路模块;
子步骤S133、对所述断言语句表达式进行语义解析,确定所述基础电路模块之间的连接方式;
子步骤S134、按照所述连接方式对所述基础电路模块进行连接,得到断言电路。
在本发明实施例中,可以将断言语句分为六大类:立即断言、序列采样信号、序列操作符、信号检测(signal_check)算子、基础操作符、时序算子(延时和重复),每一类中包含了若干个不可综合的关键字和操作符。根据断言语句的类型,可以将本发明中的基础电路模块同样分为上述六大类。
在对断言语句子树进行分析的过程中,可以根据断言语句子树中的各个叶子节点,以及各个叶子节点之间的连接关系,确定断言语句子树的关键字和断言语句表达式,然后,根据关键字确定断言语句类型,进而将其例化为对应的基础电路模块,根据断言语句表达式,确定各个基础电路模块之间的连接方式。
示例性地,在本发明实施例中,可以将断言语句表达式分成7个节点和5个层级。具体地,断言语句表达式的节点可以包括:序列(Sequence)、常数(constant)、信号(signal)、样本子例程(sample subroutine)、算子(operator)、时延算子(time delay operator)、重复算子(repetition operator)。断言语句表达式的层级可以包括:序列表达式(sequenceexpression)、一元操作符(unary operator)、样本子例程、时延算子和重复算子。其中,一元操作符层级中包括左侧算子(operator left)和右侧算子(operator right),样本子例程层级中包括参数(Argument),时延算子层级中包括时延表达式(time delayexpression),重复算子层级中包括重复表达式(repetition expression)。
在对断言语句子树进行分析的过程中,可以先判断目前表达式树是什么类型的节点,并依据目前表达式树当前所在的层级和上一层级的信息,将识别出来的关键字例化为基础电路模块,以及确定各个基础电路模块之间的连接方式。
例如,对于断言语句“SIG_IN1 ##2 SIG_IN2[*2] ##1 SIG_IN3 |=>SIG_IN4 ##2SIG_IN5”,该断言语句对应的断言语句子树的结构信息如下:
operator:nonoverlapped implication
left:{
[signal:SIG_IN1,time:0],
[signal:SIG_IN2,repeat:2,time:2],
[signal:SIG_IN3,time:1]
}
right:{
[signal:SIG_IN4,time:0],
[signal:SIG_IN5,time:2],
}
按照自上而下的顺序对上述断言语句的树形结构进行分析,上述断言语句子树共包含以下4个层级的分析过程:
1、本层的层级标识为“operator”(算子),上一层的层级标识为“sequenceexpression”(序列表达式)。解析到“operator”为“nonoverlapped implication(非交叠蕴含)”,将“nonoverlapped implication”例化为基础电路模块。其中,“非交叠蕴含(nonoverlapped implication)”,用于实现非交叠蕴含操作符(|=>)的功能。非交叠蕴含操作符左端的序列被称为起因序列,右端的序列被称为结果序列。包含非交叠蕴含操作符的断言语句存在以下几种情况:
如果起因序列不匹配(也即存在冲突,起因序列的实际运行逻辑与断言语句中的逻辑不一致),则断言不生效;如果起因序列匹配的下一个时钟周期,结果序列也匹配(也即不存在冲突,结果序列的实际运行逻辑与断言语句中的逻辑一致),则断言匹配(也即断言成功);如果起因序列匹配的下一个时钟周期,结果序列冲突,则断言失败。
语法上非交叠蕴含操作符“|=>符”把断言语句分成了左右两个序列,抽象语法树上对应“left”和“right”,下一步先分析“left”。
2、本层的层级标识变为“operator left”,上一层的层级标识变为“operator”。解析到left有三个元素,且含有延时。第一个元素解析判断为“signal”,例化为信号检测算子(signal_check)基础电路模块,延时为0。其中,信号检测算子用于检测输入信号是否为真。第二个元素解析判断为“repetition operator(重复算子)”,例化“repetition”基础电路模块,进入递归完成“repetition”基础电路模块并配置重复周期为2个时钟周期,出递归后,延时为2个时钟周期,例化第一个“time delay(时延)”基础电路模块且参数为2。将第一个元素的“match”端口链接第一个“time delay”基础电路模块的输入端,第一个“timedelay”基础电路模块的输出端链接“repetition”基础电路模块使能端口(en)。需要说明的是,当断言正确,断言电路会输出“match”的高电平信号,当断言失败,断言电路会输出“fail”的高电平信号。
依次连接三个元素,本层的层级标识变为“operator right”,上一层的层级标识变为“operator”,进入操作符右侧分析。
3、本层的层级标识为“operator right”,上一层的层级标识为“operator”。解析到right有两个元素,同左侧一样进行连线,本发明实施例在此不做进一步赘述。接下来,本层的层级标识变为“operator”,上一层的层级标识变为“operator right”。
4、本层的层级标识为“operator”,上一层的层级标识为“operator right”。将左右最后一个模块的match信号输出分别连接“nonoverlapped implication”基础电路模块的两个输入端,“nonoverlapped implication”基础电路模块的match信号的输出端连接整个断言电路的match信号输出端,作为当前断言电路成功匹配的输出信号,“nonoverlappedimplication”基础电路模块的fail信号的输出端连接整个断言电路的fail信号输出端,作为当前断言电路失败的输出信号。
经过上述处理,就实现了对断言语句“SIG_IN1 ##2 SIG_IN2[*2] ##1 SIG_IN3 |=>SIG_IN4 ##2 SIG_IN5”的电路综合处理,也即得到了该断言语句的断言电路。
在本发明的一种可选实施例中,步骤103所述基于所述被测设计和所述断言电路,生成目标网表,包括:
步骤S21、对所述断言语句进行解析,得到所述被测设计与所述断言电路之间的信号连接信息;
步骤S22、基于所述信号连接信息、所述被测设计和所述断言电路,生成目标网表;所述目标网表用于采用逻辑门描述所述被测设计与所述断言电路之间的连接情况。
其中,被测设计与断言电路之间的信号连接信息可以通过对设计文件中的断言语句进行解析得到。断言语句用于对被测设计中的信号进行监测,因此对断言语句进行解析,就可以确定断言语句的输入信号与被测设计中的哪个信号相连。示例性地,可以将设计文件转换为抽象语法树,遍历抽象语法树中的断言语句子树,通过对断言语句子树进行解析,确定被测设计与断言电路之间的信号连接信息。
目标网表用于采用逻辑门描述所述被测设计与所述断言电路之间的连接情况。在目标网表中,断言电路的输入端与被测设计中待监测信号的输出端相连。
可选地,步骤S22所述基于所述信号连接信息、所述被测设计和所述断言电路,生成目标网表,包括:
子步骤S221、将所述被测设计转换为第一网表,并将所述断言电路转换为第二网表;
子步骤S222、基于所述信号连接信息将所述第一网表与所述第二网表中的对应部分进行缝合处理,得到目标网表。
在本发明实施例中,可以先将被测设计和断言电路分别转换为对应的网表,然后根据相同的信号名将两个网表的对应部分进行缝合,得到目标网表。在所述目标网表中,所述第二网表的信号输入端与所述第一网表中的待监测信号的输出端相连。
作为一种示例,可以通过FPGA厂商提供的综合工具将被测设计的RTL代码转换为第一网表,将断言电路的RTL代码转换为第二网表。然后,通过工具命令语言(Tool CommandLanguage,TCL)指令,修改两个网表,也即根据相同的信号名将两个网表的对应部分进行缝合,实现信号探针的插入,得到目标网表。
在本发明的一种可选实施中,所述根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中,包括:
步骤S31、根据所述目标网表生成目标位流文件;
步骤S32、基于所述目标位流文件,将所述被测设计烧录至集成电路芯片的静态区域,并将所述断言电路烧录至所述集成电路芯片的动态部分重配置区域。
按照是否支持重配置功能,可以将FPGA芯片划分为静态区域和动态部分重配置区域。在本发明实施例中,可以根据目标网表生成目标位流文件,利用目标位流文件将被测设计烧录至FPGA芯片的静态区域,将断言电路烧录至FPGA芯片的动态部分重配置区域,以便在不影响被测设计的前提下,灵活地进行快速、批量更新断言电路,对被测设计的不同信号进行检测。
可选地,所述方法还包括:在所述被测设计的断言覆盖率满足预设条件的情况下,更换所述动态部分重配置区域中的断言电路,以对所述被测设计进行下一轮断言验证。
如果被测设计的断言覆盖率满足预设条件,就可以确定该被测设计通过本次验证,在这种情况下,可以更换动态部分重配置区域中的断言电路,从而对被测设计进行下一轮的断言验证。
在本发明的一种可选实施例中,所述集成电路芯片的静态区域中还配置有覆盖率监测器;步骤105所述运行所述集成电路芯片,并监测所述被测设计的断言结果,包括:
步骤S41、运行所述集成电路芯片,并通过所述覆盖率监测器对所述被测设计的断言结果进行采样,以确定所述被测设计对应的正确断言次数;
步骤106所述在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证,包括:
步骤S42、在所述被测设计对应的正确断言次数大于或等于预设阈值的情况下,确定所述被测设计通过验证。
其中,覆盖率监测器用于对断言结果进行采样,并对正确断言的断言次数进行计数。当被测设计的正确断言次数大于或等于预设阈值时,就可以确定该被测设计通过本次验证。
反之,如果被测设计的正确断言次数小于预设阈值,就可以确定该被测设计未通过本次验证。在这种情况下,可以对断言失败的情况进行数据仿真,以定位断言失败原因并进行错误调试与修复。
可选地,步骤105在运行所述集成电路芯片,并监测所述被测设计的断言结果之后,所述方法还包括:
步骤S51、在所述被测设计的断言结果为断言失败的情况下,对所述被测设计中各个寄存器的数据信息进行快照保存;
步骤S52、根据保存的数据信息和所述被测设计对应的标准参考模型进行数据仿真,以定位所述被测设计的断言失败原因并进行错误调试与修复。
如果断言失败,断言电路会输出断言失败信号。在被测设计的断言结果为断言失败的情况下,也即监测到断言失败信号的情况下,可以基于快照机制,对FPGA芯片中各个寄存器的数据信息进行快照保存,然后利用保存的数据信息和被测设计对应的标准参考模型进行数据仿真,确定断言失败的具体原因。示例性地,可以将保存的数据信息传输到仿真软件的输入激励与结果部分,通过观察仿真过程中的标准参考模型中的变量值、信号传输路径等信息,对被测设计进行更细粒度的验证,更准确地定位问题所在,从而加快问题的排查和修复。在修复断言失败的问题后,还可以重新运行仿真,以验证修复的有效性,确保断言不在失败。
综上,本发明实施例提供了一种电路验证方法,将断言语句的转换为断言电路,该断言电路为可综合的寄存器转换级电路,可以直接用于硬件测试;根据断言电路和被测设计生成目标网表,进而根据目标网表将断言电路和被测设计配置到FPGA中,利用断言电路来揭示被测设计内部状态和潜在问题,解决了FPGA仿真缺乏设计细节的低级可见性的问题。并且,用硬件对被测设计进行调试加速,提升了被测设计的验证效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图2,示出了本发明的一种电路验证装置的结构框图,所述装置具体可以包括:
文件获取模块201,用于获取设计文件,所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
断言转化模块202,用于将所述断言语句转化为断言电路,所述断言电路为寄存器转换级电路;
网表生成模块203,用于基于所述被测设计和所述断言电路,生成目标网表;
芯片配置模块204,用于根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;
断言监测模块205,用于运行所述集成电路芯片,并监测所述被测设计的断言结果;
结果确定模块206,用于在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。
可选地,所述断言转化模块,包括:
文件解析子模块,用于对所述设计文件进行解析,得到抽象语法树;所述抽象语法树用于反映所述设计文件的逻辑结构和语义;
遍历子模块,用于遍历所述抽象语法树,以获取所述抽象语法树中的断言语句子树;
综合子模块,用于对所述断言语句子树进行电路综合处理,得到断言电路,所述断言电路为寄存器转换级电路。
可选地,所述综合子模块,包括:
分析单元,用于对所述抽象语法树中的断言语句子树进行分析,识别所述断言语句子树的关键字和断言语句表达式;
例化单元,用于将所述断言语句子树中的关键字例化为基础电路模块;
解析单元,用于对所述断言语句表达式进行语义解析,确定所述基础电路模块之间的连接方式;
连接单元,用于按照所述连接方式对所述基础电路模块进行连接,得到断言电路。
可选地,所述网表生成模块,包括:
断言解析子模块,用于对所述断言语句进行解析,得到所述被测设计与所述断言电路之间的信号连接信息;
网表生成子模块,用于基于所述信号连接信息、所述被测设计和所述断言电路,生成目标网表;所述目标网表用于采用逻辑门描述所述被测设计与所述断言电路之间的连接情况。
可选地,所述网表生成子模块,包括:
网表生成单元,用于将所述被测设计转换为第一网表,并将所述断言电路转换为第二网表;
网表缝合单元,用于基于所述信号连接信息将所述第一网表与所述第二网表中的对应部分进行缝合处理,得到目标网表;在所述目标网表中,所述第二网表的信号输入端与所述第一网表中的待监测信号的输出端相连。
可选地,所述芯片配置模块,包括:
位流文件生成子模块,用于根据所述目标网表生成目标位流文件;
电路烧录子模块,用于基于所述目标位流文件,将所述被测设计烧录至集成电路芯片的静态区域,并将所述断言电路烧录至所述集成电路芯片的动态部分重配置区域。
可选地,所述集成电路芯片的静态区域中还配置有覆盖率监测器;所述断言监测模块,包括:
采样子模块,用于运行所述集成电路芯片,并通过所述覆盖率监测器对所述被测设计的断言结果进行采样,以确定所述被测设计对应的正确断言次数;
所述结果确定模块,包括:
结果确定子模块,用于在所述被测设计对应的正确断言次数大于或等于预设阈值的情况下,确定所述被测设计通过验证。
可选地,所述装置还包括:
电路更换模块,用于在所述被测设计的断言覆盖率满足预设条件的情况下,更换所述动态部分重配置区域中的断言电路,以对所述被测设计进行下一轮断言验证。
可选地,所述装置还包括:
快照模块,用于在所述被测设计的断言结果为断言失败的情况下,对所述被测设计中各个寄存器的数据信息进行快照保存;
仿真模块,用于根据保存的数据信息和所述被测设计对应的标准参考模型进行数据仿真,以定位所述被测设计的断言失败原因并进行错误调试与修复。
综上,本发明实施例提供了一种电路验证装置,将断言语句的转换为断言电路,该断言电路为可综合的寄存器转换级电路,可以直接用于硬件测试;根据断言电路和被测设计生成目标网表,进而根据目标网表将断言电路和被测设计配置到FPGA中,利用断言电路来揭示被测设计内部状态和潜在问题,解决了FPGA仿真缺乏设计细节的低级可见性的问题。并且,用硬件对被测设计进行调试加速,提升了被测设计的验证效率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的处理器,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图3,是本发明实施例提供的一种电子设备的结构框图。如图3所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述实施例的电路验证方法。
所述处理器可以是CPU(Central Processing Unit,中央处理器),通用处理器、DSP(Digital Signal Processor,数字信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmble Gate Array,现场可编程门阵列)或者其他可编辑器件、晶体管逻辑器件、硬件部件或者其任意组合。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
所述通信总线可包括一通路,在存储器和通信接口之间传送信息。通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。所述通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器可以是ROM(Read Only内存,只读内存)或可存储静态信息和指令的其他类型的静态存储设备、RAM(Random Access,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically Erasable Programmable ReadOnly,电可擦可编程只读内存)、CD-ROM(Compact Disa Read Only,只读光盘)、磁带、软盘和光数据存储设备等。
本发明实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备(服务器或者终端)的处理器执行时,使得处理器能够执行图1所示的电路验证方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种电路验证方法、装置、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (15)
1.一种电路验证方法,其特征在于,所述方法包括:
获取设计文件,所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
将所述断言语句转化为断言电路,所述断言电路为寄存器转换级电路;
基于所述被测设计和所述断言电路,生成目标网表;
根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;
运行所述集成电路芯片,并监测所述被测设计的断言结果;
在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。
2.根据权利要求1所述的方法,其特征在于,所述将所述断言语句转化为断言电路,包括:
对所述设计文件进行解析,得到抽象语法树;所述抽象语法树用于反映所述设计文件的逻辑结构和语义;
遍历所述抽象语法树,以获取所述抽象语法树中的断言语句子树;
对所述断言语句子树进行电路综合处理,得到断言电路,所述断言电路为寄存器转换级电路。
3.根据权利要求2所述的方法,其特征在于,所述对所述断言语句子树进行电路综合处理,得到断言电路,包括:
对所述抽象语法树中的断言语句子树进行分析,识别所述断言语句子树的关键字和断言语句表达式;
将所述断言语句子树中的关键字例化为基础电路模块;
对所述断言语句表达式进行语义解析,确定所述基础电路模块之间的连接方式;
按照所述连接方式对所述基础电路模块进行连接,得到断言电路。
4.根据权利要求1所述的方法,其特征在于,所述基于所述被测设计和所述断言电路,生成目标网表,包括:
对所述断言语句进行解析,得到所述被测设计与所述断言电路之间的信号连接信息;
基于所述信号连接信息、所述被测设计和所述断言电路,生成目标网表;所述目标网表用于采用逻辑门描述所述被测设计与所述断言电路之间的连接情况。
5.根据权利要求4所述的方法,其特征在于,所述基于所述信号连接信息、所述被测设计和所述断言电路,生成目标网表,包括:
将所述被测设计转换为第一网表,并将所述断言电路转换为第二网表;
基于所述信号连接信息将所述第一网表与所述第二网表中的对应部分进行缝合处理,得到目标网表;在所述目标网表中,所述第二网表的信号输入端与所述第一网表中的待监测信号的输出端相连。
6.根据权利要求1所述的方法,其特征在于,所述根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中,包括:
根据所述目标网表生成目标位流文件;
基于所述目标位流文件,将所述被测设计烧录至集成电路芯片的静态区域,并将所述断言电路烧录至所述集成电路芯片的动态部分重配置区域。
7.根据权利要求6所述的方法,其特征在于,所述集成电路芯片的静态区域中还配置有覆盖率监测器;所述运行所述集成电路芯片,并监测所述被测设计的断言结果,包括:
运行所述集成电路芯片,并通过所述覆盖率监测器对所述被测设计的断言结果进行采样,以确定所述被测设计对应的正确断言次数;
所述在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证,包括:
在所述被测设计对应的正确断言次数大于或等于预设阈值的情况下,确定所述被测设计通过验证。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述被测设计的断言覆盖率满足预设条件的情况下,更换所述动态部分重配置区域中的断言电路,以对所述被测设计进行下一轮断言验证。
9.根据权利要求1所述的方法,其特征在于,在运行所述集成电路芯片,并监测所述被测设计的断言结果之后,所述方法还包括:
在所述被测设计的断言结果为断言失败的情况下,对所述被测设计中各个寄存器的数据信息进行快照保存;
根据保存的数据信息和所述被测设计对应的标准参考模型进行数据仿真,以定位所述被测设计的断言失败原因并进行错误调试与修复。
10.一种电路验证装置,其特征在于,所述装置包括:
文件获取模块,用于获取设计文件,所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
断言转化模块,用于将所述断言语句转化为断言电路,所述断言电路为寄存器转换级电路;
网表生成模块,用于基于所述被测设计和所述断言电路,生成目标网表;
芯片配置模块,用于根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;
断言监测模块,用于运行所述集成电路芯片,并监测所述被测设计的断言结果;
结果确定模块,用于在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。
11.根据权利要求10所述的装置,其特征在于,所述断言转化模块,包括:
文件解析子模块,用于对所述设计文件进行解析,得到抽象语法树;所述抽象语法树用于反映所述设计文件的逻辑结构和语义;
遍历子模块,用于遍历所述抽象语法树,以获取所述抽象语法树中的断言语句子树;
综合子模块,用于对所述断言语句子树进行电路综合处理,得到断言电路,所述断言电路为寄存器转换级电路。
12.根据权利要求11所述的装置,其特征在于,所述综合子模块,包括:
分析单元,用于对所述抽象语法树中的断言语句子树进行分析,识别所述断言语句子树的关键字和断言语句表达式;
例化单元,用于将所述断言语句子树中的关键字例化为基础电路模块;
解析单元,用于对所述断言语句表达式进行语义解析,确定所述基础电路模块之间的连接方式;
连接单元,用于按照所述连接方式对所述基础电路模块进行连接,得到断言电路。
13.根据权利要求10所述的装置,其特征在于,所述网表生成模块,包括:
断言解析子模块,用于对所述断言语句进行解析,得到所述被测设计与所述断言电路之间的信号连接信息;
网表生成子模块,用于基于所述信号连接信息、所述被测设计和所述断言电路,生成目标网表;所述目标网表用于采用逻辑门描述所述被测设计与所述断言电路之间的连接情况。
14.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至9中任一项所述的电路验证方法。
15.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至9中任一项所述的电路验证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310934163.6A CN116663463B (zh) | 2023-07-27 | 2023-07-27 | 一种电路验证方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310934163.6A CN116663463B (zh) | 2023-07-27 | 2023-07-27 | 一种电路验证方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116663463A true CN116663463A (zh) | 2023-08-29 |
CN116663463B CN116663463B (zh) | 2023-11-10 |
Family
ID=87728244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310934163.6A Active CN116663463B (zh) | 2023-07-27 | 2023-07-27 | 一种电路验证方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116663463B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1906619A (zh) * | 2004-09-30 | 2007-01-31 | 株式会社理光 | 断言产生系统及其程序、电路验证系统以及断言产生方法 |
CN101055523A (zh) * | 2006-06-01 | 2007-10-17 | 威盛电子股份有限公司 | 将软件程序代码断言转换为硬件描述语言程序代码的方法 |
US20100218150A1 (en) * | 2009-02-26 | 2010-08-26 | International Business Machines Corporation | Logic Design Verification Techniques for Liveness Checking |
CN102163248A (zh) * | 2011-04-02 | 2011-08-24 | 北京大学深圳研究生院 | 一种集成电路的高级综合方法 |
CN116157799A (zh) * | 2020-08-31 | 2023-05-23 | 西门子工业软件有限公司 | 动态cdc验证方法 |
-
2023
- 2023-07-27 CN CN202310934163.6A patent/CN116663463B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1906619A (zh) * | 2004-09-30 | 2007-01-31 | 株式会社理光 | 断言产生系统及其程序、电路验证系统以及断言产生方法 |
CN101055523A (zh) * | 2006-06-01 | 2007-10-17 | 威盛电子股份有限公司 | 将软件程序代码断言转换为硬件描述语言程序代码的方法 |
US20100218150A1 (en) * | 2009-02-26 | 2010-08-26 | International Business Machines Corporation | Logic Design Verification Techniques for Liveness Checking |
CN102163248A (zh) * | 2011-04-02 | 2011-08-24 | 北京大学深圳研究生院 | 一种集成电路的高级综合方法 |
CN116157799A (zh) * | 2020-08-31 | 2023-05-23 | 西门子工业软件有限公司 | 动态cdc验证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116663463B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7356786B2 (en) | Method and user interface for debugging an electronic system | |
US7065481B2 (en) | Method and system for debugging an electronic system using instrumentation circuitry and a logic analyzer | |
US6931572B1 (en) | Design instrumentation circuitry | |
US6618839B1 (en) | Method and system for providing an electronic system design with enhanced debugging capabilities | |
US6823497B2 (en) | Method and user interface for debugging an electronic system | |
US7072818B1 (en) | Method and system for debugging an electronic system | |
US7222315B2 (en) | Hardware-based HDL code coverage and design analysis | |
US8554530B1 (en) | Methods and systems for property assertion in circuit simulation | |
CN116663462B (zh) | 断言验证方法、断言验证平台、电子设备及可读存储介质 | |
CN116663467B (zh) | 断言等效硬件库的构建方法、装置、电子设备及存储介质 | |
EP1376413A1 (en) | Test bench generator for integrated circuits, particularly memories | |
US20030237078A1 (en) | Incorporating simulation analysis instrumentation into HDL models | |
CN116663463B (zh) | 一种电路验证方法、装置、电子设备及可读存储介质 | |
CN116702663B (zh) | 一种电路综合方法、装置、电子设备及可读存储介质 | |
Hekmatpour et al. | Block-based schema-driven assertion generation for functional verification | |
Skarman et al. | Enhancing Compiler-Driven HDL Design with Automatic Waveform Analysis | |
US10635766B2 (en) | Simulation employing level-dependent multitype events | |
Caba et al. | HALib: Hardware Assertion Library for on-board verification of FPGA-based modules using HLS | |
Macori | Implementation of UVM-Based Framework for Enhancement of DFT DV Flows | |
Ubar et al. | High-Level Decision Diagrams | |
Wang | Verik: Reinterpreting Kotlin as a Hardware Description Language | |
Niskanen | High-level verification flow for a high-level synthesis-based digital logic design | |
Pal et al. | BUSpec: A framework for generation of verification aids for standard bus protocol specifications | |
Boulé | Assertion-checker synthesis for hardware verification, in-circuit debugging and on-line monitoring | |
De Paula et al. | Refactoring digital hardware designs with assertion libraries |
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 |