ASIC 和 FPGA 變得非常復雜,特別是對于涉及多核的片上系統 (SoC) 設計。這種復雜性帶來了更長、更繁瑣的調試和驗證周期。不幸的是,當出現故障或出錯時,在高度集成的設計中訪問測試點幾乎是不可能的。除非您想在運行多個原型時花費數周時間在黑暗中拍攝隨機錯誤,否則片上儀器不再是可選的;這是一個重要的必備品。圖 1 顯示了使用片上儀器的調試過程概覽。
圖 1:儀器和調試周期對于檢測 FPGA 原型中的錯誤至關重要。
雖然有多種方法可以將儀器添加到 FPGA,但使用儀器網絡的分布式方法正在成為首選方法,因為它最大限度地增加了潛在觀察點的數量,同時最大限度地減少了硅面積或查找表的使用要求。對高效調試同樣重要的是深度跟蹤捕獲,以了解系統的各個部分如何隨著時間的推移進行交互。最后,設計人員必須能夠觀察多個器件和時鐘域的交互,包括片上和片外,所有這些都是完全時間相關的,以獲得真正的系統級視角。
總而言之,包括靈活和完整的觀察點訪問、深度跟蹤捕獲和系統級視圖在內的創新有可能將 FPGA 和 ASIC 調試的游戲規則從漫長而艱巨的過程轉變為快速而高效的過程。
調試挑戰
在回顧實現嵌入式儀器的不同方法之前,首先了解為什么儀器是必要的會很有幫助。最大的原因僅僅是每個系統中不斷增長的功能。
雖然過去有很多探測點(設備上的外部 I/O)可供選擇,但現在無法觀察到發生了什么,因為在大多數情況下,關鍵接口現在都在設備內部。與五年前相比,當前一代 FPGA 的并行運行功能數量增加了 100 倍,而外部輸出的數量卻保持不變。從試圖調試意外行為的開發人員的角度來看,現代芯片只不過是一個大黑匣子。
似乎這還不夠,雖然模擬器的功能繼續以線性方式提高,但并行功能的每一次增加都會增加潛在組合的指數級增長。由于仿真一次運行在一種組合上,因此不可能涵蓋硅前仿真運行中的所有功能。
由于無法充分模擬硅前所有可能的排列,導致在設計完成之前進行基于 FPGA 的原型設計。特別是在原型級別,訪問觀察點對于快速有效地調試功能問題非常有幫助。
另一個調試挑戰是硅上嵌入式軟件的出現。越來越多的 FPGA 和 ASIC 設計包括一個或多個處理器內核。此類系統可能包括軟件、固件、嵌入式處理器、GPU、內存控制器和其他高速外圍設備的復雜組合。這種增加的功能集成與更快的內部時鐘速度和復雜的高速 I/O 相結合,使開發人員比以往任何時候都更難提供功能齊全且經過充分驗證的系統。
片上信號捕捉
當系統涉及多個芯片和組件時,很容易移動邏輯分析儀探頭以查看不同的信號組合。即使轉向片上儀器,靈活地將虛擬邏輯分析儀探頭移動到不同信號點的需求仍然保持不變。由于設計人員無法預測給定芯片的每個變量或潛在應用,因此可用的信號捕獲點越多越好。
傳統的 ASIC 方法使用具有共享選擇信號的多路復用器網絡(每個多路復用器級別一個)并提供 n/m 個不同的信號組合,其中 n 是探測點的數量,m 是同時查看的信號數量(調試總線寬度)。這是最嚴格但最簡單的選項,因為它利用了簡單的多路復用器。為了有效,這種方法需要大量的前期時間來創建與每個可能的調試場景相對應的信號組,并且一旦捕獲點起作用,設計人員就只能查看同一組中的信號。此過程要求高、耗時且極不可能捕獲所有調試場景。
另一個極端是創建一個完整的交叉開關多路復用器,以提供完全的信號靈活性,這需要 m 個大小為 n:1 的多路復用器。相對于面積而言,這可能會很快變得昂貴,這使得這種方法對于除了最小的情況之外的所有情況都是不切實際的。
中間立場是要么增加多路復用器結構內的選擇信號數量,要么創建多個具有不同信號排序的重復組。共享選擇多路復用器和帶有附加選擇信號的多路復用器都在許多本土方法中實現。雖然共享選擇多路復用方案可以處理常見和預期的調試場景,但它們仍然沒有達到理想的完整覆蓋范圍。因此,它們不適合解決意外問題,并且通常會導致實現效率低下,因為信號會重復連接到多個多路復用器。
通過利用多級無序網絡(通常稱為集中器網絡),可以找到更優雅、更高效的解決方案。這種新方法有效地創建了一個觀測網絡,并且正在商業化。使用獨特的網絡架構和互補的路由算法,觀察網絡提供了完整交叉開關多路復用器的信號靈活性,而在大多數情況下,只需要共享簡單多路復用器的裸片面積。表 1 顯示了使用不同方法計算的信號可見度的比較。
表 1:觀察網絡提供與多路復用器相同級別的信號可見性,同時需要相似或更少的裸片面積。
通過觀察網絡,設計人員可以使用自動化工具以寄存器傳輸語言 (RTL) 實現片上信號捕獲探針。在設計階段,無需擔心不同的信號組合或排序,因為每種組合都可用。結果是一個隨信號數量線性增長的觀察網絡。這種方法將確定路由的復雜性從芯片轉移到軟件中。在產生顯著的面積/性能改進的同時,觀測網絡需要復雜的算法來確定路由,因此如果沒有商業軟件來控制信號選擇,就很難使用它。
在觀察點可見性方面,網絡方法比簡單多路復用器的優勢有多大?以這個例子為例,其中探測了 256 個信號 (n),同時可見 32 個信號 (m):
簡單多路復用器:信號組合數(可見性)= 256/32 = 32
觀測網絡:信號組合數(可見度)= 2^256 = 1.2 x 10^77
相差76個數量級。雖然第一種方法具有高度限制性,但觀察網絡方法提供了任何可能的信號組合。以大致相同的成本,觀測網絡提供了巨大的優勢,其靈活性更高。
最大化捕捉深度
對于跨越硬件和軟件的調試挑戰,捕獲長跡線的能力對于追蹤在數千或數百萬個時鐘周期內出現的問題至關重要。在硅后和 FPGA 上,深度捕獲對于了解整個系統的工作方式至關重要,因為許多無法驗證的錯誤需要很長時間才能出現。此外,大多數軟件驅動的功能跨越數十萬到數百萬個時鐘周期。
傳統的儀器方法在從觀測探頭接收到的信息時,使用內部 RAM 中的一個條目來捕獲每個時鐘周期捕獲的數據。使用這種方法很難或不可能一次捕獲超過幾千個時鐘周期而不會對內部存儲器資源造成不可接受的壓力。出于這個原因,現在開始使用壓縮技術來提高捕獲深度。
然而,大多數眾所周知的壓縮算法都不太適合跟蹤壓縮,它們是為視覺媒體和通信應用開發的。一起使用多種壓縮技術的專用跟蹤壓縮層,每一種都專門針對常見的跟蹤數據模式進行定制,現在已經上市。對于大多數實際應用,這可提供 10-1,000 倍的深度,而不會損失分辨率。
高效的系統范圍調試
更高效的 FPGA 和 ASIC 調試的最后一個難題是時間相關的系統范圍視圖,它跨越多個并行運行的時鐘域。當問題需要跨多個檢測區域進行關聯時,設計人員正在考慮獲取單個軌跡然后手動關聯事件的耗時過程。例如,基于 FPGA 的原型設計平臺上的平均 ASIC 原型由跨四到八個 FPGA 的每個 FPGA 兩到三個時鐘域組成。這意味著設計人員將需要單獨調試 8 到 24 個時鐘域。一次跟蹤這 24 個域中的每一個并手動將結果拼湊在一起既耗時又容易出錯。
一種更有效的方法是使用邏輯分析儀軟件從在多個時鐘域和跨多個設備運行的獨立儀器中生成時間相關視圖,如圖 2 所示。專用調試軟件可以從芯片的每個儀器區域收集數據,反轉壓縮算法,然后對齊捕獲的數據以生成系統范圍的時間相關視圖。這導致單一的跟蹤捕獲和調試方案,既節省時間又提供許多功能單元和時鐘域的同時硬件調試。此過程通常會揭示在構建設備時從未考慮過的緊急系統行為。
圖 2:時間相關視圖加速系統級調試。
創新應對意外
隨著復雜性的增加和對探測點的訪問受限,ASIC 和 FPGA 驗證和調試變得乏味且耗時。隨著越來越多的功能集成到每個芯片中,對探測點的物理訪問變得不可能。接下來的挑戰是整合足夠的片上觀察點,不僅可以處理預期的調試場景,還可以處理意外的調試場景。
即使是最復雜的設計,也能更快、更有效地驗證和調試的一項關鍵創新是觀察網絡。與觀察信號的傳統共享選擇多路復用器方法相比,觀察網絡可提供更多具有相似芯片面積要求的信號組合。
支持更高效調試方案的其他創新包括使用高級壓縮算法來提高片上存儲器捕獲深度,以及邏輯分析儀軟件的出現,該軟件可以生成跨越多個設備和片外儀器的時間相關的系統范圍視圖。
審核編輯:郭婷
-
FPGA
+關注
關注
1630文章
21798瀏覽量
606057 -
asic
+關注
關注
34文章
1206瀏覽量
120768 -
存儲器
+關注
關注
38文章
7528瀏覽量
164350
發布評論請先 登錄
相關推薦
評論