代码中宏定义的完整性检测方法、装置及芯片仿真系统制造方法及图纸

技术编号:36501614 阅读:35 留言:0更新日期:2023-02-01 15:23
本发明专利技术公开了代码中宏定义的完整性检测方法、装置及芯片仿真系统,涉及芯片仿真技术领域。该方法包括如下步骤:对代码文件进行遍历,获取代码文件中需要配对的宏定义关键字的行位置信息,根据需要配对的宏定义关键字及其行位置信息构建宏定义起始关键字列表和宏定义结束关键字列表;对宏定义起始关键字列表和宏定义结束关键字列表中的宏定义关键字进行配对检测,获取不配对的宏定义关键字及其行位置信息并构建不配对宏定义关键字列表,所述不配对宏定义关键字列表中显示有不配对的关键字及其行位置信息;输出前述不配对宏定义关键字列表。本发明专利技术能够精确定位出代码文件中错误的宏命令的具体位置,实现了更高效、可靠和精确的宏检查。确的宏检查。确的宏检查。

【技术实现步骤摘要】
代码中宏定义的完整性检测方法、装置及芯片仿真系统


[0001]本专利技术涉及芯片仿真
,尤其涉及一种代码中宏定义的完整性检测方法、装置及芯片仿真系统。

技术介绍

[0002]在SoC(System on Chip)芯片的开发设计过程中,需要对芯片的功能进行EDA(Electronic design automation,电子设计自动化)仿真验证。在芯片的EDA仿真中,会构建不同的验证环境,通过在验证环境中对待测设计(DUT)进行编译并进行仿真以实现对待测设计的验证,而对待测设计的编译会受到预定义的宏(也称宏定义,宏是一段具有一定独立功能的汇编代码)的控制,验证人员为了区分各种场景也会在代码中添加宏定义。
[0003]在C代码文件中添加宏定义时,主要使用宏关键字`if、`ifdef、`ifndef、`elif、`else、`endif等进行条件编译。其中,`endif是`if、`ifdef和`ifndef这些条件命令的结束标志,`if相当于C语法中的if语句,可支持同时判断多个宏的存在;`ifdef用于判断某个宏是否被定义,若已定义本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种代码中宏定义的完整性检测方法,其特征在于包括如下步骤:接收待检测的代码文件;通过宏完整性检测单元对前述代码文件中的宏定义关键字进行检测;所述宏完整性检测单元被配置为:对代码文件进行遍历,获取代码文件中需要配对的宏定义关键字的行位置信息,所述行位置信息包括行号和缩进信息;根据需要配对的宏定义关键字及其行位置信息构建宏定义起始关键字列表和宏定义结束关键字列表,所述宏定义结束关键字为对应的宏定义起始关键字的结束标识;对宏定义起始关键字列表和宏定义结束关键字列表中的宏定义关键字进行配对检测,获取不配对的宏定义关键字及其行位置信息并构建不配对宏定义关键字列表,所述不配对宏定义关键字列表中显示有不配对的宏定义关键字及其行位置信息;输出前述不配对宏定义关键字列表。2.根据权利要求1所述的方法,其特征在于,所述宏完整性检测单元被配置为:获取代码文件中需要配对的宏定义关键字的行位置信息后,对各宏定义关键字按其所在行位置信息进行标识,得到标识有行位置信息的宏定义关键字,标识信息包括行号和缩进字符数;将前述标识有行位置信息的宏定义关键字按其在代码文件中的出现顺序,存入到预设的文件中。3.根据权利要求2所述的方法,其特征在于:标识有行位置信息的宏定义关键字在预设的文件中用字符串表示,所述字符串分为三段以分别表示宏定义关键字、宏定义关键字的行号和宏定义关键字的缩进字符数;所述需要配对的宏定义关键字为if宏关键字和与if宏关键字配对的end宏关键字,所述if宏关键字包括`ifdef和/或`ifndef,所述end宏关键字为`endif。4.根据权利要求2或3所述的方法,其特征在于:所述宏完整性检测单元通过栈数据结构构建所述宏定义起始关键字列表、宏定义结束关键字列表和不配对宏定义关键字列表;此时,所述宏完整性检测单元被配置为:配置3个空栈;从前述预设的文件的文件头开始,按顺序依次将标识有行位置信息的宏定义起始关键字压入第1栈h_stack中作为栈元素,以构建所述宏定义起始关键字列表;以及,从前述预设的文件的文件尾开始,按顺序依次将标识有行位置信息的宏定义结束关键字压入第2栈e_stack中作为栈元素,以构建所述宏定义结束关键字列表;对宏定义起始关键字列表和宏定义结束关键字列表中的宏定义关键字的数量进行比对,当两个列表中的宏定义关键字的数量不相同时,执行如下操作:对h_stack栈和e_stack栈中的栈元素进行pop操作,对pop操作推出的两个栈的栈元素进行配对检测以获取不配对的栈元素,将不配对的栈元素压入到第3栈m_stack中作为栈元素以构建不配对宏定义关键字列表。5.根据权利要求4所述的方法,其特征在于,对pop操作推出的两个栈的栈元素进行配对检测以获取不配对的栈元素,将不配对的栈元素压入到第3栈m_stack中的步骤包括:步骤1,对h_stack栈和e_stack栈同时执行pop操作以将栈顶元素推出;获取pop操作推出的h_stack栈和e_stack栈的栈元素,将两个栈元素的行位置信息进行比对,根据行位置信息中的缩进信息判断上述两个栈元素是否对齐;当上述两个栈元素不对齐时,判定宏定义关键词不能配对,获取不能配对的宏定义关键词存入到m_stack栈中后,进入步骤2;当上
述两个栈元素对齐时,判定宏定义关键词配对成功,直接进入步骤2;步骤2:判断h_stack栈和e_stack栈是否为空,判定都不为空时,对h_stack栈和e_stack栈同时执行下一次pop操作,以及将该次pop操作推出的栈元素进行前述步骤1中的比对操作,并根据比对结果更新第3栈m_stack中的栈元素,直至h_stack栈和/或e_st...

【专利技术属性】
技术研发人员:袁力胡扬央
申请(专利权)人:眸芯科技上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1