Skip to main content
多媒體資料庫新聞與活動

Episode 2: Testing Algorithms

By 2023-09-128 1 月, 2024No Comments

想了解靜態失效與動態失效這兩者的差別嗎?立即觀看芯測小學堂,帶您探討演算法是如何找出錯誤~

「靜態失效」和「動態失效」這兩者有什麼不同?
「靜態失效」和「動態失效」是記憶體中的兩種錯誤。簡單來說,靜態失效和動態失效的區別在於故障出現的方式和時機。靜態失效是一種在單次操作下就能被探測到的故障。它像是一個明顯的錯誤,當我們對記憶體進行操作時,它就會出現,就像按一個按鈕卻沒有反應一樣。舉個例子,如果某個記憶體單元永遠只能輸出「0」而無法改變,這就是一種靜態失效。

而動態失效則需要多次操作才會被觸發。這就像是一個有些複雜的問題,需要特定的條件或操作來顯現。舉例來說,某個記憶體單元可能在某種特定的情況下,例如經過多次讀寫操作後,才會產生錯誤。

簡單來說,靜態失效與動態失效主要區別在於故障呈現的方式。靜態失效是明顯且單次操作就能發現,而動態失效則需要特定條件下的多次操作才會暴露。但值得一提的是,靜態失效可能在各種製程中出現,而動態失效通常在高階製程中才會出現。現今許多應用逐漸朝向高階的製程發展,這也是我們要關注的一個趨勢。

演算法是如何找出這些問題?
舉例來說,有一個演算法叫「March C」,它是一種用來檢查記憶體中靜態失效的方法。March C 通過一系列的讀寫操作,讓記憶體單元進行不同的狀態變化,並在每次操作後驗證之前的狀態是否正確。如果在某個步驟出現錯誤,就表示有靜態失效存在。簡而言之,March C 透過特定的操作序列,來幫助我們找出那些單次操作就能發現的記憶體問題。

還有一個演算法叫做「March 33N」,它是用來尋找動態失效的方法。March 33N 複雜度相對較高,透過一系列讀寫操作以及特定的步驟,讓記憶體單元在多次操作後產生變化。在每次操作後,演算法會執行讀取操作,檢查是否出現任何意外的故障。如果在特定操作後記憶體出現錯誤,就表示有動態失效存在。

此外,除了有各種不同的演算法之外,在做檢測時,也有不同的測試方法。例如「Checkerboard」的測試方法,Checkerboard 的概念是在記憶體單元之間交替寫入「0」和「1」,然後進行讀取操作,檢查是否出現錯誤。這個方法有助於我們找出需要多次操作才會被觸發的動態失效問題。