由人工智慧驱动的设计应用
英文原文:
2022年1月11日於《Semiconductor Engineering》刊登
AI设计的新技術為可測試性设计(design-for-test)流程帶來重大挑戰
傳統處理器是為了通用應用而设计,卻很難滿足人工智慧(AI)或機器學習(ML)應用的運算需求和功率預算(power budget)。目前有數個半導體设计公司正在開發專門的AI/ML加速器,這些加速器經過優化以適應特定工作負載,使其在較低功率下得以提供更高的處理能力,也就是提升其效能功耗比 (performance per watt)。這些加速器设计通常規模龐大,含有數十億個閘道、具備數千個複製處理單元(processing-unit, PU)的高度平行架構,以及透過高度優化網路連接的大量分散式晶載(on-chip)记忆体,以實現高處理量(throughput)。而這些處理單元還可以包含多個核心和緊密整合的本地记忆体。一家領先的AI晶片公司所推出的加速器,可能具有如圖1所示的功能。為了實現设计可擴展性和更快的開發週期,AI SoC设计人員正在採用鄰接设计方法(abutted design method),意即透過標準化介面運用物理佈局,以連接多個相同的區塊(處理單元或核心),而無需進行任何頂層繞線。
圖1:具有處理單元(PU)和本地记忆体(LM)的AI晶片架構。
這些處理單元(PU)內的本地记忆体,可對本地資料進行高能效、低延遲的操作。然而,傳統的DRAM技術無法提供平行存取和處理大量外部資料所需的頻寬和容量。因此,許多AI SoC正在部署新的记忆体技術,例如基於先進的2.5D或3D封裝的高頻寬记忆体(HBM)或混合记忆体立方體(hybrid memory cube, HBC),以提供更高的資料處理量和容量。這些AI加速器最終被整合到以分散式方式處理大型工作負載的AI系統中,而加速器則使用晶片上的高頻寬介面(例如PCIe)進行通訊。近來,设计者開始利用這些介面進行高頻寬測試。像汽車這樣的AI加速器應用,被要求在晶片生命周期的各個階段都具有高度可靠性、安全性和功能安全性。晶片生命週期管理(SLM)技術透過在矽晶中添加功能,在设计、製造、測試到現場部署的所有階段收集和監控SoC資料,以因應這些挑戰。
前述AI设计的規模、複雜性以及新技術的導入,對其可測試性设计(DFT)流程帶來重大挑戰。一般來說,這個挑戰可藉由專注在兩個主要功能來解決:採用有效的测试方法及定義高效的顿贵罢架构。顿贵罢架构根據测试方法來定義,以實現測試目標,包括快速DFT签核、最小化測試時間、高測試覆蓋率和有效診斷。以下部分將討論這兩個功能的細節和需考慮的因素。
顿贵罢架构
由於AI设计具有龐大的设计規模和複製架構,因此分層測試(hierarchical test)方法非常適用於此。與平面测试方法相比,層階測試有兩個主要優勢。首先,它採用分治法(divide-and-conquer),將设计分成較小的層級分區,以便快速進行DFT签核,包括DFT插入、測試模式設定、測試向量(pattern)生成和验证。對於大型AI设计而言,在頂層採用展平式(flat test methodology)测试方法是不切實際的。其次,由於AI设计是由複製的區塊組成,DFT签核僅需在某一層級的區塊上執行一次即可,並於其他實例(instance)中重複使用。將签核完成的區塊與其父層(parent-level)的DFT签核進行複製和整合,完成在父層的DFT實作。如果AI设计包含多個層級,可遵循相同的層級區塊签核方法,以完成晶片等級的DFT,如圖2所示。
圖2:分層测试方法可以執行分層DFT签核和複製,以加速該设计的DFT签核。
测试方法
分層測試可加速DFT签核並最大化其重複利用率;然而,设计人員仍需要確定设计的顿贵罢架构,而這也將成為DFT邏輯實作的細節。由於设计要求十分多元,不同AI晶片對DFT有不同的需求和限制。基本上,一個AI晶片的顿贵罢架构可以透過確定以下組成部分來廣泛制定:
顿贵罢架构:签核區塊與DFT實作
在使用多層級设计的層階方法時,將最低層級區塊或更高層級區塊簡單地指定為首個層階签核區塊,這種做法並不理想。设计人員需要權衡DFT對设计(面積、功率、時序等)和測試的要求,以確定签核區塊層。觀察圖2中的AI设计範例,如果在最低層階(也就是處理單元)進行DFT签核,可能會導致過度的區域額外開銷(overhead)、佈線壅塞,或者是非必要的測試模式,增加測試時間卻沒有帶來明顯的好處。另一方面,若指定晶片層級進行DFT签核,會導致更長的測試向量生成時間、更長的測試時間、更大的记忆体需求、佈線壅塞及功率等問題。因此,我們必須找到一個平衡點,既能將DFT的影響最小化,又得以實現測試目標。在圖2中,父層區塊可能是首個分層签核區塊,而非處理單元。在签核區塊內,设计人員需要考量多種因素(如測試時間、功率、物理设计等)來決定邏輯測試和记忆体測試的DFT設定。圖3顯示了依據设计而定的父層區塊DFT設定範例(編解碼器(codec)是掃描測試壓縮,SMS是记忆体BIST測試控制器)。
圖3:分層签核區塊DFT設定範例。 (i) 在整個區塊中搭載一個編解碼器和一個SMS。 (ii) 每個處理單元都搭載一個編解碼器,但只有一個SMS用於測試該區塊內所有记忆体。 (iii) 每個PU都搭載一個編解碼器,區塊记忆体搭載一個SMS,另一個SMS則用於測試所有處理單元內的记忆体。
對於較簡單的设计來說,測試要求較不嚴格,DFT邏輯對设计的影響也很小。隨著设计日趨複雜(如AI设计),維持測試品質和成本所需的DFT邏輯變得更加重要,足以影響測試時間、測試功率、物理设计、DFT規劃時間和可擴展性等因素;連帶需要设计人員開發創新的解决方案來實現设计和測試目標。在此背景下,本文將繼續探討基於IEEE 1687和IEEE 1500的測試壓縮、測試資料傳輸和測試設定機制的要求和進展。
顿贵罢架构:掃描測試匯流排和壓縮
談到掃描式測試資料傳輸時,靜態引腳(pin)分配是傳統的預設方法,如圖4所示。它涉及將區塊的編解碼器輸入和輸出引腳連接至頂層掃描引腳。由於AI设计包括複製的签核區塊,因此相同的測試資料輸入可以藉由輸送,並根據功率限制同時地測試多個區塊。這節省所需的測試引腳和測試時間。在晶片層級掃描引腳有限的情況下,也可針對編解碼器輸出實作頂層多工處理。然而,這種架構缺乏靈活性且存在幾個重要缺點如下:
為了緩解這些問題,人們開發出以測試匯流排為基礎的資料傳輸機制。一些過去基於測試匯流排的解决方案,使用現有的編解碼器並將它們連接到新的測試匯流排以將資料傳輸至處理單元。位於編解碼器和測試匯流排之間的本地控制器介面,負責管理匯流排和編解碼器之間的資料。不同於複雜的編解碼器輸入/輸出訊號路由,相同的測試匯流排會穿越每個區塊,在其邊界提供一個標準化的介面。透過避免基於區塊數量的自定義管線(pipelining)和訊號路由,此解决方案大幅簡化晶片的物理设计,並為鄰接设计提供了一個可擴展、易於實施的測試資料傳輸。本地控制器透過測試向量生成或略過(bypass)區塊的靈活性,避免了頂層多工處理的需求,以維持測試時間和測試功率。
雖然這種方法解決了先前提到的大部分問題,但仍需要確定編解碼器的正確輸入和輸出引腳以減少測試量;另一方面,也無法充分利用測試匯流排功能來降低另一層級的測試時間。這主要是因為編解碼器和測試匯流排是相互獨立開發的。新一代基於測試匯流排的解决方案包括循序邏輯壓縮(sequential compression) 編解碼器、測試結構和結構端點(socket),它們通過共同優化開發,提供更低的測試資料量和更少的測試時間。透過更高程度的區塊測試重疊(block test overlap)來實現有效的測試頻寛分配。圖4顯示了掃描式測試資料傳送機制的演變。
圖4:掃描式測試資料傳輸機制從靜態引腳分配演進到優化的測試結構(test-fabric)與序列壓縮技術。 SEQ代表序列壓縮編解碼器,FS代表結構端點(fabric-socket)。
循序压缩测试结构的两大优势:
1. Simplified DFT planning and implementation 簡化可測試性设计(DFT)的規劃與實施
2. Test time reduction 減少測試時間
顿贵罢架构:測試設定機制架構
確定分層签核區塊以及相應的邏輯測試和记忆体測試實作細節後,顿贵罢架构中另一個重要組件是制定測試設定(test configuration)或測試設置(test-setup)機制策略。該機制通常是基於IEEE 1687和IEEE 1500標準的串列網絡,用於設定測試邏輯,包括應用於編解碼器的編程測試資料暫存器(register)、時序控制器、记忆体測試控制器、系統內測試控制器等。如同邏輯測試與记忆体測試,測試設置架構也需要應對前面提及的挑戰;然而,關鍵的需求在於一個高效架構,以減少測試時間、簡化物理设计並支援鄰接设计。與邏輯測試和记忆体測試不同的是,在這種情況下,測試功率通常不是問題,因為此一過程中僅有少數设计正反器會進行切換(toggle)。基於這些網路固有的串列特性,測試設置操作相較於掃描測試要慢得多,除了顯著增加測試時間外,也很容易成為大型设计的瓶頸。AI设计需要為數百個複製區塊部署相同設定,使用串列方法將相同的資料發送到所有區塊並非理想選擇。在此情況下,將資料發送至相同核心可以大幅減少測試設置時間。然而,如果AI晶片使用鄰接设计方法,訊號的傳送會導致邏輯實作和物理设计問題。串列匯流排可以在無需頂層繞線的情況下,在區塊之間傳送。雖然IEEE 1687和IEEE 1500都支援串列和傳送網路,但IEEE 1687更易於執行串列實作,而IEEE 1500網路則更適合資料傳播。
圖5是一個AI晶片的範例。假設該晶片採用鄰接设计且包含一個具有測試存取埠(test-access-port, TAP)的中央區塊,其測試設置資料被分配給多個複製的相同處理單元。這樣的设计可以受益於利用1500和1687的優勢,同時減少測試設置時間並支援鄰接设计。主控制器將測試設置資料傳送到1500網路上的五個處理單元管柱(PU column),但由於鄰接處理單元的菊鏈(daisy chaining)串接,該資料將會透過1687環狀網路(ring network),在每個管柱內進行串列移位(shift serially)。控制訊號直接由子控制器(sub-controller)在每個處理單元內部生成,而不是從主控制器(main-controller)發送,對於鄰接處理單元來說是好事。在此範例中,測試設置時間可能會節省4倍。許多工業设计在鄰接區塊中還會再加入另一層鄰接區塊,而设计人員可以分層地遵循類似的方法來進行设计。
图5:透过1500网路向处理单元管柱(笔鲍-肠辞濒耻尘苍)传送测试设置,并透过1687网路对序列中的处理单元进行菊链串接,以支援邻接处理单元串连。
人工智慧晶片體積龐大且複雜,因此,如何制定一個既能在最快周轉時間內達到預期測試目標,又能將影響降至最低的DFT及測試策略,是一項艱鉅的任務。此類设计必須採用分層式测试方法,若使用傳統DFT方法會導致AI晶片測試結果不佳。设计人員必須細心規劃整個顿贵罢架构,包括邏輯測試、记忆体測試以及測試設置,同時需要通盤考量測試時間、測試功率、物理设计影響、鄰接设计方法及可擴展性等多種因素。目前以測試匯流排為基礎的機制正在取代靜態多工,以實現高效的資料傳輸,在大型设计中尤是如此。然而,此種機制在測試匯流排和壓縮編碼器之間的相互利用的程度有所限制。新一代架構包括共同優化的序列壓縮編解碼器、測試結構和結構端口,已證明能夠有效減少測試量和測試時間。