芯片软硬件联合仿真阶段的软件代码覆盖率确定系统技术方案

技术编号:39676328 阅读:12 留言:0更新日期:2023-12-11 18:42
本发明专利技术涉及芯片技术领域,尤其涉及一种芯片软硬件联合仿真阶段的软件代码覆盖率确定系统,实现步骤

【技术实现步骤摘要】
芯片软硬件联合仿真阶段的软件代码覆盖率确定系统


[0001]本专利技术涉及芯片
,尤其涉及一种芯片软硬件联合仿真阶段的软件代码覆盖率确定系统


技术介绍

[0002]在芯片开发阶段,需要对芯片的模块进行仿真

芯片包括硬件模块和软件模块,通过硬件模块和软件模块交互实现软硬件联合仿真

现有技术中,硬件模块的代码覆盖率通过
EDA
等成熟的工具可以获取到,而软件模块运行的是由高级语言代码编译生成的二进制代码,在现有的软硬件联合仿真过程中,处理器读取执行的二进制代码无法与高级语言直接关联,无法根据二进制代码的执行情况获取软件模块的软件代码的覆盖率情况,若逐行去分析软件代码的执行情况来获取软件代码覆盖率,效率低且无法保证准确性

由此可知,如何提供一种能够准确快速获取芯片软硬件联合仿真阶段的软件代码覆盖率的技术,成为亟待解决的技术问题


技术实现思路

[0003]本专利技术目的在于,提供一种芯片软硬件联合仿真阶段的软件代码覆盖率确定系统,能够准确快速获取芯片软硬件联合仿真阶段的软件代码覆盖率

[0004]根据本专利技术一方面,提供了一种芯片软硬件联合仿真阶段的软件代码覆盖率确定系统,包括芯片

存储有计算机程序的第一存储器

第一处理器和预设的测试集,其中,所述芯片包括至少一组具有互联关系的硬件模块和软件模块,所述硬件代码模块基于硬件描述语言生成,所述软件模块包括第二存储器和第二处理器,所述预设的测试集中包括
N
个测试用例;当所述第一处理器执行所述计算机程序时,实现以下步骤:步骤
S1、
获取基于高级语言生成的软件代码,所述软件代码包括多个代码块,每一代码块包括至少一行代码行,当代码块的首行代码被执行时,代码块中的其他代码行也一定被执行;步骤
S2、
在所述软件代码的每一代码块的首行插桩,将插桩后的软件代码转换为二进制代码存储在所述第二存储器中;步骤
S3、
构建软件代码执行状态数组,所述代码执行状态数组包括
M
个比特位(
B1,B2,

,B
m
,

,B
M
),
B
m
为所述代码执行状态数组的第
m
位,
m
的取值范围为1到
M

M
为所述软件代码的最大总行数,
B
m
用于表示第
m
行软件代码的执行状态,
B
m
的初始值为第一标识,所述第一标识表示未执行状态;步骤
S4、
所述第二处理器从所述第二存储器中逐行读取二进制代码分别执行所述预设的测试集中的每一测试用例,基于所述执行状态数组生成每一测试用例对应的执行状态数组;步骤
S5、
将所有测试用例的执行状态数组融合生成目标执行状态数组,基于所述
目标执行状态数组生成软件代码覆盖率

[0005]本专利技术与现有技术相比具有明显的优点和有益效果

借由上述技术方案,本专利技术提供的一种芯片软硬件联合仿真阶段的软件代码覆盖率确定系统可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:本专利技术所述系统通过在软件代码的每一代码块的首行插桩,并建立软件代码执行状态数组,生成所有测试用例对应的执行状态数组,基于所有测试用例对应的执行状态数组融合生成的目标执行状态数组获取芯片软硬件联合仿真阶段的软件代码覆盖率,提高了获取芯片软硬件联合仿真阶段的软件代码覆盖率的效率和准确性

附图说明
[0006]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图

[0007]图1为本专利技术实施例提供的芯片软硬件联合仿真阶段的软件代码覆盖率确定系统示意图

具体实施方式
[0008]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚

完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例

基于本专利技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围

[0009]本专利技术实施例提供了一种芯片软硬件联合仿真阶段的软件代码覆盖率确定系统,如图1所示,包括芯片

存储有计算机程序的第一存储器

第一处理器和预设的测试集,其中,所述芯片包括至少一组具有互联关系的硬件模块和软件模块,需要说明的是,芯片规模非常庞大,因此可以包括也多组具有互联关系的硬件模块和软件模块,但对每一组具有互联关系的硬件模块和软件模块的软件代码覆盖率确定,均可以采用本专利技术实施例所述的过程来实现

所述硬件代码模块基于硬件描述语言生成,硬件描述语言具体可以为
Verilog

VHDL


所述软件模块包括第二存储器和第二处理器,所述预设的测试集中包括
N
个测试用例;需要说明的是,
N
的具体数量,以及测试用例的具体信息可以根据具体的芯片验证场景来设置,芯片验证环境具体可以为
System Verilog
或通用验证方法学
UVM((Universal Verification Methodology,
简称
UVM)。
[0010]作为一种示例,所述芯片具体为图形处理器
(Graphics Processing Unit
,简称
GPU)
芯片,还可以为嵌入式神经网络处理器(
Neural

network Process Units
,简称
NPU
)芯片,人工智能(
Artificial Intelligence
,简称
AI
)芯片等

[0011]当所述第一处理器执行所述计算机程序时,实现以下步骤:步骤
S1、
获取基于高级语言生成的软件代码,所述软件代码包括多个代码块,每一代码块包括至少一行代码行,当代码块的首行代码被执行时,代码块中的其他代码行也一定被执行

[0012]其中,所述软件代码具体为
C
代码或
C++
代码

作为一种示例,
If
语句下对应的代码,组成一个代码块...

【技术保护点】

【技术特征摘要】
1.
一种芯片软硬件联合仿真阶段的软件代码覆盖率确定系统,其特征在于,包括芯片

存储有计算机程序的第一存储器

第一处理器和预设的测试集,其中,所述芯片包括至少一组具有互联关系的硬件模块和软件模块,所述硬件代码模块基于硬件描述语言生成,所述软件模块包括第二存储器和第二处理器,所述预设的测试集中包括
N
个测试用例;当所述第一处理器执行所述计算机程序时,实现以下步骤:步骤
S1、
获取基于高级语言生成的软件代码,所述软件代码包括多个代码块,每一代码块包括至少一行代码行,当代码块的首行代码被执行时,代码块中的其他代码行也一定被执行;步骤
S2、
在所述软件代码的每一代码块的首行插桩,将插桩后的软件代码转换为二进制代码存储在所述第二存储器中;步骤
S3、
构建软件代码执行状态数组,所述代码执行状态数组包括
M
个比特位(
B1,B2,

,B
m
,

,B
M
),
B
m
为所述代码执行状态数组的第
m
位,
m
的取值范围为1到
M

M
为所述软件代码的最大总行数,
B
m
用于表示第
m
行软件代码的执行状态,
B
m
的初始值为第一标识,所述第一标识表示未执行状态;步骤
S4、
所述第二处理器从所述第二存储器中逐行读取二进制代码分别执行所述预设的测试集中的每一测试用例,基于所述执行状态数组生成每一测试用例对应的执行状态数组;步骤
S5、
将所有测试用例的执行状态数组融合生成目标执行状态数组,基于所述目标执行状态数组生成软件代码覆盖率
。2.
根据权利要求1所述的系统,其特征在于,所述系统还包括预设宏,所述预设宏用户获取所述软件代码当前执行的代码行数,所述步骤
S4
包括:步骤
S41、
当所述第二处理器执行至具有插桩标识的代码行时,触发所述预设宏;步骤
S42、
基于所述预设宏获取当前基于第
n
测试用例所执行的软件代码行数,
n
的取值范围为1到
N
;步骤
S43、
将第
...

【专利技术属性】
技术研发人员:余浩洋谢煜程高卫叶红亮
申请(专利权)人:沐曦集成电路上海有限公司
类型:发明
国别省市:

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

1