棋子 · 2022年07月28日

浅谈中断验证(一)

来源| 杰瑞IC验证(ID:Jerry_IC)

|原创作者| 老黄鸭

在工程项目中,不管是小到模块级验证,还是大到系统级验证,都有一项不可缺少的feature,那就是中断

中断是一种硬件与软件间、cpu与外设间的交互手段,中断一旦出问题,芯片很可能会因此缺失某些特性,甚至于毁了整颗芯片,中断验证由此显得极为关键。

本期,黄鸭哥将给大家带来工程项目中常常碰到的中断的验证。

1 何为中断

我们先来了解下什么是中断?

中断是指:芯片在执行程序指令流的过程中,突然出现某些意外情况而需要中止执行当前程序,并转入处理新的程序指令流,处理完毕后又返回原被暂停的程序指令流继续运行的机制。

注意,工程实践中需要注意中断和查询的区别,中断是事件触发型的,可以是软件也可以是硬件,而查询,一般是软件行为,循环poll某个状态或者寄存器值。比如,中断就好比你点了个外卖,然后你就去干你别的事了,过了一会外卖小哥打电话叫你下楼取外卖;而查询与中断的区别在于,外卖小哥不会打电话给你,你点完外卖后要一直拿着手机查询订单状态,当外卖到楼下后自己下楼取餐。

image.png

2 中断执行

中断的具体流程是怎么样的呢?

1、当设备遇到某一事件或错误发生时,将发出IRQ中断给中断控制器(有的设备可能无中断控制器)。

2、中断控制器对这个IRQ进行硬件处理,把一些信息记录在中断控制器的寄存器上,然后中断控制器通过IRQ中断线给cpu发送中断信号。

3、cpu收到中断信号后会对中断控制器中的寄存器进行访问,读取中断信息存入自身的状态寄存器中,并且有的中断控制器还会通过mask寄存器屏蔽对应的中断,之后cpu执行存好的中断驱动程序。

后面的操作就得根据具体的驱动程序来决定了,大致上就是备份数据,清中断源等,最后就是恢复数据,这整个就是一个中断发生后的处理流程啦!

3 中断类型

说完中断流程,我们来看下中断类型,按照功能类型来划分,中断可以分为事件中断和异常中断。

事件中断:一般是由硬件触发某个寄存器并拉高中断线,通知软件介入处理某些具体事务,比如一些周期性的神经网络训练请求或者完成一次DMA搬运操作等,事件中断属于软硬件协同工作上的一环。

异常中断:顾名思义,就是一些硬件不可预期的行为导致的错误发生,发生异常中断时,硬件可能已不能自我解决这种错误,需要向cpu申请支援。异常中断按照程度可以分为两类,分别为致命中断和非致命中断,它俩的区别在于硬件是否会由于异常错误挂死,甚至导致整个芯片崩溃宕机。

按照异常种类划分,例如可包括:

1、溢出中断,可能是某个计数器 ,也可能是某个buffer引发的溢出中断;

2、数据译码错误,比如,ecc中断,奇偶校验中断等;

3、协议违反中断,比如,axi协议的len不匹配数据,jedec协议的ca命令错误等等;

4、特性违反错误,比如,具体某个模块中的描述符错误,地址越界,传输错误等等。

对于模块级验证中的中断特性,验证人员需要考虑的是这些中断能不能被正常触发,触发中断后能不能正常上报,上报之后中断状态可不可查,中断源能不能被清除,清除之后能不能再次触发,中断是否可支持mask等。在这个一系列过程中,我们还要考虑中断类型与寄存器对应bit是否匹配(比如,ECC错误出现,feature中描述对应的寄存器的第1bit拉高,但是硬件模块错误的把第8bit拉高)、中断之间是否存在相互干扰、多中断发生时是否能准确上报、无异常发生时中断不能拉高、清除某个中断时不能错误清除其他的中断等等。

image.png

对于系统级中断验证,验证人员考虑的可能就不是那些底层的中断功能能否正常实现,而是要考虑各个模块,各个子系统的中断线能否正常汇聚到中断控制器,中断控制器的中断线是否能正常发送到cpu的中断管脚、进入低功耗模式前后的中断状态等等。

中断验证中这些需要关注的点和原则,黄鸭哥都已经给大家整理清楚了,但限于篇幅,本期就不阐述了,欲知后文请听下回咯,求点赞、求三连!!!

image.png

——The  End——

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
19610
内容数
1303
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息