如果需要進行驗證測試或為電路除錯,可以運用邏輯分析儀結合激發與即時信號軌跡擷取的方法來節省時間。這篇文章將探討三種方法,以說明如何運用激發與即時信號軌跡擷取能力的組合進行除錯,包括:
- (1)模擬輸入電路的信號,然後使用邏輯分析儀擷取輸出信號軌跡,以驗證電路對特定激發條件的反應是否正確;
- (2)利用邏輯分析儀擷取通訊資料流,然後迅速將即時的信號軌跡轉換為碼型產生器的激發條件;
- (3)碼型產生器並不限於產生完美的資料,也可以加入已知的錯誤,以測試電路如何回應不符規格的輸入信號。
方法一:模擬電路信號並擷取輸出軌跡
第一種方法是模擬輸入電路的信號並使用邏輯分析儀擷取輸出信號軌跡,這是測試電路功能的傳統方法,先利用碼型產生器(PG)模擬輸入電路的信號,再使用邏輯分析儀擷取輸出信號軌跡,以驗證電路對特定激發條件的反應是否正確。內建了碼型產生器的邏輯分析儀可以為數位系統的驗證與除錯作業,提供一套密切整合的解決方案。
如果有好幾個設計團隊一起同時進行設計,且信號輸入的部份尚未完成時,這種方法特別好用。以一個簡單的數位電路功能區塊圖為例,如(圖一)所示,如果設計子系統B的工程師團隊已經完成設計,可以開始進行測試,但子系統A和C尚未設計完成,此時便可以利用碼型產生器,提供子系統B所需的輸入信號,然後使用邏輯分析儀觀察子系統B的輸出。透過這種方法,理論上可以測試每一種可能的輸入組合,並觀察相應的輸出。
若為較小型的系統,可以產生一張包含所有可能的輸入條件與相應輸出的圖表,然後逐一進行測試。但設計複雜系統的工程師基於時間和資源上的限制,通常只會測試操作上的極限或最糟狀況的組合,有時稱為邊界的極端狀況(corner case)。
高速數位測試的最糟狀況測試範例:
範例A
以電路額定的最高資料速率提供交替輸入的激發信號,然後使用邏輯分析儀觀察輸出端出現的功能性錯誤。常用的測試碼型包括在匯流排上提供交替變換的A和5的十六進位值,或是Walking One碼型。
Walking One碼型可以單獨測試匯流排上的每一個位元,一開始先讓匯流排上的最低位元保持在高位準,所有其它的位元則保持在低位準。在每一個時脈週期中,高位準值會逐一更替到匯流排上下一個次高的位元。
範例B
若要針對傳輸線、緩衝器或其它讓信號原封不動經過的電路,測試是否會因串訊(crosstalk)造成資料毀損,可以將一個受害信號(victim)保持在高或低位準,同時在非常靠近受害信號的位置,提供交替出現1和0碼型的攻擊信號(aggressor)。在最糟的情況下,匯流排上除了其中一個以外的所有位元都是攻擊信號。
設定碼型產生器,使之反覆執行,輸出信號到傳輸線的輸入端(電路的驅動器),以檢查電路的功能,並留意電路的接收端是否看到任何錯誤,或如果受害信號在接收端有所改變的話,邏輯分析儀就會觸發。若要查看受害信號上的串訊,可使用能擷取眼圖的示波器或邏輯分析儀系統。
範例C
當任何一條信號線因驅動力太弱或終結方式不恰當,而沒有足夠的時間可以充電到高位準或放電到低位準時,就會出現符號碼間的干擾(ISI)。此狀況可以利用碼型產生器,饋入可提供最糟ISI狀況的碼型。在任一條信號線上,輪流出現12個高位準(1),緊接著1個低位準(0),再緊接著12個高位準(11111111111101111111111110…)的碼型,對於找出個別信號線上潛在的ISI相當有幫助,當然也可以使用相反的碼型(0000000000001000000…)。這些碼型可以讓信號達到最高或最低的充電,然後再試著於反方向傳送一個脈衝。驅動力不足在傳送單一個脈衝時,可能導致信號的擺動幅度無法在傳輸線的接收端達到必要的電壓位準。
健康的系統應該可以因應所有極限狀態(stressful)的位元碼型。 測試自動化程式可以從遠端控制測試設備,包括邏輯分析儀與碼型產生器的組合。
為系統除錯時,如果遇到很難確切找出的間歇出現之問題,可以運用此功能強大的方法(模擬輸入信號同時觀察輸出結果),將問題分割,各個擊破。將系統分割後進行除錯,並利用碼型產生器提供激發信號,饋入隔離的電路中,是逐一排除有問題的系統中各個可疑電路的方法之一。
如果需要進一步探查不健康系統上其它參數方面的問題,可以利用示波器查看類比信號。(圖三)是整合在邏輯分析儀顯示幕上顯示的示波器軌跡,如此一來,就能以時間上相互關聯的方式,將信號的類比特性與邏輯分析儀觀察到的功能軌跡一併顯示出來。
方法二:擷取通訊資料流
方法二是利用邏輯分析儀擷取通訊資料流,並迅速將即時的信號軌跡轉換為碼型產生器的激發條件。充分利用激發/響應測試系統的方法是運用邏輯分析儀擷取通訊資料流,然後將即時的信號軌跡轉換為碼型產生器用的測試向量,這種方法可以大幅簡化撰寫碼型產生器用的測試向量之工作。測試向量會決定每個時脈週期所要輸出的碼型,測試向量會存放在一個稱為序列的清單中,當序列開始執行後,會從第一個向量到最後一個向量,依序執行清單中所有的向量。
有些軟體常式可以直接將邏輯分析儀擷取到的軌跡,自動轉換為碼型產生器的向量。
或者,以手動的方式從邏輯分析儀的CSV檔案剪下所需的資料,再貼到碼型產生器的CSV檔案中也相當簡單。如果選擇以手動方式從邏輯分析儀的檔案剪下資料,再貼到碼型產生器的檔案中,需注意在每一種碼型產生器的應用中,都會有兩種序列,一個是初始化序列(initialization sequence),可以將電路或子系統調整到一個已知的狀態。初始化序列之後是主序列(main sequence),主序列用於產生實際的碼型,以模擬待測電路。初始化序列只會執行一次,主序列則不同,如果啟動反覆執行的功能,主序列會以迴圈的方式反覆執行。將碼型產生器設定為與系統相同的標籤與時脈設定,然後儲存為碼型產生器的CSV檔,則PG CSV檔案中就會有正確的初始化序列。只要將邏輯分析儀CSV檔案中相同標籤名稱的資料剪下,然後貼到PG CSV檔案的主序列中,就可以複製信號軌跡的資訊。
信號軌跡的轉換可以在碼型產生器中進行修改,以細微或明顯的方式更改激發條件。
試想一種狀況:新的設計可以將原有設計的資料速率從50MHz提高到100MHz。為了提供激發信號以測試新的設計,可以將輸入舊系統的信號軌跡轉換成碼型產生器的軌跡,再使用內部或外部的時脈,將碼型產生器的時脈設為100MHz。
當想要控制輸出向量的頻率,且輸出的向量不需要與待測系統相互同步時,可以使用內部的時脈信號源。如果需要將碼型產生器的向量輸出動作與待測系統同步,則要使用外部的時脈。
如果設計時無法選擇擷取一段信號軌跡進行轉換的話,碼型產生器的介面也可以直接輸入或載入ASCII文字、CSV或XML檔案。
若是複雜的設計,可以考慮使用SynaptiCAD的WaveFormer Pro軟體。WaveFormer Pro可以從SPICE、VHDL以及Verilog模擬器產生的模擬波形資料,產生碼型產生器的檔案。WaveFormer Pro是一種時序圖編輯器及波形轉換工具,可以將超過33種不同的檔案匯入超過33種模擬器和測試設備平台中,以及從這些模擬器和平台匯出。
WaveFormer Pro也可以讀取邏輯分析儀的檔案,並產生VHDL和Verilog測試碼模組,以及SPICE分段線性(piecewise-linear)電壓的原始程式碼。
當為碼型產生器撰寫程式碼時,可以在初始化序列和主序列中包含預先定義的指令程式碼,這些指令可以產生中斷點(break)、迴圈(loop)、等待外部事件或預觸(arm)信號,或是送出一個預觸信號給另一部儀器。使用者可定義的巨集能產生可以接受參數的可重複使用序列,這樣的彈性在原型啟動(turn-on)和環境測試上相當好用。
方法三:加入已知的錯誤
方法三為加入已知的錯誤以測試電路如何回應不符規格的輸入信號 。在第三種方法中,著眼的是碼型產生器並不限於產生完美的資料。許多工程師都會運用碼型產生器,在各種能夠將待測電路逼近極限的輸入條件下,驗證電路的輸出。因此可以故意加入一些錯誤,以測試通訊協定檢查軟體、中斷處理或錯誤處理軟體。
錯誤檢查測試的範例如下:
- (1) 提供比電路額定的資料速率還要快的交替輸入激發信號,然後使用邏輯分析儀觀察輸出端出現的功能性錯誤;
- (2) 加入通訊協定的違反條件,例如寫入一個DDR記憶體電路中尚未啟用的記憶區段(bank);
- (3) 將中斷信號加入電路中,然後觀察其反應。
確切的輸出碼型、時脈的類型和速度,以及所需的信號數完全取決於應用,因此設定碼型產生器的方式,以及所產生的信號產生序列類型都會有所不同,儘管如此,從程序的角度來看,每一次設定、產生序列以及啟動碼型產生器的步驟都是一樣的。
- (1)選擇與待測目標相容的探棒;
- (2)設定輸出模式以及時脈信號源的參數;
- (3)連接探棒與電路,並在碼型產生器的使用者介面中定義所需的匯流排和信號;
- (4)產生測試向量的序列,以產生所需的輸出信號;
- (5)啟動碼型產生器,然後量測待測目標,看看結果是否符合預期。
結語
結合碼型產生器與邏輯分析儀,可以提供數位設計人員彈性的激發/響應測試與除錯平台,數位設計團隊可以運用碼型產生器,模擬開發中電路的數位信號,碼型產生器可以代替尚未完成的部份,也可以提供激發信號以測試原型的功能。
(作者任職於Agilent安捷倫科技)