一种编解码验证系统、方法、设备及可读存储介质与流程
未命名
10-09
阅读:128
评论:0
1.本技术涉及计算机技术领域,特别涉及一种编解码验证系统、方法、设备及可读存储介质。
背景技术:
2.目前,开发完成的编解码算法类芯片需进行验证,一般由芯片设计人员基于rtl设计芯片中的编码逻辑和解码逻辑,形成rtl模块;算法人员通过软件设计实现芯片中的编码逻辑和解码逻辑,形成软件模块,然后利用rtl模块和软件模块对输入数据进行验证。
3.通常情况下,需要等rtl模块和软件模块都编写完成后,才能进行芯片验证工作。并且,编码逻辑和解码逻辑在两个独立的环境中进行验证,导致相同的测试数据分别在编码环境和解码环境中各做一次测试,造成了服务资源的浪费。芯片验证工作还存在一定的滞后性,这会延长芯片开发的整体时间。
4.因此,如何简化芯片验证流程,降低芯片验证工作的滞后性,节约验证所用的计算机资源,是本领域技术人员需要解决的问题。
技术实现要素:
5.有鉴于此,本技术的目的在于提供一种编解码验证系统、方法、设备及可读存储介质,以简化芯片验证流程,降低芯片验证工作的滞后性,节约验证所用的计算机资源。其具体方案如下:
6.第一方面,本技术提供了一种编解码验证系统,包括:编码端、解码端和对比端;
7.编码端,用于获取编码数据;若检测到至少一个编码模块,则将编码数据传输至至少一个编码模块,并获取至少一个编码模块编码编码数据得到的编码结果;若检测到至少一个解码模块,则将编码数据传输至对比端;
8.解码端,用于获取编码结果;若检测到至少一个解码模块,则将任意编码结果传输至至少一个解码模块,并获取至少一个解码模块解码相应编码结果得到的解码结果,将得到的解码结果传输至对比端;
9.对比端,用于对比编码数据和任意解码结果,并记录对比结果。
10.可选地,还包括:
11.数据提供端,用于生成编码数据,存储任意编码结果,将任意编码结果传输至解码端。
12.可选地,编码端包括:第一部署单元、第一输入单元、第一驱动单元、第一监听单元和第一对比单元;
13.第一部署单元,用于根据用户操作部署至少一个编码模块;
14.第一输入单元,用于从数据提供端获取编码数据;
15.第一驱动单元,用
16.于检测是否存在编码模块;若检测到至少一个编码模块,则将编码数据传输至至
少一个编码模块;检测是否存在解码模块;若检测到至少一个解码模块,则将编码数据传输至对比端;
17.第一监听单元,用于获取并传输至少一个编码模块编码编码数据得到的编码结果至数据提供端;
18.第一对比单元,用于获取并对比不同编码模块编码编码数据得到的编码结果,并记录对比结果。
19.可选地,解码端包括:第二部署单元、第二输入单元、第二驱动单元、第二监听单元和第二对比单元;
20.第二部署单元,用于根据用户操作部署至少一个解码模块;
21.第二输入单元,用于从数据提供端获取任意编码结果;
22.第二驱动单元,用于检测是否存在解码模块;若检测到至少一个解码模块,则将任意编码结果传输至至少一个解码模块;
23.第二监听单元,用于获取并传输至少一个解码模块解码任意编码结果得到的解码结果至对比端;
24.第二对比单元,用于获取并对比不同解码模块解码任意编码结果得到的解码结果,并记录对比结果。
25.可选地,第一驱动单元具体用于:检测编码模块的宏和/或解码模块的宏是否已开启;若检测到编码模块的宏和/或解码模块的宏已开启,则确定检测到编码模块和/或解码模块;否则,确定未检测到可用的编码模块和/或解码模块;
26.相应地,第二驱动单元具体用于:检测解码模块的宏是否已开启;若检测到解码模块的宏已开启,则确定检测到解码模块;否则,确定未检测到可用的解码模块。
27.可选地,任意编码模块和任意解码模块基于c语言、perl语言、python语言、verilog语言和/或vhdl语言得到。
28.可选地,还包括:
29.定位端,用于获取不同解码模块解码任意编码结果得到的解码结果的对比结果、不同编码模块编码编码数据得到的编码结果的对比结果、和/或编码数据和任意解码结果的对比结果,并根据获取到的对比结果定位相应编码模块和/或相应解码模块中的问题。
30.第二方面,本技术提供了一种编解码验证方法,包括:
31.获取编码数据;
32.若检测到至少一个编码模块,则将编码数据传输至至少一个编码模块,并获取至少一个编码模块编码编码数据得到的编码结果;
33.若检测到至少一个解码模块,则将任意编码结果传输至至少一个解码模块,并获取至少一个解码模块解码相应编码结果得到的解码结果;
34.对比编码数据和任意解码结果,并记录对比结果。
35.可选地,还包括:
36.在有至少两个编码模块的情况下,对比不同编码模块编码编码数据得到的编码结果,并记录对比结果。
37.可选地,还包括:
38.在有至少两个解码模块的情况下,对比不同解码模块解码任意编码结果得到的解
码结果,并记录对比结果。
39.可选地,检测到至少一个编码模块,包括:检测到至少一个编码模块的宏已开启;
40.相应地,检测到至少一个解码模块,包括:检测到至少一个解码模块的宏已开启。
41.可选地,若检测到至少一个编码模块的宏和/或至少一个解码模块的宏已关闭,则确定至少一个编码模块和/或至少一个解码模块不存在。
42.可选地,任意编码模块和任意解码模块基于c语言、perl语言、python语言、verilog语言和/或vhdl语言得到。
43.可选地,还包括:
44.根据对比结果定位相应编码模块和/或相应解码模块中的问题。
45.第三方面,本技术提供了一种电子设备,包括:
46.存储器,用于存储计算机程序;
47.处理器,用于执行计算机程序,以实现前述公开的编解码验证方法。
48.第四方面,本技术提供了一种可读存储介质,用于保存计算机程序,其中,计算机程序被处理器执行时实现前述公开的编解码验证方法。
49.通过以上方案可知,本技术提供了一种编解码验证系统,包括:编码端、解码端和对比端;编码端,用于获取编码数据;若检测到至少一个编码模块,则将编码数据传输至至少一个编码模块,并获取至少一个编码模块编码编码数据得到的编码结果;若检测到至少一个解码模块,则将编码数据传输至对比端;解码端,用于获取编码结果;若检测到至少一个解码模块,则将任意编码结果传输至至少一个解码模块,并获取至少一个解码模块解码相应编码结果得到的解码结果,将得到的解码结果传输至对比端;对比端,用于对比编码数据和任意解码结果,并记录对比结果。
50.可见,本技术提供的编解码验证系统能够使编解码算法中的编码逻辑独立为编码模块,使编解码算法中的解码逻辑独立为解码模块,且编码模块和解码模块独立运行,那么对于rtl模块而言,其可由rtl编码模块和rtl解码模块组成,且rtl编码模块和rtl解码模块分别独立运行,因此就算rtl模块中只有rtl编码模块设计完成,也可以单独使用rtl编码模块进行验证工作,而无需等待rtl解码模块,由此可实现边设计边验证。具体的,设计完成的编码模块或解码模块可以部署于本技术提供的编解码验证系统中,使得相应编码模块或解码模块在该系统内被单独调用,以进行芯片验证工作,降低了芯片验证工作的滞后性,缩短芯片开发的整体时间。同时,该系统提供的对比端可以对比输入的编码数据和任意类型的解码模块输出的解码结果,并记录对比结果,由此便于定位编码模块和/或解码模块中存在的设计漏洞。而且,该系统使编码模块和解码模块在同一环境中进行验证,可以实现相同测试数据(包括作为输入的编码数据和相关编码结果、解码结果)在不同模块中的复用,由此简化了芯片验证流程,可节约验证所用的计算机资源。
51.相应地,本技术提供的一种编解码验证方法、设备及可读存储介质,也同样具有上述技术效果。
附图说明
52.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
53.图1为本技术公开的一种编解码验证系统示意图;
54.图2为本技术公开的另一种编解码验证系统示意图;
55.图3为本技术公开的第一种验证流程示意图;
56.图4为本技术公开的第二种验证流程示意图;
57.图5为本技术公开的第三种验证流程示意图;
58.图6为本技术公开的第四种验证流程示意图;
59.图7为本技术公开的第五种验证流程示意图;
60.图8为本技术公开的第六种验证流程示意图;
61.图9为本技术公开的一种编解码验证方法流程图;
62.图10为本技术公开的一种电子设备示意图。
具体实施方式
63.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
64.目前,由于rtl模块和软件模块由人工设计编写得到,其中可能存在错漏,这些错漏会直接影响验证结果。若rtl模块或软件模块输出的结果有误,当前较难确定是其中的编码逻辑有问题,还是解码逻辑有问题。还需要等rtl模块和软件模块都编写完成后,才能进行芯片验证工作。并且,无论是rtl模块还是软件模块,其中的编码逻辑和解码逻辑在两个独立的环境中进行验证,导致相同的测试数据分别在编码环境和解码环境中各做一次测试,造成了服务资源的浪费。芯片验证工作还存在一定的滞后性,这会延长芯片开发的整体时间。为此,本技术提供了一种编解码验证方案,能够简化芯片验证流程,降低芯片验证工作的滞后性,节约验证所用的计算机资源。
65.参见图1所示,本技术实施例公开了一种编解码验证系统,包括:编码端、解码端、对比端和数据提供端。
66.编码端,用于获取编码数据;若检测到至少一个编码模块,则将编码数据传输至至少一个编码模块,并获取至少一个编码模块编码编码数据得到的编码结果;若检测到至少一个解码模块,则将编码数据传输至对比端。本实施例允许编码端部署多个编码模块,如:基于c语言、perl语言、python语言、verilog语言和/或vhdl语言得到的编码模块。已部署的各个编码模块可以单独被调用以对编码数据进行编码。
67.解码端,用于获取编码结果;若检测到至少一个解码模块,则将任意编码结果传输至至少一个解码模块,并获取至少一个解码模块解码相应编码结果得到的解码结果,将得到的解码结果传输至对比端。本实施例允许解码端部署多个解码模块,如:基于c语言、perl语言、python语言、verilog语言和/或vhdl语言得到的解码模块。已部署的各个解码模块可以单独被调用以对任意编码模块输出的编码结果进行解码。
68.对比端,用于对比编码数据和任意解码结果,并记录对比结果。
69.数据提供端,用于生成编码数据,存储任意编码结果,将任意编码结果传输至解码端。该数据提供端可使编码数据、任意编码结果在不同模块中进行复用,从而达到节约资源的目的。
70.在一种实施方式中,编码端包括:第一部署单元、第一输入单元(sqr0)、第一驱动单元(drv0)、第一监听单元(mon0)和第一对比单元(scb0);第一部署单元,用于根据用户操作部署至少一个编码模块;第一输入单元,用于从数据提供端获取编码数据;第一驱动单元,在第一驱动单元中检测是否存在编码模块;若检测到至少一个编码模块,则将编码数据传输至至少一个编码模块;检测是否存在解码模块;若检测到至少一个解码模块,则将编码数据传输至对比端;第一监听单元,用于获取并传输至少一个编码模块编码编码数据得到的编码结果至数据提供端;第一对比单元,用于获取并对比不同编码模块编码编码数据得到的编码结果,并记录对比结果。可见,第一对比单元可以对比不同编码模块编码同一编码数据得到的编码结果,由此可直接确定不同编码模块中是否存在设计漏洞,也便于定位其中的问题所在。
71.在一种实施方式中,解码端包括:第二部署单元、第二输入单元(sqr1)、第二驱动单元(drv1)、第二监听单元(mon1)和第二对比单元(scb1);第二部署单元,用于根据用户操作部署至少一个解码模块;第二输入单元,用于从数据提供端获取任意编码结果;第二驱动单元,在第二驱动单元中检测是否存在解码模块;若检测到至少一个解码模块,则将任意编码结果传输至至少一个解码模块;第二监听单元,用于获取并传输至少一个解码模块解码任意编码结果得到的解码结果至对比端;第二对比单元,用于获取并对比不同解码模块解码任意编码结果得到的解码结果,并记录对比结果。可见,第二对比单元可以对比不同解码模块解码同一编码结果得到的解码结果,由此可直接确定不同解码模块中是否存在设计漏洞,也便于定位其中的问题所在。
72.相应的,本实施例提供的系统还包括定位端,用于获取不同解码模块解码任意编码结果得到的解码结果的对比结果、不同编码模块编码编码数据得到的编码结果的对比结果、和/或编码数据和任意解码结果的对比结果,并根据获取到的对比结果定位相应编码模块和/或相应解码模块中的问题。
73.需要说明的是,已部署的编码模块设有是否可被调用的开关,例如:以宏作为编码模块是否可被调用的开关时,当检测到某一编码模块的宏已开启,则可以将输入的编码数据传输至该编码模块;当检测到某一编码模块的宏已关闭,则不将输入的编码数据传输至该编码模块;当不能检测到任何编码模块时,说明还没有部署编码模块。相应地,已部署的解码模块设有是否可被调用的开关,例如:以宏作为解码模块是否可被调用的开关时,当检测到某一解码模块的宏已开启,则可以将系统中任意编码模块输出的编码结果传输至该解码模块;当检测到某一解码模块的宏已关闭,则不将任何编码结果传输至该解码模块;当不能检测到任何解码模块时,说明还没有部署解码模块。
74.在一种实施方式中,第一驱动单元具体用于:检测编码模块的宏和/或解码模块的宏是否已开启;若检测到编码模块的宏和/或解码模块的宏已开启,则确定检测到编码模块和/或解码模块;否则,确定未检测到可用的编码模块和/或解码模块;相应地,第二驱动单元具体用于:检测解码模块的宏是否已开启;若检测到解码模块的宏已开启,则确定检测到解码模块;否则,确定未检测到可用的解码模块。
75.在一种实施方式中,任意编码模块和任意解码模块基于c语言、perl语言、python语言、verilog语言和/或vhdl语言得到。
76.可见,本实施例提供的编解码验证系统能够使编解码算法中的编码逻辑独立为编码模块,使编解码算法中的解码逻辑独立为解码模块,且编码模块和解码模块独立运行,那么对于rtl模块而言,其可由rtl编码模块和rtl解码模块组成,且rtl编码模块和rtl解码模块分别独立运行,因此就算rtl模块中只有rtl编码模块设计完成,也可以单独使用rtl编码模块进行验证工作,而无需等待rtl解码模块,由此可实现边设计边验证。具体的,设计完成的编码模块或解码模块可以部署于本技术提供的编解码验证系统中,使得相应编码模块或解码模块在该系统内被单独调用,以进行芯片验证工作,降低了芯片验证工作的滞后性,缩短芯片开发的整体时间。同时,该系统提供的对比端可以对比输入的编码数据和任意类型的解码模块输出的解码结果,并记录对比结果,由此便于定位编码模块和/或解码模块中存在的设计漏洞。而且,该系统使编码模块和解码模块在同一环境中进行验证,可以实现相同测试数据(包括作为输入的编码数据和相关编码结果、解码结果)在不同模块中的复用,由此简化了芯片验证流程,可节约验证所用的计算机资源。
77.下面对本技术实施例提供的另一种编解码验证系统进行介绍,下文描述的一种编解码验证系统与本文描述的其他实施例可以相互参照。
78.请参见图2,图2中tb_top为系统所在验证环境的顶层模块,在顶层模块中分别实例化了rtl编码模块和rtl解码模块。这两个模块如果没有部署在系统中,可以先使用空模块代替,等设计人员设计完成再上传至系统进行部署。rtl编码模块为基于rtl语言(如verilog、vhdl等)得到的编码模块,rtl解码模块为基于rtl语言得到的解码模块。
79.其中,验证环境中的test组件分别实例化了agt0(编码端)、和agt1(解码端)、scb2(对比端)和v_sequence(数据提供端)这几个组件,其中agt0连接rtl编码模块,agt1连接rtl解码模块。scb2用于结果比对,v_sequence用于负责测试激励数据生成。
80.在agt0中分别实例化了sqr0(第一输入单元)、drv0(第一驱动单元)、mon0(第一监听单元)、rm0和scb0(第一对比单元)这几个组件。其中sqr0从端口5收到激励数据的数据包后,通过端口6发送给drv0;在drv0中会进行判断,如果define了rtl编码模块的宏rtl_enc,会驱动端口1给rtl编码模块输入激励数据。同时还会判断rtl解码模块的宏rtl_dec和c解码模块的宏c_dec是否至少有一个宏做了define,如果是,则通过端口8将激励数据发送给scb2。进一步地,判断是否define了c编码模块的宏c_enc,如果有define,那么drv0会通过端口7将激励数据发送给rm0,用于使c编码模块编码激励数据产生期望数据。mon0组件会一直监测rtl编码模块的输出端口,如果通过端口2收到数据包(rtl编码模块编码激励数据产生的数据),mon0会将数据包发送给scb0,同时会判断是否define了rtl解码模块的宏rtl_dec和c解码模块的宏c_dec,如果这两个宏中至少define了一个,同时没有definec_enc这个宏,那么会通过端口10将rtl编码模块编码激励数据产生的数据包复制一份转发给v_sequence进行存储。c编码模块为基于c语言得到的编码模块,c解码模块为基于c语言得到的解码模块。
81.rm0组件中实例化了c编码模块,如果c编码模块没有准备好,可以先使用空函数代替,等算法人员实现了再做替换。rm0在收到端口7发送的激励数据后,会调用c编码模块编码激励数据产生编码结果,并形成数据包,rm0会将生成的编码结果通过端口11转达给
scb0,同时会判断rtl解码模块的宏rtl_dec和c解码模块的宏c_dec是否至少有一个宏做了define,如果有,那么rm0会将c编码模块的编码结果复制一份,通过端口12转发给v_sequence进行存储。
82.其中,通过端口9送给scb0的数据包为rtl编码模块输出的编码结果,通过端口11送给scb0的数据包为c编码模块输出的编码结果,scb0在收到这两个端口的数据包后会进行自动比对,以判断是否一致,从而确定rtl编码模块和c编码模块是否有问题。
83.其中,在rtl_dec、c_dec这两个宏只有一个define时,端口10或端口12会发送数据包给v_sequence。当define了c_enc这个宏时,端口12发送数据包给v_sequence,当没有define c_enc这个宏时,端口10发送数据包给v_sequence。v_sequence从端口10或者端口12接收到数据包后,会通过端口13发送给agt1的sqr1(第二输入单元)。
84.sqr1通过端口13收到数据包(rtl编码模块输出的编码结果和/或c编码模块输出的编码结果)后,会通过端口14转发给drv1(第二驱动单元),在drv1中会进行判断,如果define了rtl解码模块的宏rtl_dec,会驱动端口3给rtl解码模块输入数据。还会判断是否define了c解码模块的宏c_dec,如果有define,那么drv1会通过端口15将数据复制一份发送给rm1,以使rm1调用c解码模块解码数据产生解码结果。mon1组件会一直监测rtl解码模块的输出端口,如果通过端口4收到rtl解码模块输出的数据包,mon1会将rtl解码模块输出的数据包发送给scb1,同时会将rtl解码模块输出的数据包复制一份,通过端口17发送给scb2。
85.rm1组件中实例化了c解码模块,如果c解码模块没有准备好,可以先使用空函数代替,等算法人员实现了再做替换。rm1在收到端口15发送的数据包后,会调用c解码模块解码数据包得到结果,rm1会将解码结果通过端口18转达给scb1,同时会将c解码模块输出的解码结果复制一份,通过端口16发送给scb2。
86.其中,通过端口19送给scb1的数据包为rtl解码模块输出的数据包,通过端口18送给scb1的数据包为c解码模块输出的数据包,scb1在收到这两个端口的数据包后会进行自动比对,以判断是否一致,从而确定rtl解码模块和c解码模块是否有问题。
87.scb2组件在收到端口8发送的数据后,会判断是否define了c_dec这个宏,如果有define,那么scb2组件会将从端口8收到的数据包与端口16收到的数据包作比较。同时会判断是否define了rtl_dec这个宏,如果有define,那么scb2组件会将从端口8收到的数据包与端口17收到的数据包作比较。
88.在图2中,端口1、2、3和4是虚拟接口,用于进行rtl编码模块、rtl解码模块与uvm环境的连接,端口10和12是通过uvm_event_pool组件连接的端口,除此之外其他的端口使用analysis_port端口。
89.可见,本实施例在验证环境中实例化了四个模块:c编码模块,c解码模块,rtl编码模块和rtl解码模块。上述四个模块均可以根据其设计进度,在系统中进行打开或者关闭。其中,分别通过四个单独define的宏进行打开或者关闭,依次为c_enc,c_dec,rtl_enc和rtl_dec。如果打开c编码模块,需define c_enc;如果打开c解码模块,需define c_dec;如果打开rtl编码模块,需define rtl_enc;如果打开rtl解码模块,需define rtl_dec。
90.请参见图3,如果算法人员已完成c编码模块和c解码模块,芯片设计人员已完成rtl编码模块和rtl解码模块,那么可以打开c编码模块、c解码模块、rtl编码模块和rtl解码
模块,环境中需define c_enc、c_dec、rtl_enc和rtl_dec这四个宏。那么数据流走向为:随机产生的原始输入数据包分别输入给c编码模块和rtl编码模块,其中c编码模块输出数据包e1,rtl编码模块输出数据包e2。数据包e1通过接口p1、p2输入给c解码模块、rtl解码模块,数据包e2通过接口p3、p4输入给c解码模块、rtl解码模块。经过c解码模块解码输出数据包d1,经过rtl解码模块解码输出数据包d2。测试后,比对数据包e1和e2是否一致,同时比对数据包d1、d2和o是否一致,确保rtl模型或者c模型没有问题。当d1和o不一致时,说明c模型有问题,优先处理c模型的问题。当e1与e2不一致时,说明c编码模块、rtl编码模块有问题,优先处理c编码模块、rtl编码模块的问题。当d1与o一致、e1与e2不一致,而且d2与d1也不一致时,可以关掉rtl编码模块和通路p4(即关闭端口10),并行处理rtl解码模块的问题,从而加快问题定位。
91.为实现图3所示测试场景,使图2中的端口均为有效连接,其中端口8发送的数据包为激励数据o,端口17发送的数据包为rtl解码模块输出的数据包d2,数据包o和数据包d2在scb2组件中完成自动比对。端口16发送的数据包为c解码模块输出的数据包d1,数据包o和数据包d1在scb2组件中完成自动比对。端口9发送的数据包为rtl编码模块输出的数据包e2,端口11发送的数据包为c编码模块输出的数据包e1,数据包e1和数据包e2在scb0组件中完成自动比对。端口19发送的数据包为rtl解码模块输出的数据包d2,端口18发送的数据包为c解码模块输出的数据包d1,数据包d1和数据包d2在scb1组件中完成自动比对。
92.请参见图4,如果已完成c编码模块和c解码模块,但rtl编码模块和rtl解码模块都没完成,那么打开c编码模块和c解码模块(即define c_enc和c_dec这两个宏),关掉rtl编码模块和rtl解码模块的宏。此情况下相应的数据流走向为:激励数据o输入给c编码模块,得到输出数据包e1,然后将e1输入给c解码模块进行解码,得到输出结果d1。通过比较数据包d1和激励数据o是否一致,判定c编码模块和c解码模块是否有问题。由此可以在芯片设计人员没有完成rtl编码模块和rtl解码模块的情况下,提前测试c编码模块和c解码模块,以确保包括c编码模块和c解码模块的c模型没有问题。在此情况下,系统中的rtl编码模块和rtl解码模块可以均为空,也可以不为空但需使宏关闭。
93.为实现图4所示测试场景,使图2中的端口5、6、7、8、12、13、14、15、16为有效连接,其他端口为无效连接。其中,端口8发送的数据包为激励数据o,端口16发送的数据包为d1,数据包o和数据包d1在scb2组件中完成自动比对。
94.请参见图5,如果已完成c编码模块但没有完成c解码模块,已完成rtl编码模块但没有完成rtl解码模块,那么可以关掉c解码模块和rtl解码模块,打开c编码模块和rtl编码模块,此时需define c_enc和rtl_enc这两个宏。此情况下相应的数据流走向为:激励数据分别输入给c编码模块和rtl编码模块,其中c编码模块的输出数据包为e1,rtl编码模块的输出数据包为e2,通过比较e1和e2,判定c编码模块和rtl编码模块是否有问题。由此可以在c解码模块和rtl解码模块没有设计完成的情况下,优先验证c编码模块和rtl编码模块是否有问题。在此情况下,系统中的c解码模块和rtl解码模块可以均为空,也可以不为空但需使宏关闭。
95.为实现图5所示测试场景,使图2中的端口1、2、5、6、7、9、11为有效连接,其他端口为无效连接。其中,端口9发送的数据包为rtl编码模块输出的数据包e2,端口11发送的数据包c编码模块输出的数据包e1,数据包e1和数据包e2在scb0组件中完成自动比对。
96.请参见图6,如果rtl编码模块和rtl解码模块都已完成,但c编码模块和c解码模块都没有完成。这种场景下可以关掉c编码模块和c解码模块,打开rtl编码模块和rtl解码模块,也就是define rtl_enc和rtl_dec这两个宏。在这种场景下对rtl编码模块和rtl解码模块进行回环测试,相应的数据流走向为:激励数据o输入给rtl编码模块,得到输出数据包e2,然后将e2输入给rtl解码模块进行解码,得到输出结果d2。通过比较数据包d2和激励数据o是否一致,判定rtl编码模块和rtl解码模块是否有问题。由此可以在没有完成c编码模块和c解码模块的情况下,提前测试rtl编码模块和rtl解码模块。
97.为实现图6所示测试场景,使图2中的端口1、2、3、4、5、6、8、10、13、14、17为有效连接,其他端口为无效连接。其中端口8发送的数据包为激励数据o,端口17发送的数据包为rtl解码模块输出的数据包d2,数据包o和数据包d2在scb2组件中完成自动比对。
98.请参见图7,如果已完成c编码模块、c解码模块和rtl编码模块,rtl解码模块没完成。这种场景下可以关掉rtl解码模块,打开c编码模块、c解码模块和rtl编码模块,需define c_enc、c_dec和rtl_enc这三个宏。这种场景下用于对c编码模块和c解码模块进行回环测试,同时测试rtl编码模块。测试后,可以通过比较数据包d1和激励数据o是否一致,判定包括c编码模块和c解码模块的c模型是否有问题。通过比较数据包e1和数据包e2是否一致,判定rtl编码模块与c编码模块是否有问题。当e1与e2不一致时,如果发现d1与原始数据o也不一致,说明c模型肯定有问题,可以先解决c模型的问题,节约问题定位所需时间。
99.为实现图7所示测试场景,使图2中的端口1、2、5、6、7、8、9、11、12、13、14、15、16为有效连接,其中端口8发送的数据包为激励数据o,端口16发送的数据包为c解码模块输出的数据包d1,数据包o和数据包d1在scb2组件中完成自动比对。端口9发送的数据包为rtl编码模块实际输出的数据包e2,端口11发送的数据包为c编码模块输出的数据包e1,数据包e1和数据包e2在scb0组件中完成自动比对。
100.请参见图8,如果已完成c编码模块但是c解码模块没有完成,芯片设计人员已完成rtl编码模块和rtl解码模块。这种场景下可以关掉c解码模块,打开c编码模块、rtl编码模块和rtl解码模块,环境中需define c_enc、rtl_enc和rtl_dec这三个宏。这种场景下用于对rtl编码模块和rtl解码模块进行回环测试,同时测试c编码模块。测试后,通过比较数据包d2和激励数据o是否一致,判定包括rtl编码模块和rtl解码模块的rtl模型是否有问题。通过比较数据包e1和数据包e2是否一致,判定rtl编码模块与c编码模块是否有问题。当d2与o不一致时,如果发现e1与e2也不一致,说明rtl编码模块、c编码模块存在问题,可以先解决rtl编码模块和c编码模块的问题,节约问题定位所需时间。
101.为实现图8所示测试场景,使图2中的端口1、2、3、4、5、6、7、8、9、11、12、13、14、17这些端口为有效连接,其中端口8发送的数据包为激励数据o,端口17发送的数据包为rtl解码模块输出的数据包d2,数据包o和数据包d2在scb2组件中完成自动比对。端口9发送的数据包为rtl编码模块输出的数据包e2,端口11发送的数据包为c编码模块输出的数据包e1,数据包e1和数据包e2在scb0组件中完成自动比对。
102.本实施例针对两个编码模块和两个解码模块进行选择性测试,可根据实际情况自由关闭相应的模块,从而加快验证进度,加快问题定位速度,能够使芯片验证人员较早进行验证工作,加快芯片研发进度、问题定位速度,还能减少验证工作对服务器资源的消耗。据此,可以针对更多编码模块、更多解码模块进行选择性测试,以简化多模块带来的验证复杂
度。
103.本实施例使用的回环验证方法,使得芯片验证人员在算法人员和芯片设计人员完成部分模块就可以开展验证工作,加快项目研发进度。同时,也便于定位各模块中存在的设计漏洞。而且使编码模块和解码模块在同一环境中进行验证,可以实现相同测试数据(包括作为输入的编码数据和相关编码结果、解码结果)在不同模块中的复用,由此简化了芯片验证流程,可节约验证所用的计算机资源。
104.下面对本技术实施例提供的一种编解码验证方法进行介绍,下文描述的一种编解码验证方法与本文描述的其他实施例可以相互参照。
105.参见图9所示,本技术实施例公开了一种编解码验证方法,包括:
106.s901、获取编码数据。
107.s902、若检测到至少一个编码模块,则将编码数据传输至至少一个编码模块,并获取至少一个编码模块编码编码数据得到的编码结果。
108.s903、若检测到至少一个解码模块,则将任意编码结果传输至至少一个解码模块,并获取至少一个解码模块解码相应编码结果得到的解码结果。
109.s904、对比编码数据和任意解码结果,并记录对比结果。
110.在一种实施方式中,在有至少两个编码模块的情况下,对比不同编码模块编码编码数据得到的编码结果,并记录对比结果。
111.在一种实施方式中,在有至少两个解码模块的情况下,对比不同解码模块解码任意编码结果得到的解码结果,并记录对比结果。
112.在一种实施方式中,检测到至少一个编码模块,包括:检测到至少一个编码模块的宏已开启;相应地,检测到至少一个解码模块,包括:检测到至少一个解码模块的宏已开启。
113.在一种实施方式中,若检测到至少一个编码模块的宏和/或至少一个解码模块的宏已关闭,则确定至少一个编码模块和/或至少一个解码模块不存在。
114.在一种实施方式中,任意编码模块和任意解码模块基于c语言、perl语言、python语言、verilog语言和/或vhdl语言得到。
115.在一种实施方式中,根据对比结果定位相应编码模块和/或相应解码模块中的问题。
116.其中,关于本实施例中各个步骤更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
117.可见,本实施例提供了一种编解码验证方法,能够简化芯片验证流程,降低芯片验证工作的滞后性,节约验证所用的计算机资源。
118.下面对本技术实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与本文描述的其他实施例可以相互参照。
119.参见图10所示,本技术实施例公开了一种电子设备,包括:
120.存储器1001,用于保存计算机程序;
121.处理器1002,用于执行计算机程序,以实现上述任意实施例公开的方法。
122.下面对本技术实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与本文描述的其他实施例可以相互参照。
123.一种可读存储介质,用于保存计算机程序,其中,计算机程序被处理器执行时实现
前述实施例公开的编解码验证方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
124.本技术涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
125.需要说明的是,在本技术中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
126.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
127.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的可读存储介质中。
128.本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
技术特征:
1.一种编解码验证系统,其特征在于,包括:编码端、解码端和对比端;所述编码端,用于获取编码数据;若检测到至少一个编码模块,则将所述编码数据传输至所述至少一个编码模块,并获取所述至少一个编码模块编码所述编码数据得到的编码结果;若检测到至少一个解码模块,则将所述编码数据传输至所述对比端;所述解码端,用于获取所述编码结果;若检测到至少一个解码模块,则将任意编码结果传输至所述至少一个解码模块,并获取所述至少一个解码模块解码相应编码结果得到的解码结果,将得到的解码结果传输至所述对比端;所述对比端,用于对比所述编码数据和任意解码结果,并记录对比结果。2.根据权利要求1所述的系统,其特征在于,还包括:数据提供端,用于生成所述编码数据,存储任意编码结果,将任意编码结果传输至所述解码端。3.根据权利要求2所述的系统,其特征在于,所述编码端包括:第一部署单元、第一输入单元、第一驱动单元、第一监听单元和第一对比单元;所述第一部署单元,用于根据用户操作部署至少一个编码模块;所述第一输入单元,用于从所述数据提供端获取所述编码数据;所述第一驱动单元,用于检测是否存在编码模块;若检测到至少一个编码模块,则将所述编码数据传输至所述至少一个编码模块;检测是否存在解码模块;若检测到至少一个解码模块,则将所述编码数据传输至所述对比端;所述第一监听单元,用于获取并传输所述至少一个编码模块编码所述编码数据得到的编码结果至所述数据提供端;所述第一对比单元,用于获取并对比不同编码模块编码所述编码数据得到的编码结果,并记录对比结果。4.根据权利要求3所述的系统,其特征在于,所述解码端包括:第二部署单元、第二输入单元、第二驱动单元、第二监听单元和第二对比单元;所述第二部署单元,用于根据用户操作部署至少一个解码模块;所述第二输入单元,用于从所述数据提供端获取任意编码结果;所述第二驱动单元,用于检测是否存在解码模块;若检测到至少一个解码模块,则将任意编码结果传输至所述至少一个解码模块;所述第二监听单元,用于获取并传输所述至少一个解码模块解码任意编码结果得到的解码结果至所述对比端;所述第二对比单元,用于获取并对比不同解码模块解码任意编码结果得到的解码结果,并记录对比结果。5.根据权利要求4所述的系统,其特征在于,所述第一驱动单元具体用于:检测编码模块的宏和/或解码模块的宏是否已开启;若检测到编码模块的宏和/或解码模块的宏已开启,则确定检测到编码模块和/或解码模块;否则,确定未检测到可用的编码模块和/或解码模块;相应地,所述第二驱动单元具体用于:检测解码模块的宏是否已开启;若检测到解码模块的宏已开启,则确定检测到解码模块;否则,确定未检测到可用的解码模块。6.根据权利要求1至5任一项所述的系统,其特征在于,任意编码模块和任意解码模块
基于c语言、perl语言、python语言、verilog语言和/或vhdl语言得到。7.根据权利要求1至5任一项所述的系统,其特征在于,还包括:定位端,用于获取不同解码模块解码任意编码结果得到的解码结果的对比结果、不同编码模块编码所述编码数据得到的编码结果的对比结果、和/或编码数据和任意解码结果的对比结果,并根据获取到的对比结果定位相应编码模块和/或相应解码模块中的问题。8.一种编解码验证方法,其特征在于,包括:获取编码数据;若检测到至少一个编码模块,则将所述编码数据传输至所述至少一个编码模块,并获取所述至少一个编码模块编码所述编码数据得到的编码结果;若检测到至少一个解码模块,则将任意编码结果传输至所述至少一个解码模块,并获取所述至少一个解码模块解码相应编码结果得到的解码结果;对比所述编码数据和任意解码结果,并记录对比结果。9.一种电子设备,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序,以实现如权利要求8所述的方法。10.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求8所述的方法。
技术总结
本申请公开了计算机技术领域内的一种编解码验证系统、方法、设备及可读存储介质。本申请提供的编解码验证系统能够使编码模块和解码模块独立运行,设计完成的编码模块或解码模块可以单独部署于该系统中,使得相应编码模块或解码模块在该系统内被单独调用来进行芯片验证工作,降低了芯片验证工作的滞后性,缩短芯片开发的整体时间。同时,该系统提供的对比端便于定位编码模块和/或解码模块中存在的设计漏洞。而且,该系统使编码模块和解码模块在同一环境中进行验证,可以实现相同测试数据在不同模块中的复用,由此简化了芯片验证流程,可节约验证所用的计算机资源。可节约验证所用的计算机资源。可节约验证所用的计算机资源。
技术研发人员:朱佳齐 杨崇朋 黄运新
受保护的技术使用者:深圳大普微电子科技有限公司
技术研发日:2023.06.28
技术公布日:2023/10/7
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
