胡 凱,叢紅艷,閆 華,張艷飛,李 涌
(1.中科芯集成電路有限公司,江蘇無(wú)錫 214072;2.中微億芯有限公司,江蘇無(wú)錫 214072)
現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)芯片集成資源的數(shù)量和設(shè)計(jì)的復(fù)雜性日漸提高,研發(fā)周期和面市時(shí)間的壓力使實(shí)現(xiàn)驗(yàn)證的完整性和高效性受到挑戰(zhàn)。為了驗(yàn)證整個(gè)FPGA 芯片邏輯功能的正確性,必須做大量的驗(yàn)證工作,驗(yàn)證工作量已經(jīng)占到芯片整個(gè)研制流程工作量的60%~80%[1-3]。Flash 系列FPGA 芯片集成了基本功能模塊(VERSATILE)、系統(tǒng)配置模塊(CFG)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、時(shí)鐘管理模塊(CCC)、輸入輸出模塊(IO)等。在Flash 系列FPGA 芯片驗(yàn)證中(也稱(chēng)為FPGA 芯片的系統(tǒng)級(jí)驗(yàn)證),驗(yàn)證重點(diǎn)及難點(diǎn)主要集中在驗(yàn)證芯片集成的正確性及配置過(guò)程和全局信號(hào)的連線(xiàn)的正確性。
FPGA 芯片系統(tǒng)級(jí)驗(yàn)證側(cè)重于不同子系統(tǒng)之間的信號(hào)交互以及實(shí)現(xiàn)不同驗(yàn)證場(chǎng)景的驗(yàn)證用例,為了提高驗(yàn)證覆蓋率,驗(yàn)證對(duì)象需要包含大量的驗(yàn)證用例,所消耗的驗(yàn)證時(shí)間很長(zhǎng),而配置下載時(shí)間即下載位流文件約占整個(gè)驗(yàn)證時(shí)間的2/3,因此,如何對(duì)Flash 系列FPGA 芯片設(shè)計(jì)中的復(fù)雜驗(yàn)證對(duì)象進(jìn)行驗(yàn)證、提高驗(yàn)證功能覆蓋率已經(jīng)成為縮短總體產(chǎn)品驗(yàn)證時(shí)間所面對(duì)的挑戰(zhàn)。為了加快仿真速度,提高驗(yàn)證效率,本文提出了一種加速Flash 系列FPGA 芯片的系統(tǒng)級(jí)驗(yàn)證方法。
全芯片驗(yàn)證平臺(tái)如圖1 所示,其主要包括驗(yàn)證激勵(lì)、縮減后的配置位流文件、被測(cè)電路(DUT)、參考模型和監(jiān)測(cè)器,DUT 為待驗(yàn)證的全芯片電路網(wǎng)表,縮減后的配置位流文件通過(guò)DUT 的配置數(shù)據(jù)輸入接口輸入到DUT 中,將相對(duì)應(yīng)的驗(yàn)證激勵(lì)通過(guò)DUT 的通用數(shù)據(jù)輸入接口輸入到DUT 中,同時(shí)驗(yàn)證激勵(lì)通過(guò)DUT 的通用數(shù)據(jù)輸入接口輸入到參考模型,利用監(jiān)測(cè)器監(jiān)測(cè)DUT 的輸出是否與參考模型的期望值一致[4-6]。采用此方法的優(yōu)點(diǎn)是驗(yàn)證對(duì)象為全芯片電路,模塊功能簡(jiǎn)單且占用配置位流幀數(shù)較少的驗(yàn)證用例,可以顯著降低驗(yàn)證時(shí)間,提高驗(yàn)證效率。但是對(duì)于全芯片電路功能復(fù)雜、占用配置位流幀數(shù)較多的驗(yàn)證用例,采用此方法不能有效提高驗(yàn)證效率,驗(yàn)證時(shí)間依然很長(zhǎng)。
圖1 全芯片驗(yàn)證平臺(tái)
FPGA 芯片中的邏輯資源排布結(jié)構(gòu)及其幀分布如圖2 所示,F(xiàn)PGA 芯片中的邏輯資源主要包括VERSATILE 和互連線(xiàn)資源。配置位流的第1 幀對(duì)應(yīng)芯片頂部的第1 行電路,最后1 幀對(duì)應(yīng)芯片底部最后1 行電路,完成第1 幀到最后1 幀的全部配置碼流的下載耗時(shí)較長(zhǎng)。在2U 服務(wù)器,即1 TB 內(nèi)存、Intel(R)Xeon(R) Gold 6254 CPU@3.10 GHz,萬(wàn)兆網(wǎng)絡(luò)硬盤(pán),10 TB 存儲(chǔ)容量條件下,采用1 個(gè)簡(jiǎn)單的移位寄存器完成全部配置位流下載,需要7~8 d 時(shí)間,如果驗(yàn)證用例包含的芯片資源較多,那么仿真驗(yàn)證的時(shí)間會(huì)更長(zhǎng)。
圖2 FPGA 芯片中的邏輯資源排布結(jié)構(gòu)及其幀分布
某一驗(yàn)證用例需要的邏輯資源為第M~N 幀,位流截取方法是將第M 幀作為配置寄存器字段的第1 幀,將第N 幀作為配置寄存器字段的最后1 幀,第M~N幀的數(shù)據(jù)即是需要配置寄存器的字段,刪除配置寄存器字段的第1~M-1 幀以及第N+1 幀至最后1 幀,得到所需要的配置位流文件,這樣就可以根據(jù)驗(yàn)證對(duì)象是芯片電路的某些區(qū)域來(lái)選擇配置位流文件大小,大大縮短仿真驗(yàn)證時(shí)間[7-8]。對(duì)于覆蓋率驅(qū)動(dòng)驗(yàn)證,所用資源較多的、位流文件較大的驗(yàn)證用例,采用該方法的缺點(diǎn)是不能有效提高驗(yàn)證效率,仿真耗時(shí)仍然很大[9]。
通過(guò)解析配置位流文件可以得出配置位流與芯片電路之間的映射關(guān)系,即字/位線(xiàn)(WL/BL)分布規(guī)律,解析并使用腳本實(shí)現(xiàn)比特流的規(guī)律提取,該方法針對(duì)單個(gè)驗(yàn)證用例解析配置位流文件,可以有效縮短仿真時(shí)間,提高仿真效率,使得FPGA 全芯片集成驗(yàn)證的配置時(shí)間大大縮短。針對(duì)FPGA 全芯片集成驗(yàn)證時(shí)的大量驗(yàn)證用例,該方法通過(guò)維護(hù)一個(gè)特征參數(shù)庫(kù)、利用觸發(fā)參數(shù)觸發(fā)每個(gè)驗(yàn)證用例進(jìn)行仿真驗(yàn)證,可以減少人工重復(fù)作業(yè)時(shí)間,實(shí)現(xiàn)仿真環(huán)境自動(dòng)化。
以某一款Flash 系列FPGA 芯片為例,1 幀配置碼流共計(jì)2912 bit 配置數(shù)據(jù),對(duì)應(yīng)數(shù)據(jù)移位寄存器(DSR)電路的每1 BL 輸出位,在不了解全芯片F(xiàn)lash單元的WL/BL 坐標(biāo)的情況下,以幀為單位,每打開(kāi)1個(gè)WL,就賦值相應(yīng)的2912 個(gè)DSR 電路的BL 輸出位。這種方法相當(dāng)于逐幀賦值配置碼流,統(tǒng)計(jì)DSR 電路的所有BL 輸出信號(hào)與2912 位配置碼流的每一位對(duì)應(yīng)關(guān)系,通過(guò)腳本實(shí)現(xiàn)每1 幀的賦初值操作,大大減少了下載和配置位流數(shù)據(jù)的時(shí)間,因此可以有效縮短仿真驗(yàn)證時(shí)間,提高仿真驗(yàn)證效率,縮短了FPGA 全芯片系統(tǒng)級(jí)驗(yàn)證時(shí)間。具體流程如圖3 所示:(1)梳理DSR 電路所有BL 信號(hào)的位線(xiàn)順序,即電路BL 信號(hào)與svf 文件幀數(shù)據(jù)的映射關(guān)系;(2)根據(jù)svf 文件幀數(shù)據(jù)與電路BL 信號(hào)映射關(guān)系編寫(xiě)腳本,實(shí)現(xiàn)賦值每1幀數(shù)據(jù)的功能;(3)梳理CFG、地址移位寄存器(ASR)、DSR 均屬于配置電路的一部分輸出信號(hào)類(lèi)型,根據(jù)ASR、DSR、CFG 與其他電路之間的互連關(guān)系,將互連信號(hào)分為WL 信號(hào)、BL 信號(hào)、全局信號(hào)、控制信號(hào)(如BL 中繼控制信號(hào)、IO 初始化配置信號(hào))等;(4)根據(jù)配置電路輸出信號(hào)分類(lèi),對(duì)相應(yīng)信號(hào)做配置,完成前后2 種狀態(tài)的賦初值,模擬配置完成前后的信號(hào)狀態(tài),保證芯片除配置電路以外的部分實(shí)現(xiàn)正常的功能;(5)完成上述關(guān)系梳理及腳本編寫(xiě)后,通過(guò)全芯片驗(yàn)證環(huán)境調(diào)試,根據(jù)賦值的配置位流對(duì)FPGA 進(jìn)行集成功能驗(yàn)證。
圖3 目標(biāo)驗(yàn)證用例的流程
用面向?qū)ο蟮尿?yàn)證語(yǔ)言System Verilog,建立Verilog+CDL 的混合驗(yàn)證環(huán)境(協(xié)同仿真環(huán)境)。采用Synopsys 公司的VCS 的仿真工具設(shè)計(jì)仿真驗(yàn)證[10]。
1)單個(gè)應(yīng)用61 階有限脈沖響應(yīng)(FIR)濾波器,位流截取方法與配置位流文件的解析方法驗(yàn)證結(jié)果如圖4 所示,DUT 輸出與參考模型輸出結(jié)果一致,功能驗(yàn)證正確。
2)單個(gè)應(yīng)用61 階FIR 濾波器用例仿真運(yùn)行結(jié)果和時(shí)間如圖5 所示,采用位流截取方法驗(yàn)證FIR 濾波器的時(shí)間約為37.58 h,而采用配置位流文件的解析方法驗(yàn)證FIR 濾波器的時(shí)間為725.72 s,大大縮短了驗(yàn)證時(shí)間。
3)在2U 服務(wù)器條件下,多個(gè)用例驗(yàn)證仿真時(shí)間結(jié)果如表1 所示。從表1 可以看出,基于覆蓋率驅(qū)動(dòng)的驗(yàn)證,在需要運(yùn)行多個(gè)功能復(fù)雜的用例條件下,配置位流文件的解析方法是位流截取方法速度的180~200倍,大大提高了驗(yàn)證效率。
圖4 位流截取方法與賦值配置位流文件的解析方法功能驗(yàn)證結(jié)果
圖5 單個(gè)用例位流截取方法與配置位流文件的解析方法運(yùn)行時(shí)間比較
表1 多個(gè)用例驗(yàn)證時(shí)間比較
本文對(duì)Flash 系列FPGA 芯片集成驗(yàn)證方法進(jìn)行了研究,針對(duì)所用資源多、功能復(fù)雜的驗(yàn)證用例位流截取方法驗(yàn)證周期長(zhǎng)、驗(yàn)證效率低的問(wèn)題,提出了使用配置位流文件的解析方法,該驗(yàn)證方法可以根據(jù)驗(yàn)證用例需求,賦值相應(yīng)的配置位流,減少下載和配置位流數(shù)據(jù)的時(shí)間,從而大大減少仿真時(shí)間,提高驗(yàn)證效率,最大限度提高驗(yàn)證電路的覆蓋率,滿(mǎn)足大規(guī)模電路功能仿真的需求。該方法已成功應(yīng)用于Flash 系列FPGA 芯片電路功能驗(yàn)證工程實(shí)踐中。