FPGA技術的優點之一是可以更快速地進入除錯階段,內電路的除錯與整合對FPGA的設計人員非常重要,因為幾秒鐘或是幾分鐘的內電路驗證就可以取代掉數週或甚至數月的模擬時間。今日的FPGA具有相當豐富的功能與高度的整合能力,因此在設計複雜的系統或子系統時非常具有吸引力。然而,除錯所需的關鍵信號往往會躲藏在深處,一般無法直接看到,所以在設計階段的初期就必須考慮選擇一種合適的內電路除錯方法。研發團隊究竟要如何決定該採用晶片式的邏輯分析儀,或是預先設計一些掛鉤(hook),以便外接傳統的邏輯分析儀來進行除錯?
在設計階段的初期,開發FPGA系統的工程師就必須有意或無意地做出一些關鍵的決定,這些決定會影響其設計變成實際的電路之後容不容易除錯。除了會影響除錯的效率之外,所使用的方法也會對設計本身造成一些衝擊。
嵌入式的邏輯分析核心
邏輯分析核心是FPGA業界運用最廣的IP核心,Xilinx和Altera兩家公司都有提供邏輯分析核心。Altera的ELA(嵌入式邏輯分析儀)以及Xilinx的ILA(整合式邏輯分析儀)都可針對內電路除錯的需求,提供許多基本的邏輯分析功能。分析儀核心的結構與一部簡單的外接式邏輯分析儀類似,包含兩個主要的區塊:一個是用來進行觸發的比較器,另一個則是用來擷取軌跡資料的儲存暫存空間。此外,每家廠商都會提供一個檢視器,以便分析擷取到的資料。邏輯分析核心可在合成前或合成後插入FPGA的設計中,使用者只要指定所要探量的點,工具就會自動透過適當的繞徑將這些節點和邏輯分析核心的輸入端連結起來。一旦將邏輯分析核心加進設計中,且該設計也在內電路上執行之後,就可以透過JTAG將觸發的規格下載進去。當邏輯分析核心發生觸發時,就可以進行即時的信號軌跡量測,並且將擷取到的資料儲存在FPGA內部的記憶區塊中,接著可以透過JTAG線,將資料從邏輯分析核心傳送到在PC上執行的檢視器中,如(圖一)所示。邏輯分析核心、檢視器、以及用來插入核心的相關工具是以全套工具組的方式一起提供的,此工具組係透過訂閱的方式授權使用,使用核心時不需要再另外付費。
〈註:晶片式的邏輯分析儀不需要增加接腳,對簡單的量測很有效。邏輯分析的組態可透過JTAG下載進去,主控端的電腦會將產生的軌跡資料從FPGA內部的記憶體上傳到在PC上執行的邏輯分析儀檢視器中。〉
除錯方式的選擇
設計團隊應該要先考慮幾個問題,才能決定是否要將邏輯分析核心設計進去、規劃使用外接的邏輯分析儀來進行除錯、或是同時使用這兩種除錯方法。
腳位數愈少的設計愈適合採用內建式的邏輯分析儀,內建的邏輯分析核心不需要用到額外的接腳,而是可以直接使用現有的JTAG腳位來下載組態以及上傳信號軌跡資訊,因此很適合用在腳位數有限的設計中。一個很好的例子是第二代或第三代的設計,其除錯腳位已逐漸被額外增加的功能用掉了。設計團隊若有8到32隻接腳可以用來進行除錯的話,這麼多的接腳配合外部的邏輯分析儀就足以抓出各式各樣的問題了。
FPGA設計團隊願意容忍的影響程度有多大?
相較於將節點繞出去到外部的邏輯分析儀上,含入邏輯分析核心的做法比較具有侵入性。將信號繞出去到傳統的邏輯分析儀上,對各種大小和類型的FPGA設計和作業而言,影響比較小。設計團隊也可以將測試多工器加進去,讓固定數目的接腳能夠達到最高的透視度。這種方法需要在設計階段事先規劃好,對FPGA時序的影響通常是最小的,因為它只會消耗很少的FPGA資源。
內建分析核心的方法對設計的影響則比較大,內建的核心若含有很多的探量點和很深的記憶體,則所耗用的資源會比只使用淺的記憶體和少數幾個探量點的核心來得多。如果要將對設計的影響降到最低的話,選擇核心的組態和FPGA元件時,應以核心所用掉的FPGA資源低於5%為原則。所用掉的資源若超過10%的話,將難以達到設計的限制條件。
將探量功能設計到電路板上
邏輯分析核心不需要進行特殊的電路板探量。無論是插座式(socketed)或焊入式(soldered)的BGA封裝都無法直接探量,因此,如果要使用外接式邏輯分析儀的話,在設計電路板時就要將探量點設計進去,如(圖二)所示。包括電路板的空間、信號完整性的問題以及探量方式的選擇與設計團隊的需求之間的配合等因素,都可以協助設計團隊決定要朝那個方向發展。Mictor的連接器仍然是連接邏輯分析儀與FPGA腳位的主要方法,這種連接器的電容性負載很低、尺寸極小、價格合宜、且獲得兩家主要的邏輯分析供應商所採用。Samtec的連接器則能提供更好的電容負載特性,可適用於次奈秒的信號緣速度及差動式電壓的量測,且只會用到很小的空間。
〈註:邏輯分析儀依然是功能最強大的FPGA量測工具,在設計階段就先做好探量規劃才能提供優異的除錯能力。探量的選擇有很多種,包括新推出的無接頭式探量法,這種方法係連接到導孔而非連接器上。〉
無接頭式探量法在2003年出現了重大的創新發展,無接頭式探量係連接到導孔(vias)上,而非設計進去的連接器上,非常適合用於高速的信號、差動式信號以及無法使用連接器的各種應用。
擷取信號軌跡
如果除錯時需要長時間擷取信號軌跡的話,外接式的邏輯分析儀可能比較適合。邏輯分析核心會使用FPGA的資源來建構軌跡儲存的記憶體,但因FPGA可用的內部記憶體是有限的,可能很快就用光了,而且通常設計本身也會用到,因此沒有額外的記憶體可供除錯使用。邏輯分析核心比較適合的除錯應用是只需用到淺淺的軌跡深度,就可以找出設計錯誤的作業。外接的邏輯分析儀可為每個探量點提供大量的高速軌跡記憶體,使用外接式邏輯分析儀的信號軌跡記憶體也不需要用到FPGA本身的資源,以當今記憶體深度最深的邏輯分析儀為例,每個探量點可使用的記憶體最多可達64M。
外接式邏輯分析儀可提供比較多種的量測模式,能擷取到較多樣化的異常狀況。邏輯分析核心則只能擷取同步(狀態模式)的量測結果,每一次的擷取動作都是依循FPGA上的時脈(通常為待測電路的主時脈)。這種擷取模式對於監測資料流和控制邏輯可能很有效,但卻可能遺漏出現在時脈週期之間的所有動作狀況以及相位沒有關聯的互動情形。設計中是否有些部份是比較取決於實際的互動狀況,使得透過同步的擷取不足以找出設計的問題呢?外接式邏輯分析儀可同時提供同步擷取(狀態模式)以及多種非同步擷取(時序模式)的功能,在時序模式下,分析儀會自行提供取樣時脈來查看時脈週期之間的動作狀況。對FPGA除錯而言,這項功能在偵測和排除FPGA與外部電路之間的互動問題,以及在多個相位沒有相互關聯的匯流排上進行量測時特別有效。
擷取其它的系統事件以進行有效除錯
外接的邏輯分析儀可以追蹤FPGA的動作狀況以及其它的系統事件,同時,邏輯分析儀還具有將多重量測的時間相互關聯起來的功能,並且可以提供更完善的檢視能力。舉例來說,外接式邏輯分析儀可以擷取和顯示被執行過的組合語言或C語言程式碼,並提供通訊協定觸發與檢視的功能。這項量測以及將多個事件的時間關聯起來的能力對偵測及排除FPGA系統的問題特別有效,因為許多的FPGA設計都會提供業界標準與特殊匯流排的轉換功能。
許多設計團隊原本就已經擁有外接的邏輯分析儀了,且其規格也足以應付所需進行的量測。若需要購置新的邏輯分析儀,在速度、記憶體深度以及探量選項上具有良好規格的32頻道邏輯分析儀的價位大約是6000美元左右,而包含插入核心和檢視量測結果所需的工具,以及無限制地使用核心的授權費用在內的內建式邏輯分析儀則不到1000美元就可以解決。
結論
雖然這兩種方法都可以提供即時的追蹤能力,但各自最適用的場合卻有很大的差別。有經驗的設計人員可以預測出系統內會出現何種類型的問題,這通常會與設計中哪些部份對架構而言是新的重大改變有關,或是與FPGA設計和系統其它部份之間的互動狀況相關。設計團隊需針對所要採用的除錯方法做好事先的規劃,才能快速地解決所出現的問題。
(作者任職於安捷倫科技)