SoC的测试代码烧写方法、IP测试方法及装置与流程

文档序号:17720763发布日期:2019-05-22 02:08阅读:611来源:国知局
SoC的测试代码烧写方法、IP测试方法及装置与流程

本发明涉及芯片测试技术领域,具体涉及一种soc芯片的测试代码烧写方法、ip测试方法及装置。



背景技术:

一般来说,片上系统(soc,systemonchip)将微处理器、模拟ip核、数字ip核和互联总线、存储器等(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品。在一些特殊的应用场景,芯片设计时没有设置测试模式(testmode),或者出于成本考虑,没有封装出一些关键管脚,不能在testmode下测试ip导致量产时芯片测试覆盖率不够。



技术实现要素:

为了解决芯片部分或者全部ip无法在testmode下测试导致量产时测试覆盖率低的技术问题,本发明实施例提供了一种soc芯片的测试代码烧写方法、ip测试方法及装置。

本申请提供了如下技术方案:

一种片上系统soc芯片的ip测试方法,包括:

soc芯片通过通用异步收发传输器uart接口获取来自测试平台的测试指令;

soc芯片通过bootcpu加载嵌入式多媒体卡emmc中的测试代码,调用所述测试指令相对应的ip测试用例并配置寄存器,完成ip测试;

其中,所述测试代码包含ip测试用例及其对应的测试指令。

一种片上系统soc的测试代码烧写方法,包括:

裁剪boot代码,将ip测试用例的代码添加到所述boot代码,并在所述boot代码中将预先设定的测试指令与所述ip测试用例相对应,得到测试代码;

编译所述测试代码,生成二进制文件;

利用预先编写的测试图形,通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的嵌入式多媒体卡emmc,所述测试图形包含预定义的组合信息,所述组合信息包含预定义的时序信息和电平信息。

其中,所述裁剪boot代码,将ip测试用例的代码添加到所述boot代码之前,还包括:预先配置用于soc芯片ip测试的测试指令集,所述测试指令集包含至少一个所述测试指令。

其中,所述方法还包括:生成用于将所述二进制文件烧写进所述测试平台的烧写程序;所述利用预先编写的测试图形,通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,包括:使用所述烧写程序并基于所述测试图形,通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc。

其中,所述方法还包括:在测试平台中建立基于uart协议的端口、定义时序信息和电平信息,基于所述端口、时序信息以及电平信息形成所述测试图形。

其中,所述通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,包括:通过通用异步收发传输器uart将所述二进制文件存储在iram中;再由所述uart向soc发送命令将所述二进制文件从iram中读取出来,烧写进emmc指定块。

其中,所述通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,包括:

利用c++读取镜像文件,按字节存储到向量vector中;

d2s模拟xmodem协议读取vector中的数据发送到uart_rxd,抓取uart_txd返回值判断数据发送是否正确,在所述uart_txd返回值正确时d2s发送指令将测试代码的文件烧写到emmc。

其中,所述通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,包括:

在xm指令下,选用xmodem协议发送数据到iram中;

在go指令下,完成从uart启动的二级boot;

在wm指令下,将所述iram中存储的数据写入emmc指定块中。

一种片上系统soc芯片的ip测试装置,包括:

获取模块,用于通过uart接口获取来自测试平台的测试指令;

测试模块,用于通过bootcpu加载嵌入式多媒体卡emmc中的测试代码,调用所述测试指令相对应的ip测试用例并配置寄存器,完成ip测试;

其中,所述测试代码包含ip测试用例及其对应的测试指令。

一种片上系统soc的测试代码烧写装置,包括:

生成模块,用于裁剪boot代码,将ip测试用例的代码添加到所述boot代码,并在所述boot代码中将预先设定的测试指令与所述ip测试用例相对应,得到测试代码;

编译模块,用于编译所述测试代码,生成二进制文件;

写模块,用于利用预先编写的测试图形,通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的嵌入式多媒体卡emmc,所述测试图形包含预定义的组合信息,所述组合信息包含预定义的时序信息和电平信息。

一种片上系统soc芯片,包括:

ip模块;

存储有ip测试程序的存储器;

处理器,配置为执行所述ip测试程序以执行上述soc芯片的ip测试方法的操作。

一种片上系统soc的测试代码烧写装置,包括:

存储有测试代码烧写程序的存储器;

处理器,配置为执行所述测试代码烧写程序以执行上述soc芯片的测试代码烧写方法的操作。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述soc芯片的ip测试方法的步骤。

另一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述soc的测试代码烧写方法的步骤。

一方面,通过本发明实施例,可以测试testmode下无法覆盖到的ip,解决测试覆盖率不够的问题;

另一方面,采用烧写测试代码的方式还可避免代码升级维护不方便的问题,简化了代码升级的过程,节约了升级测试代码的时间。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本申请技术方案的应用环境示例性结构示意图;

图2为实施例一soc的测试代码烧写方法流程示意图;

图3为实施例一soc的测试代码烧写装置的结构示意图;

图4为实施例一soc的测试代码烧写方法的示例性实现流程示意图;

图5为实施例一在93k测试平台建立testflow烧写测试代码示例图;

图6为实施例二soc芯片的ip测试方法的流程示意图;

图7为socip测试的示例性流程示意图;

图8为hdmi测试高频和低频测试项以及group划分示例图;

图9为向efuse中烧写chipid的示例性流程示意图;

图10为实施例二soc芯片的ip测试装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

为了解决芯片部分或者全部ip无法在testmode下测试,量产时测试覆盖率低的问题,本申请提出如下技术方案,该技术方案以cpuboot的方式来测试ip,即以cpuboot的方式调用测试用例来执行ip测试。此外,本申请还提供另一种技术方案,该技术方案是将测试代码转换为93k识别的测试图形(pattern),通过d2s模拟xmodem协议将测试代码烧写进emmc,以便测试ip时可直接调用相应的测试用例。

如图1所示,为本申请技术方案的应用环境示例性结构。该示例性应用环境中,采用93k测试平台。93k测试平台与soc之间通过通用异步收发传输器(uart,universalasynchronousreceiver/transmitter)接口进行通信。soc与emmc之间通过sdio通信。其中,93k测试平台上模拟uart协议将预先定义的测试指令转化为pattern加载到相应的通用异步收发传输器(uart,universalasynchronousreceiver/transmitter)接口上,实现93k测试平台与soc之间的通信。93k测试平台将测试代码的二进制(bin)文件烧写进嵌入式多媒体卡(emmc,embeddedmultimediacard),soc根据93k测试平台的测试指令,通过bootcpu调用emmc中测试代码的bin文件内相应的ip测试用例配置寄存器实现ip的量产测试,从而极大的减少了人工操作,简化测试代码的升级过程。

图1仅为示例性结构。实际应用中,本申请技术方案的应用环境还可以采用其他架构。比如,可采用93k测试平台之外其他支持socip测试的设备,emmc也可以通过其他存储器代替。93k测试平台与soc之间的通信接口、以及soc与emmc之间的通信接口也可以采用其他类型。

本申请中,soc中集成的各种功能模块包括工业中被称为知识产权(ip)内核、ip内核模块或简称为ip的功能模块。本文中,这些功能模块被称为ip模块或简称为“ip”。一个ip模块服务一种或多种专用功能,包括从各供应商获得许可的或内部开发的现有电路设计模块。

下面对本申请技术方案的实现方式进行详细说明。

实施例一

一种soc的测试代码烧写方法,如图2所示,可以包括:

步骤201,裁剪boot代码,将ip测试用例的代码添加到所述boot代码,并在所述boot代码中将预先设定的测试指令与所述ip测试用例相对应,得到测试代码;

步骤202,编译所述测试代码,生成二进制文件;

步骤203,利用预先编写的测试图形,通过动态到静态结构(dynamictostatic,d2s)模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,所述测试图形可以包含预定义的组合信息,所述组合信息包含预定义的时序信息和电平信息。

本实施例中,所述裁剪boot代码,将ip测试用例的代码添加到所述boot代码之前,还可以包括:预先配置用于soc芯片ip测试的测试指令集,所述测试指令集包含至少一个所述测试指令。

本实施例中,将测试代码编译生成二进制bin文件,可以包括:建立编译环境,按需求选择编译选项,编译生成二进制bin文件;

一种实现方式中,所述方法还可以包括:生成用于将所述二进制文件烧写进所述测试平台的烧写程序;所述利用预先编写的测试图形,通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,包括:使用所述烧写程序并基于所述测试图形,通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc。

一种实现方式中,所述方法还可以包括:在测试平台中建立基于uart协议的端口、定义时序信息和电平信息,基于所述端口、时序信息以及电平信息形成所述测试图形。比如,在93k测试平台中建立端口(port)、定义时序(timing)和电平(level)信息、编写测试图形(pattern)和相关的测试代码(testmethod)。再比如,可以建立基于uart协议的port、timing、level、d2s模板和相关的testmethod;

一种实现方式中,所述通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,包括:通过通用异步收发传输器uart将所述二进制文件存储在iram中;再由所述uart向soc发送命令将所述二进制文件从iram中读取出来,烧写进emmc指定块。

一种实现方式中,所述通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,包括:利用c++读取镜像文件,按字节存储到向量vector中;d2s模拟xmodem协议读取vector中的数据发送到uart_rxd,抓取uart_txd返回值判断数据发送是否正确,在所述uart_txd返回值正确时d2s发送指令将测试代码的文件烧写到emmc。

一种实现方式中,所述通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,包括:在xm指令下,选用xmodem协议发送数据到iram中;在go指令下,完成从uart启动的二级boot;在wm指令下,将所述iram中存储的数据写入emmc指定块中。

比如,本实施例的上述方法实现过程可以是:第一步,裁剪boot代码,添加ip测试用得到测试代码;第二步,编译第一步得到的测试代码,生成二进制bin文件;第三步,在测试平台定义端口、时序、电平信息,编写测试图形和测试平台下的测试代码;第四步,在测试平台通过d2s模拟xmodem协议将第二步生成的二进制bin文件烧写到emmc中,烧写二进制bin文件(bin文件内容为二进制“0”和“1”的组合),此步骤需要知道通过哪种接口烧写(第三步定义端口),烧写的二进制的“0”和“1”的电平大小(比如,是1.8v代表“1”还是3.3v代表“1”),烧写的二进制的“0”和“1”持续的时间(第三步定义的时序),以及通过什么协议将“0”和“1”传送给soc(即,第三步在测试平台下编写代码模拟xmodem协议)。第三步是在测试平台上做好烧写的准备工作,第四步是在测试平台模拟烧写bin文件的过程。

相应的,还提供一种soc的测试代码烧写装置,如图3所示,可以包括:

生成模块31,用于裁剪boot代码,将ip测试用例的代码添加到所述boot代码,并在所述boot代码中将预先设定的测试指令与所述ip测试用例相对应,得到测试代码;

编译模块32,用于编译所述测试代码,生成二进制文件;

写模块33,用于利用预先编写的测试图形,通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,所述测试图形包含预定义的组合信息,所述组合信息包含预定义的时序信息和电平信息。

一种实现方式中,上述测试代码烧写装置中还可以包括:配置模块34,可用于在所述裁剪boot代码,将ip测试用例的代码添加到所述boot代码之前,预先配置用于soc芯片ip测试的测试指令集,所述测试指令集包含至少一个所述测试指令。

一种实现方式中,所述写模块33,具体可用于生成用于将所述二进制文件烧写进所述测试平台的烧写程序;使用所述烧写程序并基于所述测试图形,通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc。

一种实现方式中,上述写模块33,还可以用于在测试平台中建立基于uart协议的端口、定义时序信息和电平信息,基于所述端口、时序信息以及电平信息形成所述测试图形。

一种实现方式中,上述写模块33用于所述通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,可以包括:通过uart将所述二进制文件存储在iram中;再由所述uart向soc发送命令将所述二进制文件从iram中读取出来,烧写进emmc指定块。

一种实现方式中,上述写模块33用于通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,可以包括:利用c++读取镜像文件,按字节存储到向量vector中;d2s模拟xmodem协议读取vector中的数据发送到uart_rxd,抓取uart_txd返回值判断数据发送是否正确,在所述uart_txd返回值正确时d2s发送指令将测试代码的文件烧写到emmc。

一种实现方式中,上述写模块33用于通过d2s模拟xmodem协议将所述二进制文件写进所述测试平台的emmc,可以包括:在xm指令下,选用xmodem协议发送数据到iram中;在go指令下,完成从uart启动的二级boot;在wm指令下,将所述iram中存储的数据写入emmc指定块中。

实际应用中,上述soc的测试代码烧写装置中,生成模块31、编译模块32、写模块33、配置模块34分别可以是软件、硬件或两者的结合。

相应的,还提供一种片上系统soc的测试代码烧写装置,包括:存储有测试代码烧写程序的存储器;处理器,配置为执行所述测试代码烧写程序以执行上述方法的操作。

下面以93k测试平台为例详细说明本实施例的实现流程。

如图4所示,应用于93k测试平台的测试代码烧写流程可以包括:

步骤401,接通电源,给soc上电;

步骤402,根据需要,切换relay状态;

步骤403,运行boot需要的pattern,进入一级boot;

步骤404,向bootrom发送指令,选择以xmodem协议传输数据到iram中,将测试代码存储在iram;

步骤405,向bootrom发送指令,完成二级boot;

步骤406,向bootrom发送指令,将存储在iram中的测试代码写入emmc指定块中。

本实施例中,在93k测试平台中建立测试testflow以模拟手动烧写的过程可以是:用c++读取镜像文件,按字节存储到vector中,d2s模拟xmodem协议发送数据到uart_rxd,通过测试平台的digitalcapture抓取uart_txd返回值判断数据发送是否正确,最后d2s发送指令将测试代码文件烧写到emmc。

本实施例中,采用uart+emmc的方式,先通过uart启动,将测试代码存储在iram中,再将测试代码从iram中读取出来,烧写进emmc指定块中,通过建立烧写flow,只需要更新测试代码的二进制bin文件(测试代码经过编译后生成的文件),再运行烧写flow即可将新的测试代码烧写到emmc中,大大简化了升级过程,不仅操作简单,而且不需要借助辅助工具,方便测试代码在测试厂的更新升级。

如图5所示,为93k测试平台建立的testflow示例图。其中,xm_bootrom是向bootrom发送xm指令,准备发送数据;xmodem_bootrom是选用xmodem协议发送数据到iram中;go指令完成从uart启动的二级boot;wm指令将iram中存储的数据写入emmc指定块中。

本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述soc的测试代码烧写方法的步骤。具体来讲,所述计算机程序被处理器执行时实现所述soc的测试代码烧写方法的步骤201~步骤203,其他细节可参照上文方法的部分。

实施例二

本实施例提供一种soc芯片的ip测试方法,如图6所示,可以包括:

步骤601,soc芯片通过uart接口获取来自测试平台的测试指令;

步骤602,soc芯片通过bootcpu加载emmc中的测试代码,调用所述测试指令相对应的ip测试用例并配置寄存器,完成ip测试;

其中,所述测试代码包含ip测试用例及其对应的测试指令。

一种实现方式中,上述soc芯片的ip测试方法的示例性实施流程,如图7所示,可以包括:

步骤701,定义测试的指令集,不同的指令对应不同的ip测试项,测试时发送指令给soc即可调用不同的测试用例。

比如,以高清晰度多媒体接口(hdmi,highdefinitionmultimediainterface)为例,定义thh、thl、thsp三个指令,分别对应高频测试、低频测试和停止测试三个测试项。

步骤702,裁剪cpuboot代码,去掉不需要的部分,保留最小的启动代码,将ip测试的用例代码添加进去,并在boot代码中把测试指令和ip测试用例对应起来。

步骤703,以上准备工作都完成后,需要确认裸片boot需要的条件(比如,裸片boot需要用到的pin以及pin的状态),同时在93k测试平台中建立相应的端口(port)、测试图形(pattern)、时序(timing)、电平(level)文件;

需要说明的是,本实施例中建立了三个端口(port),分别是pboot、puart_write、puart_read;其中pboot包含了boot需要的pin,puart_write只有uart发送端(uart_txd)这个pin用于接收外部测试指令,puart_read只有uart接收端(uart_rxd)这个pin用于向外部打印信息。在其他实施方式中,还可以根据需要建立其他的port,本实施例所述port的建立仅为示例性参考。

步骤704,编写测试用到的测试代码(testmethod)。

本实施例中,所有测试指令都是通过uart接口发送到soc中去,同时测试代码的烧写也是通过uart接口实现的,因此需要用d2s模拟uart协议实现93k与soc之间的交互。

步骤705,建立测试集(testsuit)和测试流程(testflow)。

步骤706,进行ip测试。

步骤707,烧写efuse。

需要说明的是,testmethod是用c++编写的测试代码;testsuite是把testmethod/timing/level/pattern组合到一起来测试某项指标;testflow是testsuit的集合,包含了所有测试项。本实施例中,可以根据需求为不同的ip建立相应的测试项,划分group,建立testflow,注意relay的切换和电源供电以及相应的testmethod的选择,如图8所示,为hdmi测试高频和低频测试项以及group划分示例图。其中:hdmi_high_freq_relay_switch/hdmi_low_freq_relay_switch是测试hdmi时需要用到的relay状态的切换;hdmi_high_freq_d2s_uart_write/hdmi_low_freq_d2s_uart_write是d2s模拟uart向soc发送指令,调用hdmi测试项对应的测试用例开始配置寄存器;wait_hdmi_high_freq/wait_hdmi_low_freq是等待一段时间,配置完寄存器到产生输出波形需要等待一段时间;hdmi_high_freq_cap_9g/hdmi_low_freq_cap_ps1600是在等待一段时间后用digitalcapture抓取输出波形进行计算,并对计算结果进行pass/fail的判断;hdmi_high_freq_stop/hdmi_low_freq_stop是停止测试,待结果判断完成之后停止调用hdmi测试用例配置寄存器,完成对hdmi的测试。

一种实现方式中,在向efuse中烧写信息时,需要用digitalcapture抓取从uart打印出来的信息,根据uart协议的特点,编写testmethod提取信息进行相应的处理,判断是否烧写正确。例如,将chipid信息烧写到efuse中预先分配的寄存器后,再通过uart将读取到的寄存器的值打印出来,93k测试平台抓取uart返回值,提取出chipid信息与写入的值比较,以此来判断写入的chipid值是否正确。

如图9所示,向efuse中烧写chipid时判断烧写是否正确的流程可以包括:

步骤901,从服务器获取chipid;

步骤902,通过uart接口发送chipid到soc;

步骤903,将chipid写入efuse寄存器;

步骤904,向soc发送指令,读取efuse寄存器中存储的chipid;

步骤905,soc通过uart接口输出chipid;

步骤906,解析uart接口返回的chipid;

步骤907,uart接口返回的chipid与写入efuse的chipid是否相同,跳转至步骤908或步骤909;

步骤908,chipid所对应的测试项烧写正确。

步骤909,chipid所对应的测试项烧写失败。

本实施例提供一种soc芯片的ip测试装置,如图10所示,可以包括:

获取模块101,用于通过uart接口获取来自测试平台的测试指令;

测试模块102,用于通过bootcpu加载嵌入式多媒体卡emmc中的测试代码,调用所述测试指令相对应的ip测试用例并配置寄存器,完成ip测试;

其中,所述测试代码包含ip测试用例及其对应的测试指令。

本实施例提供一种片上系统soc芯片,包括:ip模块;存储有ip测试程序的存储器;处理器,配置为执行所述ip测试程序以执行上述方法的操作。

本实施例中,利用“ip可以在functionmode下通过配置寄存器来测试”特性,soc通过bootcpu调用emmc中相应的ip测试用例配置寄存器实现ip的量产测试,解决了在testmode下无法对ip测试的问题,提高了测试覆盖率。

本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述soc芯片的ip测试方法的步骤。具体来讲,所述计算机程序被处理器执行时实现所述soc芯片的ip测试方法的步骤601~步骤602,其他细节可参照上文方法的部分。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本申请不限制于任何特定形式的硬件和软件的结合。

以上显示和描述了本申请的基本原理和主要特征和本申请的优点。本申请不受上述实施例的限制,上述实施例和说明书中描述的只是说明本申请的原理,在不脱离本申请精神和范围的前提下,本申请还会有各种变化和改进,这些变化和改进都落入要求保护的本申请范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1