用于后处理调试的数据处理系统的制作方法

文档序号:31121365发布日期:2022-08-13 01:08阅读:63来源:国知局
用于后处理调试的数据处理系统的制作方法

1.本发明涉及数据处理技术领域,尤其涉及一种用于后处理调试的数据处理系统。


背景技术:

2.现有的调试(debug)方式主要分为交互式(interactive)调试方式和后处理(post processing)调试方式。基于硬件描述语言编写的设计,需要进行仿真,但由于硬件描述语言的特点,对于仿真过程并不适合交互式调试,因此现有技术中大都采用后处理调试方式进行调试。dut(device under test,被测设备)通常基于测试平台(tset bench,简称tb)进行测试。而测试平台源代码信息通常是采用高级语言编写,现有技术中,高级语言通常更适用于交互式调试,而dut采用后处理调试方式进行调试,这边使得dut和测试平台的调试方式不统一,且对测试平台进行交互式调试需要多次进行仿真,调试效率低。


技术实现要素:

3.本发明目的在于,提供一种用于后处理调试的数据处理系统,使得dut和测试平台统一采用后处理方式调试,提高了调试效率。
4.本发明提供了一种用于后处理调试的数据处理系统,包括预先构建的第一数据库、第二数据库,处理器和存储有计算机程序的存储器,所述第一数据库中包括测试平台源代码信息,所述测试平台源代码信息基于高级语言编写,测试平台用于为dut提供激励,对dut进行测试;所述第二数据库用于存储基于所述测试平台源代码信息进行仿真过程中生成的仿真记录,所述仿真记录包括时间字段、信号名字段、信号值字段和函数调用堆栈字段,所述函数调用堆栈包括至少一个函数名组成的函数调用路径信息,当所述处理器执行所述计算机程序时,执行以下步骤:步骤s1、获取目标信号名和目标时间;步骤s2、基于所述目标信号名和目标时间从所述第二数据库中获取对应的函数调用堆栈;步骤s3、获取所述函数调用堆栈中的调用函数名,基于所述调用函数名检索所述第一数据库,获取每一调用函数对应的变量的信号名;步骤s4、基于每一调用函数的变量名和目标时间检索所述第二数据库获取每一调用函数变量的信号名对应的信号值,以进行后处理调试。
5.本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种用于后处理调试的数据处理系统可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:本发明通过构建用于存储测试平台源代码信息的第一数据库和用于存储基于所述测试平台源代码信息进行仿真过程中生成的仿真记录的第二数据库,能够实现测试平台的后处理调试,避免多次运行仿真程序,使得dut和测试平台统一进行后处理调试,提高了调试效率。
6.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
7.图1为本发明实施例提供的用于后处理调试的数据处理系统处理流程示意图。
具体实施方式
8.为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种用于后处理调试的数据处理系统的具体实施方式及其功效,详细说明如后。
9.本发明实施例提供了一种用于后处理调试的数据处理系统,包括预先构建的第一数据库、第二数据库,处理器和存储有计算机程序的存储器,所述第一数据库中包括测试平台(tset bench,简称tb)源代码信息,第一数据库存储的是静态信息,所述测试平台源代码信息基于高级语言编写,如c++、system verilog等,测试平台用于为dut(device under test,被测设备)提供激励,对dut进行测试,dut采用硬件描述语言编写,例如system verilog、verilog和vhdl等。所述第二数据库用于存储基于所述测试平台源代码信息进行仿真过程中生成的仿真记录,所述仿真记录包括时间字段、信号名字段、信号值字段和函数调用堆栈(call stack)字段,所述函数调用堆栈包括至少一个函数名组成的函数调用路径信息,仿真记录是在基于所述测试平台源代码信息进行仿真过程中过程中dump(抓取)相关信息生成的,可以理解的是,如果硬盘足够,或者基于其他应用场景需求,可以在第二数据库中dump更多的信息,例如代码行、文件名等信息。所述仿真记录包括时间字段、信号名字段和信号值字段,第二数据库存储的是动态信息。当所述处理器执行所述计算机程序时,执行以下步骤,如图1所示:步骤s1、获取目标信号名和目标时间;其中,目标信号名是当前需要进行调试的起点对应的信号名,目标时间是当前需要进行调试的起点对应的时间。
10.步骤s2、基于所述目标信号名和目标时间从所述第二数据库中获取对应的函数调用堆栈;步骤s3、获取所述函数调用堆栈中的调用函数名,基于所述调用函数名检索所述第一数据库,获取每一调用函数对应的变量的信号名;可以理解的是,调用函数名可以只获取函数调用堆栈中对目标信号最后起作用的调用函数名,也可以获取所述函数调用堆栈中所有的调用函数名,基于具体应用需求而定。
11.步骤s4、基于每一调用函数的变量名和目标时间检索所述第二数据库获取每一调用函数变量的信号名对应的信号值,以进行后处理调试。
12.本领域技术人员可以理解的是,当获取调用函数变量的信号名对应的信号值之后,即可基于现有技术进行后续调试操作,在此不再展开描述。现有技术中对于高级语言编写的代码通常只进行交互式调试,而本发明所述系统可以通过后处理形式进行。由于dut的硬件编程语言的特性,通常只能选择后处理形式,因此,本发明可以使将dut和测试平台的
调试形式统一为后处理调试,无需多次执行仿真程序,提高了调试效率。
13.作为一种实施例,所述第一数据库中还包括dut源代码信息,由于system verilog既具有高级语言的特性,又具有硬件编程语言的特性。作为一种优选实施例,所述测试平台源代码信息和dut源代码信息均基于system verilog语言编写,由于纯硬件描述语言不会涉及函数堆栈,因此,所述dut源代码信息对应的仿真记录中的函数调用堆栈字段默认为空。
14.作为一种实施例,当所述处理器执行所述计算机程序时,还执行步骤s10、构建所述第二数据库,具体包括:步骤s101、基于dut源代码信息和测试平台源代码信息执行测试仿真,若执行dut源代码信息,则执行步骤s102,若执行测试平台源代码信息,则执行步骤s103;步骤s102、当发生信号值变化时,则获取当前信号值变化的信号名、信号值以及时间,并存入对应字段,将函数调用堆栈字段设置为空,生成对应的仿真记录,存入所述第二数据库中;步骤s103、 当发生信号值变化时,则获取当前信号值变化的信号名、信号值、时间、以及对应的函数调用堆栈,并存入对应字段,生成对应的仿真记录,存入所述第二数据库中。
15.作为一种实施例,所述第二数据库中还包括函数调用堆栈映射信息,所述函数调用堆栈映射信息为函数调用堆栈id和对应的函数调用堆栈映射信息,所述步骤s103中,将函数调用堆栈对应的函数调用堆栈id存入函数调用堆栈字段,生成对应的仿真记录。需要说明的是,函数调用堆栈通常包括多个函数名,且不同记录里可能会涉及相同的函数调用堆栈,若全部直接存储,则会占用大量存储空间,因此可以建立函数调用堆栈id与函数调用堆栈的映射关系,存储函数调用堆栈id,以对第二数据库进行压缩,减小占用空间。
16.作为一种实施例,所述步骤s1包括:步骤s11、基于所述第二数据库中对应的至少一个信号名对应的信号值和时间生成每一信号名对应信号波形图;步骤s12、基于所述信号波形图确定目标信号名和目标时间。
17.需要说明的是,每一个信号均对应一个信号波形图,信号波形图的横轴为时间,纵轴为信号值,通过每个信号的波形图可以直观判断信号在某一时刻的值是否与预期值相同,若不相同,则可直接在波形图上对应位置以点起或其他选中方式,生成包括目标信号名和目标时间的指令。
18.需要说明的是,当仅是对dut进行后处理调试时,需获取对应的目标变量信号名和信号值。作为一种实施例,所述仿真记录还包括交互索引字段,所述交互索引字段用于从所述第一数据库中获取对应的文件名和行号,可以理解的是,交互索引的具体形式在此不作限定,具体可以为整数,或者根据文件名和行号算出的哈希值等等,只要能够实现基于第二数据库中获取的交互索引能够在第一数据库中获取对应的文件名和行号即可。若所述步骤s2中获取的对应的函数调用堆栈为空,则执行以下步骤:步骤s10、基于所述目标信号名和目标时间从所述第二数据库中获取对应的目标信号值和交互索引;步骤s20、基于所述交互索引对应的目标文件名和目标行号,将所述目标文件名和
目标行号对应的数据块确定为目标代码区域,基于所述目标信号从所述目标代码区域提取所述目标信号对应的目标激励信号的目标变量声明信息和目标变量使用信息,确定对应的目标变量信号名;步骤s30、基于每一目标变量信号名和目标时间检索所述第二数据库获取每一目标变量信号名对应的信号值,以进行后处理调试。
19.作为一种实施例,所述步骤s30包括:将每一目标变量信号名对应的信号名以及信号值进行显示,同时将dut源代码信息中对应的代码行进行高亮显示。对于dut的后处理来说,在直接显示信号名以及信号值,同时将dut源代码信息中对应的代码行进行高亮显示的基础上,若能将对应的目标数据路径直观显示出来,则会进一步提高调试效率,所述系统还包括预设的显示区域,所述步骤s30具体还包括:步骤s301、基于所述交互索引对应的目标文件名和目标行号,将所述目标文件名和目标行号对应的数据块确定为目标代码区域,基于所述目标信号从所述目标代码区域提取所述目标信号对应的目标激励信号的目标变量声明信息和目标变量使用信息,生成目标路径ln={r
1n
,r
2n

…rnxn
,cn},r
in
为ln对应的第i个能够对目标信号产生影响的信号,cn为r
1n
,r
2n

…rnxn
之间的运算关系,i的取值范围为1到nx对应的,nx为ln对应的信号数量;步骤s302、基于r
in
从所述第二数据库中获取对应的信号值,基于目标路径对应的r
1n
,r
2n

…rnxn
,cn以及每一r
in
对应的信号值生成目标数据路径信息。
20.步骤s303、将所述目标数据路径信息在预设的显示区域进行显示。
21.需要说明的是,步骤s403将所述目标数据路径信息在预设的显示区域进行显示后,有可能基于当前显示的目标数据路径信息即可确定目标调试点,但也可能需要继续进一步沿着该目标数据路径信息向上继续追溯,作为一种实施例,所述步骤s303之后若接收到继续创建目标路径信息的指令,所述继续创建目标信息指令中包括至少一个目标数据路径中对应的r
in
信号名,作为拓展信号名,将每一拓展信号名作为所述目标信号名,所述目标时间不变,执行步骤s10-步骤s30,步骤s301-步骤s303,生成每一拓展信号对应的目标数据路径信息,并与当前的目标数据路径相结合,生成新的目标数据路径。通过多轮迭代,最终即可确定目标调试点。
22.作为一种实施例,所述步骤s4还包括,将每一调用函数变量的信号名以及对应的信号值进行显示,同时将测试平台源代码信息中对应的代码行进行高亮显示。
23.本发明实施例所述系统通过构建用于存储测试平台源代码信息的第一数据库和用于存储基于所述测试平台源代码信息进行仿真过程中生成的仿真记录的第二数据库,能够实现测试平台的后处理调试,避免多次运行仿真程序,使得dut和测试平台统一进行后处理调试,提高了调试效率。
24.需要说明的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,部分步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
25.以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人
员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1