在工程項目中,不管是小到模塊級驗證,還是大到系統級驗證,都有一項不可缺少的feature,那就是中斷。
中斷是一種硬件與軟件間、cpu與外設間的交互手段,中斷一旦出問題,芯片很可能會因此缺失某些特性,甚至于毀了整顆芯片,中斷驗證由此顯得極為關鍵。
本期將給大家帶來工程項目中常常碰到的中斷的驗證。
1
何為中斷
我們先來了解下什么是中斷? 中斷是指:芯片在執行程序指令流的過程中,突然出現某些意外情況而需要中止執行當前程序,并轉入處理新的程序指令流,處理完畢后又返回原被暫停的程序指令流繼續運行的機制。
(注意,工程實踐中需要注意中斷和查詢的區別,中斷是事件觸發型的,可以是軟件也可以是硬件,而查詢,一般是軟件行為,循環poll某個狀態或者寄存器值。比如,中斷就好比你點了個外賣,然后你就去干你別的事了,過了一會外賣小哥打電話叫你下樓取外賣;而查詢與中斷的區別在于,外賣小哥不會打電話給你,你點完外賣后要一直拿著手機查詢訂單狀態,當外賣到樓下后自己下樓取餐。)
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拉高)、中斷之間是否存在相互干擾、多中斷發生時是否能準確上報、無異常發生時中斷不能拉高、清除某個中斷時不能錯誤清除其他的中斷等等。
對于系統級中斷驗證,驗證人員考慮的可能就不是那些底層的中斷功能能否正常實現,而是要考慮各個模塊,各個子系統的中斷線能否正常匯聚到中斷控制器,中斷控制器的中斷線是否能正常發送到cpu的中斷管腳、進入低功耗模式前后的中斷狀態等等。
審核編輯:劉清
-
控制器
+關注
關注
112文章
16423瀏覽量
178880 -
寄存器
+關注
關注
31文章
5360瀏覽量
120864 -
中斷
+關注
關注
5文章
900瀏覽量
41614 -
IRQ
+關注
關注
0文章
16瀏覽量
10776 -
dma
+關注
關注
3文章
566瀏覽量
100786
發布評論請先 登錄
相關推薦
評論