一种提高芯片量产测试效率的方法与流程

文档序号:14174211阅读:760来源:国知局
一种提高芯片量产测试效率的方法与流程

本发明属于芯片测试的技术领域,特别涉及提高soc和mcu类芯片产测效率的方法。



背景技术:

芯片设计企业为了保证芯片到最终用户手中时,芯片各项功能、性能指标满足要求,通常会进行大量的测试验证。对于芯片设计企业,测试从大方向上可分为研发性测试和生产性测试,研发性测试周期一般在一至三个月之间,测试时会尽量覆盖到芯片每一项功能和性能指标,对测试时间不敏感。生产性测试对测试成本非常敏感,会兼顾测试成本和测试项,要求在最小成本下覆盖率尽可能高。

目前在生产测试中通用的测试方法主要有以下三种:1、利用芯片io口使能上拉时,输入电平为高的特性,让芯片检测到io口电平被拉低时,进入测试项,不同的io口关联不同的测试项,外部测试系统拉低相应io口电平,进入不同的测试项进行测试,如图1所示。2、利用芯片io口使能上拉时,输入电平为高的特性,使用两个io口输入状态组合,比如芯片设置a端口检测到下降沿时进入a测试项,在进入b测试项时,要求a测试项测试完成且b端口检测到下降沿,接着进入c测试项要求b测试项测试完成且a检测到下降沿,如此循环往复,如图2所示。3、仿照四线spi通信接口的形式,四个信号分别标记为sck,sda,dout和cmd,在开始通信前,芯片循环等待cmd信号拉低,检测到cmd下降沿后,开始接收8位数据,接收完8位数据后,拉高dout信号,然后芯片据接收到的数据选择不同的测试项,如图3所示。

方法一简单易用,但没有反馈机制,io口电平容易被影响,稳定性差,同时满足不了测试项很多,测试端口有限的情形。方法二解决了芯片io端口少的问题,但和方法1类似,稳定性差,且程序耦合性极强,验证和修改程序困难。方法三相对于前两种方法有很大改进,简单易用,耦合性低,扩展性强,但测试效率较低,因为测试系统需要占用四个io资源,如果芯片io资源偏少,测试项需要复用通信io口,则进入下次测试,需要重启芯片设置,测试成本上升,且其对输入的数据没有校验机制,稳定性差。



技术实现要素:

基于此,因此本发明的首要目地是提供一种提高芯片量产测试效率的方法,该方法能够最大程度上提升易用性和稳定性,降低耦合性,增强扩展性,从而降低测试工程师的开发难度,降低芯片生产测试成本。

本发明的另一个目地在于提供一种提高芯片量产测试效率的方法,该方法可以自由增减测试项,各测试项测试独立,相关测试项配置完成后,程序返回接收命令状态,不影响当前测试项测试进行,同时进入下一项测试只需要再次发送命令,节省测试时间,大大节约测试成本。

为实现上述目的,本发明的技术方案为:

一种提高芯片量产测试效率的方法,其特征在于该方法首先芯片上电初始化串口,循环等待接收命令,当接收到数据后,对数据进行异或校验,确保接收数据正确,然后对接收到的数据进行解析,区分命令是要配置寄存器还是进入测试项,如果是进入测试项,则把接收正确的数据当作地址送至pc指针,pc指针根据地址指向不同的测试项目,相应测试项目配置完成后,芯片再次循环等待接收命令,如果是进入寄存器配置,则向指定的地址写入数据,配置完成后,芯片进入循环等待接收命令。

进一步,所述方法,先初始化芯片,进行相关配置,如果芯片本身带有uart外设,则使用芯片自带的外设,如果没有,则用通用io口模拟uart。

更进一步,除了事先初始化串口外,还需要给需要测试的测试项分配不同的入口地址,入口地址的范围由芯片字长决定,一般芯片的字长最小8位,最多可以链接256个测试项。

更进一步,分配好入口地址后,就要进入不同的测试项进行设置,每个测试项单独写成一个文件,公共函数独立为一个文件,方便各个模块进行调用,寄存器配置也单独分配一个地址,作为一个单独文件,每个测试项配置完成后,返回到串口接收数据状态。

开始测试时,外部测试系统先发送数据0xa5,芯片接收到a5h后确认一帧数据开始传输,接着外部测试系统发送0x01或0x02,0x01代表选择测试项目,0x02代表配置寄存器,芯片接收到数据后进入不同的情形,等待接收选择测试项数值,如果是选择测试项目,芯片系统接着就只需要接收0xff和0xff与测试项数值异或的数据。如果是选择配置寄存器,则需要接收三个数据,分别是需要配置寄存器的地址、需要配置寄存器的值、以及寄存器地址和寄存器值异或的待校验数据。

更进一步,该方法的具体实现步骤为:

101、初始化串口;

102、接收数据,并判断是否接收到0xa5,如果是,则进行下一步,如果否则继续接收数据;

103、进一步判断是否接收到0x01或0x02,如果是,则进行下一步,如果否则继续该步骤;

104、判断接收的数据是0x01还是0x02,如果是0x01则转到105步骤,如果是0x02,则转到108步骤;

105、判断是否接收到测试项入口地址,如果是则进行下一步,如果否则继续该步骤;

106、判断是否接收到0xff,如果是则进行下一步,如果否则继续该步骤;

107、判断是否接收到异或的数据,如果是则进行112步骤,如果否则继续该步骤;

108、判断是否接收到寄存器配置项入口地址,如果是则进行下一步,如果否则继续该步骤;

109、判断是否接收到要配置的寄存器地址,如果是则进行下一步,如果否则继续该步骤;

110、判断是否接收到要配置的寄存器数据,如果是则进行下一步,如果否则继续该步骤;

111、判断是否接收到地址与数据异或的数据,如果是则进行下一步,如果否则继续该步骤;

112、芯片对接收的数据进行处理;

113、判断接收数据是否正确;

114、根据接收值选择不同的测试项目进行测试。

本发明增加了寄存器配置,一方面使得直接在上位机编写脚本发送指令控制芯片发生相关操作成为可能,完全不用事先写入大量的测试代码,对于存储空间非常小的芯片尤其有用。另外一方面,对于某项功能需要验证多种情形很有用,通过配置寄存器不同值选择不同情形,避免罗列过多测试项,耦合性也可以做到更低。

本发明采用串口uart选通不同的测试项,uart为异步通信总线,通过tx端口发送数据,通过rx端口接收数据,只需要芯片能正确接收数据,所以只需要占用一个rx管脚。绝大部分soc和mcu类芯片都有uart串口,一些没有串口外设的芯片,也可以通过io端口进行模拟,所以应用非常广泛。

因为不同的测试项是根据入口地址进行,所以可以自由增减测试项,各测试项测试独立,相关测试项配置完成后,程序返回接收命令状态,不影响当前测试项测试进行,同时进入下一项测试只需要再次发送命令,省去芯片重新上电,重新进测试项的时间耗费,大大节约测试成本。

附图说明

图1是现有技术所实施每个io口控制相应测试项的流程图。

图2是现有技术所实施两个io口循环控制相应测试项的流程图。

图3是现有技术所实施模拟spi口控制相应测试项的流程图。

图4是本发明所实施的工作流程图。

图5是本发明所实施的具体处理流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图4所示,为本发明所实现的工作流程,图中所示,芯片上电初始化串口,循环等待接收命令,当接收到数据后,对数据进行异或校验,确保接收数据正确,然后对接收到的数据进行解析,区分命令是要配置寄存器还是进入测试项,如果是进入测试项,则把接收正确的数据当作地址送至pc指针,pc指针根据地址指向不同的测试项目,相应测试项目配置完成后,芯片再次循环等待接收命令,如果是进入寄存器配置,则向指定的地址写入数据,配置完成后,芯片进入循环等待接收命令。

先初始化芯片,进行相关配置,如果芯片本身带有uart外设,则使用芯片自带的外设,如果没有,则用通用io口模拟uart,模拟uart的方法是现有技术,在此不作说明。为了测试时更灵活和节省测试时间,本发明增加了寄存器配置,一方面使得直接在上位机编写脚本发送指令控制芯片发生相关操作成为可能,完全不用事先写入大量的测试代码,对于存储空间非常小的芯片尤其有用。另外一方面,对于某项功能需要验证多种情形很有用,通过配置寄存器不同值选择不同情形,避免罗列过多测试项,耦合性也可以做到更低。

在正式进行测试前,除了事先初始化串口外,还需要给需要测试的测试项分配不同的入口地址,入口地址的范围由芯片字长决定,一般芯片的字长最小8位,最多可以链接256个测试项,远远满足芯片测试需求。分配好入口地址后,就要进入不同的测试项进行设置,每个测试项可以单独写成一个文件,一些公共函数可以独立为一个文件,方便各个模块进行调用,寄存器配置也单独分配一个地址,作为一个单独文件,每个测试项配置完成后,返回到串口接收数据状态。

测试时外部测试系统通过串口输入测试数据,芯片接收到数据后,把数据强制转化为地址,赋给pc指针,芯片根据不同的地址指向不同的测试项。芯片测试时通常会不可避免地收到多种干扰,为了尽可能降低通信错误的风险,硬件系统中pcb走线要尽可能短,增加电源稳定性等措施,这里主讲软件层面上的规避,开始测试时,外部测试系统先发送数据0xa5,芯片接收到a5h后确认一帧数据开始传输,接着外部测试系统发送0x01或0x02,0x01代表选择测试项目,0x02代表配置寄存器,芯片接收到数据后进入不同的情形,等待接收选择测试项数值,如果是选择测试项目,芯片系统接着就只需要接收0xff和0xff与测试项数值异或的数据。如果是选择配置寄存器,则需要接收三个数据,分别是需要配置寄存器的地址,需要配置寄存器的值,以及寄存器地址和寄存器值异或的待校验数据。当芯片对接收到的数据进行异或和接收到的校验数据不一致时,则进入异常测试处理,比如关掉系统的某项功能输出或通过io口电平高低切换进行告之等。外部测试系统检测到异常后,再次启动发送,如果仍然错误,则停止测试。测试流程如图5所示。

101、初始化串口;

102、接收数据,并判断是否接收到0xa5,如果是,则进行下一步,如果否则继续接收数据;

103、进一步判断是否接收到0x01或0x02,如果是,则进行下一步,如果否则继续该步骤;

104、判断接收的数据是0x01还是0x02,如果是0x01则转到105步骤,如果是0x02,则转到108步骤;

105、判断是否接收到测试项入口地址,如果是则进行下一步,如果否则继续该步骤;

106、判断是否接收到0xff,如果是则进行下一步,如果否则继续该步骤;

107、判断是否接收到异或的数据,如果是则进行112步骤,如果否则继续该步骤;

108、判断是否接收到寄存器配置项入口地址,如果是则进行下一步,如果否则继续该步骤;

109、判断是否接收到要配置的寄存器地址,如果是则进行下一步,如果否则继续该步骤;

110、判断是否接收到要配置的寄存器数据,如果是则进行下一步,如果否则继续该步骤;

111、判断是否接收到地址与数据异或的数据,如果是则进行下一步,如果否则继续该步骤;

112、芯片对接收的数据进行处理;

113、判断接收数据是否正确;

114、根据接收值选择不同的测试项目进行测试。

因此,本技术方案有如下几点特点:

1、芯片和测试系统通信只需占用一个pin脚,极大降低芯片资源消耗,应用领域广。

2、测试项目数量由pc指针地址宽度决定,远远满足芯片测试要求。

3、测试项耦合性低,增加删减测试项不会对其它测试项造成影响。

4、开发难度低,本发明结构重用性强,工程师开发测试程序时不需要考虑各测试项的顺序性和继承性,只需要着眼于单测试项的开发,大大缩短开发和调试时间。

5、增加校验机制,可靠性相对较高。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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