邏輯內置自測試(LBIST)允許硬件測試自己的操作。無需任何外部硬件或測試設備。 LBIST是符合安全標準的SoC的“必備”功能。但是在復雜的SoC中使用LBIST時必須小心。
整個SoC被劃分為各種LBIST分區和LBIST控制器用于在每個分區上運行LBIST。有一個中央控制器控制所有這些LBIST控制器,以便可以從整個SoC的一個點控制LBIST(否則每個LBIST控制器需要單獨編程)。上面提到的中央LBIST控制器具有針對LBIST可用的各種選項的位映射以及用于對LBIST進行排序的寄存器。
上圖顯示了SoC中分區的基本概念。物理分區和LBIST分區的數量/大小可能因SoC而異。此外,單個物理分區內可以存在多個LBIST分區。每個LBIST分區都有一個專用的LBIST控制器,它將被放置在物理分區內(但在LBIST分區之外)。中央控制器位于頂部分區。
驗證LBIST的主要挑戰是驗證LBIST分區的不同排列和組合。假設一個SoC說“n”個LBIST分區,那么你可以在所有分區上并行運行LBIST,所有順序運行,或者它們可以分組。例如,您可能希望并行運行前5個,然后依次運行下3個,依此類推。順序運行所有LBIST將花費大量時間。另一方面,并行運行所有LBIST將導致SoC中的大量電流消耗。因此,要運行的理想序列是在優化電流消耗和最小化LBIST運行時之間的權衡。對于具有“n”個LBIST分區的SoC,將會有n! LBIST組合可能 - 在有限的時間范圍內驗證所有這些組合是不可能的。因此,我們根據SoC的經驗和架構巧妙地選擇一些選定的組合。
這會導致驗證時遺漏一些問題。本文討論了這些問題,它們在硅上的調試,以及我們如何在設計周期中避免它們。
在LBIST期間,LBIST下的分區的所有輸出將隨機切換,可能影響整個SoC功能的重要信號需要“安全聲明”,這意味著它們需要在LBIST期間保持安全值這樣邏輯的其余部分就不會受到它們的影響。例如,如果在LBIST執行期間(進入SoC的復位控制器)在LBIST分區中的復位輸出上發生切換,則將導致整個邏輯的復位,這不是設計意圖。因此,為了避免這種情況,需要在LBIST期間將此復位信號安全地設置為安全值。 (在這種情況下,它將是重置的非活動值)。
驗證LBIST安全陳述的步驟
由于LBIST掃描鏈以網表級別插入,因此運行門級仿真以驗證SoC中LBIST的正確功能。通過此報告的主要功能問題是缺少對不同LBIST分區的關鍵輸出信號的“安全說明”。
由于在網表中引入了實際的LBIST邏輯,因此在RTL階段不會發生輸出信號的切換在LBIST執行期間。因此,為了模仿實際情況,我們在LBIST執行期間隨機切換LBIST分區的輸出,以便在RTL級別本身捕獲丟失的安全說明問題。然而,實際切換僅在門級仿真中發生,但對于“n”個LBIST分區,不可能在門級仿真中運行每個組合(因為GLS運行時間很大)。大多數情況下,我們運行所選擇的組合來解決前面提到的安全陳述問題。但是,由于在模擬中未嘗試所有分區組合,因此仍可能存在一些可能影響SoC功能的看不見的安全說明問題。
缺少安全陳述的后硅調試策略 - 樣本調試
我們將解釋如何調試和根源導致LBIST安全陳述問題硅借助于一個例子:當LBIST在特定配置(序列)中運行時,它失敗,狀態寄存器中的PLL丟失鎖定錯誤。
調試步驟
首先,我們嘗試使用不同時鐘源的相同配置。以下是調查結果:
PLL鎖定內部RC振蕩器時鐘 - 通過。
PLL鎖定在外部振蕩器上 - 出現了問題。
接下來,為了縮小調試范圍,我們嘗試了各種LBIST分區組合,以找出硅上的失敗組合。結果發現,在20個LBIST分區中,當第14和第15個LBIST分區以順序方式運行時,自檢失敗,狀態寄存器中報告了PLL丟失鎖定錯誤。
第14和第15個LBIST分區單獨或并行運行,未發現故障。這給了我們一個強烈的跡象,表明在第14個分區LBIST中有一些切換正在影響第15個分區的LBIST執行。
下一步是找出看到失敗的最小模式數。 (在LBIST中,我們對特定數據進行“移入”并期望一些已知的“移出”數據。一個這樣的步驟被認為是一個“模式”并且將給我們一定的信號覆蓋。對于完整的覆蓋,我們運行多個這樣的模式,總數被稱為“模式計數”)。這很重要,這樣我們就可以輕松地模擬驗證環境中的故障。這是通過編程開始模式計數和結束模式計數以及應用二進制搜索來找出發現故障的最小模式計數窗口來完成的。
最后,在驗證環境中模擬了這個最小的模式計數窗口(網表)。據觀察,有些情況受到影響,導致振蕩器在兩者之間斷電,導致PLL失鎖,最終導致自檢失敗,PLL失鎖失誤。
失敗的根本原因
外部振蕩器數字控制邏輯本身是14 th LBIST分區的一部分(而振蕩器的模擬模塊在外面)這個LBIST分區)。據觀察,由于從數字控制模塊到模擬振蕩器模塊的斷電信號沒有安全說明,振蕩器正在斷電。然而,問題仍然存在,為什么只有在兩個分區按順序運行而不是單獨或并行運行時才能看到這種切換。
為了追蹤問題,振蕩器功率播放邏輯是在設計中追蹤。它看起來像這樣:
Oscillator_pwrdn = A& B
其中A是14 th 分區的輸出信號,B是15 th 分區的輸出信號。默認情況下,A和B均為0。 “A”在第11個 th 分區的LBIST期間切換,最終穩定為1.然而,此時“B”保持為0。這解釋了為什么兩個分區都單獨傳遞。當LBIST在15 th 分區上運行時,“B”切換,因此在順序情況下,一旦“B”變為1,“Oscillator_pwrdn”信號變為“1”并且故障發生。而在并行的情況下,當“A”變為1時,“B”已經確定為0.由于這個原因,故障也從未在平行情況下看到過。
以下是用于解釋行為的波形快照(Xosc_clock - 外部振蕩器時鐘; Xosc_pwrdn - 外部振蕩器掉電信號):
波形在順序LBIST案例(看到失敗)
波形并行LBIST案例(未見失?。?/p>
完成設計修復
使用鎖存器安全地聲明“Oscillator_pwrdn”信號,以防止在LBIST執行期間切換,以解決此問題設計。
如何避免LBIST安全陳述問題
應注意以下幾點以避免此類情況:
需要通過功率估算技術,LBIST運行時分析等來選擇各種LBIST組合。在物理設計團隊和DFT團隊的反饋之后需要進行驗證。要提供給客戶的自測配置應在設計階段基于上面的最終確定,以便使用最終配置運行所有門級仿真。這將使我們能夠徹底驗證客戶使用的配置;否則,如前所述,在有限的時間范圍內嘗試模擬中的所有自測組合是不可能的。
-
自測試
+關注
關注
0文章
2瀏覽量
6105 -
PCB打樣
+關注
關注
17文章
2968瀏覽量
21721 -
華強PCB
+關注
關注
8文章
1831瀏覽量
27779 -
華強pcb線路板打樣
+關注
關注
5文章
14629瀏覽量
43061
發布評論請先 登錄
相關推薦
評論