一种实现虚拟验证系统覆盖率分析的方法与流程

文档序号:12665668阅读:来源:国知局

技术特征:

1.一种实现虚拟验证系统覆盖率分析的方法,其特征在于,所述方法包括:

S1、调用核接口函数CompECPUGetCovData(),SPARC核生成disassembly.dat、disassembly.txt文件,ARM核时只生成disassembly.dat文件;

其中disassembly.txt为所有指令的执行序列记录,disassembly.dat为虚拟验证系统生成的中间代码执行历史记录文件;

S2、判断当前是否是ARM核,是ARM核则调用disassembly(elf_path)函数,生成disassembly.txt文件;

S3、打开disassembly.txt、all_c_file.txt、assemble.s文件,其中,assemble.s是自动生成的汇编源文件,all_c_file.txt是临时文件;

S4、从disassembly.txt文件中读取一行数据,从中取得PC值、指令值、汇编指令,获取PC值对应的符号表信息;

S5、判断disassembly.txt文件是否已经读取完毕,读取完毕执行S6,否则执行S11;

S6、判断当前C源文件指针是否有效,当前C临时文件指针是否有效,如二者皆有效则将当前源文件中剩下的C语句都写入临时C文件中;

S7、关闭disassembly.txt、all_c_file.txt、assemble.s、当前打开的源文件、当前临时C文件;

S8、逐行读取disassembly.dat文件内容,将每一行信息存入text_record结构体中,并将每一个结构体都串联起来,组成结构体链表;

S9、调用函数GenerateReport(),生成报告;

S10、覆盖率分析命令执行完毕;

S11、接步骤S5,判断当前PC只对应的文件是否为C文件,不是执行S12,是执行S13;

S12、将当前的汇编指令信息写入assemble.s文件中并读取下一指令PC值,获取对应的符号表信息,再回到S5;

S13、判断当前符号表信息中对应的C源文件是否为新的C文件,不是执行S14,是执行S15;

S14、将PC值对应的C语句行号之前的源文件中的语句都写入临时C文件中,再回到S5;

S15、判断当前C源文件指针是否有效,当前C临时文件指针是否有效,如二者皆有效则将当前源文件中剩下的C语句都写入临时C文件中;

S16、关闭当前C源文件和临时C文件,打开新的源文件和临时C文件,再回到S14。

2.根据权利要求1所述的方法,其特征在于:所述方法还包括:用户设置覆盖率代码起始点,虚拟验证系统的GDB模块将根据用户设置完成相关代码段的执行标记;在虚拟验证系统仿真执行过程中,将根据代码段的执行标记来判断是否需要进行覆盖率分析,若需要,则记录执行历史并生成专有的中间代码执行历史记录文件;在用户选择报告生成路径之后,覆盖率分析模块生成最终覆盖率分析报告。

3.根据权利要求1所述的方法,其特征在于:所述当前源文件中剩下的C语句包括空行、注释行。

4.根据权利要求1所述的方法,其特征在于:所述汇编指令信息包括PC值、指令值、汇编指令。

5.根据权利要求1所述的方法,其特征在于:所述方法的会使用GDB提供的“PC值获取符号表”接口操作,描述如下:函数名称:pc_mapping_source,函数原型:struct symtab_and_line pc_mapping_source(CORE_ADDR pc),输入参数:指令地址pc,返回值symtab_and_line:存储当前指令对应的符号表信息、PC值、C语句行号等信息。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1