诊断之美-芯片验证流程

来源:互联网 发布:淘宝娜拉nala有假货吗 编辑:程序博客网 时间:2024/04/30 14:40

我已经写下了芯片验证的方法,在此把流程和一些琐碎的细节记录下来.

芯片流片前

需要收集的信息:

项目经理,芯片集成负责人,每个模块软硬IP的负责人,IO的信号完整性仿真负责人,主板设计负责人.软件负责人/模块负责人,FPGA仿真器负责人/模块负责人,芯片验证的总负责人/模块负责人, 验证软件的负责人/模块负责人,工厂测试开发负责人/模块负责人,上电调试负责人,设计/验证/调试会议的召开人

芯片的项目进程(设计结束日期,仿真器上线,流片日期,芯片到手日期,验证结束日期,第二/三次流片日期,相应的验证日期,软件递归测试起始中止日期,最终产品提交日期)

需要做的事情

准备所有的模块测试代码和系统,包括逻辑层和模拟层,逻辑层在仿真器上通过.

在仿真器上运行sdk的操作系统及驱动.

收集所有主板的信息,哪些是给参考板,哪些是验证板.检查所有模块的连接和设计,并提交给设计者以供改进.验证板上必须留有可供连接示波器的测试点.留好逻辑分析仪和时钟信号监察管脚.了解工厂可以给哪些skew.告知项目管理者需要多少块验证板和芯片.确定好什么时候能拿到.

制定测试计划,定期召开会议,邀请芯片模块和主板设计者共同讨论.

写出每个芯片模块的新逻辑功能,是不是使用了全新的设计,还是只是做改进.如果全新设计,是不是有别的部门做好了测试软件,需不需要移植.如果没人做,那要估计自己开发需要多久,需要针对哪些重要特性,是不是值得做等等.

了解芯片的构架(包括中断,时钟,电源,上电次序,重置次序等),对于子模块,重点了解其时钟和电源连接.了解输入输出模块的物理层访问方式和电气层重要参数以及调整方法.了解能独立的打开和关闭模块所需的步骤.最好是能够在bios都没法完整运行时候就能调试的代码.

整理芯片各模块以前的所有的问题,并写入测试计划,看看继承以前设计的模块是不是还存在这些问题.
准备一些小程序或者脚本用于定位和调试模块的基本功能.准备好把芯片内部时钟,电压和关键信号连接到示波器上的程序.准备好测量信号时所需的仪器和设备.

准备自动化测试环境脚本和测试计划,写下所有流程以供人执行.

 

拿到芯片后

这个阶段最重要的事情就是上电.一般会有资深的工程师负责调试,把芯片跑到比较稳定的阶段.然后各个模块的负责人就开始跑预先准备好的基本功能的测试,看看哪里出了问题.出了问题就要调试.调试的时候,最好芯片模块设计者就在一边,如果不在,那出了问题的时候也需要找过来一起讨论.其中肯定要使用以前准备好的调试代码和仪器.

调试基本通过后,需要用不同的芯片skew,温度,电压来反复跑测试,调整物理层参数.这个阶段也比较容易发现问题.

每天更新进度,召开必要的会议,让所有人都知道进度.

如果发现了缺陷,向芯片设计者提供所有资料并记录到系统.以备日后跟踪.这个过程最好在新的设计改动送到工厂流片以前完成.如果没有时间,那需要做个危险评估,看是不是缺陷很严重,需要延迟送到工厂流片.

在这个阶段,软件组同时跑他们的操作系统,驱动和软件.大家需要协同工作解决问题.

等新的改动后的芯片拿到后,重复以上过程.其中没有改动过的模块可以不测或者少测.改动过的地方一定要重点重测.

在反复测试基本没问题后,软件那边也会长时间的跑软件测试.稳定以后就可以发布了.


经验和心得:

时钟,电源,新设计的模块,或者高速模块的物理层是最容易出问题的地方.改动过的模块也容易出问题.有些低速模块和协议,虽然是很老的设计了,但是由于需要做一定的功能定制,或者一个设计者负责很多小模块等因素,也同样容易出问题.

在调试的时候,经常会遇到一个问题一开始能经常复现,然后过了一天,同样的配置,突然会得到完全不同的结果.这就提醒我们要非常注意记录发现问题的环境因素.这些因素包括:

主板版本号,主板返工号,芯片版本号,芯片熔丝号,芯片skew号,仿真器版本号,操作系统环境版本号,BIOS版本号,温度,电压大小,测试软件版本.相关的还有主板线路图版本,布线图版本,模块物理层配置参数,示波器型号,示波器探头型号,分析仪型号,夹具类型等.还有,发现问题的时候,千万不要轻易的下结论,而是要尽量多变换一些环境因素,如电压,温度,多换几个芯片和主板,看看哪些因素会影响结果.还有,说一个配置有问题容易,但是如果说没问题,那必须要跑稳定的测试相当长一段时间,比如几十分钟才可以确信.尤其是不容易复现的问题,不是跑个几秒钟没问题就可以的.

原创粉丝点击