本发明专利技术公开了一种HDL代码仿真覆盖率异步事件驱动自动分析方法,该方法包括:HDL代码的词法语法分析;覆盖率分析环境初始化;覆盖率原语插入;生成覆盖率原语对应的可执行函数,然后将可执行函数插入到覆盖引擎的事件队列以作为单独的线程或进程进行维护;可执行函数与仿真程序并行异步执行以收集覆盖率信息;输出覆盖率分析结果及报告。本发明专利技术通过将覆盖率原语对应的可执行函数插入到覆盖引擎的事件队列中与仿真过程并行异步执行,既不会影响原始电路功能的实现,同时又能够对仿真性能的影响最小化。响最小化。响最小化。
【技术实现步骤摘要】
一种HDL代码仿真覆盖率异步事件驱动自动分析方法
[0001]本专利技术涉及计算机程序测试
,具体而言,涉及一种HDL代码仿真覆盖率异步事件驱动自动分析方法。
技术介绍
[0002]随着集成电路的规模不断扩大,亿门级的电路成为当今IC(Integrated Circuit,微型电子器件)设计的主流,功能验证贯穿IC设计到流片的整个过程,越靠近流片,未进行充分的功能验证所带来的损失巨大,因而功能验证面临着巨大挑战。IC设计业界主流使用HDL(Hardware DescripTIon Language,硬件描述语言)描述电路设计,然后使用HDL语言描述测试信号激励,将电路设计和激励联合编译成仿真程序并执行获得仿真波形来验证IC的功能正确性。对HDL描述的电路设计模型进行充分的功能验证能极大的减少后续流程因逻辑功能错误造成的流片失败分析,但是充分的功能验证需要使用标准的覆盖率度量方式,一是对功能规范本身的覆盖,二是对代码结构的覆盖。前者能表明该设计确实符合预期,但完备性不足,因此需要一种高效的代码结构覆盖率分析方法自动化分析某些不在功能覆盖范围的情形,能准确的度量代码结构覆盖率,传统的方法是在HDL代码插桩方法,但是随着IC进入亿门级,传统的方法会严重影响仿真的性能。
[0003]因此,研究一种不影响仿真性能的前提下准确度量代码结构覆盖率的HDL代码仿真覆盖率异步事件驱动自动分析方法是本领域技术人员亟需解决的技术问题。
技术实现思路
[0004]鉴于此,本专利技术提出了一种HDL代码仿真覆盖率异步事件驱动自动分析方法,以克服在HDL代码插桩度量代码结构覆盖率影响仿真性能的问题,且该方法也不会影响原始电路功能的实现。
[0005]本专利技术提出的HDL代码仿真覆盖率异步事件驱动自动分析方法,包括:
[0006]S1、HDL代码的词法语法分析;
[0007]S2、覆盖率分析环境初始化;
[0008]S3、覆盖率原语插入;
[0009]S4、生成覆盖率原语对应的可执行函数,然后将可执行函数插入到覆盖引擎的事件队列以作为单独的线程或进程进行维护;
[0010]S5、可执行函数与仿真程序并行异步执行以收集覆盖率信息;
[0011]S6、输出覆盖率分析结果及报告。
[0012]上述的HDL代码仿真覆盖率异步事件驱动自动分析方法,可选的,所述步骤S具体包括:
[0013]S11、书写HDL代码的词法规则,利用Flex软件工具生成词法分析的C程序源代码;
[0014]S12、书写HDL代码的语法规则,利用Bison软件工具生成HDL代码的抽象语法树,其中,所述抽象语法树不依赖于具体文法和语言的细节。
[0015]上述的HDL代码仿真覆盖率异步事件驱动自动分析方法,可选的,所述步骤S2具体包括:首先动态分配固定尺寸的内存,然后定义尾部插入异步事件,直至异步事件达到分配的固定尺寸内存,再次分配相同固定尺寸的链表并拼接,进而构造出异步事件保存线性链表。
[0016]上述的HDL代码仿真覆盖率异步事件驱动自动分析方法,可选的,所述步骤S3中覆盖率原语包括语句原语、路径原语、翻转原语和状态机原语,所述语句原语用于收集对应语句的行号和列号,以及语句文本信息;路径原语用于收集对应路径分支条件文本信息;翻转原语用于检测信号的翻转率;状态机原语用于检测状态机的覆盖率。
[0017]上述的HDL代码仿真覆盖率异步事件驱动自动分析方法,可选的,所述步骤S3具体包括:
[0018]S31、遍历抽象语法树,并将语句原语插入在每一个HDL代码语句后;
[0019]S32、将路径原语分别独立插入在每一条HDL代码分支路径后;
[0020]S33、将翻转原语插入信号中;
[0021]S34、将状态机原语插入在状态机的变量中。
[0022]上述的HDL代码仿真覆盖率异步事件驱动自动分析方法,可选的,所述步骤S4中覆盖率原语对应的可执行函数包括:用于统计语句执行次数并与语句原语对应的语句函数、用于统计路径分支执行次数并与路径原语对应的路径函数、用于监听信号翻转位数变化次数并与翻转原语对应的翻转函数,以及用于监听运行过程中状态变量的状态变化次数并与状态机原语对应的状态机函数。
[0023]上述的HDL代码仿真覆盖率异步事件驱动自动分析方法,可选的,所述步骤S5具体包括:当HDL代码仿真程序逐语句执行时,分别触发与该语句绑定的可执行函数,同时并行异步执行该可执行函数以统计覆盖率信息。
[0024]上述的HDL代码仿真覆盖率异步事件驱动自动分析方法,可选的,所述步骤6中覆盖率分析报告包括语句覆盖率、路径覆盖率、翻转覆盖率和状态机覆盖率,语句覆盖率为语句函数执行的语句次数与总的语句数量之比,路径覆盖率为路径函数执行的路径次数与总的执行路径数量之比,翻转覆盖率为翻转函数执行发生信号变化的位数与总的信号位数之比,状态机覆盖率为状态机函数执行的统计状态变化次数与状态机的总转换状态之比。
[0025]上述的HDL代码仿真覆盖率异步事件驱动自动分析方法,可选的,所述语句原语为语句Cov_Stmt_AsyncEvent原语,路径原语为路径Cov_Path_AsyncEvent原语,翻转原语为翻转Cov_Toggle_AsyncEvent原语,状态机原语为状态机Cov_Fsm_AsyncEvent 原语。
[0026]上述的HDL代码仿真覆盖率异步事件驱动自动分析方法,可选的,所述语句函数为__doCovStmt函数,路径函数为__doCovPath函数,翻转函数为__doCovToggle函数,状态机函数为__doCovFsm函数。
[0027]本专利技术提出的HDL代码仿真覆盖率异步事件驱动自动分析方法,包括:HDL代码的词法语法分析;覆盖率分析环境初始化;覆盖率原语插入;生成覆盖率原语对应的可执行函数和异步事件,然后将其插入到覆盖引擎的事件队列以作为单独的线程或进程进行维护;可执行函数和异步事件与仿真程序并行执行以收集覆盖率信息;输出覆盖率分析结果及报告。该HDL代码仿真覆盖率异步事件驱动自动分析方法,在HDL和激励仿真编译型代码生成过程中生成覆盖率原语对应的可执行函数和异步事件,同时将生成的可执行函数和异步事
件插入到覆盖引擎的事件队列以作为单独的线程或进程进行维护,进而,在HDL代码仿真程序执行过程中,不会对仿真主线程产生阻塞,并能够与仿真主线程异步执行以收集覆盖率信息,因此,该方法既不会影响原始电路功能的实现,同时又能够对仿真性能的影响最小化,有效解决了现有传统方法存在的技术问题。
附图说明
[0028]此处所说明的附图仅仅用来提供对本专利技术的进一步解释,构成被申请的一部分,并不构成对本专利技术的限定。在附图中:
[0029]图1为本专利技术具体实施例提出的一种HDL代码仿真覆盖率异步事件驱动自动分析方法的示意图,
[0030]图2为本专利技术具体实施例覆盖率原语插入方法的流程图,
[0本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种HDL代码仿真覆盖率异步事件驱动自动分析方法,其特征在于,包括:S1、HDL代码的词法语法分析;S2、覆盖率分析环境初始化;S3、覆盖率原语插入;S4、生成覆盖率原语对应的可执行函数,然后将可执行函数插入到覆盖引擎的事件队列以作为单独的线程或进程进行维护;S5、可执行函数与仿真程序并行异步执行以收集覆盖率信息;S6、输出覆盖率分析结果及报告。2.根据权利要求1所述的HDL代码仿真覆盖率异步事件驱动自动分析方法,其特征在于,所述步骤S1具体包括:S11、书写HDL代码的词法规则,利用Flex软件工具生成词法分析的C程序源代码;S12、书写HDL代码的语法规则,利用Bison软件工具生成HDL代码的抽象语法树,其中,所述抽象语法树不依赖于具体文法和语言的细节。3.根据权利要求2所述的HDL代码仿真覆盖率异步事件驱动自动分析方法,其特征在于,所述步骤S2具体包括:首先动态分配固定尺寸的内存,然后定义尾部插入异步事件,直至异步事件达到分配的固定尺寸内存,再次分配相同固定尺寸的链表并拼接,进而构造出异步事件保存线性链表。4.根据权利要求3所述的HDL代码仿真覆盖率异步事件驱动自动分析方法,其特征在于,所述步骤S3中覆盖率原语包括语句原语、路径原语、翻转原语和状态机原语,所述语句原语用于收集对应语句的行号和列号,以及语句文本信息;路径原语用于收集对应路径分支条件文本信息;翻转原语用于检测信号的翻转率;状态机原语用于检测状态机的覆盖率。5.根据权利要求4所述的HDL代码仿真覆盖率异步事件驱动自动分析方法,其特征在于,所述步骤S3具体包括:S31、遍历抽象语法树,将语句原语插入在每一个HDL代码语句后;S32、将路径原语分别独立插入在每一条HDL分支路径后;S33、将翻转原语插入信号中;S34、将状态机原语插入在状态机的变量中。6.根据权利要求5...
【专利技术属性】
技术研发人员:戴延军,
申请(专利权)人:湖南泛联新安信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。