一种仿真日志处理方法及装置与流程
未命名
08-18
阅读:123
评论:0
1.本发明涉及芯片验证技术领域,特别是涉及一种仿真日志处理方法及装置。
背景技术:
2.芯片在流片之前需要经过大量的仿真验证,来确保所有功能都是正确的,因此,芯片的仿真验证对一次性流片成功具有不可或缺的意义。在仿真验证时,每个测试用例的仿真都会产生仿真日志,而仿真日志主要用于记录仿真过程中仿真环境在不同场景下需要打印的信息,这些信息有的是为了方便调试验证环境问题,有的是用于检查判断某些条件是否满足等。
3.一般在采用uvm验证方法学设计的验证环境中,在测试用例的仿真结束时,会统计仿真日志中记载的不同类型信息的个数,通过人工查看每个测试用例对应的统计情况,或者通过简单脚本对统计信息进行识别,输出测试用例的执行结果是成功或失败。但是,这些方式需要花费较多的时间,而且对一些复杂的仿真场景无法做到有选择性的识别错误信息,可能导致误报测试用例的执行结果,同时又需要重复检查测试结果,仿真效率较低。因此,传统的仿真日志处理方法存在验证收敛速度慢等不足之处。
技术实现要素:
4.本技术的目的在于提供一种仿真日志处理方法及装置,能够实现快速且准确识别测试用例对应的仿真结果,增强对测试用例对应的仿真结果的识别度,提升验证收敛速度,且可移植性高。
5.第一方面,本技术实施例提供了一种仿真日志处理方法,包括:
6.响应于对目标测试用例仿真结束,调用过滤脚本;
7.执行所述过滤脚本,以加载所述目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果;所述过滤文件包括过滤字符,所述仿真日志为对所述目标测试用例进行仿真后所生成的;
8.根据所述过滤处理结果,确定并输出所述目标测试用例对应的仿真结果。
9.在一实施方式中,所述执行所述过滤脚本,以加载所述目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果,包括:
10.获取所述过滤脚本的预设脚本参数,所述预设脚本参数用于指示是否开启过滤指定功能;
11.响应于开启过滤指定功能,根据所述目标测试用例对应的过滤文件中的过滤字符,对仿真日志中位于所述过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,获得过滤处理结果;
12.响应于未开启过滤指定功能,根据所述目标测试用例对应的过滤文件中的过滤字符对仿真日志中的字符进行逐行过滤处理,获得过滤处理结果。
13.在一实施方式中,所述过滤脚本指定有过滤开始字符和过滤结束字符;所述根据
所述目标测试用例对应的过滤文件中的过滤字符,对仿真日志中位于所述过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,包括:
14.将所述过滤开始字符与仿真日志中的字符进行逐行匹配,确定所述过滤开始字符在所述仿真日志中的目标位置;
15.根据所述过滤字符对所述仿真日志中位于所述目标位置之后的字符进行逐行过滤处理,获得过滤处理结果,直至匹配到所述过滤结束字符时停止过滤处理。
16.在一实施方式中,所述根据所述过滤字符对所述仿真日志中位于所述目标位置之后的字符进行逐行过滤处理,获得过滤处理结果,包括:
17.从所述仿真日志中位于所述目标位置之后的字符中获取目标字符,所述目标字符为预设类型的字符;
18.检测所述目标字符是否与所述过滤字符相匹配,获得对应的检测结果;
19.根据所述检测结果对所述目标字符进行相应处理,以获得过滤处理结果。
20.在一实施方式中,所述根据所述检测结果对所述目标字符进行相应处理,以获得过滤处理结果,包括:
21.响应于所述检测结果为所述目标字符与所述过滤字符不匹配,则记录所述目标字符至过滤处理结果中与所述目标字符对应的统计类型;和/或,
22.响应于所述检测结果为所述目标字符与所述过滤字符相匹配,则不记录所述目标字符至过滤处理结果中。
23.在一实施方式中,所述预设类型的字符包括以下至少一种:警告信息字符、错误信息字符、带有预设标识的字符。
24.在一实施方式中,所述根据所述过滤处理结果,确定并输出所述目标测试用例对应的仿真结果,包括:
25.响应于所述过滤处理结果满足预设条件,确定所述目标测试用例对应的仿真结果为第一结果;
26.响应于所述过滤处理结果不满足预设条件,确定所述目标测试用例对应的仿真结果为第二结果。
27.在一实施方式中,所述方法还包括:
28.响应于检测到所述过滤处理结果包括属于目标类型的新字符,将所述新字符作为过滤字符加入所述过滤文件。
29.在一实施方式中,所述方法还包括:
30.检测是否开启仿真日志过滤功能;
31.确定开启仿真日志过滤功能时,执行所述响应于对目标测试用例仿真结束,调用过滤脚本的步骤。
32.第二方面,本技术实施例提供一种仿真日志处理装置,包括:
33.测试用例运行模块,用于响应于对目标测试用例仿真结束,调用过滤脚本;
34.过滤模块,用于执行所述过滤脚本,以加载所述目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果;所述过滤文件包括过滤字符,所述仿真日志为对所述目标测试用例进行仿真后所生成的:
35.统计处理模块,用于根据所述过滤处理结果,确定并输出所述目标测试用例对应
的仿真结果。
36.在一实施方式中,所述过滤模块,具体用于:
37.获取所述过滤脚本的预设脚本参数,所述预设脚本参数用于指示是否开启过滤指定功能;
38.响应于开启过滤指定功能,根据所述目标测试用例对应的过滤文件中的过滤字符,对仿真日志中位于所述过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,获得过滤处理结果;
39.响应于未开启过滤指定功能,根据所述目标测试用例对应的过滤文件中的过滤字符对仿真日志中的字符进行逐行过滤处理,获得过滤处理结果。
40.在一实施方式中,所述过滤脚本指定有过滤开始字符和过滤结束字符;所述过滤模块,具体用于:
41.将所述过滤开始字符与仿真日志中的字符进行逐行匹配,确定所述过滤开始字符在所述仿真日志中的目标位置;
42.根据所述过滤字符对所述仿真日志中位于所述目标位置之后的字符进行逐行过滤处理,获得过滤处理结果,直至匹配到所述过滤结束字符时停止过滤处理。
43.在一实施方式中,所述过滤模块,具体用于:
44.从所述仿真日志中位于所述目标位置之后的字符中获取目标字符,所述目标字符为预设类型的字符;
45.检测所述目标字符是否与所述过滤字符相匹配,获得对应的检测结果;
46.根据所述检测结果对所述目标字符进行相应处理,以获得过滤处理结果。
47.在一实施方式中,所述过滤模块,具体用于:
48.响应于所述检测结果为所述目标字符与所述过滤字符不匹配,则记录所述目标字符至过滤处理结果中与所述目标字符对应的统计类型;和/或,
49.响应于所述检测结果为所述目标字符与所述过滤字符相匹配,则不记录所述目标字符至过滤处理结果中。
50.在一实施方式中,所述预设类型的字符包括以下至少一种:警告信息字符、错误信息字符、带有预设标识的字符。
51.在一实施方式中,所述统计处理模块,具体用于:
52.响应于所述过滤处理结果满足预设条件,确定所述目标测试用例对应的仿真结果为第一结果;
53.响应于所述过滤处理结果不满足预设条件,确定所述目标测试用例对应的仿真结果为第二结果。
54.在一实施方式中,所述统计处理模块,还用于响应于检测到所述过滤处理结果包括属于目标类型的新字符,将所述新字符作为过滤字符加入所述过滤文件。
55.在一实施方式中,所述统计处理模块,还用于检测是否开启仿真日志过滤功能;以及确定开启仿真日志过滤功能时,触发所述测试用例运行模块执行响应于对目标测试用例仿真结束,调用过滤脚本。
56.本技术实施例提供的仿真日志处理方法及装置,该方法包括:响应于对目标测试用例仿真结束,调用过滤脚本;执行所述过滤脚本,以加载所述过滤文件对仿真日志进行过
滤处理,获得过滤处理结果;所述过滤文件包括过滤字符,所述仿真日志为对所述目标测试用例进行仿真后所生成的;根据所述过滤处理结果,确定并输出所述目标测试用例对应的仿真结果。如此,在对每个测试用例仿真结束后,利用过滤脚本加载测试用例对应的过滤文件的方式对测试用例的仿真日志进行过滤,以过滤掉用户不需要或不关心的信息,能够实现快速且准确识别测试用例对应的仿真结果,增强对测试用例对应的仿真结果的识别度,提升验证收敛速度,且可移植性高。
附图说明
57.一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
58.图1为本发明实施例提供的仿真日志处理方法的流程示意图一;
59.图2为本发明实施例提供的仿真日志处理装置结构示意图;
60.图3为本发明实施例中过滤文件的产生过程示意图;
61.图4为本发明实施例中仿真日志示意图;
62.图5为本发明实施例提供的仿真日志处理方法的流程示意图二。
具体实施方式
63.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
64.参照图1,图1是根据本技术实施例示出的仿真日志处理方法的流程示意图,本技术实施例的仿真日志处理方法可应用于仿真日志处理装置,该方法可包括以下步骤:
65.步骤s101、响应于对目标测试用例仿真结束,调用过滤脚本。
66.具体地,在开启过滤仿真日志功能的情况下,响应于对目标测试用例仿真结束,调用过滤脚本以对目标测试用例进行仿真后所生成的仿真日志进行过滤处理。其中,目标测试用例可以为当前执行仿真测试后的测试用例。过滤脚本为可以对仿真日志进行过滤处理的脚本,用户通过过滤脚本可以指定是否开启过滤指定功能、以及在开启过滤指定功能的情况下,设置过滤开始字符和/或过滤结束字符等。
67.步骤s102、执行过滤脚本,以加载目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果;过滤文件包括过滤字符,仿真日志为对目标测试用例进行仿真后所生成的。
68.具体地,执行过滤脚本,以根据目标测试用例的名称等标识信息获取并加载目标测试用例对应的包括过滤字符的过滤文件,进而通过目标测试用例对应的过滤文件对目标测试用例进行仿真后所生成的仿真日志进行过滤处理,获得过滤处理结果。
69.可选地,不同测试用例对应的过滤文件可以相同,也可以不相同,具体可基于需求进行设置。需要说明的是,可以通过分析对不同测试用例进行多次仿真所产生的仿真日志,以基于产生的错误信息等确定测试用例对应的过滤文件,例如,可以将一些用户不关心的
错误信息设置为过滤字符等。
70.其中,过滤文件用于指示对测试用例对应的仿真日志进行过滤处理的规则,具体可包括过滤字符等。过滤字符可以为单个字符,也可以为字符串,比如informationa、information b等。需要说明的是,过滤脚本可支持加载不同测试用例对应的不同过滤文件。
71.其中,仿真日志用于指示测试用例对应的仿真结果,比如是否包含错误信息等,且仿真日志可由多行字符组成,比如可以包括警告信息字符、错误信息字符等。基于测试用例对应的过滤文件对该测试用例进行仿真所生成的仿真日志进行过滤处理,能够过滤掉用户不需要或不关心的信息,方便用户识别仿真结果。
72.在一实施方式中,执行过滤脚本,以加载目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果,包括:
73.获取过滤脚本的预设脚本参数,预设脚本参数用于指示是否开启过滤指定功能;
74.响应于已开启过滤指定功能,根据目标测试用例对应的过滤文件中的过滤字符,对仿真日志中位于过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,获得过滤处理结果;
75.响应于未开启过滤指定功能,根据目标测试用例对应的过滤文件中的过滤字符对仿真日志中的字符进行逐行过滤处理,获得过滤处理结果。
76.具体地,获取过滤脚本的预设脚本参数,以根据预设脚本参数判断是否已开启过滤指定功能;响应于已开启过滤指定功能,先获取过滤脚本指定的过滤开始字符和/或过滤结束字符,确定仿真日志中位于过滤开始字符之后和/或过滤结束字符之前的字符,再根据目标测试用例对应的过滤文件中的过滤字符,对仿真日志中位于过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,获得过滤处理结果;响应于未开启过滤指定功能,直接根据目标测试用例对应的过滤文件中的过滤字符对仿真日志中的字符进行逐行过滤处理,以获得过滤处理结果。
77.可以理解,有些时候可能只需要对仿真日志中特定位置处的字符进行统计分析,即可获得测试用例对应的仿真结果,或者,由于同一警告或错误信息在不同时间或不同位置会出现多次,而此时可能只需要对在特定时间之前或之后出现的警告或错误信息进行统计分析,因此,可通过在过滤脚本中指定一个或多个过滤开始字符和/或过滤结束字符的方式,以通过过滤开始字符和/或过滤结束字符有选择性地对仿真日志进行过滤筛选,以避免遗漏统计相关信息以及提高处理效率。其中,过滤开始字符和/或过滤结束字符可以是预先设置的字符,比如,可以设置过滤开始字符为“log_filter_begin”,而设置过滤结束字符为“log_filter_end”等。例如,若过滤脚本包括过滤开始字符且过滤开始字符为“log_filter_begin”,则对仿真日志中位于“log_filter_begin”之后的字符进行过滤处理;或者,若过滤脚本包括过滤结束字符且过滤结束字符为“log_filter_end”,则将仿真日志中位于“log_filter_end”之前的字符进行过滤处理;或者若过滤脚本包括过滤开始字符、过滤结束字符且过滤开始字符为“log_filter_begin”、过滤结束字符为“log_filter_end”,则对仿真日志中位于“log_filter_begin”之后、“log_filter_end”之前的字符进行过滤处理。
78.需要说明的是,仿真日志中位于所述过滤脚本指定的过滤开始字符之后和/或过
滤结束字符之前的字符可包括多行字符。而在未开启过滤指定功能时,利用过滤脚本加载测试用例对应的过滤文件的方式,将过滤文件中的过滤字符与仿真日志中的每行字符进行匹配,以逐行过滤掉仿真日志中匹配到的字符所在行。过滤文件中的过滤字符可以是仿真日志中的整行字符,也可以是非整行字符串,只要能够保证过滤字符能够唯一匹配此类型的信息即可。例如,假设仿真日志包括有三行字符,且三行字符的第一个字符分别为aa,bb,cc,若过滤文件中的过滤字符包括bb,则在过滤脚本搜索到字符bb所在行时,将会把字符bb所在行过滤掉。
79.如此,根据预设脚本参数检测是否已开启过滤指定功能,并根据检测结果确定仿真日志中需要进行过滤处理的字符范围,再通过过滤字符对需要进行过滤处理的字符进行过滤处理,能够进一步实现快速识别测试用例对应的仿真结果,并进一步提高验证收敛速度。
80.在一实施方式中,过滤脚本指定有过滤开始字符和过滤结束字符;根据目标测试用例对应的过滤文件中的过滤字符,对仿真日志中位于过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,包括:
81.将过滤开始字符与仿真日志中的字符进行逐行匹配,确定过滤开始字符在仿真日志中的目标位置;
82.根据过滤字符对仿真日志中位于目标位置之后的字符进行逐行过滤处理,获得过滤处理结果,直至匹配到过滤结束字符时停止过滤处理。
83.具体地,当过滤脚本指定有过滤开始字符和过滤结束字符,先将过滤开始字符与仿真日志中的字符进行逐行匹配,以确定过滤开始字符在仿真日志中的目标位置;接着,根据过滤字符对仿真日志中位于目标位置之后的字符进行逐行过滤处理,获得过滤处理结果,并在匹配到仿真日志中的过滤结束字符时停止过滤处理。
84.需要说明的是,仿真日志中可能有一个或多个过滤开始字符和过滤结束字符,在仿真日志中包含多个过滤开始字符和多个过滤结束字符时,需要按照上述操作对仿真日志中位于每个过滤开始字符与对应过滤结束字符之间的字符进行过滤处理。此外,若过滤脚本只指定有过滤开始字符,而没有过滤结束字符,则在根据过滤字符对仿真日志中位于目标位置之后的字符进行逐行过滤处理时,将在匹配到仿真日志中的最后一行字符时停止过滤处理。或者,若过滤脚本只指定有过滤结束字符,而没有过滤开始字符,则根据过滤字符对仿真日志中的字符进行逐行过滤,直至在仿真日志中匹配到过滤结束字符时停止过滤处理。
85.如此,先基于过滤开始字符确定仿真日志中需要过滤处理字符的开始位置,再通过过滤字符对需要进行过滤处理的字符进行过滤处理,能够进一步实现快速识别测试用例对应的仿真结果,并进一步提高验证收敛速度。
86.在一实施方式中,根据过滤字符对仿真日志中位于目标位置之后的字符进行逐行过滤处理,获得过滤处理结果,包括:
87.从仿真日志中位于目标位置之后的字符中获取目标字符,目标字符为预设类型的字符;
88.检测目标字符是否与过滤字符相匹配,获得对应的检测结果;
89.根据检测结果对目标字符进行相应处理,以获得过滤处理结果。
90.可以理解,由于仿真日志中位于目标位置之后的字符中可能只有部分字符用于指示目标测试用例对应的仿真结果,即只有部分的仿真日志中位于目标位置之后的字符与目标测试用例对应的仿真结果相关,因此,可只对该部分的仿真日志中位于目标位置之后的字符进行过滤处理。具体地,首先可对仿真日志中位于目标位置之后的字符中各字符进行分析,根据分析结果从仿真日志中位于目标位置之后的字符中获取预设类型的目标字符;接着,检测获取的预设类型的目标字符是否与过滤字符相匹配,获得对应的检测结果;进而,根据检测结果对目标字符进行相应处理,以获得过滤处理结果。
91.其中,预设类型的字符可包括以下至少一种:警告信息字符、错误信息字符、带有预设标识的字符。这里,预设标识可以根据实际情况需要进行设置,比如可以为错误标识等。可以理解,由于预设类型的字符通常用于指示警告或错误信息,而过滤字符也通常为用户关心的警告或错误等信息,若在仿真日志中检测到预设类型的字符,则将预设类型的字符与过滤字符相匹配,以实现快速进行过滤操作。
92.如此,先从仿真日志中位于目标位置之后的字符中获取预设类型的目标字符,再将目标字符与过滤字符进行匹配,操作便捷,能够进一步实现快速识别测试用例对应的仿真结果,并进一步提高验证收敛速度。
93.在一实施方式中,根据检测结果对目标字符进行相应处理,以获得过滤处理结果,包括:
94.响应于检测结果为目标字符与过滤字符不匹配,则记录目标字符至过滤处理结果中与目标字符对应的统计类型;和/或,
95.响应于检测结果为目标字符与过滤字符相匹配,则不记录目标字符至过滤处理结果中。
96.具体地,响应于检测结果为目标字符与过滤字符不匹配,即目标字符不包括过滤字符,则记录目标字符至过滤处理结果中与目标字符对应的统计类型;和/或,响应于检测结果为目标字符与过滤字符相匹配,即目标字符包括过滤字符,则不记录目标字符至过滤处理结果中,即不记录目标字符至过滤处理结果中与目标字符对应的统计类型。
97.可以理解,若目标字符与过滤字符不匹配,说明需要目标字符可能是能够影响目标测试用例的仿真结果的信息,则将目标字符记录至过滤处理结果中与目标字符对应的统计类型,以便于用户及时获知。若目标字符与过滤字符匹配,说明需要目标字符可能不是能够影响目标测试用例的仿真结果的信息,则不将目标字符记录至过滤处理结果中,以减少对不必要信息的统计。这里,与目标字符对应的统计类型可以为目标字符的字符类型,即目标字符对应的预设类型。需要说明的是,记录目标字符至过滤处理结果中与目标字符对应的统计类型,可以为将过滤处理结果中与目标字符对应的统计类型信息进行更改,比如次数加1等。例如,假设目标字符的字符类型为警告信息字符,且过滤处理结果包括的统计类型有警告信息和错误信息,则可将过滤处理结果中警告信息对应的次数加1。
98.在一实施方式中,根据检测结果对目标字符进行相应处理,以获得过滤处理结果,包括:
99.响应于检测结果为目标字符与过滤字符不匹配,则不记录目标字符至过滤处理结果中;和/或,
100.响应于检测结果为目标字符与过滤字符相匹配,则记录目标字符至过滤处理结果
中与目标字符对应的统计类型。
101.具体地,响应于检测结果为目标字符与过滤字符不匹配,即目标字符不包括过滤字符,则不记录目标字符至过滤处理结果中;和/或,响应于检测结果为目标字符与过滤字符相匹配,即目标字符包括过滤字符,则记录目标字符至过滤处理结果中与目标字符对应的统计类型。
102.可以理解,若目标字符与过滤字符不匹配,说明需要目标字符可能不是能够影响目标测试用例的仿真结果的信息,则不将目标字符记录至过滤处理结果中,以减少对不必要信息的统计。若目标字符与过滤字符匹配,说明需要目标字符可能是能够影响目标测试用例的仿真结果的信息,则将目标字符记录至过滤处理结果中,以便于用户及时获知。这里,与目标字符对应的统计类型可以为目标字符的字符类型,即目标字符对应的预设类型。需要说明的是,记录目标字符至过滤处理结果中与目标字符对应的统计类型,可以为将过滤处理结果中与目标字符对应的统计类型信息进行更改,比如次数加1等。例如,假设目标字符的字符类型为错误信息字符,且过滤处理结果包括的统计类型有警告信息和错误信息,则可将过滤处理结果中错误信息对应的次数加1。
103.步骤s103、根据过滤处理结果,确定并输出目标测试用例对应的仿真结果。
104.在一实施方式中,根据过滤处理结果,确定并输出目标测试用例对应的仿真结果,包括:
105.响应于过滤处理结果满足预设条件,确定目标测试用例对应的仿真结果为第一结果;
106.响应于过滤处理结果不满足预设条件,确定目标测试用例对应的仿真结果为第二结果。
107.其中,满足预设条件可以根据实际情况需要进行设置,比如可以设置为不包括警告信息、错误信息以及带有预设标识的信息。相应的,不满足预设条件可以设置为包括警告信息、和/或错误信息、和/或带有预设标识的信息。在过滤处理结果满足预设条件,说明目标测试用例对应的仿真结果是成功的,即第一结果可以为成功。而在过滤处理结果不满足预设条件,说明目标测试用例对应的仿真结果是失败的,即第二结果可以为失败。如此,可实现根据过滤处理结果快速获得测试用例对应的仿真结果,进一步提高了验证收敛速度。
108.综上,上述实施例提供的仿真日志处理方法中,在对每个测试用例仿真结束后,利用过滤脚本加载测试用例对应的过滤文件的方式对测试用例的仿真日志进行过滤,以过滤掉用户不需要或不关心的信息,能够实现快速且准确识别测试用例对应的仿真结果,增强对测试用例对应的仿真结果的识别度,提高验证收敛速度,且可移植性高。
109.在一实施方式中,该方法还可包括:
110.响应于检测到过滤处理结果包括属于目标类型的新字符,将新字符作为过滤字符加入过滤文件。
111.可以理解,在检测到过滤处理结果包括属于目标类型的新字符,说明对测试用例的仿真日志中出现了新的警告信息、或新的错误信息等,为了后续进一步提高对仿真日志的解析速度和验证收敛速度,可以将属于目标类型的新字符作为过滤字符加入过滤文件。例如,假设过滤文件包括过滤字符,且过滤字符包括错误信息字符a,若目标测试用例的仿真日志中包含错误信息字符b,由于错误信息字符b与错误信息字符a不匹配,则将错误信息
字符b记录至过滤处理结果中,并可将错误信息字符b作为过滤字符加入过滤文件中。其中,目标类型可以根据实际情况需要进行设置,比如可以为警告信息、错误信息等。
112.在一实施方式中,该方法还可包括:
113.检测是否开启仿真日志过滤功能;
114.确定开启仿真日志过滤功能时,执行响应于对目标测试用例仿真结束,调用过滤脚本的步骤。
115.具体地,在对目标测试用例执行仿真过程中或结束后,检测是否开启仿真日志过滤功能,并在确定开启仿真日志过滤功能时,执行响应于对目标测试用例仿真结束,调用过滤脚本的步骤。如此,当在确定开启仿真日志过滤功能时,执行响应于对目标测试用例仿真结束,调用过滤脚本的步骤,以及时对测试用例的仿真日志进行过滤,提升用户体验。
116.基于前述实施例相同的发明构思,如图2所示,本实施例提供了一种仿真日志处理装置,该装置包括:
117.测试用例运行模块,用于响应于对目标测试用例仿真结束,调用过滤脚本;
118.过滤模块,用于执行所述过滤脚本,以加载所述目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果;过滤文件包括过滤字符,仿真日志为对目标测试用例进行仿真后所生成的:
119.统计处理模块,用于根据过滤处理结果,确定并输出目标测试用例对应的仿真结果。
120.其中,目标测试用例可以为执行仿真测试后的测试用例。过滤脚本为可以对仿真日志进行过滤处理的脚本,用户通过过滤脚本可以指定是否开启过滤指定功能、以及在开启过滤指定功能的情况下,设置过滤开始字符和/或过滤结束字符等。可选地,不同测试用例对应的过滤文件可以相同,也可以不相同,具体可基于需求进行设置。需要说明的是,可以通过分析对目标测试用例进行多次仿真所产生的仿真日志,以基于产生的错误信息等确定目标测试用例对应的过滤文件,例如,可以将一些用户不关心的错误信息设置为过滤字符等。
121.其中,过滤文件用于指示对目标测试用例对应的仿真日志进行过滤处理的规则,具体可包括过滤字符等。过滤字符可以为单个字符,也可以为字符串,比如informationa、informationb等。需要说明的是,过滤脚本可支持加载不同测试用例对应的不同过滤文件。
122.其中,仿真日志用于指示目标测试用例对应的仿真结果,比如是否包含错误信息等,且仿真日志可由多行字符组成,比如警告信息字符、错误信息字符等。基于过滤文件对仿真日志进行过滤处理,能够过滤掉用户不需要或不关心的信息,方便用户识别仿真结果。
123.综上,上述实施例提供的装置中,在对每个测试用例仿真结束后,利用过滤脚本加载测试用例对应的过滤文件的方式对测试用例的仿真日志进行过滤,以过滤掉用户不需要或不关心的信息,能够实现快速且准确识别测试用例对应的仿真结果,增强对测试用例对应的仿真结果的识别度,提升验证收敛速度,且可移植性高。
124.在一实施方式中,过滤模块,具体用于:
125.获取所述过滤脚本的预设脚本参数,所述预设脚本参数用于指示是否开启过滤指定功能;
126.响应于开启过滤指定功能,根据所述目标测试用例对应的过滤文件中的过滤字
符,对仿真日志中位于过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,获得过滤处理结果;
127.响应于未开启过滤指定功能,根据所述目标测试用例对应的过滤文件中的过滤字符对仿真日志中的字符进行逐行过滤处理,获得过滤处理结果。
128.具体地,获取过滤脚本的预设脚本参数,以根据预设脚本参数判断是否已开启过滤指定功能;响应于已开启过滤指定功能,先获取过滤脚本指定的过滤开始字符和/或过滤结束字符,确定仿真日志中位于过滤开始字符之后和/或过滤结束字符之前的字符,再根据目标测试用例对应的过滤文件中的过滤字符对仿真日志中位于过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,获得过滤处理结果;响应于未开启过滤指定功能,直接根据目标测试用例对应的过滤文件中的过滤字符对仿真日志中的字符进行逐行过滤处理,以获得过滤处理结果。
129.可以理解,有些时候可能只需要对仿真日志中特定位置处的字符进行统计分析,即可获得目标测试用例对应的仿真结果,或者,由于同一警告或错误信息在不同时间或不同位置会出现多次,而此时可能只需要对在特定时间之前或之后出现的警告或错误信息进行统计分析,因此,可通过在过滤脚本中指定一个或多个过滤开始字符和/或过滤结束字符有选择性地对仿真日志进行筛选,以避免遗漏统计相关信息以及提高处理效率。其中,过滤开始字符和/或过滤结束字符可以是预先设置的字符,比如,可以设置过滤开始字符为“log_filter_begin”,而设置过滤结束字符为“log_filter_end”等。例如,若过滤文件包括过滤开始字符且过滤开始字符为“log_filter_begin”,则对仿真日志中位于“log_filter_begin”之后的字符进行过滤处理;或者,若过滤脚本包括过滤结束字符且过滤结束字符为“log_filter_end”,则对仿真日志中位于“log_filter_end”之前的字符进行过滤处理;或者若过滤脚本包括过滤开始字符、过滤结束字符且过滤开始字符为“log_filter_begin”、过滤结束字符为“log_filter_end”,则对仿真日志中位于“log_filter_begin”之后、“log_filter_end”之前的字符进行过滤处理。
130.需要说明的是,仿真日志中位于所述过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符可包括多行字符。而在未开启过滤指定功能时,利用过滤脚本加载测试用例对应的过滤文件的方式,将过滤文件中的过滤字符与仿真日志中的每行字符进行匹配,以逐行过滤掉仿真日志中匹配到的字符所在行。过滤文件中的过滤字符可以是仿真日志中的整行字符,也可以是非整行字符串,只要能够保证过滤字符能够唯一匹配此类型的信息即可。
131.如此,根据预设脚本参数检测是否已开启过滤指定功能,并根据检测结果确定仿真日志中需要进行过滤处理的字符范围,再通过过滤字符对需要进行过滤处理的字符进行过滤处理,能够进一步实现快速识别测试用例对应的仿真结果,并进一步提高验证收敛速度。
132.在一实施方式中,过滤脚本指定有过滤开始字符和过滤结束字符;过滤模块,具体用于:
133.将过滤开始字符与仿真日志中的字符进行逐行匹配,确定过滤开始字符在仿真日志中的目标位置;
134.根据过滤字符对仿真日志中位于目标位置之后的字符进行逐行过滤处理,获得过
滤处理结果,直至匹配到过滤结束字符时停止过滤处理。
135.具体地,当过滤脚本指定有过滤开始字符和过滤结束字符,先将过滤开始字符与仿真日志中的字符进行逐行匹配,以确定过滤开始字符在仿真日志中的目标位置;接着,根据过滤字符对仿真日志中位于目标位置之后的字符进行逐行过滤处理,获得过滤处理结果,并在匹配到仿真日志中的过滤结束字符时停止过滤处理。
136.需要说明的是,仿真日志中可能有一个或多个过滤开始字符和过滤结束字符,在仿真日志中包含多个过滤开始字符和多个过滤结束字符时,需要按照上述操作对仿真日志中位于每个过滤开始字符与对应过滤结束字符之间的字符进行过滤处理。此外,若过滤脚本只指定有过滤开始字符,而没有过滤结束字符,则在根据过滤字符对仿真日志中位于目标位置之后的字符进行逐行过滤处理时,将在匹配到仿真日志中的最后一行字符时停止过滤处理。或者,若过滤脚本只指定有过滤结束字符,而没有过滤开始字符,则根据过滤字符对仿真日志中的字符进行逐行过滤,直至在仿真日志中匹配到过滤结束字符时停止过滤处理。
137.如此,先基于过滤开始字符确定仿真日志中需要过滤处理字符的开始位置,再通过过滤字符对需要进行过滤处理的字符进行过滤处理,能够进一步实现快速识别测试用例对应的仿真结果,并进一步提高验证收敛速度。
138.在一实施方式中,过滤模块,具体用于:
139.从仿真日志中位于目标位置之后的字符中获取目标字符,目标字符为预设类型的字符;
140.检测目标字符是否与过滤字符相匹配,获得对应的检测结果;
141.根据检测结果对目标字符进行相应处理,以获得过滤处理结果。
142.可以理解,由于仿真日志中位于目标位置之后的字符中可能只有部分字符用于指示目标测试用例对应的仿真结果,即只有部分的仿真日志中位于目标位置之后的字符与目标测试用例对应的仿真结果相关,因此,可只对该部分的仿真日志中位于目标位置之后的字符进行过滤处理。具体地,首先对仿真日志中位于目标位置之后的字符中各字符进行分析,根据分析结果从仿真日志中位于目标位置之后的字符中获取预设类型的目标字符;接着,检测获取的预设类型的目标字符是否与过滤字符相匹配,获得对应的检测结果;进而,根据检测结果对目标字符进行相应处理,以获得过滤处理结果。
143.其中,预设类型的字符可包括以下至少一种:警告信息字符、错误信息字符、带有预设标识的字符。这里,预设标识可以根据实际情况需要进行设置,比如可以为错误标识等。可以理解,由于预设类型的字符通常用于指示警告或错误信息,而过滤字符也通常为用户关心的警告或错误等信息,若在仿真日志中检测到预设类型的字符,则将预设类型的字符与过滤字符相匹配,以实现快速进行过滤操作。
144.如此,先从仿真日志中位于目标位置之后的字符中获取预设类型的目标字符,再将目标字符与过滤字符进行匹配,操作便捷,能够进一步实现快速识别测试用例对应的仿真结果,并进一步提高验证收敛速度。
145.在一实施方式中,过滤模块,具体用于:
146.响应于检测结果为目标字符与过滤字符不匹配,则记录目标字符至过滤处理结果中与所述目标字符对应的统计类型;和/或,
147.响应于检测结果为目标字符与过滤字符相匹配,则不记录目标字符至过滤处理结果中。
148.具体地,响应于检测结果为目标字符与过滤字符不匹配,即目标字符不包括过滤字符,则记录目标字符至过滤处理结果中与目标字符对应的统计类型;和/或,响应于检测结果为目标字符与过滤字符相匹配,即目标字符包括过滤字符,则不记录目标字符至过滤处理结果中。
149.可以理解,若目标字符与过滤字符不匹配,说明需要目标字符可能是能够影响目标测试用例的仿真结果的信息,则将目标字符记录至过滤处理结果中与目标字符对应的统计类型,以便于用户及时获知。若目标字符与过滤字符匹配,说明需要目标字符可能不是能够影响目标测试用例的仿真结果的信息,则不将目标字符记录至过滤处理结果中,以减少对不必要信息的统计。这里,与目标字符对应的统计类型可以为目标字符的字符类型,即目标字符对应的预设类型。需要说明的是,记录目标字符至过滤处理结果中与目标字符对应的统计类型,可以为将过滤处理结果中与目标字符对应的统计类型信息进行更改,比如次数加1等。例如,假设目标字符的字符类型为警告信息字符,且过滤处理结果包括的统计类型有警告信息和错误信息,则可将过滤处理结果中警告信息对应的次数加1。
150.在一实施方式中,过滤模块,具体用于:
151.响应于检测结果为所述目标字符与过滤字符不匹配,则不记录目标字符至过滤处理结果中;和/或,
152.响应于检测结果为所述目标字符与过滤字符相匹配,则记录目标字符至过滤处理结果中与所述目标字符对应的统计类型。
153.具体地,响应于检测结果为目标字符与过滤字符不匹配,即目标字符不包括过滤字符,则不记录目标字符至过滤处理结果中;和/或,响应于检测结果为目标字符与过滤字符相匹配,即目标字符包括过滤字符,则记录目标字符至过滤处理结果中。
154.可以理解,若目标字符与过滤字符不匹配,说明需要目标字符可能不是能够影响目标测试用例的仿真结果的信息,则不将目标字符记录至过滤处理结果中,以减少对不必要信息的统计。若目标字符与过滤字符匹配,说明需要目标字符可能是能够影响目标测试用例的仿真结果的信息,则将目标字符记录至过滤处理结果中,以便于用户及时获知。这里,与目标字符对应的统计类型可以为目标字符的字符类型,即目标字符对应的预设类型。需要说明的是,记录目标字符至过滤处理结果中与目标字符对应的统计类型,可以为将过滤处理结果中与目标字符对应的统计类型信息进行更改,比如次数加1等。例如,假设目标字符的字符类型为错误信息字符,且过滤处理结果包括的统计类型有警告信息和错误信息,则可将过滤处理结果中错误信息对应的次数加1。
155.在一实施方式中,统计处理模块,具体用于:
156.响应于过滤处理结果满足预设条件,确定目标测试用例对应的仿真结果为第一结果;
157.响应于过滤处理结果不满足预设条件,确定目标测试用例对应的仿真结果为第二结果。
158.其中,满足预设条件可以根据实际情况需要进行设置,比如可以设置为不包括警告信息、错误信息以及带有预设标识的信息。相应的,不满足预设条件可以设置为包括警告
信息、和/或错误信息、和/或带有预设标识的信息。在过滤处理结果满足预设条件,说明目标测试用例对应的仿真结果是成功的,即第一结果可以为成功。而在过滤处理结果不满足预设条件,说明目标测试用例对应的仿真结果是失败的,即第二结果可以为失败。如此,可实现根据过滤处理结果快速获得测试用例对应的仿真结果,进一步提高了验证收敛速度。
159.在一实施方式中,统计处理模块,还用于响应于检测到过滤处理结果包括属于目标类型的新字符,将所述新字符作为过滤字符加入所述过滤文件。
160.可以理解,在检测到过滤处理结果包括新的预设类型的字符,说明对测试用例的仿真日志中出现了新的警告信息、或新的错误信息等,为了后续进一步提高对仿真日志的解析速度和验证收敛速度,可以将新的预设类型的字符作为过滤字符加入过滤文件。例如,假设过滤文件包括过滤字符,且过滤字符包括错误信息字符a,若目标测试用例的仿真日志中包含错误信息字符b,由于错误信息字符b与错误信息字符a不匹配,则将错误信息字符b记录至过滤处理结果中,并可将错误信息字符b作为过滤字符加入过滤文件中。其中,目标类型可以根据实际情况需要进行设置,比如可以为警告信息、错误信息等。
161.在一实施方式中,统计处理模块,还用于检测是否开启仿真日志过滤功能;以及确定开启仿真日志过滤功能时,触发所述测试用例运行模块响应于对目标测试用例仿真结束,调用过滤脚本。
162.具体地,在对目标测试用例执行仿真过程中或结束后,统计处理模块检测是否开启仿真日志过滤功能,并在确定开启仿真日志过滤功能时,触发所述测试用例运行模块响应于对目标测试用例仿真结束,调用过滤脚本。如此,当在确定开启仿真日志过滤功能时,在响应于对目标测试用例仿真结束,再调用过滤脚本,以及时对测试用例的仿真日志进行过滤,提升用户体验。
163.基于前述实施例相同的发明构思,下面通过一具体示例对前述实施例进行详细说明。
164.在使用uvm验证方法学的仿真验证环境中,仿真日志记录的信息一般可以分为4类,正常信息、警告信息、错误信息、致命错误信息,分别使用宏uvm_info、uvm_warning、uvm_error、uvm_fatal将信息显示到仿真日志中。在构造验证环境时,设计者根据信息的严重等级确定输出何种类型的信息。前三种信息类型在日志最后都会被统计,而致命错误信息一旦出现,仿真会立刻结束。在dut中一般采用display函数显示错误信息,打印类似error这种关键字到仿真日志中。
165.仿真日志中出现的一些警告或者错误信息,有些是重点关注的,而也有些信息是不需要关心的,通过识别这些错误严重等级可以认为测试用例执行的结果是通过,还是需要进一步调整。另外,在回归测试中,由于一些仿真条件的随机性,测试用例会被执行成百上千遍,验证人员不可能挨个检验每个测试用例的仿真结果。如果有一种方式,可以只关注所有仿真日志文件的最终输出结果是pass还是fail,就可以判断测试用例执行得是否正确,那么这种方式将会大大提升仿真效率,加快验证收敛。
166.在采用uvm验证方法搭建的验证环境中,对于宏uvm_info打印出来的正常信息可以认为是无效信息,直接过滤掉,对于宏uvm_fatal打印出来的信息,因为其特殊性,一般是显示在仿真日志的最后,一旦检查到致命信息就可以直接输出仿真结果状态为fail。
167.另外,考虑到仿真日志的最后的统计信息(uvmreportsummary)不一定包含所有警
告和错误的信息,这些打印信息未使用宏uvm_warning和宏uvm_error,比如利用display函数打印的信息。所以简单分析最后的统计信息“uvmreportsummary”不完全能够表示仿真结果。
168.因此,本技术提出通过对整个仿真日志进行分析,根据设定的某些特征信息,有选择性的过滤掉不影响仿真结果的无效信息,从而快速得到正确的仿真结果。其中,特征信息可分为两种形式,分别对应不同的仿真应用场景,并且两者结合可处理绝大多数仿真日志。
169.其一、指定过滤信息。将需要过滤掉的警告信息、错误信息录入到过滤文件中,利用过滤脚本加载过滤文件的方式,逐行过滤掉仿真日志中匹配到的字符串行。过滤文件中的字符串信息可以是仿真日志中的整行字符,也可以是非整行字符串,只要能够保证字符串能够唯一匹配此类型的信息即可。
170.过滤文件中的字符串可以是仿真日志中的警告信息和错误信息,也可以是带有error字符的正常信息,在过滤脚本中,会将这种信息归类成错误信息。考虑到在测试用例的仿真日志中,有些信息是不需要特别关注分析的,即使出现这些警告或错误信息也可以认为仿真结果是pass的。对于此类信息,过滤脚本需要逐行匹配过滤文件中的字符串,一旦匹配成功,在统计结果中不计入警告或者错误信息的统计,输出pass类型的仿真结果。需要注意的是,过滤文件中不可添加致命信息的字符串。
171.其中,过滤文件的产生是一个迭代的过程,并在调试测试用例过程中形成稳定的过滤文件。如图3所示,过滤文件的产生过程可包括以下步骤:
172.步骤s201、新建过滤文件。
173.可以理解,针对每个测试用例,可分别建立一个过滤文件。
174.步骤s202、添加无效错误信息至过滤文件。其中,可以预先将获得的一些无效错误信息添加至过滤文件中,以组成过滤字符。
175.步骤s203、执行测试用例。具体地,执行测试用例以进行回归测试。
176.步骤s204、获取产生的仿真日志。这里,在对测试用例仿真(即回归测试)结束后,会生成对应的仿真日志。
177.步骤s205、通过过滤脚本加载过滤文件以对仿真日志进行过滤。
178.具体地,在对测试用例仿真结束后,调用并执行过滤脚本,以加载测试用例对应的过滤文件对仿真日志进行过滤,生成过滤结果。
179.步骤s206、根据过滤结果判断是否有新的无效错误信息,若是,则执行步骤s202,否则执行步骤s207。
180.可以理解,由于随机的激励不同,对同一个测试用例进行多次仿真后可能会产生新的无效错误信息。若根据过滤结果判断出有新的无效错误信息,则执行步骤s202,以将新的无效错误信息添加至测试用例对应的过滤文件。
181.步骤s207、形成稳定的过滤文件。
182.具体地,过滤脚本的统计程序在测试用例每次仿真后会产生错误信息的统计文件,验证人员可从统计文件中识别出是否有新的无效错误信息,决定是否再次进行测试用例的调试。测试用例在经过几次仿真后,基本上警告信息和一些不关心的错误信息都已经不再增加和改变,而将这些信息保存,形成稳定的过滤文件。对于其他大多数测试用例,此过滤文件一般都可适用。但对于个别特殊的测试用例,由于测试场景不同,会出现新的警告
和错误信息,需要过滤的信息与之前产生的稳定的过滤文件有所不同,所以过滤脚本需支持不同测试用例对应不同过滤文件的功能。
183.在测试用例的回归测试中,利用已有的过滤文件,可以很大程度上提高对测试结果的解析速度,加快芯片验证收敛速度。
184.其二、设定关键字符串。将关键字符串作为警告或者错误信息统计的开始和结束标志,过滤掉位于关键字符串以外的所有仿真日志信息。
185.在一个完整的仿真日志中,有些警告或者错误信息种类繁多,打印次数也比较多,但是这些信息有共同的特点,比如都是在某一时间段内产生的,如果采用第一种特征信息的过滤方式,在其他时间段内如果上报了这些警告或者错误信息,同样也会被过滤掉,这样就导致未能识别有效的错误信息,遗漏了本应该属于bug的调试信息。所以,有选择性的过滤信息对仿真日志信息过滤尤为关键。
186.在芯片验证环境中,可以根据不同的条件触发打印关键字符串到仿真日志中,此条件可以是时间节点,也可以是某些事件,比如芯片模块的复位阶段结束、dut某些信号被触发等。然后,过滤脚本在解析仿真日志文件时,利用关键字符串对打印的信息进行匹配,匹配成功后开始警告或者错误信息的统计,而忽略位于关键字符串以外的所有信息。
187.比如,在芯片验证仿真的开始阶段会有一个reset阶段,在这个阶段之前有可能出现大量的错误信息,而由于只关心reset阶段之后的仿真信息,并且在reset阶段后也有可能出现相同的错误信息,所以,不能采用第一种特征信息的方式对这种错误信息进行过滤。但可以在仿真环境中监测到reset阶段执行结束的时间节点,利用这种时间节点的方式触发打印“log_filter_begin”到仿真日志中。同样,在大多数的异常测试用例中,一旦成功触发dut中错误的逻辑行为后,dut就可能会出现不可预期的错误,验证环境会上报一些错误信息,这些仿真信息是无效的,所以可以根据这种事件触发打印“log_filter_end”到仿真日志中,过滤掉后面所有的异常逻辑行为导致的错误信息。
188.当然,这种关键字符串可以是自定义的,只要能起到隔离有效和无效信息的作用即可。关键字符串还可以成对出现,将整个仿真日志分成多个片段,实现过滤掉无效片段的作用。如图4所示,通过关键字符串log_filter_begin和log_filter_end将仿真日志中所有信息划分成了2个需要检查的segment1和segment2,此时informationa、b、c和information m、n被过滤掉,即不对informationa、b、c和informationm、n进行统计。
189.结合上面两种特征信息的形式,为了对测试用例的仿真日志进行过滤,参阅图5,本实施例提供的仿真日志处理方法可包括如下步骤:
190.步骤s301、检测是否使用关键字符串进行过滤,若是,则执行步骤s302,否则执行步骤s306。
191.这里,可预先通过配置参数决定对测试用例的仿真日志过滤时,是否使用关键字符串进行过滤,而过滤脚本能够识别配置的参数,决定执行何种过滤程序。在测试用例的仿真前,可以通过设置测试用例的执行命令,决定是否开启过滤脚本,如果开启过滤脚本,再检测是否采用关键字符串的模式进行过滤。比如,假设执行测试用例的名字是testcase_normal.sv,测试用例的加载脚本名字是script_run_testcase.pl(perl脚本),那么在linux系统(通常芯片研发的工作使用的操作系统)的terminal里可以像这样进行执行命令:perl script_run_testcase.pltestcase_normal.sv-filter_simv_log-key_string,
上面的命令中,“perlscript_run_testcase.pl”是仿真加载测试用例的perl脚本使用的方式,加上参数-filter_simv_log表示决定开启过滤仿真日志功能,加上参数-key_string表示决定开启关键字符串模式进行过滤。
192.步骤s302、检测仿真日志中是否匹配到过滤开始字符,若是,则执行步骤s303,否则执行步骤s305。
193.具体地,在仿真日志中搜索过滤脚本指定的过滤开始字符,如log_filter_begin,并检测是否搜索到过滤开始字符,若搜索到过滤开始字符,则执行步骤s303,否则执行步骤s305。其中,当在仿真日志中未搜索过滤开始字符时,则根据过滤文件对仿真日志进行过滤,并执行步骤s305。
194.步骤s303、根据过滤文件匹配过滤仿真日志中过滤开始字符之后的字符,生成统计信息。
195.这里,统计信息可以为统计错误信息,错误信息统计可以进行归类,比如uvm_error、uvm_warning、uvm_fatal、other_error、other_warning五类。逐行检查仿真日志中的信息,如果是有效的警告或者错误信息,并且与过滤文件中的字符串不匹配,那么记录此错误或者警告信息到上述统计信息对应的类别中。如果与过滤文件中的字符串匹配,那么此行信息不计入统计信息类别。此步骤包括对宏uvm_fatal打印的致命信息的统计,一旦统计到致命信息,已经搜索到了仿真日志的尾部,不管何种特种信息形式的过滤都会自动进入步骤s304。
196.步骤s304、检测仿真日志中是否匹配到结束过滤字符,若是,则执行步骤s302,否则执行步骤s305。
197.这里,在仿真日志中匹配到过滤脚本指定的结束过滤字符如log_filter_end时,跳出统计信息的统计程序,则返回执行步骤s302,以继续检测仿真日志中是否还有过滤开始字符,否则执行步骤s305。其中,当未匹配到结束过滤字符时,说明仿真日志中不存在结束过滤字符,则在对仿真日志完成遍历后,执行步骤s305。
198.步骤s305、对统计信息进行判断,并输出仿真日志过滤结果。
199.这里,根据统计程序统计的结果,判断仿真结果成功与否,输出对应的结果状态pass或fail。如果是fail的仿真结果,统计程序会将统计到的信息形成错误信息统计文件,方便验证人员分析过滤后的错误信息,提高验证debug效率。其中,统计程序的统计结果会显示错误、警告等信息,举例如下,若finalreportsummary包括以下信息:(1)uvm_error:2;(2)uvm_warning:0;(3)uvm_fatal:0;(4)other_error:3;(5)other_warning:0,则可以看到uvm_error个数是2个,other_error个数是3个,那么这种情况下的输出仿真结果是fail。而如果所有的统计个数都是0,那么输出仿真结果是pass。
200.步骤s306、根据过滤文件匹配过滤仿真日志,生成统计信息。
201.这里,将根据过滤文件逐行检查仿真日志中的信息,以生成统计信息。
202.综上,上述实施例提供的方法中,通过对芯片仿真测试的日志文件深度过滤,能够对复杂场景下的仿真日志文件自动化检错,精确过滤仿真日志中无效警告或错误信息,并且支持仿真日志文件片段分割,进行有选择性的检错。从而解决了以往人工检查和误判仿真日志结果的问题,将仿真日志的检查自动化,高效应对复杂的仿真场景要求,节省测试用例和回归测试的结果审核时间,大大缩短芯片验证周期。并且,可移植性高,对所有芯片模
块和大型soc芯片仿真验证都可直接复用。
203.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
204.在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,除了包含所列的那些要素,而且还可包含没有明确列出的其他要素。
205.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种仿真日志处理方法,其特征在于,所述方法包括:响应于对目标测试用例仿真结束,调用过滤脚本;执行所述过滤脚本,以加载所述目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果;所述过滤文件包括过滤字符,所述仿真日志为对所述目标测试用例进行仿真后所生成的;根据所述过滤处理结果,确定并输出所述目标测试用例对应的仿真结果。2.根据权利要求1所述的方法,其特征在于,所述执行所述过滤脚本,以加载所述目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果,包括:获取所述过滤脚本的预设脚本参数,所述预设脚本参数用于指示是否开启过滤指定功能;响应于已开启过滤指定功能,根据所述目标测试用例对应的过滤文件中的过滤字符,对仿真日志中位于所述过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,获得过滤处理结果;响应于未开启过滤指定功能,根据所述目标测试用例对应的过滤文件中的过滤字符对仿真日志中的字符进行逐行过滤处理,获得过滤处理结果。3.根据权利要求2所述的方法,其特征在于,所述过滤脚本指定有过滤开始字符和过滤结束字符;所述根据所述目标测试用例对应的过滤文件中的过滤字符,对仿真日志中位于所述过滤脚本指定的过滤开始字符之后和/或过滤结束字符之前的字符进行过滤处理,包括:将所述过滤开始字符与仿真日志中的字符进行逐行匹配,确定所述过滤开始字符在所述仿真日志中的目标位置;根据所述过滤字符对所述仿真日志中位于所述目标位置之后的字符进行逐行过滤处理,获得过滤处理结果,直至匹配到所述过滤结束字符时停止过滤处理。4.根据权利要求3所述的方法,其特征在于,所述根据所述过滤字符对所述仿真日志中位于所述目标位置之后的字符进行逐行过滤处理,获得过滤处理结果,包括:从所述仿真日志中位于所述目标位置之后的字符中获取目标字符,所述目标字符为预设类型的字符;检测所述目标字符是否与所述过滤字符相匹配,获得对应的检测结果;根据所述检测结果对所述目标字符进行相应处理,以获得过滤处理结果。5.根据权利要求4所述的方法,其特征在于,所述根据所述检测结果对所述目标字符进行相应处理,以获得过滤处理结果,包括:响应于所述检测结果为所述目标字符与所述过滤字符不匹配,则记录所述目标字符至过滤处理结果中与所述目标字符对应的统计类型;和/或,响应于所述检测结果为所述目标字符与所述过滤字符相匹配,则不记录所述目标字符至过滤处理结果中。6.根据权利要求4所述的方法,其特征在于,所述预设类型的字符包括以下至少一种:警告信息字符、错误信息字符、带有预设标识的字符。7.根据权利要求1所述的方法,其特征在于,所述根据所述过滤处理结果,确定并输出所述目标测试用例对应的仿真结果,包括:
响应于所述过滤处理结果满足预设条件,确定所述目标测试用例对应的仿真结果为第一结果;响应于所述过滤处理结果不满足预设条件,确定所述目标测试用例对应的仿真结果为第二结果。8.根据权利要求3所述的方法,其特征在于,所述方法还包括:响应于检测到所述过滤处理结果包括属于目标类型的新字符,将所述新字符作为过滤字符加入所述过滤文件。9.根据权利要求1所述的方法,其特征在于,所述方法还包括:检测是否开启仿真日志过滤功能;确定开启仿真日志过滤功能时,执行所述响应于对目标测试用例仿真结束,调用过滤脚本的步骤。10.一种仿真日志处理装置,其特征在于,所述装置包括:测试用例运行模块,用于响应于对目标测试用例仿真结束,调用过滤脚本;过滤模块,用于执行所述过滤脚本,以加载所述目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果;所述过滤文件包括过滤字符,所述仿真日志为对所述目标测试用例进行仿真后所生成的:统计处理模块,用于根据所述过滤处理结果,确定并输出所述目标测试用例对应的仿真结果。
技术总结
本申请公开了一种仿真日志处理方法及装置,包括:响应于对目标测试用例仿真结束,调用过滤脚本;执行所述过滤脚本,以加载所述目标测试用例对应的过滤文件对仿真日志进行过滤处理,获得过滤处理结果;所述过滤文件包括过滤字符,所述仿真日志为对所述目标测试用例进行仿真后所生成的;根据所述过滤处理结果,确定并输出所述目标测试用例对应的仿真结果。如此,在对每个测试用例仿真结束后,利用过滤脚本加载测试用例对应的过滤文件的方式对测试用例的仿真日志进行过滤,以过滤掉用户不需要或不关心的信息,能够实现快速且准确识别测试用例对应的仿真结果,增强对测试用例对应的仿真结果的识别度,提高验证收敛速度,且可移植性高。性高。性高。
技术研发人员:刘瑞平 戴建松
受保护的技术使用者:南方电网大数据服务有限公司
技术研发日:2023.04.25
技术公布日:2023/8/16
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
