分治算法之芯片測試


VLSI芯片測試

1. 芯片測試

在講解具體的芯片測試的分治策略算法之前,先來了解芯片測試的意思。

1.1 一次測試的過程

在這里插入圖片描述
如上圖,A、B為芯片。測試方法為:將2片芯片(A和B)置於測試台上,互相進行測試,測試報告是“好”或者“壞”,只取其一。

  • 假設:好芯片的報告一定是正確的,壞芯片的報告是不確定的(可能會出錯)

那么上述測試的結果有四種可能,如下圖:
在這里插入圖片描述

上面的結果應該不難理解

那么現在問題來了:

  • 輸入:n片芯片,其中好芯片,至少比壞芯片多一片(要不然測試不了)附:若多於n/2的芯片是壞的,在這種成對測試方法下,使用任何策略都不能確定哪個芯片是好的。
  • 問題:設計一種測試方法,通過測試從n片中挑出1片好芯片
  • 要求:使用最少的測試次數

1.2 如何測試一塊芯片的好壞

針對上述問題,現在先來研究一下,如何在上述n片芯片中,測試出A是好芯片還是壞芯片?

  • 問題:給定芯片A,判定A的好壞
  • 方法:用其他n-1片芯片對A進行測試。

假設:n=7:好芯片數>=4

  1. A好,6個芯片中至少3個報“好”
  2. A壞,6個芯片中至少4個報壞

所以對於n是奇數情況下:好芯片數>=(n+1)/2
A好,至少有(n-1)/2個報“好”
A壞,至少有(n+1)/2個報“壞”

結論:

  1. 至少一半報好,A是好芯片
  2. 超過一半報壞,A是壞芯片

假設: n=8:好芯片數>=5

  1. A好,7個芯片中至少4個報“好”
  2. A壞,7個芯片中至少5個報“壞”

所以對於n是偶數:好芯片數 >= n/2+1.
A 好, 至少有 n/2個報告“好”
A 壞, 至少有 n/2+1個報告“壞”

結論:n-1份報告中

  1. 至少一半報好,A是好芯片
  2. 至少一半報壞,A是壞芯片

上面的分析,已經很清晰,我們已經知道如何測試一塊芯片的好壞。那么人們最拿手的方法就是:暴力算法(蠻力算法)。

1.3 蠻力算法

測試算法:任取 1片測試,如果是好芯片,測試結束;如果是壞芯片,拋棄,再從剩下芯片中任取 1片測試,直到得到 1片好芯片

時間估計:

第一片是壞芯片,最多測試n-2次
第二片是壞芯片,最多測試n-3次

總計:Θ ( n 2 ) 

可見時間復雜度之高,數據量一多,肯定會超時。

1.4 分治算法設計思想

在分析分治算法的正確性之前,我們先給出這個算法的描述:

假設n為偶數,將n片芯片兩兩一組做測試淘汰,剩下芯片構成子問題,進入下一輪分組淘汰。

淘汰規則為:

  • “好,好” ==> 任留1片,進入下輪
  • 其他情況 ==> 全部拋棄

遞歸截止條件:n<=3
3片芯片,一次測試可得到好芯片
1或者2片芯片,不需要再測試,他們都為好芯片。

上述算法過程就是我們給出的分治策略的設計。那么為什么上述的策略是正確的呢?

注意:要保證分治策略的正確性的基本條件是:子問題與原問題性質相同。下面我們就來證明,上述分治策略的子問題與原問題性質相同。

1.41 分治算法的正確性證明

原問題:n片芯片,其中好芯片,至少比壞芯片多一片

那么子問題,命題1:當 n 是偶數時,在上述淘汰規則下,經過一輪淘汰,剩下的好芯片比壞芯片至少多1片

我們需要證明上述子問題的命題1是正確的。

證明:假設原問題中A,B都好的芯片有i組,A與B一好一壞的有j組,A與B都壞的有k組。那么經過一輪淘汰后,好芯片還剩i片,壞芯片還剩k片。

因為

  • 初始芯片總數 2i+2j+2k = n
  • 初始好芯片多於壞芯片:2i+j > 2k+j

得出:i>k

所以,剩余的芯片好芯片比壞芯片,至少多1片。命題1 是正確的。即證明了上述分治算法的正確性。

當n為奇數時,特殊處理。當n是奇數時,可能會出現問題,如圖:
在這里插入圖片描述
可見淘汰后的子問題並不滿足於原問題性質相同,此時無法繼續測試。

  • 處理辦法是:當n為奇數時,增加一輪對輪空芯片的單獨測試,如果該輪空芯片為好芯片則算法結束,如果是壞芯片,則淘汰該芯片。

下面給出上述分治算法的偽碼描述:

在這里插入圖片描述

1.42 時間復雜度分析

設輸入規模為n,,每輪淘汰后,芯片數至少減半,測試次數(含輪空處理):O(n)

時間復雜度:

W(n) = W(n/2) + O(n)
W(3)=1,W(2)=W(1)=0

主定理求解上述方程的得:W(n) = O(n)

結果很振奮人心,你已經將一個O(n^2)級別的算法優化為了O(n)級別!!!

2. 總結

最大的需要注意的地方就是:如何保證子問題與原問題性質相同:

可以:

1.增加額外處理(比如上述n為奇數時對輪空數據的處理)

2.額外處理的工作量,不改變函數的階。           

參考:北京大學屈婉玲老師公開課

         https://lyy-0217.blog.csdn.net/article/details/102529005                                                                                                      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM