CN116702663A - 一种电路综合方法、装置、电子设备及可读存储介质 - Google Patents
一种电路综合方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN116702663A CN116702663A CN202310937005.6A CN202310937005A CN116702663A CN 116702663 A CN116702663 A CN 116702663A CN 202310937005 A CN202310937005 A CN 202310937005A CN 116702663 A CN116702663 A CN 116702663A
- Authority
- CN
- China
- Prior art keywords
- assertion
- statement
- operator
- basic circuit
- 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
- 230000015572 biosynthetic process Effects 0.000 title claims abstract description 26
- 238000003786 synthesis reaction Methods 0.000 title claims abstract description 26
- 238000001308 synthesis method Methods 0.000 title claims abstract description 19
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 238000012795 verification Methods 0.000 claims abstract description 91
- 238000013461 design Methods 0.000 claims description 105
- 238000000034 method Methods 0.000 claims description 54
- 238000012360 testing method Methods 0.000 claims description 41
- 238000004458 analytical method Methods 0.000 claims description 24
- 238000004891 communication Methods 0.000 claims description 18
- 230000014509 gene expression Effects 0.000 claims description 17
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 50
- 238000010586 diagram Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 22
- 238000001514 detection method Methods 0.000 description 13
- 241000220317 Rosa Species 0.000 description 12
- 230000006399 behavior Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000005070 sampling Methods 0.000 description 11
- 238000004088 simulation Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 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
- 230000003068 static effect 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
- 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
- 230000002035 prolonged effect Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000008672 reprogramming Effects 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/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/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/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
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)
Abstract
本发明实施例提供一种电路综合方法、装置、电子设备及可读存储介质,该方法包括:对待综合的断言语句进行解析,识别所述断言语句对应的关键字和验证方式;将所述断言语句中的关键字例化为基础电路模块;根据所述验证方式确定所述基础电路模块对应的连接方式;按照所述连接方式对所述基础电路模块进行连接,得到所述断言语句对应的断言电路。本发明实施例可以将不可综合的断言语句转换为等效的可综合的断言电路,以便在硬件中实现基于断言的验证。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种电路综合方法、装置、电子设备及可读存储介质。
背景技术
随着计算机体系结构和硬件设计的复杂化,功能验证成为芯片开发中耗时的过程。验证工作占据了高达70%的开发周期。在验证环节中,其中一个瓶颈是硬件描述级别(Register-Transfer Level,RTL)电路的软件仿真。虽然软件仿真提供了完整的设计细节可见性以帮助调试,但对于复杂设计的长时间仿真而言,RTL仿真会非常耗时,这使得验证效率明显地降低。此外,软件仿真仍然依赖人工判断来检查波形和调试信息,以定位设计中的问题。
断言通常被用作一种高效的验证方法,以减轻数字电路功能验证中的调试工作量。超过75%的ASIC设计和近50%的FPGA设计采用了基于断言的验证(assertion-basedverification, ABV)。与传统的使用printf或display调试技术相比,ABV可以同时执行自动监测和检查,以验证给定的硬件设计是否符合预期行为。一旦断言被违反,验证系统会自动标记问题。工程师们可以使用仿真软件调查断言失败的原因,并追溯到根本原因。在工业设计过程中,设计工程师通常添加断言以预防未来的意外行为,并识别潜在错误。断言在检查具有时序信息的复杂逻辑行为时非常有价值。然而,断言是不可综合的结构,不能直接用于硬件测试,只能用于软件仿真。
发明内容
本发明实施例提供一种电路综合方法、装置、电子设备及可读存储介质,可以解决断言语句不可综合,无法用于硬件测试的问题。
为了解决上述问题,本发明实施例公开了一种电路综合方法,所述方法包括:
对待综合的断言语句进行解析,识别所述断言语句对应的关键字和验证方式;
将所述断言语句中的关键字例化为基础电路模块;
根据所述验证方式确定所述基础电路模块对应的连接方式;
按照所述连接方式对所述基础电路模块进行连接,得到所述断言语句对应的断言电路。
另一方面,本发明实施例公开了一种电路综合装置,所述装置包括:
解析模块,用于对待综合的断言语句进行解析,识别所述断言语句对应的关键字和验证方式;
例化模块,用于将所述断言语句中的关键字例化为基础电路模块;
第一确定模块,用于根据所述验证方式确定所述基础电路模块对应的连接方式;
第一连接模块,用于按照所述连接方式对所述基础电路模块进行连接,得到所述断言语句对应的断言电路。
再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的电路综合方法。
本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的电路综合方法。
本发明实施例包括以下优点:
本发明实施例提供了一种电路综合方法,通过对断言语句进行解析,识别出断言语句的关键字和验证方式,将关键字例化为等效的基础电路模块,根据验证方式确定各个基础电路模块对应的连接方式,并按照确定出的连接方式对各个基础电路模块进行连接,将不可综合的断言语句转换为了等效的可综合的断言电路,以便在硬件中实现基于断言的验证。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种电路综合方法实施例的步骤流程图;
图2是本发明的一种信号检测算子的基础电路模块的结构示意图;
图3是本发明的一种断言电路的结构示意图;
图4是本发明的一种$rose函数算子的示意图;
图5是本发明的一种非交叠蕴含操作符算子的示意图;
图6是本发明的一种延时算子的示意图;
图7是本发明的一种or算子的示意图;
图8是本发明的一种电路综合装置的结构框图;
图9是本发明示例提供的一种用于电路综合的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,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节点,可以进行静态分析、代码优化、重构等操作。
总之,抽象语法树是一种用于表示程序代码结构的树形数据结构,它提供了一种方便的方式来分析、转换和优化代码。
参照图1,示出了本发明的一种电路综合方法实施例的步骤流程图,所述方法具体可以包括如下步骤:
步骤101、对待综合的断言语句进行解析,识别所述断言语句对应的关键字和验证方式;
步骤102、将所述断言语句中的关键字例化为基础电路模块;
步骤103、根据所述验证方式确定所述基础电路模块对应的连接方式;
步骤104、按照所述连接方式对所述基础电路模块进行连接,得到所述断言语句对应的断言电路。
需要说明的是,断言语句是一种在测试过程中用于检查特定条件是否满足的语句,测试项目是为了验证软件或系统的正确性而执行的一系列测试活动。在针对被测设计的一个测试项目中可以包含多条断言语句,通过这些断言语句,可以定义测试的目标和期望结果,从而指导测试的设计和执行。具体地,可以通过在测试代码中插入断言语句,自动化地验证测试过程中的各种条件和约束,确保测试结果的正确性。当测试项目中出现问题或错误时,通过断言语句的失败信息,可以快速识别导致问题的具体条件,从而加快问题的排查和修复。
断言语句是不可综合的,无法直接配置在硬件(例如FPGA芯片)中以实现对被测设计的硬件仿真。因此,在本发明实施例中,先对断言语句进行解析,识别出断言语句的关键字和验证方式。
其中,关键字用于反映断言语句中不可被综合的特征算子或操作符,如时钟信号、采样函数、序列操作符关键词,等等。断言语句的验证方式用于反映断言语句的断言验证规则,也即断言正确需要满足的条件。根据每个关键字的逻辑,采用RTL电路中的各个逻辑器件,如逻辑寄存器、状态机、触发器等,对各个关键字实现的功能进行硬件模拟,设计对应的等效硬件电路,就可以得到该关键字对应的基础电路模块。
在本发明实施例中,可以将断言语句的关键字分为六大类:立即断言、序列采样信号、序列操作符、信号检测(signal_check)算子、基础操作符、时序算子(延时和重复),每一类中包含了若干个不可综合的关键字。根据断言语句中关键字的类型,可以将本发明中的基础电路模块同样分为上述六大类。
根据断言语句的验证方式可以确定出各个基础电路模块对应的连接方式。具体地,根据断言语句的验证方式,可以确定出断言语句中各个关键字的先后顺序、时钟信号的传递逻辑、状态匹配规则等信息,根据这些信息将各个基础电路模块中的输入信号、输出信号中相同的信号进行连接,就可以得到各个基础电路模块对应的连接方式。
按照确定出来的连接方式对断言语句对应的各个基础电路模块进行连接,就可以得到该断言语句对应的断言电路。可以理解的是,本发明实施例中的断言电路可以采用RTL代码表示。
本发明实施例提供的电路综合方法,通过对断言语句进行解析,识别出断言语句的关键字和验证方式,将关键字例化为等效的基础电路模块,根据验证方式确定各个基础电路模块对应的连接方式,并按照确定出的连接方式对各个基础电路模块进行连接,将不可综合的断言语句转换为了等效的可综合的断言电路,以便在硬件中实现基于断言的验证。
在本发明的一种可选实施例中,步骤103所述根据所述验证方式确定所述基础电路模块对应的连接方式,包括:
步骤S11、根据所述验证方式确定所述断言语句对应的各个基础电路模块的时序信号和所述基础电路模块之间的信号连接信息;
步骤S12、根据所述基础电路模块的时序信号和信号连接信息确定所述基础电路模块对应的连接方式。
一个断言语句中可能包含一个或多个关键字,每个关键字对应一个相同功能的基础电路模块。在本发明实施例中,可以根据断言语句的验证方式确定出断言语句对应的各个基础电路模块的时序信号,以及各个基础电路模块之间的信号连接信息。
其中,时序信号用于确定微操作的执行时段,它规定这个微操作(例如时钟信号、使能信号等)在什么时候发出去。根据时序信号可以确定基础电路模块的运行逻辑,以及各个基础电路模块之间的交互逻辑。
一个基础电路模块通常包括使能端、输入端和输出端。在本发明实施例中,基础电路模块的输出端通常有两个,分别为用于输出指示断言成功的“Match”信号的输出端,和用于输出指示断言失败的“Fail”信号的输出端。参照图2,示出了一种信号检测算子(signal_check)的基础电路模块的结构示意图。信号检测算子用于检测输入信号是否为真。如图2所示,“EN”为该基础电路模块的使能信号端口,只有在前一级基础电路模块匹配时,也即前一级基础电路模块的输出信号满足断言语句中的方式时,前一级匹配信号(也即前一级基础电路模块的输出信号)才能使能当前基础电路模块,使其输入结果。“MATCH”和“FAIL”为基础电路模块的输出端口,当前模块被激活后给下一级或者整个断言电路输出。基础电路模块中的这三个端口结构保障断言电路中传输的时钟信号保持正常的时序。
作为一种示例,待综合的断言语句如下所示:
@(posedge clk) SIG_IN1 ##2 SIG_IN2[*2] ##1 SIG_IN3 |=>SIG_IN4 ##2SIG_IN5
其中,“|=>”为非交叠蕴含操作符(nonoverlapped implicationoperators)。非交叠蕴含操作符左端的序列被称为起因序列,右端的序列被称为结果序列。包含非交叠蕴含操作符的断言语句存在以下几种情况:
如果起因序列不匹配(也即存在冲突,起因序列的实际运行逻辑与断言语句中的逻辑不一致),则断言不生效;如果起因序列匹配的下一个时钟周期,结果序列也匹配(也即不存在冲突,结果序列的实际运行逻辑与断言语句中的逻辑一致),则断言匹配(也即断言成功);如果起因序列匹配的下一个时钟周期,结果序列冲突,则断言失败。
以上述断言语句中的起因序列为例,参照图3,示出了上述示例的断言语句对应的断言电路的结构示意图。在每一个时钟信号上升沿判断起因序列中SIG_IN1是否为真,若为真,在两个时钟周期(##2)后SIG_IN2要保持两个周期为真, 若为真, 一个时钟周期后SIG_IN3也要为真,如果以上条件都满足,即SIG_IN1 ##2 SIG_IN2[*2] ##1 SIG_IN3整个起因序列匹配。
结果序列是否匹配的判断逻辑与起因序列相同。以上述断言语句中的结果序列为例,再起因序列匹配的下一个时钟周期,判断SIG_IN4是否未针,若为真,在两个时钟周期(##2)后SIG_IN5也要为真,如果以上条件都满足,就可以确定结果序列“SIG_IN4 ##2 SIG_IN5”匹配。
上述断言语句包含四种关键字:信号检测(signal_check)、延时、重复性信号检测和非交叠蕴含操作符。因此,该断言语句对应有四种基础电路模块:
1)signal_check:用于检测输入信号是否为真;
2)signal_repeat:用于执行重复性信号检测功能;
3)time_delay: 将输入信号在n个时钟周期后输出;
4)nonoverlapped implication operators:用于实现非交叠蕴含操作符(|=>)的功能。
基于上述断言语句的验证方式,可以确定出上述各个基础电路模块的时序信号以及基础电路模块之间的信号连接信息。具体地,依据起因序列“SIG_IN1 ##2 SIG_IN2[*2]##1 SIG_IN3”,需要在SIG_IN1信号为真后两个周期且SIG_IN2信号保持两个周期为真后的一个周期才能输出SIG_IN3信号的判定结果。所以断言电路中只有当EN端获取到前一级的Match信号后才会将结果进行输出,而非任意时刻都能产生输出。
nonoverlapped implication operators模块判断起因序列匹配的下一个时钟周期,右端的序列也匹配,则整个断言匹配,会输出Match信号,即整个断言电路的匹配信号;起因序列匹配的下一个时钟周期,右端的序列冲突,会输出Fail信号则整个断言失败;起因序列不匹配(冲突),断言没有生效,MATCH和FAIL均无输出。
基于各个基础电路模块的时序信号和信号连接信息,就可以确定出断言语句对应的各个基础电路模块之间的连接方式,按照该连接方式对基础电路模块进行连接,就可以得到断言语句对应的断言电路。
在本发明的一种可选实施例中,步骤102所述将所述断言语句中的关键字例化为基础电路模块,包括:
步骤S21、根据所述关键字确定所述断言语句包含的断言算子;
步骤S22、从预设的断言等效硬件库中获取所述断言算子对应的基础电路模块。
其中,断言算子为断言语句中实现基础断言功能的算子,本发明实施例中的断言算子可以包括但不限于:立即断言、序列采样信号、序列操作符、信号检测(signal_check)算子、基础操作符、时序算子(延时和重复),每一类中包含了若干个不可综合的关键字和操作符,等等。
断言语句的不可综合主要在于断言语句通常使用复杂的过程性结构、时间运算符、函数等来编写,这些断言算子在硬件元素中无法直接转化,要将断言语句转换为可综合的硬件等效电路,就需要对这些断言算子进行转化。
在本发明实施例中,为了提高断言语句的电路综合效率,可以提前构建断言等效硬件库,将各个断言算子对应的基础电路模块保存在断言等效硬件库中,从而在对断言语句进行电路综合处理的过程中,直接从断言等效硬件库中获取对应的基础电路模块。
需要说明的是,本发明实施例的断言等效硬件库中存储的基础电路模块由逻辑器件组成,用于实现对应的断言算子的功能。例如,基础电路模块signal_check对应于信号检测算子,用于检测输入信号是否为真;基础电路模块nonoverlapped implicationoperators用于实现非交叠蕴含操作符(|=>)的功能。其中,逻辑器件可以包括但不限于:门电路和反相器、选择器、译码器、计数器、寄存器、触发器、锁存器、缓冲驱动器、收发器、总线开关、状态机,等等。基础电路模块中包含的逻辑器件根据其实现的功能确定,基础电路模块的功能不同,包含的逻辑器件也就不同。
可选地,所述从预设的断言等效硬件库中获取所述断言算子对应的基础电路模块之前,所述方法还包括:
步骤S31、确定断言算子的输入信号与输出信号之间的逻辑关系;
步骤S32、根据所述逻辑关系确定所述断言算子对应的逻辑器件和所述逻辑器件之间的连接方式;
步骤S33、按照所述连接方式连接所述断言算子对应的各个逻辑器件,得到所述断言算子对应的基础电路模块;
步骤S34、将所述断言算子对应的基础电路模块添加至断言等效硬件库中。
在本发明实施例中,可以根据各类断言算子的输入信号与输出信号之间的逻辑关系确定该断言算子对应的逻辑器件以及逻辑器件之间的连接方式,按照确定的连接方式对各个逻辑器件进行连接,就可以得到该断言算子对应的基础电路模块。将生成的基础电路模块添加至断言等效硬件库中,实现断言等效硬件库的构建。
示例性地,以下述断言语句为例:
property gray_counter_prop
@(posedge clk) en&&$rose(binary_out[7:0])&&( binary_out[31:8]== 24'b110)|=>(gray_in[2][*3]##4 gray_in[2]) or( $past(gray_in,4) != 32'hfe)
endproperty
assert gray_counter_prop
该断言语句中涉及到了多个不可综合的断言算子,且在不同的分类中,分别是属于基础操作符的“&&”、“==”、“|=>”、“!=”;属于序列采样信号的“$rose”、“$past”;属于序列操作符的“or”;属于时序算子的“##4”、“[*3]”。这些断言算子都无法直接生成RTL电路,只能用于软件RTL仿真,但是通过本发明实施例提供的方法,可以把每个断言算子都转换成RTL电路,从而实现硬件加速仿真。本发明中的硬件断言算子之间可以通过统一的接口进行自由组合,并支持多位宽的输入信号,信号位宽可在编译时指定。
按照上述步骤S31至步骤S34,对上述断言语句中的各个断言算子依次进行处理。
对于基础操作符或序列采样信号,可以根据断言算子对应的逻辑运算规则和输入信号的位宽,确定所述断言算子的输入信号与输出信号之间的逻辑关系。例如,基础操作符“&&”,其两端的输入是对称关系,左右互换不会对输出结果造成影响。当输入都是1位宽时,输入同时为1,则输出为1;输入不同时为1,则输出为0;当输入是多位宽时,只需要将两个输入做逻辑与,就可以得到正确的结果。所以只需要组合逻辑关系就可以解决这个算子,代码上只需要用assign语句即可。这个原理可以用于简单操作符分类里的大部分操作符,例如基础操作符“==”、“!=”,等等。
序列采样信号“$rose”、“$fell”、“$stable”三者的实现方式很相似,以“$rose”为例子进行说明,“$past”和这三个函数有些许不同。参照图4,示出了一种$rose函数算子的示意图。如图4所示,rose算子是支持输入信号signal_in为多位宽的,正如上述语句中的“binary_out[7:0]”是多位宽的,这里处理多位宽的方式就是使用按位与“&”的符号,得到一个8位信号,其中“[7:1]”为0,“[0]”位是0/1。rose函数是用来检测是否存在0-1跳变的函数,那么只需要将上一个周期的信号保存下来,再与当前周期的值进行比较,就可以得到match和fail的值,只有当0-1跳变时,match输出为1,fail为0,其余情况都是match为0,fail为1。en信号就是开始信号,可以理解为启动算子的信号,只有当前一级匹配时,这一级的算子才会启动,这个原理在众多算子中都适用,除非算子是组合逻辑算子。在这个原理下,rose算子用到了寄存器、一些门电路和线,这些都是实际电路中存在的东西,所以变成了可综合的表达方式。$fell、$stable的实现方式和$rose差异在于门电路的种类稍微不同,其余大体都相同,所以也实现了RTL电路的转化。
对于交叠蕴含操作符或非交叠蕴含操作符,可以根据所述断言算子的验证规则确定所述断言算子的起因序列与结果序列之间的信号连接信息,进而根据所述信号连接信息确定所述断言算子的输入信号与输出信号之间的逻辑关系。其中,交叠蕴含操作符和非交叠蕴含操作符的区别就在于,交叠蕴含操作符要求起因序列和结果序列同时判定。很明显,这两个操作符和其他简单操作符不同,这里引入了时钟周期,也就意味着肯定需要时钟信号才能满足这两个操作符的逻辑关系。参照图5,示出了一种非交叠蕴含操作符算子的示意图。如图5所示,op_input_left为语句“en&&$rose(binary_out[7:0])&&( binary_out[31:8]== 24'b110)”的输出结果,op_input_right为语句“(gray_in[2][*3] ##4 gray_in[2])or( $past(gray_in,4) != 32'hfe)”的输出结果,只有当op_input_left的输出结果为1时,op_input_right的输出结果才会赋值给match和fail,否则match和fail都直接赋值为0。通过这种输出方式,就实现了非交叠蕴含操作符的逻辑功能,并且只引入了寄存器和连线,从而实现了这两个不可综合的操作符的RTL电路。
对于时序算子,可以先确定所述时序算子的输入信号输出信号对应的延时周期和电平变化情况;然后,根据所述延时周期和所述电平变化情况确定所述时序算子的输入信号与输出信号之间的逻辑关系。其中,时序算子可以分为延时算子和重复算子。参照图6,示出了一种延时算子的示意图。如图6所示,延时和重复算子都没有en信号,这是因为这两个算子的输入signal_in都是上一个算子signal_check的输出match,而signal_check是需要en信号来进行使能的,所以这两个算子就不再需要了。上述断言语句实例中,即为“gray[2][*3]”需要先经过signal_check算子,来判定match为0或者1,再将match的结果作为延时算子的signal_in,只有当signal_in为1时,才会继续延时的功能;如果signal_in为0,那么会直接输出signal_out为0,这时候延时功能不会发挥,上述语句示例就会忽视“##4”,而不会延时四拍。当signal_in为1时,延时算子的功能是输入信号经过n个周期的延时之后再输出,上述例子就是延时4个时钟周期输出。这个功能反映在电路上可以用计数器来实现,加入一个计数参数,计数参数的值和“##n”的n值相关。同时加入状态机,分为基本状态(IDLE_DELAY)和激活状态(READ_DELAY),只有当signal_in为1时,才会让状态机从基本状态变化到激活状态。进入激活状态之后,只要计数变量没有大于计数参数,那么就一直保持在激活状态,直到计数到n,输出signal_out为1。整个过程中涉及到的是计数器和状态机,这都是有RTL电路对应的,所以实现了延时算子的RTL电路的转化。
重复算子和延时算子的示意图一致,区别在于重复算子在每个时钟上升沿需要添加一个signal_in是否为1的判定,这意味着状态机的判定需要加以修改,但整体的实现方式仍然是计数器和状态机,这也是有RTL电路对应的,所以实现了重复算子RTL电路的转化。
对于信号检测算子,可以根据所述信号检测算子的算子类型确定所述信号检测算子的输入信号与输出信号之间的逻辑关系。其中,所述信号检测算子的算子类型包括组合逻辑算子和时序逻辑算子。基本上每个不可综合的操作符都需要借用signal_check算子。信号检测算子的作用就是判定输入的信号是否为真,比如,每个进入延时算子的信号都需要先进行signal_check,经过signal_check算子后输出match给到延时算子来进行判定。signal_check分为组合逻辑和时序逻辑,这两者的使用范围稍有不同,当涉及到延时、重复等和时钟相关的算子时,因为使用时序逻辑的signal_check会带来时序上的错误,这时候一般使用组合逻辑的signal_check;但如果涉及到的都是组合算子,如简单操作符里面的那些,因为那些算子里没有时钟信号,而整个语句是放在时钟背景下进行的,这时候就需要使用时序的signal_check来引入时钟。组合逻辑的signal_check使用到的就是门电路和线、时序逻辑的signal_check使用到的是寄存器、门电路和线,这些是RTL电路的基本组成。
对于序列操作符,可以先根据所述序列操作符对应的断言功能,确定所述序列操作符的两个输入序列与输出信号对应的匹配规则;然后,根据所述匹配规则确定所述序列操作符的输入信号与输出信号之间的逻辑关系。以上述断言语句中的“or”算子为例,参照图7,示出了一种or算子的示意图。如图7所示,or算子的左边输入是一个序列(sequence),右边输入也是一个序列(sequence),所以两个输入信号seqop_input_left和seqop_input_right都可以是多位宽的,在上述例子中分别是(gray_in[2][*3]##4 gray_in[2]) 和( $past(gray_in,4) != 32'hfe)。or操作符的作用是检测两个序列至少有一个为真,当两个序列至少有一个为真时,输出match为1,这个逻辑关系和数字电路中的或很相似,但是又有一些区别。因为在SVA软件仿真中,不需要考虑资源的消耗和所占用的面积,所以这个判断的时间长度可以拉到很长,甚至无限长;但这个在硬件中是不可能实现的,所以加入了en信号,来使能这个算子,还需要加入一个计数的时钟周期参数NUM_CNT,这个参数用来限制判定的周期长度,使得这个算子不会占用的资源过多,这一点其他的三个序列操作符and、intersect、first_match同理,本质上是因为硬件的限制。软件仿真中的or只会有一个输出,但是在硬件上如果一个输出无法判定三种状态:有效、无效、复位,所以需要加入match和fail,和上面算子不同,这里的match和fail往往不是简单的相反关系,or算子中,假设计数时钟周期参数NUM_CNT为5,那么只有当被en使能后的五个周期内,两个序列都保持5个周期的不为真状态,这时候才会match为0,fail为1;只要被en使能的五个周期内,有一个时钟周期,任意一个序列为真,那么就会输出match为1,fail为0;复位的状态就是match和fail都为0。实现这样的逻辑需要把match和fail分开来实现,实现match的功能,需要先得到两个输入的'|'的结果seq_or,然后将en信号延长至NUM_CNT个周期高电平有效,实现这一步需要加入一个计数器,然后match即为seq_or和en信号延长之后的结果。fail状态的输出需要借助状态机,分为基本状态(IDLE_FAIL)和激活状态(READ_FAIL),状态的改变来源于en信号的输入,只要有一个周期检测到seq_or为1的情况下,那么fail就不会再输出为1。通过这两个方式,就可以实现or操作符的功能。整个过程中主要用到的就是计数器和状态机,这都是RTL电路可以实现的功能,实现了or算子的可综合。
其他的序列操作符,如and算子、intersect算子,实现和or算子相似,区别在于and和intersect本身逻辑的区别。这里的and和数字电路中的“与”有区别,和“与”更加相似的是intersect,需要两个序列同时为1,match才会输出为1。and算子的逻辑是检测到一次两个序列都为真时,开始输出match为1,直到两个序列都不为真时,才会输出match为0。fail的逻辑基本和or一致,都是在整个判定周期内不符合的情况下,才会输出fail为1。
first_match算子的逻辑是如果有多个周期的高电平输入,只会输出一个周期的高电平,这个逻辑与上述三个操作符有所不同,但是基本实现的方式都是状态机和计数器,都是RTL电路可实现的功能。
按照上述处理逻辑将各个断言算子转化为可综合的基础电路模块,并将各个断言算子对应的基础电路模块保存在断言等效硬件库中,从而在对断言语句进行电路综合处理的过程中,直接从断言等效硬件库中获取对应的基础电路模块,提高了断言语句的电路综合效率。
在本发明的一种可选实施例中,步骤101所述对待综合的断言语句进行解析,识别所述断言语句对应的关键字和验证方式,包括:
步骤S41、获取设计文件;所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
步骤S42、将所述设计文件转换为抽象语法树;所述抽象语法树用于反映所述设计文件的逻辑结构和语义;
步骤S43、遍历所述抽象语法树,以获取所述抽象语法树中的断言语句子树;
步骤S44、对所述断言语句子树进行解析,识别所述断言语句对应的关键字和验证方式。
设计文件中的被测设计和断言语句通常使用硬件描述语言(如HDL)描写,不易于处理和分析。在本发明实施例中,可以先对设计文件进行解析,将设计文件转化为更易于处理和分析的抽象语法树。该抽象语法树可以反映设计文件(包括被测设计和断言语句)的逻辑结构和语义。在实际应用中,可以通过抽象语法树的生成工具,例如语法分析器(Parser),等等。
然后,对转换得到的抽象语法树进行遍历,找到断言语句对应的断言语句子树,对抽象语法树中的每一个断言语句子树进行解析,就可以识别出关键字(如时钟信号、采样函数、序列操作关键词,等等)和断言语句的验证方式。
可选地,步骤S44所述对所述断言语句子树进行解析,识别所述断言语句对应的关键字和验证方式,包括:
子步骤S441、对所述断言语句子树进行语法解析,识别出所述断言语句对应的关键字;
子步骤S442、对所述断言语句子树进行语义解析,识别出所述断言语句对应的验证表达式。
在对断言语句子树进行解析的过程中,可以通过语法解析,识别出断言语句中的关键字,如立即断言、序列采样信号、序列操作符、信号检测(signal_check)算子、基础操作符、时序算子(延时和重复),每一类中包含了若干个不可综合的关键字和操作符,等等。通过语义解析,识别出断言语句对应的验证表达式,例如各个关键字对应的基础电路模块的时序信号、信号连接信息、匹配规则,等等。
示例性地,在本发明实施例中,可以将断言语句分成7个节点和5个层级。具体地,断言语句的节点可以包括:序列(Sequence)、常数(constant)、信号(signal)、样本子例程(sample subroutine)、算子(operator)、时延算子(time delay operator)、重复算子(repetition operator)。断言语句的层级可以包括:序列表达式(sequence expression)、一元操作符(unary operator)、样本子例程、时延算子和重复算子。其中,一元操作符层级中包括左侧算子(operator left)和右侧算子(operator right),样本子例程层级中包括参数(Argument),时延算子层级中包括时延表达式(time delay expression),重复算子层级中包括重复表达式(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”的电路综合处理,也即得到了该断言语句的断言电路。
在本发明的一种可选实施例中,所述方法还包括:
步骤S51、基于所述被测设计和所述断言电路,生成目标网表;
步骤S52、根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;
步骤S53、运行所述集成电路芯片,并监测所述被测设计的断言结果;
步骤S54、在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。
需要说明的是,网表(Netlist)在电子设计自动化中,是指用基础的逻辑门来描述数字电路连接情况的描述方式。由于逻辑门阵列有着连线表一样的排列外观,因此称之为“网表”。网表通常传递了电路连接方面的信息,例如模块的实例、线网以及相关属性。如果需要包含更多的硬件信息,通常会使用硬件描述语言,例如Verilog、VHDL或其他的专用语言来进行描述、验证和仿真。高抽象层次(如寄存器传输级)的硬件描述可以通过逻辑综合转换为低抽象层次(逻辑门级)的电路连线网表,这一步骤目前可以使用自动化工具完成,这也大大降低了设计人员处理超大规模集成电路的繁琐程度。硬件厂商利用上述网表,可以制造具体的专用集成电路或其他电路。一些相对较小的电路也可以在现场可编程逻辑门阵列上实现。
在本发明实施例中,目标网表用于采用逻辑门描述所述被测设计与所述断言连接之间的连接情况。具体地,在目标网表中,断言电路的输入端与被测设计中待监测信号的输出端相连。
基于目标网表可以将被测设计与断言电路配置到集成电路芯片中。本发明实施例中的集成电路芯片,即为FPGA。可以理解的是,要在FPGA上运行设计,需要先通过FPGA厂商提供的软件生成相应的位流文件,利用位流文件将设计导入FPGA。位流文件是一种二进制文件,用于存储和传输可编程逻辑设备(如FPGA)的配置信息,它包含了将FPGA配置为特定硬件功能的位信息。在本发明实施例中,可以先根据目标网表生成目标位流文件,目标位流文件中包含将FPGA配置为用于利用断言电路对被测设计进行硬件验证的位信息。具体地,目标位流文件包含了FPGA的逻辑门配置、寄存器设置和连接信息等。利用目标位流文件,就可以将断言电路和被测设计烧录到FPGA板卡上,实现对FPGA的配置。在FPGA中,断言电路的信号输入端与被测设计的RTL电路设计中待监测信号的输出端相连接。
运行PFGA,并监测被测设计的断言结果。一旦被测设计中待监测信号以违反断言语句所描述的方式运行,断言电路就会自动标记问题,并输出断言失败信号。此外,断言电路还可以定位断言失败的时刻和相关信号,通过断言电路的失败信息,可以快速识别导致问题的具体条件,从而加快问题的排查和修复。
当被测设计的断言覆盖率满足预设条件的情况下,就可以确定该被测设计通过验证。其中,断言覆盖率是一种测试度量指表,用于衡量在测试过程中断言语句被执行的程度。断言覆盖率通常以百分比的形式表示,具体为已正确执行的断言语句数与总断言语句数之间的比例。例如,如果设计文件中有100个断言语句,而在测试中有80个断言语句被正确执行了,那么断言覆盖率为80%。较高的断言覆盖率表示测试覆盖了更多的断言语句,从而提供了更全面的测试保证。在本发明实施例中,预设条件可以根据具体的验证需求进行设置,例如,预设条件可以为被测设计的断言覆盖率大于或等于预设阈值,等等。
在实际测试过程中,利用本发明实施例提供的电路验证方法,通过断言电路在FPGA上对被测设计进行验证,实现了相比软件仿真高达40989倍的性能提升。与现有供应商提供的调试工具相比,本发明具有最小的面积开销,对被测设备的时序行为没有影响。本发明实施例用硬件(FPGA)对被测设计进行调试加速,可以快速到达断言失败时刻,提升了验证效率。
综上,本发明实施例提供了一种电路综合方法,通过对断言语句进行解析,识别出断言语句的关键字和验证方式,将关键字例化为等效的基础电路模块,根据验证方式确定各个基础电路模块对应的连接方式,并按照确定出的连接方式对各个基础电路模块进行连接,将不可综合的断言语句转换为了等效的可综合的断言电路,以便在硬件中实现基于断言的验证。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图8,示出了本发明的一种电路综合装置的结构框图,所述装置具体可以包括:
解析模块801,用于对待综合的断言语句进行解析,识别所述断言语句对应的关键字和验证方式;
例化模块802,用于将所述断言语句中的关键字例化为基础电路模块;
第一确定模块803,用于根据所述验证方式确定所述基础电路模块对应的连接方式;
第一连接模块804,用于按照所述连接方式对所述基础电路模块进行连接,得到所述断言语句对应的断言电路。
可选地,所述第一确定模块,包括:
第一确定子模块,用于根据所述验证方式确定所述断言语句对应的各个基础电路模块的时序信号和所述基础电路模块之间的信号连接信息;
第二确定子模块,用于根据所述基础电路模块的时序信号和信号连接信息确定所述基础电路模块对应的连接方式。
可选地,所述例化模块,包括:
断言算子确定子模块,用于根据所述关键字确定所述断言语句包含的断言算子;
电路获取子模块,用于从预设的断言等效硬件库中获取所述断言算子对应的基础电路模块。
可选地,所述装置还包括:
第二确定模块,用于确定断言算子的输入信号与输出信号之间的逻辑关系;
第三确定模块,用于根据所述逻辑关系确定所述断言算子对应的逻辑器件和所述逻辑器件之间的连接方式;
第二连接模块,用于按照所述连接方式连接所述断言算子对应的各个逻辑器件,得到所述断言算子对应的基础电路模块;
添加模块,用于将所述断言算子对应的基础电路模块添加至断言等效硬件库中。
可选地,所述解析模块,包括:
获取子模块,用于获取设计文件;所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
转换子模块,用于将所述设计文件转换为抽象语法树;所述抽象语法树用于反映所述设计文件的逻辑结构和语义;
遍历子模块,用于遍历所述抽象语法树,以获取所述抽象语法树中的断言语句子树;
解析子模块,用于对所述断言语句子树进行解析,识别所述断言语句对应的关键字和验证方式。
可选地,所述解析子模块,包括:
语法解析单元,用于对所述断言语句子树进行语法解析,识别出所述断言语句对应的关键字;
语义解析单元,用于对所述断言语句子树进行语义解析,识别出所述断言语句对应的验证表达式。
可选地,所述装置还包括:
网表生成模块,用于基于所述被测设计和所述断言电路,生成目标网表;
芯片配置模块,用于根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;
监测模块,用于运行所述集成电路芯片,并监测所述被测设计的断言结果;
第四确定模块,用于在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。
本发明实施例提供了一种电路综合装置,通过对断言语句进行解析,识别出断言语句的关键字和验证方式,将关键字例化为等效的基础电路模块,根据验证方式确定各个基础电路模块对应的连接方式,并按照确定出的连接方式对各个基础电路模块进行连接,将不可综合的断言语句转换为了等效的可综合的断言电路,以便在硬件中实现基于断言的验证。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的处理器,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图9,是本发明实施例提供的一种用于电路综合的电子设备的结构框图。如图9所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述实施例的电路综合方法。
所述处理器可以是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,扩展工业标准结构)总线等。所述通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器可以是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.根据权利要求1所述的方法,其特征在于,所述将所述断言语句中的关键字例化为基础电路模块,包括:
根据所述关键字确定所述断言语句包含的断言算子;
从预设的断言等效硬件库中获取所述断言算子对应的基础电路模块。
4.根据权利要求3所述的方法,其特征在于,所述从预设的断言等效硬件库中获取所述断言算子对应的基础电路模块之前,所述方法还包括:
确定断言算子的输入信号与输出信号之间的逻辑关系;
根据所述逻辑关系确定所述断言算子对应的逻辑器件和所述逻辑器件之间的连接方式;
按照所述连接方式连接所述断言算子对应的各个逻辑器件,得到所述断言算子对应的基础电路模块;
将所述断言算子对应的基础电路模块添加至断言等效硬件库中。
5.根据权利要求1所述的方法,其特征在于,所述对待综合的断言语句进行解析,识别所述断言语句对应的关键字和验证方式,包括:
获取设计文件;所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
将所述设计文件转换为抽象语法树;所述抽象语法树用于反映所述设计文件的逻辑结构和语义;
遍历所述抽象语法树,以获取所述抽象语法树中的断言语句子树;
对所述断言语句子树进行解析,识别所述断言语句对应的关键字和验证方式。
6.根据权利要求5所述的方法,其特征在于,所述对所述断言语句子树进行解析,识别所述断言语句对应的关键字和验证方式,包括:
对所述断言语句子树进行语法解析,识别出所述断言语句对应的关键字;
对所述断言语句子树进行语义解析,识别出所述断言语句对应的验证表达式。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
基于所述被测设计和所述断言电路,生成目标网表;
根据所述目标网表将所述被测设计和所述断言电路配置到集成电路芯片中;
运行所述集成电路芯片,并监测所述被测设计的断言结果;
在所述被测设计的断言覆盖率满足预设条件的情况下,确定所述被测设计通过验证。
8.一种电路综合装置,其特征在于,所述装置包括:
解析模块,用于对待综合的断言语句进行解析,识别所述断言语句对应的关键字和验证方式;
例化模块,用于将所述断言语句中的关键字例化为基础电路模块;
第一确定模块,用于根据所述验证方式确定所述基础电路模块对应的连接方式;
第一连接模块,用于按照所述连接方式对所述基础电路模块进行连接,得到所述断言语句对应的断言电路。
9.根据权利要求8所述的装置,其特征在于,所述第一确定模块,包括:
第一确定子模块,用于根据所述验证方式确定所述断言语句对应的各个基础电路模块的时序信号和所述基础电路模块之间的信号连接信息;
第二确定子模块,用于根据所述基础电路模块的时序信号和信号连接信息确定所述基础电路模块对应的连接方式。
10.根据权利要求8所述的装置,其特征在于,所述例化模块,包括:
断言算子确定子模块,用于根据所述关键字确定所述断言语句包含的断言算子;
电路获取子模块,用于从预设的断言等效硬件库中获取所述断言算子对应的基础电路模块。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于确定断言算子的输入信号与输出信号之间的逻辑关系;
第三确定模块,用于根据所述逻辑关系确定所述断言算子对应的逻辑器件和所述逻辑器件之间的连接方式;
第二连接模块,用于按照所述连接方式连接所述断言算子对应的各个逻辑器件,得到所述断言算子对应的基础电路模块;
添加模块,用于将所述断言算子对应的基础电路模块添加至断言等效硬件库中。
12.根据权利要求8所述的装置,其特征在于,所述解析模块,包括:
获取子模块,用于获取设计文件;所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
转换子模块,用于将所述设计文件转换为抽象语法树;所述抽象语法树用于反映所述设计文件的逻辑结构和语义;
遍历子模块,用于遍历所述抽象语法树,以获取所述抽象语法树中的断言语句子树;
解析子模块,用于对所述断言语句子树进行解析,识别所述断言语句对应的关键字和验证方式。
13.根据权利要求12所述的装置,其特征在于,所述解析子模块,包括:
语法解析单元,用于对所述断言语句子树进行语法解析,识别出所述断言语句对应的关键字;
语义解析单元,用于对所述断言语句子树进行语义解析,识别出所述断言语句对应的验证表达式。
14.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至7中任一项所述的电路综合方法。
15.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至7中任一项所述的电路综合方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310937005.6A CN116702663B (zh) | 2023-07-27 | 2023-07-27 | 一种电路综合方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310937005.6A CN116702663B (zh) | 2023-07-27 | 2023-07-27 | 一种电路综合方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116702663A true CN116702663A (zh) | 2023-09-05 |
CN116702663B CN116702663B (zh) | 2023-10-27 |
Family
ID=87826008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310937005.6A Active CN116702663B (zh) | 2023-07-27 | 2023-07-27 | 一种电路综合方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116702663B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100070937A1 (en) * | 2008-09-12 | 2010-03-18 | Kabushiki Kaisha Toshiba | Circuit verification apparatus, circuit verification method, and recording medium |
CN105760612A (zh) * | 2016-02-26 | 2016-07-13 | 中国科学院计算技术研究所 | 用于硅后芯片验证的断言检测装置、方法、系统、芯片 |
CN109840226A (zh) * | 2017-11-28 | 2019-06-04 | 瑞萨电子株式会社 | 半导体器件及其故障检测方法 |
-
2023
- 2023-07-27 CN CN202310937005.6A patent/CN116702663B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100070937A1 (en) * | 2008-09-12 | 2010-03-18 | Kabushiki Kaisha Toshiba | Circuit verification apparatus, circuit verification method, and recording medium |
CN105760612A (zh) * | 2016-02-26 | 2016-07-13 | 中国科学院计算技术研究所 | 用于硅后芯片验证的断言检测装置、方法、系统、芯片 |
CN109840226A (zh) * | 2017-11-28 | 2019-06-04 | 瑞萨电子株式会社 | 半导体器件及其故障检测方法 |
Non-Patent Citations (2)
Title |
---|
吴建国 等: "VHDL综合系统中若干问题处理方法", 安徽大学学报(自然科学版), vol. 26, no. 02, pages 21 * |
吴悦 等: "VHDL顺序语句的元件划分及其抽象电路结构的生成", 计算机辅助设计与图形学学报, vol. 15, no. 09, pages 1113 * |
Also Published As
Publication number | Publication date |
---|---|
CN116702663B (zh) | 2023-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7162706B2 (en) | Method for analyzing and validating clock integration properties in circuit systems | |
US8024691B2 (en) | Automata unit, a tool for designing checker circuitry and a method of manufacturing hardware circuitry incorporating checker circuitry | |
Boulé et al. | Generating hardware assertion checkers | |
US8554530B1 (en) | Methods and systems for property assertion in circuit simulation | |
Thakur et al. | Autochip: Automating hdl generation using llm feedback | |
CN116663467B (zh) | 断言等效硬件库的构建方法、装置、电子设备及存储介质 | |
US7865346B2 (en) | Instruction encoding in a hardware simulation accelerator | |
US9244810B2 (en) | Debugger graphical user interface system, method, and computer program product | |
US7076416B2 (en) | Method and apparatus for evaluating logic states of design nodes for cycle-based simulation | |
JP2001142937A (ja) | 回路のスケジューリング正当性チェック方法及びスケジュール検証方法 | |
CN116663462B (zh) | 断言验证方法、断言验证平台、电子设备及可读存储介质 | |
US20080288234A1 (en) | Method, system and program product supporting user tracing in a simulator | |
US6990438B1 (en) | Method and apparatus for observability-based code coverage | |
US6978231B2 (en) | Embedded hardware description language instrumentation | |
US7536288B2 (en) | Method, system and program product supporting user tracing in a simulator | |
CN116663463B (zh) | 一种电路验证方法、装置、电子设备及可读存储介质 | |
Wolf | Yosys manual | |
US6941257B2 (en) | Hierarchical processing of simulation model events | |
US20030237078A1 (en) | Incorporating simulation analysis instrumentation into HDL models | |
CN116702663B (zh) | 一种电路综合方法、装置、电子设备及可读存储介质 | |
US20020123873A1 (en) | Signal override for simulation models | |
Uemura et al. | Detecting and analyzing code clones in HDL | |
Kaja et al. | Modelling Peripheral Designs using FSM-like Notation for Complete Property Set Generation | |
US10635766B2 (en) | Simulation employing level-dependent multitype events | |
US20240241809A1 (en) | Methods, electronic devices and storage media for executing assertions |
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 |