基于物联网高安全MCU芯片的回样验证

2022-09-26 07:28沈志春农凯政刘心舸吴欣延
数字通信世界 2022年8期
关键词:寄存器总线可靠性

沈志春,夏 玥,农凯政,刘心舸,吴欣延

(珠海晶通科技有限公司,广东 珠海 519000)

1 芯片开发的流程

如图1所示,在IC研发流程中,验证应在开发阶段之后发布阶段之前结束,因为在开发阶段完成后可以尽可能还原芯片真实使用场景,达到充分验证芯片功能的目的,此时的修改和调整都比较容易,可以确保各个功能模块的可靠性和稳定性,能够提高芯片的整体性能。同时也可以在此阶段进行预售演示给客户看,从而节省大量成本[1]。

图1 芯片开发流程图

芯片开发总体流程划分为以下4个阶段。

1.1 计划阶段

以MCU芯片为案例,我们需要根据客户需求制定MCU芯片的《项目需求表》并与研发部一起进行项目评估,确保项目需求完整、准确和明晰。项目评估之后由立项建议小组和立项评审小组进行项目评审,记录立项评审论证、立项评审小组意见和结论,并输出《项目评审报告》。如果通过则召开立项会议并输出《立项报告》,主要涉及内容包括:立项目的、项目研发背景、项目研发目标、项目技术方案、创新点、主要达成技术指标、经济指标、经费概算、项目组主要研发人员及职责、项目研发工作进度安排、预期研发成果、确定工艺、是否多项目流片MPW及时间点、工程片及流片时间等。依据MCU芯片的各模块功能或其相关的协议标准,评审各个模块特征功能描述是否合理、是否符合客户要求的规格、其MCU内部工作流程或者状态机是否合理、芯片内部寄存器等技术关键点是否表达正确、是否达到业界标准。

1.2 开发阶段

研发人员根据计划阶段所输出的MCU芯片的《项目需求表》确定芯片的整体架构,根据MCU芯片的《逻辑需求说明》明确设计规则,明确功能特点,明确MCU芯片接口时序关系。架构师设计出整体结构图并对每部分简要描述,简述前后模块关系,简述子模块划分原则及功能,从整体结构及处理过程分析是否可以低功耗设计,考虑模块是否可以复用。数字前端工程师根据详细设计说明编写代码并验证通过,用设计编译器(Design Complier)将代码编译成电路网表,然后再用物理实现工具,如ICC工具,对芯片的电路网表按照相关要求进行布局布线PR(Place Route)设计。模拟电路工程师根据设计要求设计相关的模拟电路,然后再进行模拟版图设计,最后进行芯片整个顶层的集成,验证通过后便完成芯片的设计[2]。

1.3 验证阶段

依据spec,从功能、性能、可靠性方面编写验证方案,确定测试场景,保证验证覆盖率满足要求,并组织相关设计人员进行评审。然后再编写验证代码,设计验证电路,完成验证方案所有验证项目。发现bug及时向设计人员反馈,并与设计人员共同查找bug,评估bug影响范围,最后整理验证报告,发出评审。在这里我们特意以控制器与I²C总线之间的数据传输为案例。根据项目的详细功能特性表提取的功能点如下:兼容主模式和从模式;自动结束模式(主模式);软件结束模式(主模式);主模式发送重复起始位,从模式识别重复起始位;字节重载模式;允许时钟延长(从模式);不允许时钟延长(从模式);字节控制模式(从模式);发送数据功能和接收数据功能;主时钟生成功能;从时钟延长功能;时序寄存器中配置的各种时间计数器;起始位与停止位的时序约束;可调节滤波脉冲宽度的数字滤波器功能;仲裁功能;几种错误模式(上溢/下溢、仲裁失败、总线错误);寄存器读写测试;各种中断事件。以上就是本次提取到的所有功能点,后续搭建的所有的测试用例都会以上述的功能点为基础。搭建测试用例的目标就是覆盖上述所有的功能点并让试图全部验证通过这些功能点。

1.4 发布阶段

发布阶段主要包括两方面。一方面解决芯片生产过程中出现良率低及测试不稳定问题,例如,测试过程中如果发现良率低于目标值则需要找出原因并分析改进,优化其设计;如果测试过程不稳定,则查找原因,检查是否是测试程序或者测试平台有问题,是否是生产芯片工艺有问题,是否是芯片中本身设计或者IP有问题等。

另一方面解决客户坏片问题,分析应用过程中出现的问题。如果在给客户试用的芯片中出现坏片问题和应用过程中出现问题,技术支持人员应现场提供技术支持,找出问题:是否是芯片本身有问题,或者是客户由于使用不当等引起的问题。如果没有以上的问题,芯片可以发布量产上市。

2 芯片回样验证的内容

为了进一步说明验证芯片可靠性,为应用场景提供技术指导,为此,本文从以下几个方面对芯片验证内容加以说明。

(1)寄存器验证。寄存器验证主要验证相关模块所分配寄存器默认值是否正确,读写功能是否正常等。以本项目I²C总线从机寻址为例:根据I²C总线的地址(Addressing)寄存器状态,从机可以支持7位(bit)或者10位(bit)寻址过程,从机地址由Addressing寄存器定义,对于10bit从机地址应用,即Addressing=1的情况下,要求第一字节必须以11110开头;而在Addressing=0的情况下,如果从机收到了11110开头的地址字节,也会置位ADDR_ERROR错误标志。

(2)功能验证。功能验证主要依据模块详细设计书所列功能,编写相应代码,配置相关寄存器,验证相关功能(包括时钟选择、复位、中断等)是否正常。以I²C从机接收数据这一功能为例:从机接收到地址字节(R/W=0),回发ACK,产生地址匹配中断;由于R/W=0,硬件自动进行SCL延展,从机保持接收状态;软件响应中断,查询R/W标志,确认是从机接收;软件读SSPBUF,硬件自动释放SCL,开始接收数据;主机数据字节到来,字节接收完成后硬件置位BF标志;从机回发ACK,并产生接收完成中断;硬件自动进行SCL延展(SCLSEN=1);软件响应中断,读取SSPBUF,硬件自动清零BF标志;硬件自动释放SCL;重复数据接收过程直到接收到STOP时序,或者软件将ACKEN置0。

(3)性能验证。性能验证主要是验证芯片性能是否满足规格要求,或者信号质量、时序是否符合协议要求,确定在特定场景条件下,相关模块所达到最高性能,比如,I²C接口访问从设备时钟频率是否满足400 kHz,电气特性是否满足相关协议要求等。相关案例见第4节回样验证案例参考中的I²C性能验证。

(4)可靠性验证,包括高温工作寿命(HTOL)。一是发现产品中可能比较容易出现故障的零部件,以确定影响产品周期和质量的重要原因和需要采取的保障性措施;二是验证产品在设定环境下的使用周期是否达到规格规定的要求;三是环境适应性验证,芯片在使用寿命期间对环境条件的容忍能力。相关案例见第4节回样验证案例参考中的I²C可靠性验证。本项目最大的创新点就是按照芯片在消费级、商业级、工业级等不同应用场景环境下进行可靠性验证,提高了芯片验证和应用的一致性和可靠性。因充分老化验证提前发现芯片隐藏的问题而提高了产品的良率,避免了产品上市后发现问题而带来的麻烦,节约了成本。

(5)验证反馈。总结上述验证结果,如果有bug,列出各模块bug等级,与相关人员评估是否影响应用,是否能通过软件规避,是否满足IC规格要求,是否需要改版以解决当前bug,并给出相关模块量产规格,最后整理验证报告,发出评审。

各模块bug等级分类参考:A级为致命问题,IC关键规格指标不达标,通过应用无法解决不达标问题,导致IC无法批量进行生产;B级为严重问题,IC关键规格指标不达标,可以通过应用弥补,对产品的功能、性能、良率等造成较大影响;C级为一般问题,IC规格指标不达标,可以通过应用弥补,对产品的功能、性能、良率等造成轻微影响;D级为轻微问题,与设计目标不符,可以通过应用弥补,但对产品的功能、性能、良率等无影响。通过以上等级分类归类问题,可以很快速地对芯片成品进行分类以及调整修改。

3 芯片回样验证的目标要求

回样验证的总体要求就是在尽量模拟客户的实际使用场景中,芯片依然能够工作正常。而实际使用场景有:炼钢厂环境下的高温环境,海上作业的钻井平台所处的高湿度、强腐蚀性的环境,煤矿井下作业的强震动、需要防爆防静电等特殊的场景。不同应用场景中回样验证的内容和要求就有所区别,而一般的验证流程主要包括如何验证芯片各模块功能、性能是否满足预期设计要求。本项目的MCU验证流程不但验证芯片各个模块的功能、性能,而且还验证在特殊环境中芯片的可靠性,保证芯片验证和实际应用的一致性和芯片的稳定性。

4 芯片回样验证案例参考

为了模拟客户的实际使用场景,同时为了更加清楚地表述上文中提出的5个回样验证的内容,为此,本文从I²C接口验证案例里面分享芯片回样验证的可靠性和安全性相关内容。

I²C总线在物理连接上非常简单,其在图2中分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I²C总线协议所需要的信号进行数据传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。

图2 I²C总线物理拓扑图

I²C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(可以从I²C器件的数据手册得知),主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把CPU带I²C总线接口的模块作为主设备,把挂接在总线上的其他设备都作为从设备。主设备可以向从设备中写数据,也可从从设备中读数据,如图3所示,主设备向从设备中写数据,然后重启起始条件,紧接着从从设备中读取数据;或者是主设备从从设备中读数据,然后重启起始条件,紧接着主设备向从设备中写数据。I²C总线数据传输速率在标准模式下可达100 kbps,快速模式下可达400 kbps,高速模式下可达3.4 Mbps。同时I²C总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传输。

图3 主从设备读写数据图

I²C功能验证:在Master模式下启动I²C,通过I²C对eeprom芯片进行读写测试,对比读写数据完全一致,表明功能验证通过。

I²C性能验证:如表1所示,通过分别设置I²C时钟频率为100 kHz和400 kHz,对芯片进行读写测试,用示波器抓取读写信号进行相关参数测量,测量数据完全符合I²C标准协议及芯片的设计目标。

表1 I²C性能验证结果

I²C可靠性验证:可靠性验证是验证芯片各模块在客户指定不同应用场合的环境温度条件下,是否能正常工作一定时间,达到验证各模块满足相应级别的可靠性要求如表2所示,本项目MCU芯片在消费级和商业级都符合要求,而在工业级发现了问题,经过对芯片进行优化后再重新进行验证全都符合要求,实验表明可靠性验证能验出其他验证方法不易发现的问题,为芯片的量产提供了重要的保障。

表2 I²C可靠性验证

5 结束语

一款芯片从立项到流片生产需要经过层层自测和验证,芯片的质量在很大程度上依赖于验证,验证环节则是个特殊而重要,贯穿着芯片设计流程的始末。验证的意义在于不断地给设计或者实现过程提供迭代的关键意见,芯片回样验证主要是验证芯片各模块功能、性能、可靠性是否满足预期设计要求,为应用场景提供技术指导;同时还可以通过各种验证手段找出各模块bug,协助设计者分析、解决bug问题,提供可靠的数据分析,为芯片的顺利量产和上市提供重要的保障。■

猜你喜欢
寄存器总线可靠性
Lite寄存器模型的设计与实现
二进制翻译中动静结合的寄存器分配优化方法
合理使用及正确测试以提升DC/DC变换器可靠性
一种基于CAN总线的误码测试方法
DCOM在混合总线自动测试系统的应用
基于AVR单片机的RS485工业总线开发设计
移位寄存器及算术运算应用
GO-FLOW法在飞机EHA可靠性分析中的应用
5G通信中数据传输的可靠性分析
论如何提高电子自动化控制设备的可靠性