首页> 中国专利> 一种基于静态分析的RTL设计错误检测方法和系统

一种基于静态分析的RTL设计错误检测方法和系统

摘要

本发明公开了一种基于静态分析的RTL设计错误检测方法和系统。所述方法包括下列步骤:接收一个RTL设计源代码和相应的设计规范文件,根据待检测错误的类型并结合所述设计规范文件,构建对待测错误的检测标准并存储;针对待检测错误的类型,分模块遍历整个所述RTL设计源代码,通过词法分析、语法分析和静态语义分析提取待测错误的特征信息,对特征信息进行存储;判断所述待测错误的检测标准与特征信息是否匹配,若是,则结束待测设计的错误检测;否则,发送错误报告。

著录项

  • 公开/公告号CN102054100A

    专利类型发明专利

  • 公开/公告日2011-05-11

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN201010594822.9

  • 申请日2010-12-17

  • 分类号G06F17/50;

  • 代理机构北京律诚同业知识产权代理有限公司;

  • 代理人祁建国

  • 地址 100080 北京市海淀区中关村科学院南路6号

  • 入库时间 2023-12-18 02:09:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-09-19

    授权

    授权

  • 2011-06-29

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20101217

    实质审查的生效

  • 2011-05-11

    公开

    公开

说明书

技术领域

本发明涉及大规模集成电路设计验证领域,特别是涉及一种基于静态分析的寄存器传输级(Register Transfer Level,RTL)设计错误检测方法和系统。

背景技术

随着集成电路(IC)工艺的发展,芯片集成度进一步提高,电路规模变得越来越大,复杂度也越来越高,为保证设计实现(implementation)与设计规范(specification)的一致性,设计验证(design verification)成为IC设计中面临的最大挑战。在实际集成电路设计流程里,功能验证(functional verification)已经成为其中的关键因素,也是时间耗费最大的环节,并且其处理规模和效率的增长落后于设计规模的增长。因此如何自动化实现重复繁琐的验证过程,进一步提高功能验证的效率,使其能够快速准确的对目标设计进行充分的验证,是一个值得研究的问题。

目前,集成电路的功能验证主要分为形式化验证和模拟验证两大类方法。形式化验证通过严格的数学推理来证明系统的正确性,主要包括等价性检验(equivalence checking)、定理证明(theorem proving)和模型检验(model checking)三类方法。其中,等价性检验主要用于检查不同层次的设计间的功能等价性,已被业界广泛应用。定理证明方法主要通过数学定理推演来证明特定的设计属性,但该方法需要验证人员具有深厚的数学功底来引导定理证明的过程,一般只用于验证设计阶段的程序规范而非实际代码。而模型检验方法将设计抽象为一个有限状态机模型,用状态迁移系统描述设计的行为,用时序逻辑描述目标属性,通过遍历系统所有状态空间,完成对系统的自动验证。模型检验技术具有规范化、易于自动化等优点,但其状态空间大小会随着设计中寄存器数目呈指数级增长,造成“状态爆炸”,限制了其在大规模设计中的应用。

模拟验证方法因其具有良好的可扩展性,成为大规模设计的主要验证方法。但模拟验证方法是一种不完全的验证方法,通过给设计输入测试向量进行模拟,并且将模拟的结果和一个功能正确的黄金模型(golden model)进行对比,以验证设计在不同的测试向量下的功能正确性。针对特定功能的验证需要工程师手工写出特定的测试向量,这将耗费大量的专家时间,并且测试向量难以在不同设计间重用。另外模拟验证对于设计本身存在的一些深层次逻辑结构方面的错误或者一些比较特殊的错误的检测能力较差,如在动态运行时状态机的不可达路径中潜在的死锁,管脚配置错误。

由于集成电路设计复杂度的增长,功能验证面临的难题主要包括以下两点:

1)待测设计的功能逻辑的复杂度急剧增加,凭借工程师的经验或利用传统的验证方法已经很难发现所有的设计错误;

2)待测设计包含的寄存器数目的急剧增加,导致动态的模拟验证的速度越来越慢,并且使得形式化的验证方法更加难以处理。

为了缓解以上两个问题,集成电路功能验证方法应该尽量减少需要的人工参与,并且尽量避免动态的模拟待测设计的开销。利用静态分析方法对设计实现进行分析,不直接模拟待测设计而完成特定设计错误的静态检测,从而可以提高功能验证的效率。

静态错误检测技术起源于软件领域。在软件领域中,静态错误检测关注程序的代码,从程序代码的内部结构和特性上检测漏洞。早期的静态检测主要指静态分析,随着形式化验证方法的引入,静态错误检测被扩展为静态分析和程序验证。静态错误检测的目标不是证明程序完全正确,而是在程序运行前尽可能多的发现其中潜在的错误,方便测试人员较早的发现并消除程序代码的缺陷。

现有技术中用于集成电路设计验证的静态错误检测方法主要是形式化验证,该方法主要通过严格的数学推理证明系统的正确性,但通常需要专家参与,并且其状态空间大小会随着设计中寄存器数目呈指数增长,存在“状态爆炸”问题,处理规模较小,限制了其在大规模设计验证中的应用。

发明内容

本发明的目的在于提供一种基于静态分析的RTL设计错误检测方法和系统。其能够根据RTL设计代码自动提取待检测错误的特征信息并给予验证,其既能够有效的检测设计中的常见错误,又能够节省时间,提高设计验证的效率,缩短设计验证周期。

为实现本发明的目的而提供的一种基于静态分析的RTL设计错误检测方法,包括下列步骤:

步骤100.接收一个RTL设计源代码和相应的设计规范文件,根据待检测错误的类型并结合所述设计规范文件,构建对待测错误的检测标准并存储;

步骤200.针对待检测错误的类型,分模块遍历整个所述RTL设计源代码,通过词法分析、语法分析和静态语义分析提取待测错误的特征信息,对特征信息进行存储;

步骤300.判断所述待测错误的检测标准与特征信息是否匹配,若是,则结束待测设计的错误检测;否则,发送错误报告。

所述步骤100,包括下列步骤:

步骤110.根据开发方提供的所述设计规范文件确定设计中容易出现的错误类型,并根据待测错误类型的代码特征提取其检测标准,把待测错误类型的检测标准描述为一定格式的配置文件;

步骤120.根据待检测错误的类型,遍历所述配置文件提取并存储待测错误类型的检测标准。

所述步骤200,包括下列步骤:

步骤210.分析待测错误的错误类型的代码特征,确定需要提取的特征信息;

步骤220.根据所述需要提取的特征信息,遍历RTL设计源代码,对所述RTL设计源代码进行词法分析、语法分析和静态语义分析,以得到设计实现的特征信息,将所述特征信息存储于特定数据结构中。

所述步骤220,包括下列步骤:

步骤221.将所述RTL设计源代码以字符流的形式读入,通过从左至右逐个扫描,产生包含关键字、标识符、常数、运算符或者界符的单词序列;

步骤222.根据所述单词序列和程序语言的语法规则识别出所述单词序列的语法结构,确定当前语句是否与待检测错误的特征信息相关,从而记录与待检测错误的特征信息相关的结构信息;

步骤223.根据所述结构信息进行静态语义处理,确定设计实现的特征信息。

所述步骤300,包括下列步骤:

步骤310.遍历所述特征信息,判断特征信息和检测标准是否匹配,若是,则结束待测设计的错误检测;否则,执行步骤320;

步骤320.将不匹配的特征信息存储于特定的数据结构中;

步骤330.判断是否所有特征信息遍历完毕,若是,则将不匹配的特征信息输出到指定文件中生成错误报告;否则,返回步骤310。

为实现本发明的目的还提供一种基于静态分析的RTL设计错误检测系统,所述系统,包括:

检测标准构建模块,用于接收一个RTL设计源代码和相应的设计规范文件,根据待检测错误的类型并结合所述设计规范文件,构建对待测错误的检测标准并存储;

特征信息提取模块,用于针对待检测错误的类型,分模块遍历整个所述RTL设计源代码,通过词法分析、语法分析和静态语义分析提取待测错误的特征信息,对特征信息进行存储;

错误检测模块,用于判断所述待测错误的检测标准与特征信息是否匹配,若是,则结束待测设计的错误检测;否则,发送错误报告。

所述检测标准构建模块,包括:

配置文件生成模块,用于根据开发方提供的所述设计规范文件确定设计中容易出现的错误类型,并根据待测错误类型的代码特征提取其检测标准,把待测错误类型的监测标准描述为一定格式的配置文件;

检索模块,用于根据待检测错误的类型,遍历所述配置文件提取并存储待测错误类型的检测标准。

所述特征信息提取模块,包括:

分析模块,用于分析待测错误的错误类型的代码特征,确定需要提取的特征信息;

特征信息计算模块,用于根据所述需要提取的特征信息,遍历RTL设计源代码,对所述RTL设计源代码进行词法分析、语法分析和静态语义分析,以得到设计实现的特征信息,将所述特征信息存储于特定数据结构中。

所述特征信息计算模块,包括:

词法分析模块,用于将所述RTL设计源代码以字符流的形式读入,通过从左至右逐个扫描,产生包含关键字、标识符、常数、运算符或者界符的单词序列;

语法分析模块,用于根据所述单词序列和程序语言的语法规则识别出所述单词序列的语法结构,确定当前语句是否与待检测错误的特征信息相关,从而记录与待检测错误的特征信息相关的结构信息;

静态语义处理模块,用于根据所述结构信息进行静态语义处理,确定设计实现的特征信息。

所述错误检测模块,包括:

匹配模块,用于遍历所述特征信息,判断特征信息和检测标准是否匹配,若是,则结束待测设计的错误检测;否则,将不匹配的特征信息存储于特定的数据结构中;

判断模块,用于判断是否所有特征信息遍历完毕,若是,则将不匹配的特征信息输出到指定文件中生成错误报告;否则,触发匹配模块。

本发明的有益效果是:

本发明的一种基于静态分析的RTL设计错误检测方法和系统,避免了模拟验证方法和形式化验证方法的不足,具有可处理设计规模大、自动化程度高、检测速度快,检测代码可重用的优点,并且可以用于模拟验证之前,从而尽早发现设计中的错误,缩短验证时间。

附图说明

图1是本发明的一种基于静态分析的RTL设计错误检测方法的步骤流程图;

图2是本发明中构建对待测错误的检测标准的步骤流程图;

图3是本发明的一种基于静态分析的RTL设计错误检测系统的结构示意图;

图4是一状态机死锁的程序示例;

图5是管脚配制错误的程序示例。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种基于静态分析的寄存器传输级(Register Transfer Level,RTL)设计错误检测方法和系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明的一种基于静态分析的RTL设计错误检测方法和系统,通过对待测设计源代码进行扫描,基于静态分析技术提取待测错误的特征信息;然后根据事先设定的检测标准,完成错误的检测。其优点是没有运行时的开销,运行速度快,自动化程度高,在不同设计之间可重用,并且可以在模拟之前发现设计中的常见错误,可以帮助用户改进硬件设计的质量,提高设计验证的效率。特别适合于对复杂的SoC、FPGA、微处理器中的常见错误进行验证。

为了更好的说明本发明的技术方案,先对一些专业名词进行解释:

待检测错误的类型,是指某类错误。(例如:状态机死锁,管脚配置错误,控制信号有效值错误等)

错误类型的代码特征,是指从设计代码上识别某类错误的衡量标准。(例如:状态机死锁的代码特征是指某段代码设计了一个状态机并且其中的default分支为null)

错误的特征信息,是指与错误类型的代码特征有关的信息(例如:状态机死锁中的特征信息包括与识别状态机有关的case与if结构信息,以及与识别状态机上的死锁错误有关的default分支的赋值信息)

下面结合上述目标详细介绍本发明的一种基于静态分析的RTL设计错误检测方法,图1是本发明的一种基于静态分析的RTL设计错误检测方法的步骤流程图,如图1所示,所述方法,包括下列步骤:

步骤100.接收一个RTL设计源代码和相应的设计规范文件,根据待检测错误的类型并结合所述设计规范文件,构建对待测错误的检测标准并存储;

图2是本发明中构建对待测错误的检测标准的步骤流程图,如图2所示,所述步骤100,包括下列步骤:

步骤110.根据开发方提供的所述设计规范文件确定设计中容易出现的错误类型,并根据待测错误类型的代码特征提取其检测标准,把待测错误类型的监测标准描述为一定格式的配置文件;

步骤120.根据待检测错误的类型,遍历所述配置文件提取并存储待测错误类型的判断标准,即检测标准。

步骤200.针对待检测错误的类型分模块遍历整个所述RTL设计源代码,通过词法分析、语法分析和静态语义分析提取待测错误的特征信息,对特征信息进行存储。

对所述源代码进行词法分析、语法分析和静态语义分析不是采用现有词法分析,语法分析工具,而是使用词法分析、语法分析的思想对源代码文件逐行扫描并进行分析。

特征信息提取的步骤:

1.分析错误类型的代码结构及其行为特征,确定需要提取的特征信息;

2.遍历RTL设计文件,对源代码进行词法分析、语法分析和静态语义分析,以得到设计实现的属性信息,将特征信息存储于特定数据结构中(例如:字符串数组);

词法分析:将源代码以字符流的形式读入,通过从左至右逐个扫描源代码,产生一个个有意义的单词序列,这些单词可以是关键字、标识符、常数、运算符、界符等。为了准确检测源代码的错误及定位出错位置,可以在词法分析阶段记录读入的字符行的行号。

语法分析:能够根据词法分析的结果和程序语言的语法规则识别出单词符号序列的语法结构。通过语法分析可以确定当前语句是否与待检测设计属性相关,从而记录与待检测属性相关的结构信息。最后根据语法分析阶段记录的结构信息进行静态语义处理,确定设计实现的属性。

步骤300.判断所述待测错误的检测标准与特征信息是否匹配,若是,则结束待测设计的错误检测;否则,发送错误报告。

通过把从配置文件中提取的检测标准和从设计源代码中提取的特征信息进行匹配比较,发现错误并产生错误报告。

错误报告产生的过程:在检测器对源代码进行检测的过程中,当提取的源代码特征信息与检测标准不一致(有冲突),产生错误报告,错误报告内容包括:源代码的出错位置,以及与何种检测标准不一致。

生成错误报告的步骤:

1.遍历特征信息(例如:特征信息串数组),通过在特征信息中查找检测标准,判断特征信息和检测标准是否匹配;

2.将不匹配的特征信息存储于特定的数据结构中(例如:字符串数组);

3.当特征信息遍历完毕,将不匹配的特征信息输出到指定文件中,即生成的错误报告。

相应于本发明的一种基于静态分析的RTL设计错误检测方法,还提供一种基于静态分析的RTL设计错误检测系统,图3是本发明的一种基于静态分析的RTL设计错误检测系统的结构示意图,如图3所示,所述系统,包括:

检测标准构建模块1,用于接收一个RTL设计源代码和相应的设计规范文件,根据待检测错误的类型并结合所述设计规范文件,构建对待测错误的检测标准并存储;

特征信息提取模块2,用于针对待检测错误的类型,分模块遍历整个所述RTL设计源代码,通过词法分析、语法分析和静态语义分析提取待测错误的特征信息,对特征信息进行存储;

错误检测模块3,用于判断所述待测错误的检测标准与特征信息是否匹配,若是,则结束待测设计的错误检测;否则,发送错误报告。

所述检测标准构建模块1,包括:

配置文件生成模块11,用于根据开发方提供的所述设计规范文件确定设计中容易出现的错误类型,并根据待测错误类型的代码特征提取其检测标准,把待测错误类型的检测标准描述为一定格式的配置文件;

检索模块12,用于根据待检测错误的类型,遍历所述配置文件提取并存储待测错误类型的检测标准。

所述特征信息提取模块2,包括:

分析模块21,用于分析待测错误的错误类型的代码特征,确定需要提取的特征信息的属性;

特征信息计算模块22,用于根据所述需要提取的特征信息,遍历RTL设计源代码,对所述RTL设计源代码进行词法分析、语法分析和静态语义分析,以得到设计实现的特征信息,将所述特征信息存储于特定数据结构中。

所述特征信息计算模块22,包括:

词法分析模块221,用于将所述RTL设计源代码以字符流的形式读入,通过从左至右逐个扫描,产生包含关键字、标识符、常数、运算符或者界符的单词序列;

语法分析模块222,用于根据所述单词序列和程序语言的语法规则识别出所述单词序列的语法结构,确定当前语句是否与待检测错误的特征信息相关,从而记录与待检测错误的特征信息相关的结构信息;

静态语义处理模块223,用于根据所述结构信息进行静态语义处理,确定设计实现的特征信息。

所述错误检测模块3,包括:

匹配模块31,用于遍历所述特征信息,判断特征信息和检测标准是否匹配,若是,则结束待测设计的错误检测;否则,将不匹配的特征信息存储于特定的数据结构中;

判断模块32,用于判断是否所有特征信息遍历完毕,若是,则将不匹配的特征信息输出到指定文件中生成错误报告;否则,触发匹配模块31。

图4是一状态机死锁的程序示例,下面结合图4对本发明实现的RTL设计验证中状态机死锁的静态检测方法的具体实施方式进行详细说明。

状态机是一种用于协调相关信号动作的同步时序逻辑电路。RTL设计的状态机与软件设计有很大不同。在某些应用中,当电路中的状态机发生单粒子翻转(Single Event Upset)可能导致寄存器的逻辑状态翻转到未知状态,这就要求所设计的状态机能够在有限的时间内恢复到可达状态并且正常运行后续工作。常见RTL设计中状态机死锁的主要原因是状态机实现中存在未知状态(即状态寄存器位数为n,状态个数小于2n),但没有对未知状态进行有效的状态转移。

通过分析图4(a)所示的状态机死锁的实例代码,可以将状态机死锁的检测标准描述为如图4(b)所示的配置文件,并得到RTL设计中状态机死锁这一类型的错误的代码特征如下:

(1)同一模块中存在两个并行的进程P1与P2;

(2)P1用CASE结构描述状态转移,P2用IF结构描述状态输出;

(3)CASE结构中的条件变量与IF结构中的被赋值变量是同一变量,即状态机的现态;

(4)CASE结构中存在DEFAULT分支但没有对其进行有效的状态转移。

其中,(1)~(3)是常见状态机的一般特征,(4)是导致RTL状态机死锁的充分条件。

通过上述分析,利用本发明的静态错误检测方法实现RTL设计中状态机死锁的检测过程分为如下步骤:

Step1.将状态机的检测标准以图4(b)的格式存储于配置文件中,以便与设计实现的状态机特征信息进行匹配检测该类错误;

Step2.对RTL设计源代码进行状态机特征信息提取。分模块遍历RTL设计源代码,根据状态机死锁代码特征的条件(1)~(2),通过词法分析和语法分析定位到每个模块中实现的进程及进程中的CASE结构和IF结构,提取CASE结构中条件变量名及DEFAULT分支的信息,并将变量名、模块信息、位置信息(行号)和对未知状态的转移信息进行存储,同理提取并存储IF结构中被赋值变量的信息。根据状态机死锁代码特征的条件(3),通过对提取的CASE特征信息和IF特征信息进行静态语义分析,确定并存储设计实现的状态机特征信息(描述状态机的模块及位置、状态寄存器名、状态机对未知状态的操作);

Step3.通过设计实现的状态机特征信息与配置文件中的状态机检测标准的匹配,检测设计中存在的状态机死锁。扫描并提取配置文件中的状态机检测标准,通过与Step2提取的设计实现的状态机特征信息匹配,实现状态机死锁的检测,并给出导致状态机死锁的原因、位置及模块信息。

图5是管脚配制错误的程序示例,下面结合图5对本发明实现的RTL设计验证中管脚配置错误的检测过程的具体实施方式进行详细说明。

在RTL设计中,由于工程师在设计综合及布局布线时对管脚配置的实现与设计规范的要求不一致,可能产生管脚配置错误。管脚配置错误是IC设计中常见的错误,通常需要用人工走查的方法将设计实现中的pin代码与设计规范中的管脚配置标准进行比对完成对该类错误的检测。通过分析和总结,可以发现常见的管脚配置错误类型如表1所示。

表1管脚配置错误的类型

通过分析图5(a)所示的管脚配置的代码,可以将管脚配置的检测标准描述为如图5(b)所示的配置文件,并得到RTL设计管脚配置错误的代码特征如下:

(1)管脚名的定义为“pin信号名;”;

(2)管脚号的定义为“pin:管脚号.”。

通过上述分析,利用静态分析方法实现RTL设计中管脚配置错误的检测过程分为如下步骤:

Step1.将管脚配置的检测标准以图5(b)所示格式存储于配置文件中,以便与设计实现的管脚配置信息进行匹配检测该类错误;

Step2.对设计的pin代码进行管脚配置特征信息提取。逐行扫描pin代码,通过词法分析和语法分析定位到管脚配置的定义结构“pin信号名;”与“pin:管脚号.”,提取并存储设计实现的信号名与管脚号;

Step3.通过设计实现的管脚配置特征信息与配置文件中的管脚配置检测标准的匹配比较,检测设计中存在的管脚配置错误。扫描并提取配置文件中的管脚配置检测标准,通过与Step2提取的设计实现的管脚配置特征信息匹配,实现管脚配置错误的检测。

表2静态检测管脚配置错误报告结果

利用本发明的基于静态分析的RTL设计错误检测方法可以实现对图5中的管脚配置错误的检测。通过遍历图5a的pin代码,定位到管脚配置的定义语句,并提取信号名和管脚号信息。通过将提取的管脚配置特征信息与图5b的配置文件的检测标准匹配比较,得到错误报告如表2所示,其中第1列为检测到的错误总数,第2列为对应的错误类型,第3列为设计规范中的管脚配置标准,第4列为设计实现的管脚配置。在该示例中发现9个管脚配置错误,错误类型涉及6种,具体说明参照表1。同时可以将检测结果输出到指定文件中,便于验证人员确认和纠正错误。

本发明的有益效果在于:

1.本发明的一种基于静态分析的RTL设计错误检测方法和系统,够根据RTL设计代码自动提取待检测错误的特征信息并给予验证,其优点是没有运行时的开销,自动化程度高,检测准确度高,检测代码可重用,并且可以在模拟之前发现设计中的常见错误,可以帮助用户改进硬件设计的质量,提高设计验证的效率;

2.本发明的一种基于静态分析的RTL设计错误检测方法和系统,提供一种高效合理的RTL设计中常见错误的特征信息提取方法,这种方法基于静态分析技术,具有简单、高效、准确、易于自动化实现和代码可重用的特点;

3.本发明的一种基于静态分析的RTL设计错误检测方法和系统,分析的对象是设计源代码,不需要手工书写测试向量,自动化程度高;

4.本发明的一种基于静态分析的RTL设计错误检测方法和系统,目标是找出可能的常见错误,而不是证明设计规范符合特殊的功能规范,检测准确度高;

5.本发明的一种基于静态分析的RTL设计错误检测方法和系统,基于静态分析,没有运行时的开销,检测速度相对较快;

6.本发明的一种基于静态分析的RTL设计错误检测方法和系统,能在模拟验证之前实现静态检测,尽早发现设计中常见的错误,缩短验证时间;易于实现自动化检测,并且检测代码在其他设计上可重用,所以能提高设计的验证效率。

通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号