IC设计知识点:自恢复设计、异常处理设计三要素等

发布于 2022-06-01 13:47

1、什么是自恢复设计?


在芯片设计过程中,通常会针对特殊情况导致芯片无法使用额外添加一些功能,使得芯片具有更好的抗干扰能力。自恢复设计应用场景很广泛,比如、针对芯片温度过高的处理、针对残缺数据包的处理、针对长时间无数据响应的处理、针对各类错误的处理


2、常见的自恢复设计


芯片高温处理方式:


几乎每一颗大型芯片都有一个温度监控,而且通常芯片温度过高时,外部CPU读取芯片温度进而控制芯片散热风扇的速度,这种设计仅仅是常见的被动式自恢复,而不是芯片自己主动触发。主动芯片自恢复设计:芯片会主动监控温度值,当温度值进入高温区域时,会进行主动告警,比如发出温度中断,当温度值进入超高温区域,可能会导致芯片烧毁的风险时,会主动进行芯片复位操作,关闭部分或者全部功能,有效降低功耗,从而达到降低温度的目的。


读数据返回超时:


读芯片内部寄存器时,有时会出现长时间没有返回的情况,而AXI等读写总线必须要有返回数据,否则会一直卡住。针对此类情况,需要读模块产生读返回信号与响应信号。比如返回32’hdeaddead数据,并且给响应信号rresp赋值相应的错误值。


交互接口超时:


各类芯片的低速接口通常是交互时处理的,芯片接口同样有状态机的类似实现方式,如果slave接口超时没有响应,master接口不应该被卡住,而应该能够恢复到初始状态,能够发起下一次请求。


残缺数据的处理:


像MAC、PCS等模块处理数据时,完成的数据包有包头和包尾,完整的数据包才能进行正常的处理,而缺乏包头或者包尾的残缺包必须则会导致各类错误,因此需要在模块入口处理对残缺包进行过滤,直接抛弃不完整的数据包。


模块卡死自恢复:


模块内部重要的模块如果发送错误会导致卡死,如关键的链表指针、此类情况需要自恢复设计要求,能够跳转到初始状态,如触发自动初始化。


流控反压机制导致的路径延时


1、流水反压机制


FIFO的阈值设置就是流水反压机制的一种。当下游模块存储的数据量超过将满水线时,下游模块会通过一根流控信号线fc通知上游模块停止发送模块,当下游模块存储的数据量低于将满水线时,流控信号线fc为无效状态,上游模块继续发送数据。


2、存在加速比的流水反压机制路径延时


当上游带宽大于下游带宽时,我们称之为存在加速比,即数据出口带宽小,数据入口带宽大。


此类电路中由于存在流水反压机制因此数据不会溢出。但是路径拍数越多,所需要的缓存空间就越大,缓存中累计的数据就越大。如下图所示:


模块A输出速率大于模块C的出口速率,当模块A满带宽输出数据时,模块B和模块C中的afifo就会产生累计,如模块B平均下来最低累计25拍数据,模块C平均下来最低累计18拍数据,因此,实际数据如果从模块A输出到模块C的出口所需的延时不仅要考虑路径流水20拍+15拍,同样要考虑afifo中的累计数据,必须要afifo缓存的数据先输出然后才能输出后续的数据。


总结:路径上的缓存深度越大,缓存内累计的数据越多,从数据源端到目的端的延时就越大。流水反压机制模块内的缓存增大了数据传输路径延时。



异常处理设计三要素


1、什么是异常处理设计


为了保证芯片在非预期的情况下能够继续运行,需要针对异常进行个性化设计。常见的异常有交互的一方没有响应(比如读数据没有返回),模块输入的数据格式不满足要求。


2、异常设计核心三要素


针对异常情况,芯片设计具有三要素:


1)不挂死

异常情况发生时,芯片不能挂死。比如,状态机不能卡住,数据通路能够正常收发数据。


2)能恢复

出现状况时,电路状态能够及时恢复到正常状态,不阻塞后续的数据处理。比如状态机能够在几十微秒以内恢复到IDLE状态,不能卡住几秒钟,比如数据通路接收到不合法的数据后还能够正常处理后续的数据,不会造成阻塞。


3)能上报

遇到异常情况,芯片内部有记录,能够及时知道。例如,有寄存器统计异常次数和状态,有中断上送。


3、异常设计案例


案例1:以太网MAC入口数据过滤模块


MAC发送侧入口,要求发送的数据具有包头和包尾标志。MAC发送侧会在包头添加preamble和SFD,在包尾添加CRC和IPG。因此,如果输入的数据包头/包尾不是一一对应的,则会造成MAC层模块无法正常处理数据,可能会造成模块内部状态机卡住,出现各类错误,阻塞后续数据处理。因此MAC发送侧入口会在数据处理模块之前添加包过滤模块,过滤包头包尾不匹配的数据,同时使用寄存器记录各类错误的次数(记录缺少包头的数量,记录缺失包尾的数量),并且上送中断。


案例2:寄存器读超时处理机制


在芯片中,经常需要读取寄存器,slave端可能因为各类情况没有及时产生读返回,因此发起请求的master必须能够处理此类情况,避免阻塞后期的读请求。此类情况,芯片内的读请求master会产生读返回提供给芯片外部的请求发起端,并产生响应的resspon信号告知读错误,同时使用寄存器记录无返回次数和响应的读地址,并且产生中断信号。


本文来源:https://blog.csdn.net/icxiaoge?type=blog

本文转自:IP与SOC设计

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材