CN116663467B - 断言等效硬件库的构建方法、装置、电子设备及存储介质 - Google Patents

断言等效硬件库的构建方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116663467B
CN116663467B CN202310934158.5A CN202310934158A CN116663467B CN 116663467 B CN116663467 B CN 116663467B CN 202310934158 A CN202310934158 A CN 202310934158A CN 116663467 B CN116663467 B CN 116663467B
Authority
CN
China
Prior art keywords
assertion
operator
determining
logic
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310934158.5A
Other languages
English (en)
Other versions
CN116663467A (zh
Inventor
石侃
蔡礼嘉
张子卿
翁伟杰
包云岗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Open Source Chip Research Institute
Original Assignee
Beijing Open Source Chip Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Open Source Chip Research Institute filed Critical Beijing Open Source Chip Research Institute
Priority to CN202310934158.5A priority Critical patent/CN116663467B/zh
Publication of CN116663467A publication Critical patent/CN116663467A/zh
Application granted granted Critical
Publication of CN116663467B publication Critical patent/CN116663467B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)

Abstract

本发明实施例提供一种断言等效硬件库的构建方法、装置、电子设备及存储介质,涉及计算机技术领域。该方法包括:确定待处理的断言算子的输入信号与输出信号之间的逻辑关系;所述断言算子为所述断言语句中实现基础断言功能的算子;根据所述逻辑关系确定所述断言算子对应的逻辑器件和所述逻辑器件之间的连接方式;按照所述连接方式连接所述断言算子对应的各个逻辑器件,得到所述断言算子对应的基础电路模块;将所述断言算子对应的基础电路模块添加至断言等效硬件库中。本发明实施例可以提升断言语句的电路综合效率,进而实现基于断言的硬件验证。

Description

断言等效硬件库的构建方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种断言等效硬件库的构建方法、装置、电子设备及存储介质。
背景技术
硬件验证通常是整个芯片开发周期的效率瓶颈,这是因为使用传统的软件模拟器进行仿真和调试是非常耗时的。基于断言(assertions)的验证已经在验证过程中被广泛采用,以便提供更好的设计细节的可观察性,以及自动捕捉意外行为。断言是一些描述设计行为和性质的语句,用于检查设计在运行时是否满足这些性质。通过使用断言语句可以验证设计是否满足特定的规范和要求。虽然基于断言的验证显著提高了验证效率,但在软件模拟器中运行断言仍然很耗时。为了提升验证效率,可以使用FPGA原型验证的方法。相对于传统的ASIC设计流程,FPGA原型验证可以通过使用高级综合工具或硬件描述语言(如VHDL或Verilog)将被测设计转换为FPGA上的逻辑门级描述,从而更快地完成验证过程,节省大量时间和资源。
然而,断言语句通常使用复杂的过程性结构、时间运算符或函数来编写,这些在硬件元素中无法直接转化。这是由于从RTL(如SystemVerilog、Verilog等)设计并综合成硬件时,综合工具需要将代码转换为相应的硬件实现。目标是生成一个优化的电路网表,代表设计的预期行为。然而,断言可能涉及难以映射到硬件的概念,比如复杂的算法、动态数据结构或非确定性行为。断言无法综合的另一个原因是它们依赖于仿真特定的功能,如$past。这些系统函数在仿真过程中捕获与时间相关的行为和历史信息非常有用,但它们没有直接对应的硬件等效物。因此,包含这些结构的断言语句无法直接综合。无法综合意味着断言无法生成RTL电路;而没有实际的RTL电路对应,就无法使用FPGA进行加速验证。
发明内容
本发明实施例提供一种断言等效硬件库的构建方法、装置、电子设备及存储介质,可以解决断言语句不可综合的问题。
为了解决上述问题,本发明实施例公开了一种断言等效硬件库的构建方法,所述方法包括:
确定待处理的断言算子的输入信号与输出信号之间的逻辑关系;所述断言算子为所述断言语句中实现基础断言功能的算子;
根据所述逻辑关系确定所述断言算子对应的逻辑器件和所述逻辑器件之间的连接方式;
按照所述连接方式连接所述断言算子对应的各个逻辑器件,得到所述断言算子对应的基础电路模块;
将所述断言算子对应的基础电路模块添加至断言等效硬件库中。
另一方面,本发明实施例公开了一种断言等效硬件库的构建装置,所述装置包括:
第一确定模块,用于确定待处理的断言算子的输入信号与输出信号之间的逻辑关系;所述断言算子为所述断言语句中实现基础断言功能的算子;
第二确定模块,用于根据所述逻辑关系确定所述断言算子对应的逻辑器件和所述逻辑器件之间的连接方式;
连接模块,用于按照所述连接方式连接所述断言算子对应的各个逻辑器件,得到所述断言算子对应的基础电路模块;
添加模块,用于将所述断言算子对应的基础电路模块添加至断言等效硬件库中。
再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的断言等效硬件库的构建方法。
本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的断言等效硬件库的构建方法。
本发明实施例包括以下优点:
本发明实施例提供的断言等效硬件库的构建方法,可以根据断言算子的输入信号与输出信号之间的逻辑关系,确定断言算子对应的逻辑器件以及各个逻辑器件之间的连接方式,按照确定出来的连接方式对各个逻辑器件进行连接,就可以将断言算子转换为等效的基础电路模块;将得到的基础电路模块添加到断言等效硬件库中,从而在对断言语句进行电路综合处理时,可以直接基于断言语句中各个断言算子对应的基础电路模块,将不可综合的断言语句转换为可综合的断言电路,提升断言语句的电路综合效率,进而实现基于断言的硬件验证。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种断言等效硬件库的构建方法实施例的步骤流程图;
图2是本发明的一种信号检测算子对应的基础电路模块的结构示意图;
图3是本发明的一种$rose函数的示意图;
图4是本发明的一种$past函数的示意图;
图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在原型开发、快速设计迭代中起着重要作用。
FPGA原型验证是指利用现场可编程门阵列(FPGA)技术对电子系统或芯片设计进行验证和测试的过程。在FPGA原型验证中,可以将电路设计转换为逻辑门级别的描述,并使用专门的软件工具将其映射到FPGA芯片上。通过将被测设计加载到FPGA中,设计者可以实际验证电路的功能和性能,并进行各种测试和调试。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、将所述断言算子对应的基础电路模块添加至断言等效硬件库中。
其中,断言算子为断言语句中实现基础断言功能的算子,本发明实施例中的断言算子可以包括但不限于:立即断言、序列采样信号、序列操作符、信号检测(signal_check)算子、基础操作符、时序算子(延时和重复),每一类中包含了若干个不可综合的关键字和操作符,等等。
断言语句的不可综合主要在于断言语句通常使用复杂的过程性结构、时间运算符、函数等来编写,这些断言算子在硬件元素中无法直接转化,要将断言语句转换为可综合的硬件等效电路,就需要对这些断言算子进行转化。
具体地,可以根据各类断言算子的输入信号与输出信号之间的逻辑关系确定该断言算子对应的逻辑器件以及逻辑器件之间的连接方式,按照确定的连接方式对各个逻辑器件进行连接,就可以得到该断言算子对应的基础电路模块。将生成的基础电路模块添加至断言等效硬件库中,实现断言等效硬件库的构建。
一个基础电路模块通常包括使能端、输入端和输出端。在本发明实施例中,基础电路模块的输出端通常有两个,分别为用于输出指示断言成功的“Match”信号的输出端,和用于输出指示断言失败的“Fail”信号的输出端。参照图2,示出了一种信号检测算子(signal_check)对应的基础电路模块的结构示意图。信号检测算子用于检测输入信号是否为真。如图2所示,“EN”为该基础电路模块的使能信号端口,只有在前一级基础电路模块匹配时,也即前一级基础电路模块的输出信号满足断言语句中的方式时,前一级匹配信号(也即前一级基础电路模块的输出信号)才能使能当前基础电路模块,使其输入结果。“MATCH”和“FAIL”为基础电路模块的输出端口,当前模块被激活后给下一级或者整个断言电路输出。基础电路模块中的这三个端口结构保障断言电路中传输的时钟信号保持正常的时序。
基础电路模块中输入信号与输出信号之间的信号传递方式、电平变化情况等信息,由底层的逻辑器件控制。基础电路模块能够实现对应的断言算子的功能。例如,基础电路模块signal_check对应于信号检测算子,用于检测输入信号是否为真;基础电路模块nonoverlapped implication operators用于实现非交叠蕴含操作符(|=>)的功能。其中,组成基础电路模块的逻辑器件可以包括但不限于:门电路和反相器、选择器、译码器、计数器、寄存器、触发器、锁存器、缓冲驱动器、收发器、总线开关、状态机,等等。基础电路模块中包含的逻辑器件根据其实现的功能确定,基础电路模块的功能不同,包含的逻辑器件也就不同。
本发明实施例中的各个基础电路模块之间可以通过统一的接口进行自由组合,并支持多位宽的输入信号,输入信号的位宽可以在编译时指定。利用本发明实施例中构建的断言等效硬件库,就直接获取待综合的断言语句中各个断言算子对应的基础电路模块,对获取到的基础电路模块进行连接,就可以得到断言语句的等效断言电路。
本发明实施例提供的断言等效硬件库的构建方法,可以根据断言算子的输入信号与输出信号之间的逻辑关系,确定断言算子对应的逻辑器件以及各个逻辑器件之间的连接方式,按照确定出来的连接方式对各个逻辑器件进行连接,就可以将断言算子转换为等效的基础电路模块;将得到的基础电路模块添加到断言等效硬件库中,从而在对断言语句进行电路综合处理时,可以直接基于断言语句中各个断言算子对应的基础电路模块,将不可综合的断言语句转换为可综合的断言电路,提升断言语句的电路综合效率,进而实现基于断言的硬件验证。
以下述断言语句SVA1为例:
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电路,从而实现硬件加速仿真。
不同类型的断言算子的运行逻辑不同,在本发明实施例中,可以根据断言算子的类型,确定其输入信号与输入信号之间的逻辑关系。
可选地,所述断言算子包括基础操作符或序列采样信号;步骤101所述确定待处理的断言算子的输入信号与输出信号之间的逻辑关系,包括:
根据所述断言算子对应的逻辑运算规则和输入信号的位宽,确定所述断言算子的输入信号与输出信号之间的逻辑关系。
需要说明的是,断言语句中的基础操作符可以包括但不限于:等于操作符“==”、不等于操作符“!=”、大于操作符“>”、小于操作符“<”、大于等于操作符“>=”、小于等于操作符“<=”、逻辑与操作符“&&”、逻辑或操作符“||”、逻辑非操作符“!”、逻辑异或操作符“^”、逻辑否定操作符“~^”,等等。
这些基础操作符实现的逻辑运算比较简单,根据其逻辑运算规则和输入信号的位宽,就可以确定出输入信号和输出信号之间的逻辑关系。在对这些基础操作符做硬件化处理时,通过硬件描述语言(如Verilog HDL)中的赋值语句(如assign语句)就可以实现。在赋值语句中,任何线或者其他类似线的数据类型都可以通过一个值来连续驱动,这个值可以是常数,也可以是一组信号组成的表达式。
例如,基础操作符“&&”,其两端的输入是对称关系,左右互换不会对输出结果造成影响。当输入都是1位宽时,输入同时为1,则输出为1;输入不同时为1,则输出为0;当输入是多位宽时,只需要将两个输入做逻辑与,就可以得到正确的结果。所以只需要组合逻辑关系就可以解决这个算子,代码上只需要用assign语句即可。这个原理可以用于简单操作符分类里的大部分操作符,例如基础操作符“==”、“!=”,等等。
序列采样信号(sequence sampling signal)用于定义时序属性(temporalproperty)中的采样点。断言语句中的序列采样信号可以包括但不限于:
$rose:表示在信号从低电平到高电平的过渡时采样。它用于检查信号上升沿之后的状态。
$fell:表示在信号从高电平到低电平的过渡时采样。它用于检查信号下降沿之后的状态。
$stable:表示在信号保持稳定状态时采样。它用于检查信号在给定时间窗口内保持不变的状态。
$past:表示在过去的时钟周期中采样。它用于检查信号在之前的时钟周期中的状态。
这些序列采样信号可以与其他基础操作符(如&&、||等)结合使用,以定义更复杂的时序属性。它们在验证硬件设计中起到关键作用,用于描述和验证时序行为。
序列采样信号的处理逻辑,本质上是对采样信号进行状态判断,在硬件实现过程中,只需要按照定义的采样点进行信号采样,并对采样结果进行简单的逻辑运算即可。输入信号的位宽不同,逻辑运算的处理方式也会不同,因此可以根据序列采样信号对应的逻辑运算规则和输入信号的位宽,确定其输入信号与输出信号之间的逻辑关系,进而采用逻辑器件实现该逻辑关系。
作为一种示例,序列采样信号“$rose”、“$fell”、“$stable”三者的实现方式很相似,以“$rose”为例子进行说明,“$past”和这三个函数有些许不同。参照图3,示出了一种$rose函数算子的示意图。如图3所示,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电路的转化。
参照图4,示出了一种$past函数的示意图。$past的功能是给出被采样信号过去若干个周期的功能,要给出历史信号,只能提前记录,因此$past函数采用了一个移位寄存器的写法,对输入信号进行延迟输出。对于需要延迟n个周期的信号,$past中会给出n个多位寄存器,寄存器之间级级相联,一个寄存器会将自己的前一个寄存器的值作为输入,第一个寄存器以输入的signal_in作为输入,输出的结果连接到signal_out。$past没有使能信号en,因为该算子需要提前对信号进行采样。
可选地,所述断言算子包括交叠蕴含操作符或非交叠蕴含操作符;步骤101所述确定待处理的断言算子的输入信号与输出信号之间的逻辑关系,包括:
步骤S11、根据所述断言算子的验证规则确定所述断言算子的起因序列与结果序列之间的信号连接信息;
步骤S12、根据所述信号连接信息确定所述断言算子的输入信号与输出信号之间的逻辑关系。
交叠蕴含操作符“|->”和非交叠蕴含操作符“|=>”用于定义时序属性中的蕴含关系。其中,交叠蕴含操作符(overlapped implicationoperators)断言匹配(断言成功)的条件为:在一个时钟周期内,当前状态满足交叠蕴含操作符左侧的起因序列的条件,且下一个时钟周期的状态满足交叠蕴含操作符右侧的结果序列的条件。
非交叠蕴含操作符(nonoverlapped implicationoperators)左端的序列被称为起因序列,右端的序列被称为结果序列。包含非交叠蕴含操作符的断言语句存在以下几种情况:
如果起因序列不匹配(也即存在冲突,起因序列的实际运行逻辑与断言语句中的逻辑不一致),则断言不生效;如果起因序列匹配的下一个时钟周期,结果序列也匹配(也即不存在冲突,结果序列的实际运行逻辑与断言语句中的逻辑一致),则断言匹配(也即断言成功);如果起因序列匹配的下一个时钟周期,结果序列冲突,则断言失败。
以断言语句“@(posedge clk) SIG_IN1 ##2 SIG_IN2[*2] ##1 SIG_IN3 |=>SIG_IN4 ##2 SIG_IN5” 为例,在每一个时钟信号上升沿判断起因序列中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”匹配。
对于交叠蕴含操作符或非交叠蕴含操作符,可以根据所述断言算子的验证规则确定所述断言算子的起因序列与结果序列之间的信号连接信息,进而根据所述信号连接信息确定所述断言算子的输入信号与输出信号之间的逻辑关系。其中,交叠蕴含操作符和非交叠蕴含操作符的区别就在于,交叠蕴含操作符要求起因序列和结果序列同时判定。很明显,这两个操作符和其他简单操作符不同,这里引入了时钟周期,也就意味着肯定需要时钟信号才能满足这两个操作符的逻辑关系。参照图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电路。
可选地,所述断言算子包括时序算子;步骤101所述确定待处理的断言算子的输入信号与输出信号之间的逻辑关系,包括:
步骤S21、确定所述时序算子的输入信号输出信号对应的延时周期和电平变化情况;
步骤S22、根据所述延时周期和所述电平变化情况确定所述时序算子的输入信号与输出信号之间的逻辑关系。
在SVA中,时序算子用于描述和定义时序属性。本发明实施例中的时序算子可以包括但限于延时算子和重复算子。其中,延时算子的作用是在时序属性中引入一定的延迟,以模拟实际的时序行为。它们对于验证时序相关的属性非常有用,例如检查数据在特定延迟后是否正确到达。SVA中的延时算子可以包括以下两种:
#n:表示在当前状态满足后,等待n个时钟周期后再进行采样。它用于引入固定的延迟。
#n1, n2:表示在当前状态满足后,等待n1到n2个时钟周期之间的随机延迟后再进行采样。它用于引入随机的延迟。
重复算子允许对一系列连续的时钟周期进行采样,以检查状态的持续性或重复性。在SVA中,重复算子常常被用于验证周期性行为或检测连续事件的出现次数。常用的重复算子可以包括以下三种:
[*]:表示在任意数量的连续时钟周期内重复采样。它用于检查在一系列连续的时钟周期中的状态。
[n:m]:表示在n到m个连续时钟周期内重复采样。它用于检查在指定的时钟周期范围内的状态。
[n:$]:表示在n个时钟周期之后一直重复采样到结束。它用于检查在指定的时钟周期之后一直到结束的状态。
对于时序算子,可以先确定所述时序算子的输入信号输出信号对应的延时周期和电平变化情况;然后,根据所述延时周期和所述电平变化情况确定所述时序算子的输入信号与输出信号之间的逻辑关系。
参照图6,示出了一种延时算子的示意图。如图6所示,延时和重复算子都没有en信号,这是因为这两个算子的输入signal_in都是上一个算子signal_check的输出match,而signal_check是需要en信号来进行使能的,所以这两个算子就不再需要了。上述断言语句SVA1的示例中,即为“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电路的转化。
可选地,所述断言算子包括信号检测算子;步骤101所述确定待处理的断言算子的输入信号与输出信号之间的逻辑关系,包括:
根据所述信号检测算子的算子类型确定所述信号检测算子的输入信号与输出信号之间的逻辑关系。
其中,所述信号检测算子(signal_check)的算子类型包括组合逻辑算子和时序逻辑算子。
在上述断言语句SVA1的示例中没有直接体现信号检测算子,但实际上每个不可综合的操作符都需要借用signal_check算子。信号检测算子的作用就是判定输入的信号是否为真,比如,每个进入延时算子的信号都需要先进行signal_check,经过signal_check算子后输出match给到延时算子来进行判定。signal_check分为组合逻辑和时序逻辑,这两者的使用范围稍有不同,当涉及到延时、重复等和时钟相关的算子时,因为使用时序逻辑的signal_check会带来时序上的错误,这时候一般使用组合逻辑的signal_check;但如果涉及到的都是组合算子,如简单操作符里面的那些,因为那些算子里没有时钟信号,而整个语句是放在时钟背景下进行的,这时候就需要使用时序的signal_check来引入时钟。组合逻辑的signal_check使用到的就是门电路和线、时序逻辑的signal_check使用到的是寄存器、门电路和线,这些是RTL电路的基本组成。
可选地,所述断言算子包括序列操作符;步骤101所述所述确定待处理的断言算子的输入信号与输出信号之间的逻辑关系,包括:
步骤S31、根据所述序列操作符对应的断言功能,确定所述序列操作符的两个输入序列与输出信号对应的匹配规则;
步骤S32、根据所述匹配规则确定所述序列操作符的输入信号与输出信号之间的逻辑关系。
SVA中的序列操作符可以包括但不限于:or、and、intersect、first_match、fail。其中,“or”算子用于用于组合多个时序属性,表示其中任意一个满足即可,如果任何一个时序属性成立,整个组合属性就成立。“and”算子用于组合多个时序属性,表示它们必须同时满足,只有当所有时序属性都成立时,整个组合属性才成立。“intersect”算子用于组合多个时序属性,表示它们必须在同一个时钟周期内同时满足,只有当所有时序属性在同一个时钟周期内都成立时,整个组合属性才成立。“first_match”算子用于组合多个时序属性,表示它们按照顺序逐个检查,只要找到第一个满足的时序属性,后续的属性将不再检查;如果找到满足的时序属性,整个组合属性成立。“fail”算子用于指定一个时序属性的否定。如果指定的时序属性不成立,即失败,则整个fail属性成立。
对于序列操作符,可以先根据所述序列操作符对应的断言功能,确定所述序列操作符的两个输入序列与输出信号对应的匹配规则;然后,根据所述匹配规则确定所述序列操作符的输入信号与输出信号之间的逻辑关系。以上述断言语句中的“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电路可实现的功能。
按照上述处理逻辑将各个断言算子转化为可综合的基础电路模块,并将各个断言算子对应的基础电路模块保存在断言等效硬件库中,从而在对断言语句进行电路综合处理的过程中,直接从断言等效硬件库中获取对应的基础电路模块,将不可综合的断言语句转换为可综合的断言电路。
在本发明的一种可选实施例中,所述方法还包括:
步骤S41、获取设计文件,所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
步骤S42、基于所述断言等效硬件库对所述断言语句进行硬件模拟,得到断言电路;
步骤S43、根据所述被测设计和所述断言电路生成目标网表,并根据所述目标网表配置集成电路芯片;
步骤S44、运行所述集成电路芯片,以对所述被测设计进行断言验证。
在本发明实施例中,可以利用构建的断言等效硬件库将断言语句转换为断言电路,并利用断言电路对被测设计进行硬件验证。
其中,断言语句用于验证被测设计是否满足测试条件。可以理解的是,断言语句是一种在测试过程中用于检查特定条件是否满足的语句,测试项目是为了验证软件或系统的正确性而执行的一系列测试活动。在针对被测设计的一个测试项目中可以包含多条断言语句,通过这些断言语句,可以定义测试的目标和期望结果,从而指导测试的设计和执行。具体地,可以通过在测试代码中插入断言语句,自动化地验证测试过程中的各种条件和约束,确保测试结果的正确性。当测试项目中出现问题或错误时,通过断言语句的失败信息,可以快速识别导致问题的具体条件,从而加快问题的排查和修复。
断言语句是不可综合的,无法直接配置在FPGA中以实现对被测设计的硬件仿真。因此,在本发明实施例中,先利用断言等效硬件库对断言语句进行模拟,得到断言电路。断言电路可以实现与断言语句相同的功能。示例性地,可以对断言语句进行解析,识别出断言语句中不可综合的关键字,如含时延的行为、采样函数、序列操作关键词,等等,然后从断言等效硬件库中查找每个关键子对应的基础电路模块。根据断言语句的整体验证逻辑,对这些关键字对应的基础电路模块进行连接,得到断言语句对应的断言电路。可以理解的是,本发明实施例中生成的断言电路,可以由逻辑寄存器、状态机、触发器等逻辑器件组成,用于监测和报告被测设计中的错误或异常情况。
接下来,基于被测设计和断言电路,生成目标网表。需要说明的是,网表(Netlist)在电子设计自动化中,是指用基础的逻辑门来描述数字电路连接情况的描述方式。由于逻辑门阵列有着连线表一样的排列外观,因此称之为“网表”。网表通常传递了电路连接方面的信息,例如模块的实例、线网以及相关属性。如果需要包含更多的硬件信息,通常会使用硬件描述语言,例如Verilog、VHDL或其他的专用语言来进行描述、验证和仿真。高抽象层次(如寄存器传输级)的硬件描述可以通过逻辑综合转换为低抽象层次(逻辑门级)的电路连线网表,这一步骤目前可以使用自动化工具完成,这也大大降低了设计人员处理超大规模集成电路的繁琐程度。硬件厂商利用上述网表,可以制造具体的专用集成电路或其他电路。一些相对较小的电路也可以在现场可编程逻辑门阵列上实现。
在本发明实施例中,目标网表用于采用逻辑门描述所述被测设计与所述断言连接之间的连接情况。具体地,在目标网表中,断言电路的输入端与被测设计中待监测信号的输出端相连。
基于目标网表可以将被测设计与断言电路配置到集成电路芯片中。本发明实施例中的集成电路芯片,即为FPGA。可以理解的是,要在FPGA上运行设计,需要先通过FPGA厂商提供的软件生成相应的位流文件,利用位流文件将设计导入FPGA。位流文件是一种二进制文件,用于存储和传输可编程逻辑设备(如FPGA)的配置信息,它包含了将FPGA配置为特定硬件功能的位信息。在本发明实施例中,可以先根据目标网表生成目标位流文件,目标位流文件中包含将FPGA配置为用于利用断言电路对被测设计进行硬件验证的位信息。具体地,目标位流文件包含了FPGA的逻辑门配置、寄存器设置和连接信息等。利用目标位流文件,就可以将断言电路和被测设计烧录到FPGA板卡上,实现对FPGA的配置。在FPGA中,断言电路的信号输入端与被测设计的RTL电路设计中待监测信号的输出端相连接。
运行PFGA,并监测被测设计的断言结果。一旦被测设计中待监测信号以违反断言语句所描述的方式运行,断言电路就会自动标记问题,并输出断言失败信号。此外,断言电路还可以定位断言失败的时刻和相关信号,通过断言电路的失败信息,可以快速识别导致问题的具体条件,从而加快问题的排查和修复。
具体地,当被测设计的断言覆盖率满足预设条件的情况下,就可以确定该被测设计通过验证。其中,断言覆盖率是一种测试度量指表,用于衡量在测试过程中断言语句被执行的程度。断言覆盖率通常以百分比的形式表示,具体为已正确执行的断言语句数与总断言语句数之间的比例。例如,如果设计文件中有100个断言语句,而在测试中有80个断言语句被正确执行了,那么断言覆盖率为80%。较高的断言覆盖率表示测试覆盖了更多的断言语句,从而提供了更全面的测试保证。在本发明实施例中,预设条件可以根据具体的验证需求进行设置,例如,预设条件可以为被测设计的断言覆盖率大于或等于预设阈值,等等。
本发明实施例在构建断言等效硬件库之后,可以利用断言等效硬件库中的基础电路模块来模拟断言语句的功能,将断言语句转换为可综合的断言电路,并根据断言电路和被测设计生成目标位流文件,进而通过目标位流文件将断言电路和被测设计烧录到FPGA中,用硬件对被测设计进行调试加速,可以快速到达断言失败时刻,提升了验证效率。
可选地,步骤S42所述基于所述断言等效硬件库对所述断言语句进行硬件模拟,得到断言电路,包括:
子步骤S421、对所述断言语句进行解析,识别所述断言语句对应的关键字和验证方式;
子步骤S422、根据所述关键字确定所述断言语句包含的目标断言算子;
子步骤S423、从所述断言等效硬件库中获取所述目标断言算子对应的目标基础电路模块;
子步骤S424、根据所述验证方式确定所述断言语句对应的各个目标基础电路模块之间的连接方式;
子步骤S425、按照所述连接方式对所述各个目标基础电路模块进行连接,得到所述断言语句对应的断言电路。
其中,关键字用于反映断言语句中不可被综合的特征算子或操作符,如时钟信号、采样函数、序列操作符关键词,等等。根据识别出来的关键字,就可以确定断言语句包含的目标断言算子,进而从断言等效硬件库中获取目标断言算子对应的目标基础电路模块。
断言语句的验证方式用于反映断言语句的断言验证规则,也即断言正确需要满足的条件。根据断言语句的验证方式可以确定出各个基础电路模块对应的连接方式。具体地,根据断言语句的验证方式,可以确定出断言语句中各个断言算子执行的先后顺序、时钟信号的传递逻辑、状态匹配规则等信息,根据这些信息将各个基础电路模块中的输入信号、输出信号中相同的信号进行连接,就可以得到各个基础电路模块对应的连接方式。
按照确定出来的连接方式对断言语句对应的各个基础电路模块进行连接,就可以得到该断言语句对应的断言电路。可以理解的是,本发明实施例中的断言电路可以采用RTL代码表示。
此外,设计文件中的被测设计和断言语句通常使用硬件描述语言(如HDL)描写,不易于处理和分析。在本发明实施例中,可以先对设计文件进行解析,将设计文件转化为更易于处理和分析的抽象语法树。该抽象语法树可以反映设计文件(包括被测设计和断言语句)的逻辑结构和语义。在实际应用中,可以通过抽象语法树的生成工具,例如语法分析器(Parser),将设计文件转换为抽象语法树。然后,对转换得到的抽象语法树进行遍历,找到断言语句对应的断言语句子树,对抽象语法树中的每一个断言语句子树进行解析,就可以识别出关键字(如时钟信号、采样函数、序列操作关键词,等等)和断言语句的验证方式。
综上,本发明实施例提供了一种断言等效硬件库的构建方法,可以根据断言算子的输入信号与输出信号之间的逻辑关系,确定断言算子对应的逻辑器件以及各个逻辑器件之间的连接方式,按照确定出来的连接方式对各个逻辑器件进行连接,就可以将断言算子转换为等效的基础电路模块;将得到的基础电路模块添加到断言等效硬件库中,从而在对断言语句进行电路综合处理时,可以直接基于断言语句中各个断言算子对应的基础电路模块,将不可综合的断言语句转换为可综合的断言电路,提升断言语句的电路综合效率,进而实现基于断言的硬件验证。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图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.根据权利要求1所述的方法,其特征在于,所述断言算子包括时序算子;所述确定待处理的断言算子的输入信号与输出信号之间的逻辑关系,包括:
确定所述时序算子的输入信号输出信号对应的延时周期和电平变化情况;
根据所述延时周期和所述电平变化情况确定所述时序算子的输入信号与输出信号之间的逻辑关系。
5.根据权利要求1所述的方法,其特征在于,所述断言算子包括信号检测算子;所述确定待处理的断言算子的输入信号与输出信号之间的逻辑关系,包括:
根据所述信号检测算子的算子类型确定所述信号检测算子的输入信号与输出信号之间的逻辑关系;
其中,所述信号检测算子的算子类型包括组合逻辑算子和时序逻辑算子。
6.根据权利要求1所述的方法,其特征在于,所述断言算子包括序列操作符;所述确定待处理的断言算子的输入信号与输出信号之间的逻辑关系,包括:
根据所述序列操作符对应的断言功能,确定所述序列操作符的两个输入序列与输出信号对应的匹配规则;
根据所述匹配规则确定所述序列操作符的输入信号与输出信号之间的逻辑关系。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取设计文件,所述设计文件包括被测设计和断言语句;所述断言语句用于验证所述被测设计是否满足测试条件;
基于所述断言等效硬件库对所述断言语句进行硬件模拟,得到断言电路;
根据所述被测设计和所述断言电路生成目标网表,并根据所述目标网表配置集成电路芯片;
运行所述集成电路芯片,以对所述被测设计进行断言验证。
8.根据权利要求7所述的方法,其特征在于,所述基于所述断言等效硬件库对所述断言语句进行硬件模拟,得到断言电路,包括:
对所述断言语句进行解析,识别所述断言语句对应的关键字和验证方式;
根据所述关键字确定所述断言语句包含的目标断言算子;
从所述断言等效硬件库中获取所述目标断言算子对应的目标基础电路模块;
根据所述验证方式确定所述断言语句对应的各个目标基础电路模块之间的连接方式;
按照所述连接方式对所述各个目标基础电路模块进行连接,得到所述断言语句对应的断言电路。
9.一种断言等效硬件库的构建装置,其特征在于,所述装置包括:
第一确定模块,用于确定待处理的断言算子的输入信号与输出信号之间的逻辑关系;所述断言算子为断言语句中实现基础断言功能的算子;
第二确定模块,用于根据所述逻辑关系确定所述断言算子对应的逻辑器件和所述逻辑器件之间的连接方式;
连接模块,用于按照所述连接方式连接所述断言算子对应的各个逻辑器件,得到所述断言算子对应的基础电路模块;
添加模块,用于将所述断言算子对应的基础电路模块添加至断言等效硬件库中;
其中,所述第一确定模块具体用于:
根据待处理的断言算子的类型,确定所述断言算子的输入信号与输出信号之间的逻辑。
10.根据权利要求9所述的装置,其特征在于,所述断言算子包括基础操作符或序列采样信号;所述第一确定模块,包括:
第一确定子模块,用于根据所述断言算子对应的逻辑运算规则和输入信号的位宽,确定所述断言算子的输入信号与输出信号之间的逻辑关系。
11.根据权利要求9所述的装置,其特征在于,所述断言算子包括交叠蕴含操作符或非交叠蕴含操作符;所述第一确定模块,包括:
第二确定子模块,用于根据所述断言算子的验证规则确定所述断言算子的起因序列与结果序列之间的信号连接信息;
第三确定子模块,用于根据所述信号连接信息确定所述断言算子的输入信号与输出信号之间的逻辑关系。
12.根据权利要求9所述的装置,其特征在于,所述断言算子包括时序算子;所述第一确定模块,包括:
第四确定子模块,用于确定所述时序算子的输入信号输出信号对应的延时周期和电平变化情况;
第五确定子模块,用于根据所述延时周期和所述电平变化情况确定所述时序算子的输入信号与输出信号之间的逻辑关系。
13.根据权利要求9所述的装置,其特征在于,所述断言算子包括信号检测算子;所述第一确定模块,包括:
第六确定子模块,用于根据所述信号检测算子的算子类型确定所述信号检测算子的输入信号与输出信号之间的逻辑关系;
其中,所述信号检测算子的算子类型包括组合逻辑算子和时序逻辑算子。
14.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至8中任一项所述的断言等效硬件库的构建方法。
15.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至8中任一项所述的断言等效硬件库的构建方法。
CN202310934158.5A 2023-07-27 2023-07-27 断言等效硬件库的构建方法、装置、电子设备及存储介质 Active CN116663467B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310934158.5A CN116663467B (zh) 2023-07-27 2023-07-27 断言等效硬件库的构建方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310934158.5A CN116663467B (zh) 2023-07-27 2023-07-27 断言等效硬件库的构建方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116663467A CN116663467A (zh) 2023-08-29
CN116663467B true CN116663467B (zh) 2023-11-10

Family

ID=87720891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310934158.5A Active CN116663467B (zh) 2023-07-27 2023-07-27 断言等效硬件库的构建方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116663467B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117093432B (zh) * 2023-10-16 2024-01-26 成都融见软件科技有限公司 一种信号激活状态的判断方法
CN117787160B (zh) * 2024-02-26 2024-05-14 上海芯联芯智能科技有限公司 一种生成数字电路的硬件描述语言的方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201617532D0 (en) * 2016-10-14 2016-11-30 Imagination Technologies Limited Verifying firmware binary images using a hardware design and formal assertions
CN112650638A (zh) * 2020-10-23 2021-04-13 华芯安信(北京)科技有限公司 一种基于门级污染标签跟踪模型的硬件安全漏洞检测方法
CN113919254A (zh) * 2021-11-13 2022-01-11 奇捷科技(深圳)有限公司 寄存器传输级信号映射构建方法、装置、设备和存储介质
CN113947050A (zh) * 2021-08-27 2022-01-18 芯华章科技股份有限公司 用于生成形式验证环境的方法、电子设备及存储介质
CN115098400A (zh) * 2022-07-19 2022-09-23 北京航空航天大学 一种基于sva形式化验证的fpga软件仿真测试环境建立方法
US11501050B1 (en) * 2020-02-18 2022-11-15 Synopsys, Inc. Analog mixed-signal assertion-based checker system
CN115496017A (zh) * 2022-09-06 2022-12-20 中国科学院软件研究所 Chisel断言语言的类SVA扩展及形式化验证方法
CN115906730A (zh) * 2022-09-09 2023-04-04 芯华章科技(北京)有限公司 验证逻辑系统设计的方法、设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201617532D0 (en) * 2016-10-14 2016-11-30 Imagination Technologies Limited Verifying firmware binary images using a hardware design and formal assertions
US11501050B1 (en) * 2020-02-18 2022-11-15 Synopsys, Inc. Analog mixed-signal assertion-based checker system
CN112650638A (zh) * 2020-10-23 2021-04-13 华芯安信(北京)科技有限公司 一种基于门级污染标签跟踪模型的硬件安全漏洞检测方法
CN113947050A (zh) * 2021-08-27 2022-01-18 芯华章科技股份有限公司 用于生成形式验证环境的方法、电子设备及存储介质
CN113919254A (zh) * 2021-11-13 2022-01-11 奇捷科技(深圳)有限公司 寄存器传输级信号映射构建方法、装置、设备和存储介质
CN115098400A (zh) * 2022-07-19 2022-09-23 北京航空航天大学 一种基于sva形式化验证的fpga软件仿真测试环境建立方法
CN115496017A (zh) * 2022-09-06 2022-12-20 中国科学院软件研究所 Chisel断言语言的类SVA扩展及形式化验证方法
CN115906730A (zh) * 2022-09-09 2023-04-04 芯华章科技(北京)有限公司 验证逻辑系统设计的方法、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SystemVerilog断言及其应用;陈先勇;徐伟俊;杨鑫;夏宇闻;;中国集成电路(09);全文 *
面向硬件仿真的SystemVerilog断言检查电路生成研究;魏启欣;;信息技术(02);全文 *

Also Published As

Publication number Publication date
CN116663467A (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
US7162706B2 (en) Method for analyzing and validating clock integration properties in circuit systems
CN116663467B (zh) 断言等效硬件库的构建方法、装置、电子设备及存储介质
Boulé et al. Generating hardware assertion checkers
Habibi et al. Design and verification of SystemC transaction-level models
US6336087B2 (en) Method and apparatus for gate-level simulation of synthesized register transfer level design with source-level debugging
US8161439B2 (en) Method and apparatus for processing assertions in assertion-based verification of a logic design
US6148436A (en) System and method for automatic generation of gate-level descriptions from table-based descriptions for electronic design automation
US7865346B2 (en) Instruction encoding in a hardware simulation accelerator
US20040117168A1 (en) Global analysis of software objects generated from a hardware description
JP4806529B2 (ja) 複製されたロジックを使用するデバッグの方法とシステム
US20070226664A1 (en) Method and system for verifying the equivalence of digital circuits
CN116663462B (zh) 断言验证方法、断言验证平台、电子设备及可读存储介质
US7437701B1 (en) Simulation of a programming language specification of a circuit design
US6990438B1 (en) Method and apparatus for observability-based code coverage
US7536288B2 (en) Method, system and program product supporting user tracing in a simulator
Wolf Yosys manual
US7502728B1 (en) Code coverage testing in hardware emulation
de Gennaro et al. Design and implementation of reconfigurable asynchronous pipelines
Mehta et al. SystemVerilog Assertions
CN116702663B (zh) 一种电路综合方法、装置、电子设备及可读存储介质
CN116663463B (zh) 一种电路验证方法、装置、电子设备及可读存储介质
Drechsler et al. System level validation using formal techniques
Morin-Allory et al. Efficient and correct by construction assertion-based synthesis
Chen et al. Verifying LOC based functional and performance constraints
Dudani et al. Dynamic assertions using TXP

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