提高ASIC驗證的速度與可視性
前言
本文引用地址:http://www.104case.com/article/78027.htm高性能、高容量FPGA在ASIC/SoC原型設計及系統兩方面的應用持續增長。這些設計通常包括硬件及嵌入式軟件(也可能包括應用軟件)的復雜組合,這給系統驗證帶來了巨大負擔,原因是檢測、隔離、調試及校正故障要比最初設計所花費的時間、資金和工程資源多得多。
由于軟硬件之間交互作用相當復雜且無法預見,僅僅是找到深藏于系統中的故障就需要進行長時間的測試序列,而且隨后的調試過程還需要花費更多的時間及精力。另外,如果驗證測試使用視頻流等實際數據時,那么間發故障將很難(如果并非不可能)重現。
有多種驗證方法可以選擇,如軟件模擬、硬件加速模擬、硬件仿真及基于FPGA的原型設計等,但這些方法各有利弊。而基于FPGA的原型設計驗證方法則表現要好得多,能夠以實時硬件速度運行。在ASIC/SoC設計中,基于FPGA的原型設計驗證方法的成本比硬件加速及仿真解決方案低很多。但 FPGA驗證的可視性差,無法監控內部狀態及信號。
傳統驗證方法概述
首先以手機啟動的設計為例,將各種軟件模擬技術與基于FPGA的原型設計的性能進行對比,比較結果可參見圖1。

圖1 軟件模擬技術與基于FPGA的原型設計的性能對比
即使是高容量、高性能的RTL模擬器在啟動系統時也要花費30天,而且還需要使用Testbench。同樣,使用指令集模擬器(ISS)的傳統硬件/軟件共同驗證環境需要花費10天時間啟動系統,也需要Testbench。C/C++模擬雖然將系統啟動時間縮短到24小時,但其對系統內部工作情況的可視性較差。
相比之下,在系統FPGA啟動系統的時間僅為3s,基于FPGA的環境能夠在實時工作負荷下驗證系統,也可以作為嵌入式軟件及應用軟件開發人員的平臺,以便集成并測試真實系統內容代碼。FPGA用于傳統驗證環境的主要缺點是缺乏對內部信號、狀態及存儲器內容的可視性。
前面提到,軟件模擬成本很低但全系統驗證花費時間長,而基于FPGA的原型設計驗證方法不僅成本很低,而且速度很快。硬件加速模擬及仿真的速度比軟件模擬速度快很多,但比FPGA驗證法慢很多,且其成本要比上述兩種方法高得多,所以基于FPGA的原型設計驗證方法具有最高性價比,如圖2所示。

圖2 各種設計驗證方法的性價比
傳統基于FPGA的原型設計系統的明顯缺點是對系統內部工作狀態的可視性有限。提高基于FPGA的原型設計的可視性的方法很多,但這些技術各有其局限性或不足之處。例如將內部信號時分復用傳輸至FPGA主要I/O引腳,這種常用技術一方面提高了可視性,另一方面卻嚴重降級了系統性能。
另一種常用技術是將“邏輯分析儀”的宏(macro)嵌入FPGA架構中。這些宏的用途很多,例如用戶自定義觸發器條件引起的觸發動作可以命令宏從一組信號中采集數據。宏更多用于從選定信號中持續采集數據并存入RAM塊(RAM無剩余空間時,最新數據將覆蓋舊數據)。當滿足用戶自定義條件,如到達斷點時,宏將停止采集數據并通過設備的JTAG端口向外部傳輸已存儲的信號值。
嵌入式邏輯分析儀技術的優勢是能夠確保FPGA持續以實時硬件速度運行,缺點是可監控信號的數量及采集數據的“深度”(周期數)有限。另外,該技術只能根據存儲器容量大小提供有限的可視性。
如果對所有不同驗證方法的整個可視性范圍(從無可視性到全可視性)進行比較,可以發現軟件模擬居于榜首,硬件加速模擬及硬件仿真次之。而傳統基于FPGA的原型設計在使用嵌入式邏輯分析儀技術以確保其速度優勢時的可視性非常差,使調試變得更加困難和耗時。
可視性提高技術的不足之處
盡管嵌入式邏輯分析儀能夠觀察FPGA內部信號狀態,但卻無法提供全信號可視性。為解決這一問題,嵌入式邏輯分析儀“可視性增強”技術應運而生,只需采集與部分內部信號相關的數據,其他未被觀察到的信號數據可由可視性增強型應用推斷出。
該技術的確提高了性能,但因為無法觀察與少量輸入測試矢量相關的大量內部數據,從而限制了可采集數據的深度。如果用戶希望增加深度(輸入矢量的數量),則必須平衡監控信號的數量。這可能需要進行大量的驗證運行(verification run),以跟蹤問題條件,每個驗證運行需要監控不同的信號集。這意味著一些非確定性、間發故障可能“漏網”,原因是其并未出現在并發運行中。
基于門級信號值的可視性增強技術會帶來更多問題,如果上述技術無法識別所有的綜合優化處理,可視性增強信號就不能對應為RTL信號。如果能夠觀測到斷言,則FPGA的門級信號與斷言的源代碼(RTL)數據之間的模糊相關性至少可以使調試過程略微有趣些。
TotalRecall提供解決之道
TotalRecall技術可以解決基于FPGA的原型設計及FPGA 系統的可視性問題,該技術在提供100%可視性的同時,還可確保FPGA以實時硬件速度運行。TotalRecall從概念的角度看很簡單,但實際執行非常復雜,這是因為透明處理多時鐘域等問題。
TotalRecall技術的基本原理是在FPGA內部復制邏輯,然后存儲該復制邏輯的激勵,同時延遲其應用。這稱為TotalRecall邏輯。圖3為整個設計應用TotalRecall技術的例子。

圖3 TotalRecall的基本原理
從圖3中可以看出,主要輸入端的激勵信號直接饋入實際邏輯塊,器件主要輸出端的實時響應由此邏輯塊產生。同時,原始測試矢量也饋入,作為緩沖器的存儲區。假設該緩沖器的深度為1000字(words),則復制邏輯的激勵信號將跟蹤真實邏輯觸發信號1000個時鐘周期。
當檢測到主要輸出端的斷言觸發或錯誤響應等問題時,復制邏輯及其相應存儲緩沖器將暫停。此時,激勵存儲緩沖器內容及復制邏輯內容狀態由 FPGA器件的JTAG端口導出。TotalRecall技術提供極大測試矢量深度(與傳統的基于邏輯分析儀的宏技術相比)的原因在于存儲一次激勵信號后即無須存儲海量內部信號。
當然,復制邏輯的當前狀態與其綜合后的門級表示相符。然而,設計人員及驗證工程師更愿意使用他們最初的RTL級,原因是這些表示易于理解,且在RTL級上工作可以大幅提升用戶的工作效率。因此,TotalRecall技術將當前的門級表示映射為等同的RTL表示。
當檢測到故障且以實時硬件速度運行時,用戶能夠馬上進入他們熟悉的軟件模擬環境,初始化設計及Testbench將引導用戶輕松找到故障。已映射的內部狀態信息用于對標準RTL模擬器的內部狀態進行初始化。同時,激勵存儲器內容則用于生成驅動軟件模擬器的Testbench。
請注意,使用TotalRecall技術無須復制整個設計,這一點很重要。驗證工程師可能僅僅關注設計中包含的某個功能塊,就可以使用TotalRecall技術復制這些功能塊。將TotalRecall技術應用到單個功能塊的實例如圖4所示。

圖4 TotalRecall技術應用于設計中的子集
此例中,當發現故障時,TotalRecall技術能夠生成局部Testbench,專門用于測試掛起功能塊,然后設計人員或測試工程師對Testbench和掛起塊的初始狀態信息進行詳細分析。
TotalRecall技術的優勢很多,例如,除了提供所有內部信號的觀察通道外,用戶還可以觀察到內部存儲區的所有內容。 TotalRecall技術可以在實時硬件速度下提供100%的可視性,其中包括寄存器、組合邏輯和存儲模塊等,使用戶輕松跟蹤、隔離并快速評估深藏在驗證過程中的間發故障。當某個故障被檢測出時,TotalRecall技術可以定位到故障前數百次甚至上千個周期前的狀態值,并且用來對軟件仿真器進行初始化設置。另外,TotalRecall還可以提供設計由初始狀態到故障狀態的測試序列。TotalRecall與各種設計驗證技術的可視性對比如圖5所示。

圖5 各種設計驗證技術的可視性對比
驗證與調試的革新變化
TotalRecall技術對驗證與調試技術將產生深遠的影響,下面是幾個簡單例子。
斷言(Assertions):TotalRecall使斷言十分有用。由于斷言具有暫時性特點,過去很難充分利用基于斷言的驗證(ABV)的優勢。采用TotalRecall技術則可采集足夠深度的測試矢量以便完全隔離第一個觸發斷言的動作序列。
基于FPGA的ASIC/SoC原型設計:TotalRecall技術使基于FPGA的ASIC/SoC原型設計在實時硬件速度下能夠提供 100%的可視性,尤其是TotalRecall技術具有檢測、跟蹤、隔離并調試間歇性及非確定性故障的能力,這對其他驗證方法而言是難以實現的。
基于FPGA的在系統驗證:在基于FPGA的系統中,由于對主電路板的改動相對較少,因此該系統支持TotalRecall技術。在驗證或燒片系統中,可能會將高容量FPGA與用以復制整個設計的TotalRecall技術配合使用。一旦系統驗證完畢,FPGA可以用成本更低的、容量更小的 (僅能放置主要設計邏輯即可)的兼容器件替代。
遠程軟件開發:一旦基于FPGA的平臺上市,則可將備份分發給多個在不同地區的應用軟件開發人員。過去,如果發生復雜的硬件-軟件互動問題,則很難進行調試解決。現在,一旦出現故障,每個基于FPGA的開發系統均可配備TotalRecall技術,這樣遠程軟件開發人員就能夠立即將 Testbench及狀態信息發回“基地”,由設計、驗證小組快速解決。
總結
TotalRecall技術與傳統驗證技術的對比見表1。與傳統驗證技術(包括軟件模擬、硬件模擬及基于FPGA的原型設計技術)不同, TotalRecall能夠幫助用戶快速檢測、隔離、調試并解決深藏的偶發及間發故障。這些故障有時會出現在實時激勵的情況下或者由軟硬件之間復雜的非確定性互動引起,解決這種問題非常困難,除非在一定速度下運行(實時系統尤其要求如此)。
表1 傳統驗證技術于TotalRecall技術對比

除了向以實時硬件速度運行的設計提供了100%的可視性以外,TotalRecall技術還可幫助驗證工程師在熟悉的RTL環境中跟蹤故障。另外,TotalRecall技術使斷言非常有用,當一個斷言觸發時,TotalRecall能夠提供一個觸發這個斷言的僅包含幾百或幾千個周期的測試序列。
評論