一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

芯片验证方法、系统、设备及存储介质与流程

2021-11-29 13:55:00 来源:中国专利 TAG:


1.本发明涉及电子技术领域,尤其涉及一种芯片验证方法、系统、设备及存储介质。


背景技术:

2.现场可编辑逻辑门阵列(field

programmable gatearray,简称fpga)芯片在通信、嵌入式、工业自动化、安防等领域具有广泛应用,fpga芯片可以根据用户需求被编程,实现不同的功能。
3.要保证fpga芯片设计的正确性,对其进行验证是一个非常重要的部分,验证的主要目的是找出设计中存在的错误。被测试设计(design undertest,简称dut)就是需要进行验证的fpga芯片结构。通用验证方法学(universal verification methodology,简称uvm)是一个以systemverilog类库为主体的验证平台开发框架,验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境。tb_top是整个uvm验证平台的最顶层,通过tb_top实例化dut,并且为dut提供相应的激励信号,并将dut的输出结果与参考模块的预期结果进行比较,看两者是否一致,以此验证芯片设计是否正确。
4.在fpga芯片验证阶段,由于芯片规模过大,常常导致验证工作十分复杂,且验证工作量很大,且随着fpga芯片规模的不断增大,验证过程使用的芯片端口也越来越多,而且不同测试案例中所用的端口都大不相同,现有技术中往往通过人工进行重复性的模块端口连接,但是这种方法效率低下,费时费力。如何有效地对大规模fpga电路进行全芯片功能仿真、提升验证的效率,已经称为fpga芯片设计和开发的重要课题。
5.因此,亟需一种高效的芯片验证方法。


技术实现要素:

6.本发明提供一种芯片验证方法、系统、设备及存储介质,其主要目的在于缩短芯片验证时间,有效提高芯片验证效率。
7.第一方面,本发明实施例提供一种芯片验证方法,包括:
8.获取目标芯片所有被测试设计的验证参数;
9.对于当前被测试设计,利用所述当前被测试设计的验证参数更新脚本;
10.基于验证平台顶层和所述脚本,对所述当前被测试设计进行验证,并将下一被测试设计重新作为所述当前被测试设计,重复上述步骤,直到对所有被测试设计完成验证,以对所述目标芯片的设计进行验证。
11.优选地,所述验证参数包括全局参数、激励参数和参考预期参数。
12.优选地,所述验证平台顶层顶层包括全局模块、激励模块、参考模块、被测试设计模块和比较模块,所述全局模块与所述被测试设计模块的一端连接,所述激励模块同时与所述被测试设计模块的一端、所述参考模块的一端连接,所述被测试设计模块的另一端、所述参考模块的另一端与所述比较模块连接,所述参考模块与所述被测试设计模块的功能相同。
13.优选地,所述基于验证平台顶层和所述脚本,对所述当前被测试设计进行验证,包括:
14.根据所述脚本中的全局参数和所述全局模块,获取全局信号;
15.根据所述脚本中的激励参数和所述激励模块,获取激励信号,以使得所述被测试设计模块根据所述全局信号和所述激励信号输出实际结果;
16.根据所述参考预期参数和所述参考模块,获取参考结果;
17.根据所述实际结果和所述参考结果,判断所述目标芯片的设计是否正确。
18.优选地,所述验证参数还包括约束端口,所述基于验证平台顶层和所述脚本,对所述当前被测试设计进行验证,还包括:
19.将所述当前被测试设计的激励端口、dut端口与所述验证平台顶层的约束端口连接,以使得判断结果被所述验证平台顶层接收,所述激励参数包括所述激励端口和所述dut端口。
20.优选地,所述根据所述脚本中的激励参数和所述激励模块,获取激励信号,包括:
21.将所述激励端口、所述dut端口和激励值写入激励初始化文件中;
22.将所述激励初始化文件中的内容转换到所述验证平台顶层的激励脚本文件中。
23.优选地,所述验证平台顶层为uvm的tb_top。
24.第二方面,本发明实施例提供一种芯片验证系统,包括:
25.参数获取模块,用于获取目标芯片所有被测试设计的验证参数;
26.脚本更新模块,用于对于当前被测试设计,利用所述当前被测试设计的验证参数更新脚本;
27.芯片验证模块,用于基于验证平台顶层和所述脚本,对所述当前被测试设计进行验证,并将下一被测试设计重新作为所述当前被测试设计,重复上述步骤,直到对所有被测试设计完成验证,以对所述目标芯片的设计进行验证。
28.第三方面,本发明实施例提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述芯片验证方法的步骤。
29.第四方面,本发明实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述芯片验证方法的步骤。
30.本发明提出的芯片验证方法、系统、设备及存储介质,在目标芯片有多个被测试设计进行功能测试时,利用脚本存放每个测试案例中需要更改的验证参数,然后借助验证平台顶层实现在验证过程中的所有需求,当不同被测试设计之间切换时,只需要更改脚本文件中的验证参数即可,避免了现有技术中利用人工进行端口连接等重复性的劳动,从而节约了被测试设计的验证时间,提高了芯片验证效率。
附图说明
31.图1为本发明实施例提供的一种芯片验证方法的流程图;
32.图2为本发明实施例中验证平台顶层的结构示意图;
33.图3为本发明实施例提供的一种芯片验证系统的结构示意图;
34.图4为本发明实施例提供的一种计算机设备的结构示意图。
35.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
36.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
37.本发明实施例中以fpga芯片作为目标芯片为例进行说明,fpga芯片对被测试设计的验证是建立在验证环境之上的,随着测试案例的编写要求和检测响应要求日益复杂,验证环境的搭建要求也不断演变,目前,验证环境已发展成为具有层次化结构。芯片的验证平台可以看做由底层和顶层组成,本发明实施例中仅仅针对验证平台顶层进行讨论。
38.图1为本发明实施例提供的一种芯片验证方法的流程图,如图1所示,该方法包括:
39.s110,获取目标芯片所有被测试设计的验证参数;
40.fpga芯片是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,通过程序设计,可以让fpga芯片具有不同的功能。一般而言,为了验证fpga芯片的设计是否正确,需要通过多个测试案例来对fpga芯片进行测试,每个测试案例所用到的fpga芯片的内部模块和引脚应尽可能的不同,以便对fpga芯片的测试更加全面。
41.测试案例就是被测试设计,不同的被测试设计对应的功能一般不同,比如某个被测试设计的功能是对fpga芯片的滤波处理能力进行测试,另一被测试设计对fpga芯片的信号跟踪能力进行测试,不同被测试设计中所用到的验证参数具体取值不相同,但是验证参数的类型是相同的,验证参数包括对被测试设计进行验证过程中所有需要用到的参数,如仿真精度、输入信号相关参数、环境相关参数等等。
42.s120,对于当前被测试设计,利用所述当前被测试设计的验证参数更新脚本;
43.具体实施时,将所有被测试设计按照时间顺序排列,将第一个被测试设计作为当前被测试设计,将当前被测试设计的验证参数更新到脚本文件中,所谓更新到脚本文件中是指去除脚本文件中原有的类型,添加当前被测试设计的验证参数。
44.s130,基于验证平台顶层和所述脚本,对所述当前被测试设计进行验证,并将下一被测试设计重新作为所述当前被测试设计,重复上述步骤,直到对所有被测试设计完成验证,以对所述目标芯片的设计进行验证。
45.验证平台一般是使用systemverilog语言搭建,大致可以包括如下几个部分:driver:实现激励;scoreboard:用于将dut与参考模块进行比较;monitor:用于收集dut的输出结果并传递给scoreboard。
46.本发明实施例中以uvm为验证平台为例进行说明,该验证平台顶层为tb_top,通过tb_top将脚本中的内容转换到验证平台上,验证平台是一个已经成熟使用的芯片验证工具,通过该验证平台即可实现对当前被测试设计的验证。
47.对当前被测试设计的验证完成后,将下一个被测试设计重新作为当前被测试设计,重复步骤s120到步骤s130,按照上述方法重新进行验证,直到对所有的被测试设计都完成验证。
48.根据每个被测试设计的验证结果,判断目标芯片的设计是否正确。
49.本发明实施例提供一种芯片验证方法,在目标芯片有多个被测试设计进行功能测试时,利用脚本存放每个测试案例中需要更改的验证参数,然后借助验证平台顶层实现在
验证过程中的所有需求,当不同被测试设计之间切换时,只需要更改脚本文件中的验证参数即可,避免了现有技术中利用人工进行端口连接这样重复性的劳动,从而节约了芯片验证时间,提高了芯片验证效率。
50.在上述实施例的基础上,优选地,所述验证参数包括全局参数、激励参数和参考预期参数。
51.具体地,该验证参数具体包括全局参数、激励参数和参考预期参数,全局参数是指被测试设计在验证过程中的电源信号、地信号等。
52.激励参数是指为被测试设计提供激励信号的相关参数,例如被测试设计是滤波功能验证时,激励参数可以是包括信号电压大小、信号频率、噪声类型、噪声大小等参数,不同的被测试设计对应的激励参数可能不同,具体根据实际情况进行确定。
53.参考预期参数为被测试设计的理想化输出结果,用来与实际输出结果进行比较,以此验证该被测试设计是否正确。
54.在上述实施例的基础上,优选地,所述验证平台顶层顶层包括全局模块、激励模块、参考模块、被测试设计模块和比较模块,所述全局模块与所述被测试设计模块的一端连接,所述激励模块同时与所述被测试设计模块的一端、所述参考模块的一端连接,所述被测试设计模块的另一端、所述参考模块的另一端与所述比较模块连接,所述参考模块与所述被测试设计模块的功能相同。
55.图2为本发明实施例中验证平台顶层的结构示意图,如图2所示,该验证平台顶层包括全局模块、激励模块、参考模块、被测试设计模块(简称dut模块)和比较模块五个部分。全局模块与dut模块之间连接,并且可以进行双向通行,即全局模块既可以向dut模块传输信号,dut模块也可以向全局模块传输信号,激励模块的输出端口同时与dut模块、参考模块连接,参考模块的功能与当前被测试案例的功能完全一致,在保证相同的激励信号输入的情况下,dut模块输出实际结果,参考模块输出理论结果,然后dut模块将实际结果输入到比较模块中,参考模块将理论结果输入到比较模块中,比较模块对两种进行比较,输出该当前被测试案例的验证结果。
56.一个dut模块通常会有多个被测试设计的要求,尤其是在fpga全芯片验证中,所有被测试设计所用到的dut模块都对应fpga芯片的顶层模块,而不涉及到fpga芯片底层逻辑的改变,所以在很多被测试设计中,dut模块是可以复用的。
57.那么在tb_top中,不同被测试设计的验证参数不同,本发明实施例中通过将验证参数加载到脚本文件中,用脚本去处理dut模块的实例化和tb_top约束端口之间的连接关系,就可以避免掉现有技术中验证不同待测案例时每次都要手动处理信号连接、实例化激励模块和参考模块的工作了。
58.在上述实施例的基础上,优选地,所述基于验证平台顶层和所述脚本,对所述当前被测试设计进行验证,包括:
59.根据所述脚本中的全局参数和所述全局模块,获取全局信号;
60.具体地,tb_top中的全局模块提供全局信号,根据脚本文件中的全局参数,可以给出当前被测试设计实例化后的全局信号,并且将全局信号传递给dut模块。
61.根据所述脚本中的激励参数和所述激励模块,获取激励信号,以使得所述被测试设计模块根据所述全局信号和所述激励信号输出实际结果;
62.根据脚本中的激励参数实例化激励模块,可以得到当前被测试设计所需要的的激励信号,并且将该激励信号同时发送给dut模块和参考模块,dut模块再接收到全局信号和激励信号后,输出实际结果。
63.根据所述激励信号、所述参考预期参数和所述参考模块,获取参考结果,以使得根据所述实际结果和所述参考结果,判断所述当前被测试设计是否正确;
64.激励信号输入到参考模块中,结合参考预期参数,使得参考模块实例化,得到参考结果。比较模块根据实际结果和参考结果,判断当前被测试设计是否正确。
65.在上述实施例的基础上,优选地,所述验证参数还包括约束端口,所述基于验证平台顶层和所述脚本,对所述当前被测试设计进行验证,还包括:
66.将所述当前被测试设计的激励端口、dut端口与所述验证平台顶层的约束端口连接,以使得判断结果被所述验证平台顶层接收,所述激励参数包括所述激励端口和所述dut端口。
67.具体地,在实际实施过程中,还需要将当前被测试设计的激励端口、dut端口与验证平台顶层的约束端口连接,此处,当前被测试设计的激励端口是指激励模块输出信号的端口,dut端口是指dut模块与激励端口相连的端口,约束端口是指tb_top上与dut端口连接的引脚。
68.通过将激励模块的激励端口、dut模块的dut端口分别与对应tb_top上的约束端口连接,使得tb_top可以接收最终的验证结果。
69.在上述实施例的基础上,优选地,所述根据所述脚本中的激励参数和所述激励模块,获取激励信号,包括:
70.将所述激励端口、所述dut端口和激励值写入激励初始化文件中;
71.将所述激励初始化文件中的内容转换到所述验证平台顶层的激励脚本文件中。
72.在具体实施过程中,通过激励初始化文件存放当前被测试设计约束端口、激励和参考模块结果的文件,该激励初始化文件为avc文件。
73.具体地,第一,将仿真产生的激励序列(即激励值)打印到avc文件中,其编程语言如下:
[0074][0075]
其中,第一行注释掉的端口为激励端口,第二行中为连接到的dut端口,两行端口按照顺序一一对应。r1所在的行表示激励序列,后面的0、1对应的是需要送到dut端口的激
励值,h和l对应的是dut端口的期待值。激励序列和dut端口也是一一对应的关系。
[0076]
第二,将avc文件中的内容转换到tb_top。
[0077]
然后使用脚本分析avc文件,打开avc文件,读取内容,将读取到的第一行内容作为约束端口,并将它存储在数组中。从第二行开始,读取dut端口对应的激励值,并将激励值打印在fc.mavc中,将其中值为l的修改为0,将值为h的修改为1。
[0078]
再将avc文件中约束端口对应的值全部设置为1,参考模块的输出结果全部设置为0,用于作为连接dut模块时的控制信号。因为输入是0、1格式,输出是h、l格式,所以只需要将数字修改为1,非数字修改为0即可,修改完后将数据打印到control.mavc文件中,即control.mavc文件中存放的为控制信号。
[0079]
接着就可以开始打印tb_top.sv文件了,该tb_top.sv文件即为激励脚本文件,首先根据system verilog语法,结合验证平台的需求,将仿真精度、包含头文件、参数声明和模块声明等放到tp_top.sv中。
[0080]
将读取fc.mavc文件和control.mavc文件中的内容打印到tb_top.sv中,将读取到的fc.mavc内容赋值给约束端口,处理存放约束端口名的数组,将约束端口(简称pad)的名字改为sel_pad,将读取到的control.avc的值赋值给sel_pad用于控制激励输入。读取avc的描述输出如下:
[0081]
reg[1:4]vectors[1:2407];
[0082]
reg[1:4]control_vectors[1:2407];
[0083]
$readmemb(“fc.mavc”,vectors);
[0084]
$readmemb(“control.mavc”,control_vectors);
[0085]
assign{l4_pad23,l5_pad23,l6_pad23,l7_pad23}=vectors[vecindex];
[0086]
assign{sel_l4_pad23,sel_l5_pad23,sel_l6_pad23,sel_l7_pad23}=control_vectors[vecindex];
[0087]
其中,二维数组vectors的位宽分别为约束端口的数量和打印出的端口值的行数。
[0088]
第三,进行激励端口、dut端口与tb_top约束端口的连接。
[0089]
例化dut模块的程序设计如下:
[0090]
out dev(.l1_pad0(l1_pad0_out),.l1_pad1(l1_pad1_out),
[0091]
.l1_pad2(l1_pad2_out),.l1_pad3(l1_pad3_out),.l1_pad4(l1_pad4_out),
[0092]
.l1_pad5(l1_pad5_out),.l1_pad6(l1_pad6_out),.l1_pad7(l1_pad7_out),
[0093]
.l1_pad8(l1_pad8_out),.l1_pad9(l1_pad9_out),.l1_pad10(l1_pad10_out),
[0094]
.l1_pad11(l1_pad11_out),.l1_pad12(l1_pad12_out),.l1_pad13(l1_pad13_out),
[0095]
.l1_pad14(l1_pad14_out),.l1_pad15(l1_pad15_out),.l1_pad16(l1_pad16_out),
[0096]
.l1_pad17(l1_pad17_out),);
[0097]
其中,pad*_out为tb_top层与dut模块直接连接的信号,pad*为可以对其进行赋值的中间信号,激励最终被给到pad*上。
[0098]
对于每个待测案例,此例化都是一样的,因此脚本每次正常打印出这一段例化就好。
[0099]
另外,dut模块中若有电源端口、接地端口,要直接将其连接到tb_top顶层的全局信号的电源、地上,实现如下:
[0100]
vcci0r5(vdd),.vcci0r6(vdd),.vcci0r7(vdd),.vcc_drm(vdd),.vcci0_cfg(vdd),,.vcc_hp(vdd),.vcc_i0l(vdd),.vcc(vdd),.vss(vdd),.vcca_i0l(vdd)。
[0101]
其中,vss为地,vdd为电源。
[0102]
由于fpga要正常工作需要先进行配置,本验证环境中配置完成的唤醒标志为wakeup信号,如果wakeup拉高则表示配置完成。任何激励信号需要传入dut模块则需要在wakeup为高的情况下进行。
[0103]
实例化dut模块后,将顶层tb_top声明的pad和dut模块的pad_out之间用nmos连接,nmos起到传输管的作用,其中nmos管的一个端口就是控制信号,控制信号打开,则nmos管另外端口就能相互连通。
[0104]
若当前被测试案例约束到了,pad就在配置唤醒后打开nmos开关,若没使用,nmos管开关则关闭,断开顶层pad与dut模块端口的连接。
[0105]
l4_pad23和l5_pad23作为激励输入端口需要连接到dut模块,它们的控制信号sel_l4_pad23已经被control.mavc文件赋值为1,那么配置唤醒之后,xl4_pad23和xl5_pad23的开关打开,激励就可以传输到到dut模块。
[0106]
而l6_pad23和l7_pad23作为参考模块输出响应端口要与dut模块的输出响应端口l6_pad23_out、l7_pad23_out进行比较,不能连接在一起,所以sel_l6_pad23和sel_l7_pad23被control.mavc赋值为0,那么xl6_pad23和xl7_pad23的开关关闭。
[0107]
fpga配置唤醒开始工作后,dut模块的响应结果会输出到约束端口上,此时就可以进行dut模块的实际结果和参考模块理想结果对比,确认当前被测试设计的正确性。
[0108]
图3为本发明实施例提供的一种芯片验证系统的结构示意图,如图3所示,该系统包括参数获取模块310、脚本更新模块320和芯片验证模块330,其中:
[0109]
参数获取模块310用于获取目标芯片所有被测试设计的验证参数;
[0110]
脚本更新模块320用于对于当前被测试设计,利用所述当前被测试设计的验证参数更新脚本;
[0111]
芯片验证模块330用于基于验证平台顶层和所述脚本,对所述当前被测试设计进行验证,并将下一被测试设计重新作为所述当前被测试设计,重复上述步骤,直到对所有被测试设计完成验证,以对所述目标芯片的设计进行验证。
[0112]
本实施例为与上述方法相对应的系统实施例,其实施过程与上述方法实施过程相同,详情请参考上述方法实施例,本系统实施例在此不再赘述。
[0113]
上述基于芯片验证系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0114]
在一个实施例中,图4为本发明实施例提供的一种计算机设备的结构示意图,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括计算机存储介质、内存储器。该计算机存储介质存储有操作系统、计算机程序和数据库。该内存储器为计算机存储介质中的操作系统和计算机程
序的运行提供环境。该计算机设备的数据库用于存储执行基于芯片验证方法过程中生成或获取的数据,如验证参数。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于芯片验证方法。
[0115]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中的基于芯片验证方法的步骤,例如图1所示的步骤。或者,处理器执行计算机程序时实现基于芯片验证系统这一实施例中的各模块/单元的功能,例如图3所示的各模块/单元的功能,为避免重复,这里不再赘述。
[0116]
在一实施例中,提供一计算机存储介质,该计算机存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中基于芯片验证方法的步骤,例如图1所示的步骤,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现上述基于芯片验证系统这一实施例中的各模块/单元的功能,例如图3所示的各模块/单元的功能,为避免重复,这里不再赘述。
[0117]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0118]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
[0119]
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献