技术领域
[0001] 本申请涉及芯片测试技术领域,特别是涉及一种芯片测试板、芯片验证系统、芯片测试系统以及芯片测试方法。
相关背景技术
[0002] 自动化测试设备(ATE)可以是对器件、半导体薄片或模具等进行测试的任何测试组件。ATE组件可以用于执行自动化测试,自动化测试快速进行测量并且生成测试结果,然后测试结果可以被分析。ATE组件可以是从联接至计量器的计算机系统到复杂自动化测试组件的任何事物,可以包括定制的专用计算机控制系统和许多能够自动测试电子设备零件和/或半导体的不同测试仪器。自动测设设备(ATE)常用于电芯片制造领域。ATE系统既减少了花费在测试器件以确保器件按照设计的那样发挥功能上的时间量,又用作诊断工具以在给定器件到达消费者手中之前确定其内存在故障部件。
[0003] 然而,目前的自动化测试设备的方式需要专有测试环境,成本高。
具体实施方式
[0055] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0056] 本申请实施例提供的一种芯片测试系统,该芯片测试系统包括芯片验证系统、服务器以及至少一个开发终端;其中至少一个开发终端与服务器相通信,至少一个开发终端用于上传测试程序至服务器,服务器与芯片验证系统相通信,服务器用于测试程序进行处理,并将处理后的测试程序发送至芯片验证系统。
[0057] 具体地,结合图1所示,本地开发环境表示不同的开发者,不同的开发者在本地修改完自己的代码之后上传到服务器,服务器对代码进行处理最后生成测试代码传递给芯片验证系统。其中,服务器对代码的处理包括检查,编译,合并入库等,在此不做具体的限定。
[0058] 具体地,结合图2所示,图2为一个实施例中的芯片验证系统的示意图,在该实施例中,芯片验证系统包括测试主机和芯片测试板,测试主机和芯片测试板相通信,其中测试主机可以通过USB连接通信与调试电路,再接到测试主芯片。测试主机用于从服务器下载测试程序,芯片测试板用于从测试主机下载测试程序。
[0059] 此外,本申请中还可以引入jenkies集成工具与自动化脚本的结合,加上系统部署,可以实现开发人员即开发,即测试,即出报告的快速验证,例如jenkies主要做的开发者上传,然后通过脚本文件触发编译检查,后续测试主机通过指令将新代码更新到芯片测试板。
[0060] 可选地,至少一个开发终端以及测试主机可以为计算机设备,该计算机设备可以是终端。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、近场通信(Near Field Communication,NFC)或其他技术实现。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0061] 本领域技术人员可以理解,上述实施例中对于计算机设备结构的限定仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比上述实施例中的计算机设备存在更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0062] 具体地,结合图3所示,图3为一个实施例中的芯片测试板的示意图,在该实施例中,该芯片测试板包括待测芯片、socket插件、FPGA芯片、测试主芯片以及下载接口。
[0063] 其中待测芯片放置于socket插件,FPGA通过socket插件与待测芯片相连接;测试主芯片与测试主机通信,且通过FPGA芯片与待测芯片相连接,下载接口分别与FPGA芯片和待测芯片连接。
[0064] 可选地,测试主芯片复合了一个USB和UART接口,测试主机可以直接通过USB与测试主芯片通信以更新测试程序。
[0065] FPGA芯片主要作用是一个MUX芯片,通过编写代码,让测试主芯片的测试引脚可以直接连接到待测芯片,且FPGA芯片连接socket插件,从硬件上保证FPGA芯片可以连接不同的待测芯片;且FPGA芯片作为可编程阵列,可以根据不同的待测芯片,编写不同的测试代码;这两种的结合从软件和硬件上使得本芯片测试板适用于绝大部分的不同待测芯片的测试。
[0066] 下载接口是用于下载FPGA芯片和待测芯片的启动代码,FPGA芯片与待验证芯片均加入启动代码bootloader,使得可以从存储空间norflash启动。即FPGA芯片用于基于FPGA芯片的启动代码从存储空间norflash启动,以获取到FPGA芯片对应的测试程序,待测芯片用于基于待测芯片的启动代码存储空间norflash启动,获取到待测芯片的测试程序。
[0067] 这样测试主芯片、FPGA芯片以及待测芯片分别执行测试程序得到测试结果。其中FPGA芯片的测试程序主要是为了实现测试主芯片和待测芯片的通信,待测芯片的测试程序则是用于响应测试主芯片的测试指令。
[0068] 在其他的实施例中,该芯片测试板还可以包括其他的电路,例如时钟和电源电路。
[0069] 上述芯片测试板包括待测芯片、FPGA芯片以及测试主芯片,且FPGA芯片连接到socket插件,从而通过socket插件插入的不同待测芯片来达到自由切换待测芯片的目的,一套环境可以验证不同的芯片,节省成本,此外测试主芯片通过FPGA芯片与待测芯片相连接,且FPGA芯片与待测芯片均包括启动代码,从而FPGA芯片与待测芯片可以基于启动代码启动以获取到对应的测试程序,进而实现测试,FPGA芯片与待测芯片的启动和测试程序的更新分开,不需要额外配置环境等,节省成本。
[0070] 在其中一个可选的实施例中,芯片测试板还包括:存储模块,存储模块用于存储测试主机下载的测试程序,且存储模块包括FPGA芯片存储空间和待测芯片存储空间;FPGA芯片的启动代码用于控制FPGA芯片从FPGA芯片存储空间的第一启动空间启动,并从FPGA芯片存储空间的第一测试代码空间,获取到FPGA芯片对应的测试程序;待测芯片的启动代码用于控制待测芯片从待测芯片存储空间的第二启动空间启动,并从待测芯片存储空间的第二测试代码空间,获取到待测芯片对应的测试程序。
[0071] 结合图4所示,图4为一个实施例中的存储空间的分布图,该存储空间包括FPGA芯片存储空间和待测芯片存储空间;其中FPGA芯片存储空间包括第一启动空间和第一测试代码空间。待测芯片存储空间包括第二启动空间和第二测试代码空间。此外,该FPGA芯片存储空间和待测芯片存储空间还各自包括一些对应的校验区和更新区等,例如FPGA芯片存储空间还包括FPGA校验字节、FPGA启动代码的起始地址、FPGA启动代码所占长度、FPGA启动代码校验和、FPGA测试代码起始地址、FPGA测试代码所占长度、FPGA测试代码校验和、FPGA更新标志、FPGA保留区域。对应的待测芯片存储空间还包括待测芯片校验字节、待测芯片启动代码的起始地址、待测芯片启动代码所占长度、待测芯片启动代码校验和、待测芯片测试代码起始地址、待测芯片测试代码所占长度、待测芯片测试代码校验和、待测芯片更新标志、待测芯片保留区域等。
[0072] 其中更新标志用于表征测试主芯片是否更新了对应的FPGA测试程序或待测芯片测试程序,从而以便于FPGA芯片和待测芯片读取新的测试程序。
[0073] 本实施例中,FPGA的启动代码bootloader需要去抓取存储空间norflash的FPGA的第一测试代码空间的测试代码,来给FPGA芯片的测试代码升级。
[0074] 待测芯片的启动代码bootloader需要抓取存储空间norflash的待测芯片的第二测试代码空间的测试代码来给待测芯片的测试代码升级。
[0075] 上述实施例中,基于存储空间norflash的空间配置,使得无需每次都要用特定工具,例如j‑link等给FPGA芯片和待测芯片更新代码,节省时间。
[0076] 在其中一些可选的实施例中,测试主芯片和待测芯片不同的待测模块之间的通信测试协议相同,且测试协议包括写测试协议、读测试协议、配置测试协议以及测试开启测试协议中的至少一个。
[0077] 本申请中为了适用于不同的测试主芯片和待测芯片,对测试主芯片和待测芯片不同的待测模块之间的通信测试协议进行规定,测试主芯片和待测芯片不同的待测模块之间的通信测试协议都是相同的,用一个接口即可,区别在于开始的字节不同,例如UART或I2C,代表不同的待测模块。
[0078] 具体地,结合图5所示,图5为一个实施例中的通用测试指令设置的示意图,在该实施例中,不同的待测模块的通信测试协议是相同的,该待测模块包括UART、I2C、SPI、CAN、USB、GPIO、SAI、MDIO以及ETH等,每个测试模块均包括4种测试模式,该4种测试模式包括写测试模式、读测试模式、配置测试模式以及测试开启测试模式,分别对应写测试协议、读测试协议、配置测试协议以及测试开启测试协议。
[0079] 为了方便理解对测试协议进行举例说明,例如UART write 0 data:0表示通过UART0接口写数据0,CAN read 1 lens:8表示通过CAN1来读取长度为8的数据。
[0080] 上述实施例中,引入自定义的通信协议,使得所有测试项是统一接口,即使换芯片,也无需更新测试主芯片代码,兼容性更强。
[0081] 在一个示例性的实施例中,如图6所示,提供了一种芯片测试方法,以该方法应用于图3中的芯片测试板为例进行说明,包括以下步骤602至步骤606。其中:
[0082] S602:FPGA芯片基于FPGA芯片的启动代码读取FPGA芯片对应的测试程序。
[0083] FPGA芯片基于FPGA芯片的启动代码从存储空间启动,从而可以获取到FPGA芯片对应的测试程序,以便于后续的测试。
[0084] S604:待测芯片基于待测芯片的启动代码获取到待测芯片的测试程序。
[0085] 待测芯片基于待测芯片的启动代码从存储空间启动,从而可以获取到待测芯片对应的测试程序,以便于后续的测试。
[0086] S606:测试主芯片、FPGA芯片以及待测芯片分别执行测试程序得到测试结果。
[0087] 测试主芯片、FPGA芯片以及待测芯片分别执行测试程序得到测试结果。其中FPGA芯片的测试程序主要是为了实现测试主芯片和待测芯片的通信,待测芯片的测试程序则是用于响应测试主芯片的测试指令。
[0088] 上述芯片测试方法,该芯片测试板包括待测芯片、FPGA芯片以及测试主芯片,FPGA芯片连接socket插件,从而可以切换socket插件插入的待测芯片类型,一套环境可以验证不同的芯片,节省成本,此外测试主芯片通过FPGA芯片与待测芯片相连接,且FPGA芯片与待测芯片均包括启动代码,从而FPGA芯片与待测芯片可以基于启动代码启动以获取到对应的测试程序,进而实现测试,FPGA芯片与待测芯片的启动和测试程序的更新分开,不需要额外配置环境等,节省成本。
[0089] 在其中一个可选的实施例中,测试方法还包括:FPGA芯片通过下载接口下载FPGA芯片的启动代码;待测芯片用于通过下载接口下载待测芯片的启动代码;测试主芯片用于从测试主机下载测试程序。
[0090] 其中,在开始测试之前,先进行初始化,FPGA芯片和待测芯片通过下载接口下载得到对应的启动代码,且对应的启动代码存储在FPGA芯片和待测芯片的内部存储区中。测试主芯片通过USB从测试主机下载测试程序,并存储至存储空间,其中测试主芯片基于测试程序的类型,将测试程序分别存储至存储空间对应的部分中。
[0091] 在其中一个可选的实施例中,测试方法还包括:在测试主机确认测试程序存在更新的情况下,通过测试主机下载更新的测试程序,并将更新的测试程序下载在芯片测试板的存储空间;FPGA芯片基于FPGA芯片的启动代码读取FPGA芯片对应的测试程序之前,还包括:复位FPGA芯片;待测芯片基于待测芯片的启动代码获取到待测芯片的测试程序之前,还包括:复位待测芯片。
[0092] 其中,在测试过程中,测试主机确认测试程序存在更新,即服务器是否更新了库上的测试程序,具体的更新过程是,各个研发终端上传测试程序,Jenkins对代码进行编译,然后更新到库中,服务器在确认库上的测试程序更新后,发送更新的测试程序给测试主机,测试主机通过调试接口下发测试程序至测试主芯片,测试主芯片将测试程序存储至存储空间对应的位置。
[0093] 在其中一个可选的实施例中,将更新的测试程序下载在芯片测试板的存储空间,包括:在更新的测试程序为FPGA芯片的测试程序的情况下,将更新的测试程序存储至FPGA芯片存储空间;在更新的测试程序为待测芯片的测试程序的情况下,将更新的测试程序存储至待测芯片存储空间。具体的存储空间分布可以参见上图4,在此不再赘述。
[0094] 在测试程序存储完成后,复位FPGA芯片和/或待测芯片。其中在测试主芯片将测试程序存储至存储空间对应的位置后,若是FPGA芯片的测试程序更新了,则存储空间中对应的更新标志改变,若待测芯片的测试程序更新了,则存储空间中对应的更新标志改变。因此本实施例中,可以是每次都复位FPGA芯片和待测芯片,还可以是基于更新标志复位FPGA芯片或待测芯片。
[0095] 在其中一个可选的实施例中,测试主芯片、FPGA芯片以及待测芯片分别执行测试程序得到测试结果,包括:基于统一的通信测试协议以及测试程序,通过FPGA芯片实现测试主芯片和待测芯片之间的通信;基于通信数据得到测试结果。
[0096] 其中测试主芯片和待测芯片之间的通信可以基于统一的通信测试协议以及测试程序进行测试的。
[0097] 比如测试I2C从模式时,需要先发送指令给待测芯片,让待测芯片进入从模式,然后再发给指令给测试主芯片,让测试主芯片进入主模式,再发送指令给测试主芯片,让测试主芯片发送I2C数据,如果待测芯片接收到I2C数据,且接收到的数据和发送的数据相同,那么测试通过。其他模块也是类似测试步骤。
[0098] 为了方便理解,结合图7所示,图7为另一个实施例中的芯片测试方法的流程图,测试开始之前,进行初始化,FPGA芯片通过下载接口下载FPGA芯片的启动代码;待测芯片通过下载接口下载待测芯片的启动代码;测试主芯片从测试主机下载测试程序。
[0099] 测试主机判断测试代码是否更新,其中测试代码的更新是服务器是否更新了库上的测试程序,具体的更新过程是,各个研发终端上传测试程序,Jenkins对代码进行编译,然后更新到库中,服务器在确认库上的测试程序更新后,发送更新的测试程序给测试主机;测试主机确定测试程序更新后,测试主机通过调试接口下发测试程序至测试主芯片,测试主芯片将测试程序存储至存储空间对应的位置。
[0100] 复位FPGA芯片和待测芯片,以使得FPGA芯片和待测芯片能够从存储空间noflash里面抓取到更新的代码,并进入测试程序。
[0101] 然后开始测试,例如先测试I2C,再测试UART模块等等,直至所有待测模块均测试完成,生成测试报告,并将测试报告发送至相关测试开发人员的终端。
[0102] 应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0103] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性存储器和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(Resistive Random Access Memory,ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器、人工智能(Artificial Intelligence,AI)处理器等,不限于此。
[0104] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本申请记载的范围。
[0105] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。