Global Sources
電子工程專輯
 
電子工程專輯 > 測試與測量
 
 
測試與測量  

連續邏輯等效檢驗提供良好RTL功能驗證

上網時間: 2008年06月03日     打印版  Bookmark and Share  字型大小:  

關鍵字:連續邏輯等效檢  RTL  功能驗證 

暫存器傳輸級(RTL)驗證在數位硬體設計中仍然是個瓶頸。產業調查顯示,功能驗證佔整個設計工作的70%,然而,儘管側重驗證,仍有超過60%的設計投片需要返工,主要是因為在功能驗證過程中會捕捉到一些邏輯或功能瑕疵和缺陷。所以,改進驗證技術顯然是有必要的。

設計團隊一般採用系統模型進行驗證。就驗證來說,系統模型較RTL具有優勢;即系統模型易於開發且具有優異的執行性能,所以這中間的挑戰在於:如何在系統級驗證和產生正確功能的RTL間建立橋樑。一種稱為時序邏輯等效檢驗的方法具有橋接兩者的能力,其方法是以一個用C/C++或SystemC所寫的規格對RTL實現進行形式驗證。

本文的個案乃描述對一個商用繪圖處理晶片採用的從系統級到RTL的設計和驗證流程。在該流程中,開發的系統模型用以確認視訊指令的數值運算,然後採用時序邏輯等價檢驗方法對RTL實現進行驗證。

系統級流程

隨著設計複雜性的增加,為模擬整個系統,系統級建模成為無法避免的步驟。伴隨功能劃分、模組介面和硬體/軟體協同設計而來的設計複雜性呈指數成長,因而使系統驗證成為不可或缺的步驟。而目前的系統級設計和驗證普遍採用C/C++以及SystemC。

就該個案來說,C/C++是用來建模視訊處理演算區塊。一旦對該系統模型進行精煉和驗證,RTL設計師便著手編寫Verilog程式碼。高階合成工具可從系統程式碼中產生RTL。然而,工程師更常見的作法是以手工重新編寫RTL中的設計,它屬於詮釋而非轉換。即使已用多種驗證平台對RTL實現進行了驗證,採用基於模擬的方法也無法測試全部可能的狀態。

在設計流程中會採用許多驗證工具和方法,它們包括:以聲明為基礎的驗證、隨機激勵產生和涵蓋率驅動式驗證等。上述方法在功能上也許是有價值的,但它們都未能借力於系統模型優勢。連續邏輯等效檢驗將系統模型的可靠度(confidence)直接轉換為RTL實現。

圖:採用SystemC封面的C/C++系統模型——在不改變C/C++模型下導入重置和時脈。
圖:採用SystemC封面的C/C++系統模型——在不改變C/C++模型下導入重置和時脈。

演算區塊驗證

繪圖處理器市場會受到影像品質、表現能力和消費者購買季節而驅動。對負責研發最新繪圖處理器晶片的專案團隊來說,上述因素驅使他們迅速開發出新演算法及新設計。為達成該需求,可以採用系統模型來縮小初始規格和投片間的差距。當該計劃開始時,直接隨機RTL模擬已進行了許多天,但驗證工程師仍擔心會有漏網的錯誤。測試中的RTL設計可建立影像和非影像指令,亦能作為一個進行中專案的演算區塊,以建構下一代影像處理晶片。

設計驗證

驗證工作主要集中在21條影像指令,範圍從‘平行轉移’到‘縮圖絕對差’作業。採用連續邏輯等效檢驗的目標是借力於C/C++所寫的原始系統模型,以在晶片級回覆前改善RTL驗證。採用連續邏輯等效檢驗來發現模擬沒發現的錯誤以及改善RTL設計的除錯性能。

該演算區塊的系統模型是用2,391行C++程式碼實現的。該計劃的第一步包含修正使連續邏輯等效檢驗器可讀的C++程式碼。因該模型最初並非是為等效檢驗編寫的,所以其中的一些設計構造不符合連續工具語言子集。該計劃團隊利用了‘< ifdef >’語句,以過濾出不具清楚硬體概念的結構,例如:reinterpret cast和static cast。透過修改C++程式碼將得以實現這些改變。

未來可以期待的是,在C++發展過程中進行編碼方針將可省去在設計區塊中進行修改的需求。

圖: C++與RTL的吞吐量相同。由於RTL是以導管傳輸,新資料即為每時脈週期下的輸入資料。
圖: C++與RTL的吞吐量相同。由於RTL是以導管傳輸,新資料即為每時脈週期下的輸入資料。

設計團隊下一步是設置驗證環境。連續邏輯等效檢驗需要在驗證前對重置模式和諸如時序和介面差異等連續差異具體化。連續差異被具體規定為I/O映射和設計延遲。

C/C++系統模型添加了一個小型的SystemC服務程式(wrapper),以在不改變C++模型的情況下導入重置和時脈。

該影像處理器演算區塊的RTL使用了7個時脈週期延遲以及4,559行RTL程式碼。C++系統模型的延遲是1個時脈週期,它是由SystemC的服務程式加入的。之後該團隊具體指定一組新輸入資料送至每個設計的頻率。由於RTL是以管線輸送,每個時脈週期都會輸入新資料,因此,C++和RTL的吞吐量便合而為一。

連續邏輯等效檢驗採用連續分析和數學形式演算法來驗證兩個模型中,在所有時序內相同輸出下所有輸入組合結果。不同於模擬,它能平行驗證所有輸入條件,而在該專案中,轉變為同時驗證所有指令。由於任一影像指令各自執行一項特定演算功能,該團隊決定一次驗證一條影像指令,藉此提升除錯效率。

瞭解被測試的指令後,確認與任何錯誤相關的邏輯就變得更容易,而不是同時對所有指令除錯。另外,若採取一次驗證一條指令,連續邏輯等效檢驗器會執行得更快,進一步提升了除錯效率。

當驗證第一條指令(VEC4ADD)時,在RTL模型中發現了9個設計錯誤,而在系統模型中找出1個錯誤。系統模型中發現的錯誤,將能為設計師指出未來如何為設計移除C++程式碼中的語意混淆。

連續邏輯等效檢驗能以10個或更少時脈週期的短反例確認設計差異。就個別反例波形,都能產生一個波形來顯示導致該設計差異的精確輸入序列。

測試平台的再利用

對任一指令,連續邏輯等效方法均可在5分鐘內發現差異並產生反例。連續邏輯等效檢驗也將以測試平台的方式產生反例,可與原始C和RTL設計在模擬時同時執行。測試平台包含監視器以揭露顯示在波形中的相同設計缺陷。

在本個案中,反例測試平台再度作為單元級回歸測試組使用。

在改正VEC4ADD指令程式碼中的問題後,連續邏輯等效檢驗器在361秒內使用52Mbyte來證實系統模型和RTL之間的等效。而若對該指令實施窮盡(exhaustive)模擬,則需執行3.7×1,034個測試向量,即使採用的是每秒1百萬週期的模擬器,盡我們一生也難以完成該項驗證。

驗證第一條指令(VEC4ADD)所需的全部工作,包括設置時間、對多個設計缺陷除錯及達到完全確認共歷時4天。第二條指令利用與第一條指令相同的設置腳本,因而允許設計師立即專注於除錯。它們可在兩天內,對第二條指令(VEC2ADD)的10項錯誤進行查找、除錯及確認除錯。借由推斷這些結果,取決於發現的錯誤數目,全部驗證這21條指令需5到7周時間。若是採用基於模擬的驗證方法,該團隊則需花費6個月的時間為之前的設計完成相同的任務。

結果

在繪圖指令的RTL驗證中採用系統模型是相當成功的,它發現了19個功能錯誤。借助簡潔的反例,連續邏輯等效檢驗改進了驗證品質、縮短了除錯週期。找到的錯誤包括錯誤的標誌延伸、迷失clamping邏輯以及初始化錯誤等,這些缺陷會導致影像品質的降低、軟體解決方案或晶片返工。

使用以C/C++或SystemC所寫的系統模型使得連續邏輯等效檢驗具有發現錯誤、驗證RTL實現的能力。它無需附加測試平台或聲明,就能提升功能驗證的效率。藉由確認難以發現的錯誤及發現那些被傳統模擬方法遺漏的缺陷,它把設計風險降至最低。

作者:Jerome Bortolami

資深現場應用工程師

Calypto設計系統公司





投票數:   加入我的最愛
我來評論 - 連續邏輯等效檢驗提供良好RTL功能驗證
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首