什么是自恢复设计?
在芯片设计过程中,通常会针对特殊情况导致芯片无法使用额外添加一些功能,使得芯片具有更好的抗干扰能力。自恢复设计应用场景很广泛,比如,针对芯片温度过高的处理、针对残缺数据包的处理、针对长时间无数据响应的处理、针对各类错误的处理。
1、高温保护设计
几乎每一颗芯片都温度监控模块,大型芯片甚至有多个温度监控模块。以电脑主板为例,在CPU或者显卡温度升高时,散热风扇的转速会随之增加,一旦芯片温度过高,会触发关机保护机制。这种设计仅仅是常见的被动式自恢复,而不是芯片自己主动触发。
芯片主动自恢复设计原理如下:
芯片会主动监控温度值,当温度值进入高温区域时,会进行主动告警,比如发出温度中断,从而告知管理软件等。当温度值进入超高温区域,可能会导致芯片烧毁的风险时,会主动进行芯片降频或者复位等操作。降频操作是将时钟频率降低,从而降低功耗,此设计在GPU中比较常见。复位操作是芯片自动产生逻辑复位,关闭部分或者全部功能,有效降低功耗,从而达到降低温度的目的。
2、读数据返回超时保护
主机读芯片内部寄存器时,有时会出现长时间没有返回的情况,而AXI等读写总线必须要有返回数据,否则会一直卡住。针对此类情况,需要读模块产生读返回信号与响应信号。比如,返回32’hdeaddead数据,并且给响应信号rresp赋值相应的错误值。
例如,PCIe作为Endpoint时,收到host主机的memrd读请求时,并且将请求通过接口转发给内部总线,如果长时间没有收到读数据rdata,则需要进行主动超时,自行返回rdata给主机,防止host主机因收不到rdata而卡住。
3、交互接口超时响应保护
各类芯片的低速接口通常是握手交互处理机制,在没有保护机制的情况下,如果slave端口因为某些原因卡住,无法正确响应时,master端口也会被卡住。添加交互接口超时响应保护逻辑,如果slave接口超时没有响应,master接口不应该被卡住,而应该能够恢复到初始状态,能够发起下一次请求。特别是一个master对应多个slave时,master的自恢复尤为重要。
4、残缺数据过滤
像MAC、PCS等模块处理数据时,完成的数据包有包头和包尾,完整的数据包才能进行正常的处理,而缺乏包头或者包尾的残缺包则会导致各类错误,因此需要在模块入口处理对残缺包进行过滤,选择补齐或者直接抛弃不完整的数据包,保证模块入口数据的完整性。
5、模块卡死自恢复
芯片内部重要模块发生错误(配置流程不合理等原因)会导致模块或者整个****死,那么必须要添加自恢复设计。
例如链表指针错乱,接口复位长期没有释放,此种情况下,尽量保证模块能够自行恢复,能够跳转到初始状态,如触发自动初始化。
总结:
芯片的考核指标不仅仅是性能达标,功能正常,可靠性同样重要。自恢复设计能够增强芯片的可靠性,保证芯片一些极端场景中依旧可以长期运行,是产品的加分项。一颗高品质的芯片肯定实现了各种自恢复设计。