一种基于python实现用于验证芯片调试功能的SVF文件的方法与流程

专利2024-03-29  113


一种基于python实现用于验证芯片调试功能的svf文件的方法
技术领域
1.本发明涉及芯片调试验证领域,具体而言,涉及一种基于python实现用于验证芯片调试功能的svf文件的方法。


背景技术:

2.svf的全称是serial vector format,串行向量格式,是ieee 1149.1的一部分。jtag(joint test action group)设备和软件提供商已经将svf作为标准用于数据交换。svf主要用来控制jtag收发数据,由于jtag是串行的,所以收和发是同时的。使用svf可以控制jtag的发送端,而不用考虑jtag tap(test access port,测试访问端口)状态机的细节。svf以紧凑和可移植的形式描述jtag链操作,svf文件通过描述需要移入器件链的信息,记录jtag操作,从而实现jtag设备调试功能。
3.通常,在芯片开发阶段,可以使用svf方式验证多个jtag设备。svf支持多种jtag设备组成链状结构,能够灵活地选择其中某一个设备进行调试。同时,在芯片生产后的测试阶段,目前大多也是使用svf文件格式进行测试。许多第三方编程工具使用svf文件作为输入,利用包含在svf文件中的信息对jtag链上的设备进行编程。因此,svf文件在芯片开发过程中的验证阶段以及芯片生产测试阶段都起到关键作用,且svf文件可以复用,减少了重复的工作,压缩了芯片开发周期。同时svf文件配置灵活,方便调试设备的增加或减少。
4.再者,python是现阶段一种常用脚本语言,其最大的优势在于简单易学、集成度高、有广泛的库支持、开发周期短且灵活。因此,设计一种基于python实现svf文件的方法,以用于验证芯片调试功能,成为业内的需求。


技术实现要素:

5.为了解决上述问题,本发明提供一种基于python实现用于验证芯片调试功能的svf文件的方法,在通过jtag接口对芯片进行测试时,能够将在开发时期仿真验证阶段的python脚本实现的svf文件,直接应用于芯片出厂阶段的测试中,通过一次设计实现了测试用例的共用,节省了测试时间和测试用例的开发成本。
6.为达到上述目的,本发明提供了一种基于python实现用于验证芯片调试功能的svf文件的方法,用于验证芯片的调试功能,其包括以下步骤:
7.步骤s1:根据芯片手册中调试相关测试寄存器的描述,完成测试寄存器内容初始化,并以字典方式存放,其中,每个待验证芯片内部包含多个含有jtag测试访问接口的设备;
8.步骤s2:根据芯片手册的信息,确定测试访问接口的个数及每个测试访问接口的数据宽度;
9.步骤s3:将步骤s1和步骤s2的得到的结果整合形成对应待验证芯片svf文件所需的完整的主体数据链,作为svf文件默认初始值,其中,svf文件包含了对应待验证芯片上所
有含有jtag测试访问接口的设备的全部信息;
10.步骤s4:根据调试操作的需求,完成目标设备的配置文件,其中,配置文件包括目标设备的测试访问接口信息及测试寄存器的读写操作信息;
11.步骤s5:将步骤s4生成的配置文件应用到步骤s1的内容中,根据配置文件替换字典中的相应数据,将目标设备的调试操作转换为对对应寄存器的操作;
12.步骤s6:根据目标设备的测试访问接口在数据链上的位置,替换步骤s3中的数据链的对应内容,更新svf文件的主体数据链;
13.步骤s7:在步骤s6的结果上添加svf定义的命令,完成所需用例的svf文件。
14.在本发明一实施例中,其中,步骤s1具体为:每个包含jtag测试访问接口的设备在芯片手册中都定义有调试信息,调试信息包括对应设备内部测试寄存器具体描述,具体包括:测试寄存器地址、数据宽度、每个数据位的含义及每个数据位的读写属性;将每个设备的调试信息采用python脚本语言定义的字典方式存放,且将每个设备按照其内置的id一一对应到字典中。
15.在本发明一实施例中,其中,步骤s2具体为:
16.根据芯片手册中jtag设备及jtag设备链的信息,确定jtag测试访问接口的数量;
17.根据每个jtag测试访问接口内部的指令寄存器与数据寄存器,确定对应jtag测试访问接口的数据宽度。
18.在本发明一实施例中,其中,步骤s3中的完整的主体数据链,是通过jtag设备链将待验证芯片内部多个设备的jtag测试访问接口链接起来所形成的。
19.在本发明一实施例中,其中,步骤s3还包括调试命令的确定过程,其是通过移位操作实现的,用以确保数据的完整性,具体为:
20.jtag测试访问接口通过jtag接口数据输入端的数据线,将调试命令通过串行数据的方式发送到对应数据链;
21.根据待调试设备的测试访问接口在整条数据链上位置,通过移位对应数据宽度的方式选中待调试设备。
22.在本发明一实施例中,其中,步骤s4具体为:
23.根据芯片验证所需用例或测试过程所需用例,修改步骤s1中目标设备对应的字典中相应寄存器的内容及对应的读写操作属性,生成目标设备的配置文件。
24.在本发明一实施例中,其中,步骤s7具体为:
25.根据svf规范添加命令,以得到所需用例的svf文件,其中,添加的命令包括:
26.delay:用于延时启动测试,等待被测试设备启动过程完毕的命令;
27.endir irpause:配置指令寄存器扫描操作默认结束状态的命令;
28.enddr drpause:配置数据寄存器扫描操作默认结束状态的命令;以及
29.state idle:配置测试完成后停留在空闲状态的命令。
30.本发明提供的基于python实现用于验证芯片调试功能的svf文件的方法,与现有技术相比,能够通过修改配置文件灵活应用于不同的测试及调试场景,且修改及使用方便,节省脚本开发成本及测试时间。
附图说明
31.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1为本发明一实施例的方法流程图;
33.图2为本发明一实施例中的svf文件完整数据链示意图。
具体实施方式
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.图1为本发明一实施例的方法流程图,如图1所示,本实施例提供一种基于python实现用于验证芯片调试功能的svf文件的方法,用于验证芯片的调试(debug)功能,其包括以下步骤:
36.步骤s1:根据芯片手册中调试(debug)相关测试寄存器的描述,完成测试寄存器内容初始化,并以字典方式存放,其中,每个待验证芯片内部包含多个含有jtag测试访问接口(tap,test access port,是jtag标准ieee1149.1定义的)的设备;
37.在本实施例中,其中,步骤s1具体为:每个包含jtag测试访问接口的设备在芯片手册中都定义有调试信息,调试信息包括对应设备内部测试寄存器具体描述,具体包括:测试寄存器地址、数据宽度、每个数据位的含义、每个数据位的读写属性等;将每个设备的调试信息采用python脚本语言定义的字典方式存放,由于每个设备的测试访问接口(tap)均设置有一唯一id(id code),因此将每个设备按照其内置的id一一对应到字典中。
38.由于对测试寄存器内容进行初始化能够明确测试寄存器的默认值,从而减少后续步骤中处理的复杂度。
39.步骤s2:根据芯片手册的信息,确定测试访问接口(tap)的个数及每个测试访问接口(tap)的数据宽度;
40.在本实施例中,其中,步骤s2具体为:
41.根据芯片手册中jtag设备及jtag设备链的信息,确定jtag测试访问接口(tap)的数量;
42.根据每个jtag测试访问接口(tap)内部的指令寄存器(ir,instruction register)与数据寄存器(dr,data register)确定对应jtag测试访问接口(tap)的数据宽度。
43.本实施例的方法是以测试访问接口(tap)为单位,因此能够灵活变更其内部数据的宽度。
44.步骤s3:将步骤s1和步骤s2的得到的结果整合形成对应待验证芯片svf文件所需的完整的主体数据链,作为svf文件默认初始值,其中,svf文件包含了对应待验证芯片上所有含有jtag测试访问接口(tap)的设备的全部信息;
45.在本实施例中,其中,步骤s3中的完整的主体数据链,是通过jtag设备链将待验证芯片内部多个设备的jtag测试访问接口(tap)链接起来以形成完整的数据链。在芯片验证过程和测试过程中所用到的测试用例,实际上就是对得到的svf文件的默认初始值进行编辑,以适用于不同的测试用例中。
46.图2为本发明一实施例中的svf文件完整数据链示意图,如图2所示,本实施例中以芯片内包含5个jtag设备为例,但并不限制jtag设备的个数,其个数可为其他值,图示仅用于示意数据链形式,在本实施例中,每个jtag设备对应有测试访问接口(tap)及测试寄存器,首先对每个设备内部的测试寄存器的内容进行描述,并用字典的方式存放(步骤s1),然后对每个设备的测试访问接口(tap)进行描述(包括个数及数据宽度)(步骤s2),接着,通过测试访问接口(tap)将整个系统上所有的设备连接起来形成完成的数据链,作为svf文件的默认初始值(步骤s3),其中根据jtag ieee1149.1标准,tck为jtag接口数据移位时钟,tms为接口数据控制信号,tdi为jtag接口数据输入端,tdo为jtag接口数据输出端,以此得到的svf文件的默认初始值就可以应用到不同的测试用例中。
47.在本实施例中,其中,步骤s3还包括调试命令的确定过程,其是通过移位操作实现的,用以确保数据的完整性,具体为:
48.jtag测试访问接口(tap)通过jtag接口数据输入端(tdi)的数据线,将调试命令通过串行数据的方式发送到对应数据链;
49.根据待调试设备的测试访问接口(tap)在整条数据链上位置,通过移位对应数据宽度的方式选中待调试设备,这样数据就不会丢失。
50.结合图2具体说明,图2中有5个待调试jtag设备,每个jtag设备对应有测试访问接口(tap),以选中设备为例,设备2作为目标设备,调试命令是从设备1(视为数据链头部)打入整条svf数据链上,由于设备2处于第二个设备的位置,则调试命令移位2个测试访问接口的数据宽度,以此将调试命令正确发送到设备2。
51.步骤s4:根据调试(debug)操作的需求,完成目标设备的配置文件,其中,配置文件包括目标设备的测试访问接口(tap)信息、测试寄存器的读写操作信息等;
52.在本实施例中,其中,步骤s4具体为:
53.根据芯片验证所需用例或测试过程所需用例,修改步骤s1中目标设备对应的字典中相应寄存器的内容及对应的读写操作属性,生成目标设备的配置文件。也就是说,若对应用例需求需要修改某个寄存器的内容,配置时就在对应字典中进行相应内容的修改,若对应用例需求需要编辑某个寄存器的读写操作属性,配置时就在对应字典中对寄存器的对应控制位进行修改,以此得到的配置文件就是对应用例需求的,以应用于后续执行对应用例时的调用,对调试(debug)操作的配置灵活,可应用不同场景,仅需调整配置文件,无需再对初始化文件中的细节过多关心。
54.步骤s5:将步骤s4生成的配置文件应用到步骤s1的内容中,根据配置文件替换字典中的相应数据,将目标设备的调试(debug)操作转换为对对应寄存器的操作;
55.由于配置文件中包含了需要修改的内容,因此可以根据配置文件修改步骤s1中字典的默认值,即提取配置文件里面寄存器名称、对应修改内容及某个数据位的操作属性,替换掉步骤s1里面对应的内容,通过python字典的特性,能够方便快捷的把测试寄存器操作变成jtag要求的串行数据。
56.步骤s6:根据目标设备的测试访问接口(tap)在数据链上的位置,替换步骤s3中的数据链的对应内容,更新svf文件的主体数据链;
57.步骤s6是根据目标设备测试访问接口(tap)在数据链上的位置,用步骤s5的结果,替换掉步骤s3生成的svf文件的默认初始值,以更新svf文件的主体数据链的内容,本步骤仅需变更目标设备的测试访问接口(tap)的调试(debug)操作,对其他设备的测试访问接口(tap)对应的测试寄存器没有影响。
58.步骤s7:在步骤s6的结果上添加svf定义的命令,完成所需用例的svf文件。
59.在本实施例中,其中,步骤s7具体为:
60.根据svf规范(serial vector specification)添加命令,以得到所需用例的svf文件,其中,添加的命令包括:
61.delay:用于延时启动测试,等待被测试设备启动过程完毕的命令;
62.endir irpause:配置指令寄存器(ir)扫描操作默认结束状态的命令;
63.enddr drpause:配置数据寄存器(dr)扫描操作默认结束状态的命令;
64.state idle:配置测试完成后停留在空闲状态的命令。
65.以此得到的svf文件可直接用于对应场景的调试与测试执行中,复用率较高,当测试用例的需求变更时,也只需要根据上述过程修改对应的配置文件即可。
66.本发明的上述方法至少可以在以下几个场景中通用:
67.场景1:在芯片开发阶段,可以使用jtag vip(jtag模块验证使用的库,里面能够实现一些jtag调试基础操作)来解析svf文件,验证芯片的调试(debug)功能;
68.场景2:芯片wafer(一般指晶圆)测试阶段,可以把svf文件的串行数据通过jtag接口直接输入到芯片内部,用以实现测试功能;
69.场景3:芯片内部调试(debug)模块数量很多,上述方法可以根据测试访问接口(tap)的配置,自动添加或删除目标测试访问接口(tap),避免了测试访问接口(tap)位置的变换对芯片验证带来的影响,可用于大规模的调试(debug)。
70.本发明提供的基于python实现用于验证芯片调试功能的svf文件的方法,与现有技术相比,能够通过修改配置文件灵活应用于不同的测试及调试场景,且修改及使用方便,节省脚本开发成本及测试时间。
71.本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
72.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

技术特征:
1.一种基于python实现用于验证芯片调试功能的svf文件的方法,用于验证芯片的调试功能,其特征在于,包括以下步骤:步骤s1:根据芯片手册中调试相关测试寄存器的描述,完成测试寄存器内容初始化,并以字典方式存放,其中,每个待验证芯片内部包含多个含有jtag测试访问接口的设备;步骤s2:根据芯片手册的信息,确定测试访问接口的个数及每个测试访问接口的数据宽度;步骤s3:将步骤s1和步骤s2的得到的结果整合形成对应待验证芯片svf文件所需的完整的主体数据链,作为svf文件默认初始值,其中,svf文件包含了对应待验证芯片上所有含有jtag测试访问接口的设备的全部信息;步骤s4:根据调试操作的需求,完成目标设备的配置文件,其中,配置文件包括目标设备的测试访问接口信息及测试寄存器的读写操作信息;步骤s5:将步骤s4生成的配置文件应用到步骤s1的内容中,根据配置文件替换字典中的相应数据,将目标设备的调试操作转换为对对应寄存器的操作;步骤s6:根据目标设备的测试访问接口在数据链上的位置,替换步骤s3中的数据链的对应内容,更新svf文件的主体数据链;步骤s7:在步骤s6的结果上添加svf定义的命令,完成所需用例的svf文件。2.根据权利要求1所述的基于python实现用于验证芯片调试功能的svf文件的方法,其特征在于,步骤s1具体为:每个包含jtag测试访问接口的设备在芯片手册中都定义有调试信息,调试信息包括对应设备内部测试寄存器具体描述,具体包括:测试寄存器地址、数据宽度、每个数据位的含义及每个数据位的读写属性;将每个设备的调试信息采用python脚本语言定义的字典方式存放,且将每个设备按照其内置的id一一对应到字典中。3.根据权利要求1所述的基于python实现用于验证芯片调试功能的svf文件的方法,其特征在于,步骤s2具体为:根据芯片手册中jtag设备及jtag设备链的信息,确定jtag测试访问接口的数量;根据每个jtag测试访问接口内部的指令寄存器与数据寄存器,确定对应jtag测试访问接口的数据宽度。4.根据权利要求1所述的基于python实现用于验证芯片调试功能的svf文件的方法,其特征在于,步骤s3中的完整的主体数据链,是通过jtag设备链将待验证芯片内部多个设备的jtag测试访问接口链接起来所形成的。5.根据权利要求4所述的基于python实现用于验证芯片调试功能的svf文件的方法,其特征在于,步骤s3还包括调试命令的确定过程,其是通过移位操作实现的,用以确保数据的完整性,具体为:jtag测试访问接口通过jtag接口数据输入端的数据线,将调试命令通过串行数据的方式发送到对应数据链;根据待调试设备的测试访问接口在整条数据链上位置,通过移位对应数据宽度的方式选中待调试设备。6.根据权利要求1所述的基于python实现用于验证芯片调试功能的svf文件的方法,其特征在于,步骤s4具体为:根据芯片验证所需用例或测试过程所需用例,修改步骤s1中目标设备对应的字典中相
应寄存器的内容及对应的读写操作属性,生成目标设备的配置文件。7.根据权利要求1所述的基于python实现用于验证芯片调试功能的svf文件的方法,其特征在于,步骤s7具体为:根据svf规范添加命令,以得到所需用例的svf文件,其中,添加的命令包括:delay:用于延时启动测试,等待被测试设备启动过程完毕的命令;endir irpause:配置指令寄存器扫描操作默认结束状态的命令;enddr drpause:配置数据寄存器扫描操作默认结束状态的命令;以及state idle:配置测试完成后停留在空闲状态的命令。

技术总结
本发明公开一种基于python实现用于验证芯片调试功能的SVF文件的方法,其包括:S1:完成测试寄存器内容初始化,并以字典方式存放;S2:确定测试访问接口的个数及每个测试访问接口的数据宽度;S3:将S1和S2的得到的结果整合形成对应待验证芯片SVF文件所需的完整的主体数据链,作为SVF文件默认初始值;S4:根据调试操作的需求完成目标设备的配置文件;S5:将S4生成的配置文件应用到S1的内容中,根据配置文件替换字典中的相应数据,将目标设备的调试操作转换为对对应寄存器的操作;S6:根据目标设备的测试访问接口在数据链上的位置,替换S3中的数据链的对应内容,更新SVF文件的主体数据链;S7:添加SVF定义的命令,完成所需用例的SVF文件。文件。文件。


技术研发人员:蒋枫 王飞 姜志颖
受保护的技术使用者:苏州睿芯集成电路科技有限公司
技术研发日:2022.06.22
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-7429.html

最新回复(0)