《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 形式化驗證在處理器浮點運算單元中的應用
形式化驗證在處理器浮點運算單元中的應用
2017年電子技術應用第2期
朱 峰,魯征浩,朱 青
蘇州大學,江蘇 蘇州215006
摘要: 隨著芯片復雜度的急劇增加,模擬仿真驗證不能保證測試向量的完備性,尤其是一些邊界情況。形式驗證方法因其完整的狀態(tài)空間遍歷性和良好的完備性,被業(yè)界應用于設計規(guī)模不大的模塊和子單元中。針對處理器浮點運算單元,采用Cadence公司JasperGold工具對一些關鍵模塊進行了形式化驗證,對流水控制中的糾錯碼(Error Correcting Code,ECC)、軟件結構寄存器(Software Architected Register,SAR)和計算單元中的公共模塊分別采用了基于FPV(Formal Property Verification)的性質(zhì)檢驗和基于SEC(Sequential Equivalence Checking)的等價性檢驗。結果表明,形式化驗證在保證設計正確性的基礎上極大地縮短了驗證周期。
中圖分類號: TN401;TP301
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.02.005
中文引用格式: 朱峰,魯征浩,朱青. 形式化驗證在處理器浮點運算單元中的應用[J].電子技術應用,2017,43(2):29-32.
英文引用格式: Zhu Feng,Lu Zhenghao,Zhu Qing. Effective formal applications in CPU floating point unit[J].Application of Electronic Technique,2017,43(2):29-32.
Effective formal applications in CPU floating point unit
Zhu Feng,Lu Zhenghao,Zhu Qing
Soochow University,Suzhou 215006,China
Abstract: With the increasing complexity of chip design, it is almost impossible to ensure the completeness of test space, especially corner cases. Formal verification is applied to block and subunit level design in industry due to systematic and efficient way to explore exhaustively all reachable state space. This paper describes our practical experiences and results with applying formal verification to floating point unit using Cadence JasperGold. Specially, FPV(Formal Property Verification) and SEC(Sequential Equivalence Checking) are applied to ECC(Error Correcting Code) as well as SAR(Software Architecture Register) in pipeline control and shared arithmetic modules respectively. The implemented results show that JasperGold improves verification quality with exposing corner cases, locates potential bugs accurately and speeds up verification achievement.
Key words : floating point unit;formal verification;JasperGold;FPV;SEC

0 引言

    隨著集成電路設計規(guī)模和復雜度增加,系統(tǒng)設計的功能驗證面臨著嚴峻挑戰(zhàn)。據(jù)統(tǒng)計,驗證的時間和人力投入已占到整個設計的50%以上,用于測試和錯誤診斷的代價超過了產(chǎn)品實現(xiàn)成本的50%。因此,推出一種新的驗證方法成為驗證界的熱點和難點。

    傳統(tǒng)的模擬驗證方法,基于軟件或硬件平臺設計系統(tǒng)模型,通過對比測試向量的輸出結果判斷設計是否達到標準,這很大程度上取決于測試向量的完備性[1]。面對大型設計時,模擬驗證逐漸暴露其局限性,難以覆蓋所有的測試向量,無法保證驗證的完整性。

    形式化驗證采用系統(tǒng)高效的方法,遍歷整個狀態(tài)空間,能夠?qū)υO計進行完整的驗證,近年來受到業(yè)界的廣泛關注。形式驗證包括等價性檢驗、性質(zhì)檢驗和定理證明。等價性檢驗是指驗證一個設計的不同描述形式之間的功能等價性。性質(zhì)檢驗利用時態(tài)邏輯描述設計功能,通過窮舉法驗證設計的系統(tǒng)是否滿足功能要求。定理證明從系統(tǒng)的公理出發(fā),使用推理規(guī)則逐步推導出其所期望特性的證明過程,該方法對驗證人員數(shù)學功底和推導能力要求很高,在學術研究之外應用較少。研究形式驗證在實際項目中的應用,對于提高驗證效率,縮短產(chǎn)品開發(fā)周期具有重要意義。

    本文基于一款處理器芯片的浮點運算單元,應用Cadence公司JasperGold形式驗證工具,針對流水控制和計算單元中的關鍵模塊分別采用了FPVSEC進行驗證。

1 SAR驗證

    軟件結構寄存器(Software Architected Register,SAR)在浮點運算單元流水線中作為第二級存儲區(qū)域。SAR整體4個讀端口和4個寫端口,其內(nèi)部由8個bank塊組成,每個bank塊的本質(zhì)是SRAM,一個SRAM是一讀一寫,有128個entry,64個結構寄存器。SAR進行讀/寫操作時,會從8個bank中選擇bank塊的對應entry,將其中數(shù)據(jù)傳輸?shù)狡渲幸粋€讀/寫端口處。當出現(xiàn)多個讀/寫操作訪問同一個bank塊時,會發(fā)生沖突,需要報錯。

    SAR的性質(zhì)檢驗采用的是JasperGold的FPV。性質(zhì)檢驗的主要工作是根據(jù)驗證的需要編寫對應的性質(zhì)(property),性質(zhì)的構建方式和完備程度會直接影響到驗證的效果。常用編寫property的語言有System Verilog和PSL(Property Specification Language),JasperGold對這兩種語言都支持。SAR主要的驗證要點:(1)遍歷整個讀寫的地址空間;(2)發(fā)生沖突時,能否報錯;(3)檢測在不同的工作模式下,是否能正常工作。

    在進行端對端數(shù)據(jù)傳輸時,數(shù)據(jù)包在數(shù)據(jù)通路中會經(jīng)過緩沖器或存儲器,需要進行數(shù)據(jù)傳輸完整性驗證。因為存儲器這類結構易于理解而且很少會出現(xiàn)bug,所以在整個項目的驗證過程中不會引起大家的關注。但是因為存儲器巨大的狀態(tài)空間,使其成為提高形式化驗證性能的瓶頸。為解決這一問題,在對SAR進行驗證時,使用了JasperGold提供的形式計分板證明加速器(Formal Scoreboard Proof Accelerator,PA)。PA可以把存儲器進行抽象化,同時保留充分的信息,確保Formal Scoreboard中結果的精確。在SAR具體驗證時,用PA替換了SAR中的bank,同時為了簡化驗證復雜度,在構建屬性斷言時,核心思想是:在沒有發(fā)生沖突的情況下,讀操作讀取的數(shù)據(jù)應該等于上一次寫操作對應地址的寫入數(shù)據(jù)。Check會對相對應寫操作數(shù)據(jù)和讀數(shù)據(jù)進行對比,同時檢測沖突發(fā)生的情況,具體的驗證構如圖1所示。

wdz3-t1.gif

    通過對驗證結果分析,發(fā)現(xiàn)編寫的property涵蓋了所有的驗證要點,且全部得到了證明。尤其是使用PA之后,證明消耗的時間大大縮短,驗證性能提升顯著。如圖2和圖3所示,沒有使用PA前,針對SAR一個端口遍歷所有讀寫地址空間,總的證明時間為286.41 s,使用PA之后,所需的證明時間僅為1.04 s。

wdz3-t2.gifwdz3-t3.gif

2 ECC驗證

    為了保持數(shù)據(jù)的正確性和一致性,浮點運算單元的流水線控制中引入了糾錯碼(Error Correcting Code,ECC)校驗機制,實現(xiàn)對源操作數(shù)的錯誤檢出和及時糾正,利用數(shù)據(jù)的ECC碼可以實現(xiàn)“糾一檢二”,即僅有1 bit數(shù)據(jù)出錯時,能糾正該錯誤,當數(shù)據(jù)有2 bit錯誤時,只能檢測出錯誤但不能恢復。

    ECC校驗是利用數(shù)據(jù)初始的糾錯碼和讀取該數(shù)據(jù)時重新生成的ECC碼按位異或生成綜合位,根據(jù)綜合位判斷數(shù)據(jù)是否出錯,并將綜合位輸出供糾錯使用。ECC恢復是依據(jù)ECC校驗輸出的糾錯信息糾正待糾錯數(shù)據(jù),當數(shù)據(jù)出錯位大于一位時,錯誤不可恢復。

    ECC校驗和ECC恢復是流水線中不同執(zhí)行階段的兩個模塊,相互獨立又相互依賴。當數(shù)據(jù)經(jīng)過ECC校驗模塊且輸出的error信號為高時,待糾錯數(shù)據(jù)和糾錯碼被驅(qū)動給ECC恢復模塊來判斷數(shù)據(jù)是否可以恢復并糾錯。若兩個模塊分別驗證,復雜的糾錯碼產(chǎn)生機制和有依賴關系輸入信號增加了驗證難度。故將兩個模塊直接相連,通過對比輸入數(shù)據(jù)與糾錯后數(shù)據(jù)來驗證模塊功能。

    如圖4所示,設計一個組合電路實現(xiàn)對輸入數(shù)據(jù)的校驗和糾錯,接入一個錯誤數(shù)據(jù)生成模塊和糾錯碼產(chǎn)生模塊實現(xiàn)對ECC校驗輸入信號的產(chǎn)生,避免在輸入信號property中描述復雜的糾錯碼產(chǎn)生機制。錯誤數(shù)據(jù)生成模塊根據(jù)輸入信號錯誤模式e指定注入錯誤的數(shù)量,錯誤0和錯誤1信號指定數(shù)據(jù)具體翻轉(zhuǎn)位。將ECC校驗、ECC恢復、ECC產(chǎn)生和錯誤產(chǎn)生模塊封裝為一個整體,作為性質(zhì)檢驗的設計實現(xiàn)。

wdz3-t4.gif

    對于組合后的ECC模塊,針對不同的數(shù)據(jù)出錯類型,有3類property需檢驗。在數(shù)據(jù)沒有出錯的情況下,輸出信號error為0;數(shù)據(jù)有1 bit出錯時,輸出error為1,數(shù)據(jù)不可恢復為0且糾錯后數(shù)據(jù)與輸入數(shù)據(jù)相等;數(shù)據(jù)有2 bit錯誤時,輸出error為1且數(shù)據(jù)不可恢復信號為1。根據(jù)錯誤位產(chǎn)生的邏輯,當需要產(chǎn)生2 bit錯誤時,需要保證兩次的翻轉(zhuǎn)位不同,即錯誤0!=錯誤1。實際的流水線邏輯中數(shù)據(jù)位寬為128 bit,對數(shù)據(jù)的高64 bit和低64 bit分別描述其property驗證。

    JasperGold會遍歷所有的狀態(tài)空間,驗證結果顯示耗時101 s,證明了設計包含描述的所有屬性,說明ECC校驗模塊“檢二”和ECC恢復模塊“糾一”的功能實現(xiàn)。

3 共用模塊的等價性檢驗

    浮點單元的運算模塊非常適合形式化驗證,尤其是等價性檢驗。進行等價性檢驗主要的工作在于開發(fā)一個符合設計規(guī)格的參考模型,參考模型可以根據(jù)需要靈活的應用不同語言編寫。目前業(yè)界主流的形式化驗證工具只支持Verilog HDL和VHDL,RTL到RTL的等價性檢驗已經(jīng)發(fā)展比較成熟,有著相對完善的標準。本文采用的JasperGold支持Verilog HDL和VHDL這兩種語言,也有一些工具支持C語言,但C到RTL的等價性檢驗應用較少,發(fā)展不是很成熟。

    在浮點單元運算IP設計開發(fā)時,先對多個運算IP中共用的基本模塊進行了統(tǒng)一設計,在之后各個IP設計中對共用模塊進行統(tǒng)一調(diào)用。所以,浮點單元運算IP的驗證工作先是對共用模塊進行驗證,然后是對各個IP的驗證。出于項目實際情況考慮,在對共用模塊進行驗證時,因為共用模塊實現(xiàn)的功能相對單一,復雜度不高,所以共用模塊的參考模型使用Verilog HDL編寫。而對運算IP驗證的時候,因為IP復雜度高,開發(fā)相應參考模型的工作量很大,因此形式化驗證和仿真驗證共用了統(tǒng)一由C語言開發(fā)的參考模型。由于JasperGold不支持C到RTL的等價性檢驗,在對IP驗證的時候使用了其它的驗證平臺。

    共用模塊的等價性檢驗采用的是JasperGold的SEC,主要包括加法器、減法器、循環(huán)移位器、前導零、4-2壓縮器、舍入器(rounder)等模塊。在編寫參考模型時,除了保證其可綜合之外,還需要考慮功能的正確。

    圖5給出了rounder的形式驗證報告,可以看出,相比于仿真驗證,證明時間幾乎為0,驗證速度明顯提高。而且這一優(yōu)勢在對整個IP進行驗證時更加突出,對浮點單元各個運算IP進行等價性驗證時,除了乘加模塊需要對參考模型進行特殊的改動[3],其它模塊包括除法、倒數(shù)估值等模塊,都能夠比較快速地收斂,極大地縮減驗證周期。

wdz3-t5.gif

4 總結

    本文主要介紹了形式化驗證方法在浮點單元功能驗證中的具體應用。結果表明,相比模擬仿真驗證,形式化驗證不用構造復雜的驗證平臺和編寫海量的測試激勵,在極大減少驗證工作量的同時,提高了的可靠性,縮短了驗證周期。

參考文獻

[1] LAM W.Hardware design verification:simulation and formal method-based approaches[M].US:Prentice Hall PTR,2005.

[2] 陳云霽,馬麟,沈海華,等.龍芯2號微處理器浮點除法功能部件的形式驗證[J].計算機研究與發(fā)展,2006(10):1835-1841.

[3] JACOBI C,KAI W,PARUTHI V,et al.2005 Design,Automation and Test in Europe Conference and Exposition (DATE 2005)[C].Munich,2005.



作者信息:

朱  峰,魯征浩,朱  青

(蘇州大學,江蘇 蘇州215006)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。