????????傳統的設計過程和測試過程是分開的,而且測試往往只在設計階段的后期才被考慮。近年來,測試越來越早地被考慮并出現在設計過程中,被稱為“可測性設計”。可測性設計的主要思路就是在設計之初就考慮關于測試方面的設計,并在設計階段著手解決測試問題,它主要通過調整復用芯片原有的部分邏輯或者加入一些不影響芯片功能的邏輯電路,從而降低芯片的測試難度。
????????可測性用來描述制造出的芯片被全面測試的難易程度,它包括可控性和可觀測性兩個方面:
- 可控性:衡量對待測電路內部測試點進行置位的控制能力
- 可觀測性:衡量獲取待測電路測試點當前狀態的能力
????????可測性設計的目標就是提高可測性和可控性,使待測電路對測試者透明。要實現實時觀測電路的運行狀態,并在特定的時候人為去掌控整個電路的狀態完成測試。對于可測性設計技術,有以下兩個評價方向:
- 應用該技術后的電路應該能夠得到較高的可測性:要求該技術應該使電路的可控制性和可觀測性得到最大的提高,這也是應用可測性設計技術的初衷;
- 應用該技術應該盡可能低地產生額外性能消耗和面積上的增加:因為僅在對電路進行測試時才會用到可測性設計產生的電路,它實際上對完成測試后的芯片來說是一種冗余,所以要努力減少這些冗余,使芯片在正常工作情況下由于這些電路引起的面積以及性能消耗降到最低。
????????在實際設計過程中,所設計的可測性設計電路結構應該能夠使加入該結構后的電路具有較高的可測性,同時要兼顧產生的額外冗余最低。這兩個指標往往是相悖的,想要得到較高的可測性就要求加入更多的測試電路,而這無疑將增加面積;想降低額外消耗和面積,那就要犧牲可測性,所以,一個好的可測性設計技術就是要合理權衡這兩個指標,目前業界常用的幾種可測試性設計技術,主要有掃描技術、邊界掃描技術和內建自測試技術等。
一、掃描技術
????????時序電路的直接測試往往是難以實現的,掃描設計通常能很好地解決這一問題。
????????掃描設計的主要思想就是把難以進行測試的電路轉化為可測的電路。要實現這一目標,需要把電路中原有的一般觸發器用可觀測可控制的掃描觸發器進行代替,這些掃描觸發器串接到一起形成掃描鏈(Scan Chain,SC),這樣,在測試模式下,就可以通過掃描鏈來串行移入移出測試數據,實現對整個電路的控制和觀測。單個掃描觸發器代替一般觸發器的例子如圖:
?????????可以看到,掃描觸發器在原始觸發器的基礎上在數據輸入端D 增加了一個多路選擇器,用以實現對輸入數據的選擇,其中Scan_in 是掃描數據輸入端口,Scan_enable 是輸入選擇控制端,Scan_out 復用原始輸出端Q。常見的掃描觸發器的工作模式有正常工作模式和掃描移位模式兩種:
????????(1) 正常工作模式:Scan_enable 為0 時,此時為正常工作模式,D 輸入端選通,Q 作為輸出端,數據從D 輸入,從Q 輸出;
????????(2) 掃描移位模式:Scan_enable 為1 時,此時為掃描移位模式,Scan_in輸入端選通,Scan_out 作為掃描輸出,測試數據由Scan_in 輸入,由Scan_out 輸出。
????????將掃描觸發器單元連接在一起,就構成了掃描設計的基本結構。根據是否所有的寄存器都是掃描單元并已連接到掃描鏈,可以將掃描設計分為全掃描和部分掃描。
????????通常為了提高電路的性能,我們往往排除那些不符合可測性設計規則的寄存器,這樣設計得到的電路一般介于全掃描和部分掃描之間。
?????????對加入掃描設計后的電路進行測試時,我們首先設置模式選擇端sc_en 為1,電路處于掃描移位模式,向掃描輸入端口sc_in 打入測試向量,比如101,通過掃描鏈傳至每個掃描寄存器;然后我們設置sc_en 端口為0,電路進入正常工作模式,并行向三個原始輸入端口A,B,C 打入激勵;從輸出端口Q 捕獲響應數據,分析響應數據就可以達到測試目的。
二、邊界掃描(JTAG)技術
????????邊界掃描技術是由聯合測試行動小組(Joint Test Action Group,JTAG)提出的一種旨在解決PCB板間測試問題的解決方案,又稱為JTAG 標準。邊界掃描設計大大提高了板級測試效率,簡化了測試和診斷過程,是可測性設計中的關鍵技術。
????????邊界掃描技術與前文所述的掃描設計的不同之處在于:邊界掃描技術是在電路的輸入輸出引腳與內部邏輯電路之間增加邊界掃描單元(Boundary Scan Cell,BSC),并將他們連成掃描通路,
而后者是將電路中的原有的普通時序修改復用成具有掃描功能的單元,然后連成通路。
????????邊界掃描技術的主要實現思路是在芯片每個輸入輸出引腳和芯片內部邏輯之間插入邊界掃描單元,并將他們以串行形式連接到一起形成一條掃描路徑。這樣,通過邊界掃描單元既可以捕捉到引腳的輸入數據和內部邏輯電路的輸出數據,又可以人為可控的將外部測試數據施加到內部邏輯電路。
????????邊界掃描設計可以實現三個方面的測試:
????????(1) 芯片級測試,也就是可以對芯片本身進行測試和調試。測試時,使芯片工作在測試模式,通過芯片輸入引腳輸入測試數據,并觀察串行移位的輸出響應達到測試目的,必要時也可進行調試;
????????(2) 板級測試,即檢測PCB 板和集成電路之間的互連情況。其原理是將PCB板上具有邊界掃描功能的芯片中的掃描寄存器連接起來,通過合適的測試向量,可以發現元件是否存在丟失或者擺放錯誤,以及檢測引腳的開路和短路故障。
????????(3) 系統級測試,在板級集成后,可以通過對板上可編程邏輯器件或者Flash的在線編程,實現系統級測試。
????????邊界掃描設計結構遵循IEEE1149.1 標準設計,一般包括具有4 或5 個引腳的測試存取通道(Test Access Port,TAP),一組邊界掃描寄存器(Boundary ScanRighter,BSR),指令寄存器(Instruction Register,IR),可選的數據寄存器(DataRegister,DR),旁路寄存器(Bypass Register,BR)和一個TAP 控制器(TAPController)。
????????IEEE1149.1 標準規定TAP 必須有4 個標準信號和一個可選信號,它們分別是TCK,TMS,TDI,TDO,TRST:
- TCK 是JTAG 的時鐘信號,
- TDI是測試數據輸入信號,
- TDO 是測試數據輸出信號,
- TRST 是測試復位信號,低電平有效,
- TMS(Test Mode Select)是測試模式選擇信號,由于測試過程中需要通過TAP 控制器產生移位,讀數據,寫數據等各種狀態,所以需要設置一個模式選擇信號來控制TAP 控制器產生相應的控制信號。?
????????邊界掃描寄存器是邊界掃描中最重要的結構單元,它可以存儲從內部電路中捕獲的數據,也可以存儲從外部電路輸入的數據,這些數據可以被串行移到掃描路徑上的下一個掃描寄存器,也可以被直接輸入到內部電路。
????????指令寄存器由移位寄存器和鎖存器兩部分組成,當經過TDI 串行輸入指令,指令被送入鎖存器,保存當前指令,并通過譯碼單元識別當前指令。當執行某些指令時,解碼所得信號將控制相應的數據寄存器對電路的運行狀態進行配置。
????????數據寄存器包括兩種,一種是設備ID 寄存器,用于存放設備的ID 號;另一種是對應于相應指令的邊界掃描寄存器,允許設置電路進入某些特定狀態,比如MBIST 寄存器。
????????旁路寄存器用于跳過不需要測試的電路,使TDI 和TDO 直連,使輸入輸出之間的掃描路徑最短化,縮短測試路徑,提高測試效率。
????????AP 控制器是一個具有16 種狀態的有限狀態機,它受模式選擇信號TMS 和時鐘信號TCK 控制,產生各種控制信號,控制待測電路進入相應狀態。
????????邊界掃描技術提供了5個對外接口,可以實現人為可控的向內部電路輸入數據,從而設置內部電路的作狀態,是很多測試技術的基礎。邊界掃描技術降低了對測試設備的要求,減少了對測試引腳的占用,但是邊界掃描技術的實現需要增加少量測試電路,對芯片的工作速度有一定影響。
三、內建自測試(BIST)技術
???????內建自測試是一種可測性設計技術,其特點是測試產生與測試應用是通過內建的硬件電路完成的。其基本原理是把測試電路嵌入到待測電路內部,僅需要外部必要的控制信號就能在電路內部產生測試激勵并得到測試響應,通過測試響應和期望響應確定電路是否存在故障。
????????將測試電路移植到待測電路內部,使內建自測試技術具有其它測試技術所不具備的很多優點:簡化了測試步驟,不需要大量的測試圖形產生,減少了測試時間,減少了輸入輸出引腳,降低了測試成本。另外,測試電路建立在待測電路所在的芯片上,使得測試電路可以在電路工作時鐘頻率下進行測試,這種測試稱為全速測試(at_speed testing),但是它增加了芯片設計的復雜性。
????????
????????一般由以下幾個部分組成:?
- 測試控制器: 控制測試的進程, 保證測試的順利進行。
- 激勵生成器: 產生測試所需要的激勵, 在測試控制器的控制下, 輸入被測電路(DUT)。芯片的測試向量對于測試的完整性具有很大的影響。激勵生成器要產生測試需要的激勵, 常見的測試激勵或者是一個存有測試向量的ROM, 或者是線性反饋移位寄存器(LFSR)等。
- 輸出響應分析電路: 收集被測電路的輸出, 分析被測電路的功能是否正確。比較典型的輸出響應分析電路是存有預期響應的比較器。被測電路的輸出與預期的響應相比較, 即可判斷被測電路的對錯。
- 輸入選通電路: 當系統正常工作的情況下, 輸入選通電路選通系統信號, 接到被測電路, 當進行測試時, 輸入選通電路選通BIST電路產生的信號, 進行DUT測試。