李敬磊++尹新++曾清樂
摘 要:隨著FPGA的廣泛應(yīng)用,其設(shè)計(jì)規(guī)模和復(fù)雜度也急劇增加,F(xiàn)PGA測試的效率也有待進(jìn)一步提高。研究了基于SystemVerilog的事務(wù)級建模,并結(jié)合具體實(shí)例研究了其在FPGA測試中的應(yīng)用。研究表明,基于SystemVerilog的事務(wù)級建??芍赜眯詮?qiáng),使用方便,可使FPGA的測試效率得到極大提高。
關(guān)鍵詞:現(xiàn)場可編程邏輯器件;SystemVerilog;ASIC;CPU
中圖分類號:TN47 文獻(xiàn)標(biāo)識碼:A DOI:10.15913/j.cnki.kjycx.2016.23.116
FPGA(Field Programmable Gate Array,現(xiàn)場可編程門陣列)相比于ASIC和通用CPU而言,其在性能、價(jià)格和靈活性方面都較好,已經(jīng)被廣泛應(yīng)用于航空、航天、通信、汽車工業(yè)等領(lǐng)域。同時(shí),其設(shè)計(jì)規(guī)模及復(fù)雜度也在急劇增加。如果單純采用傳統(tǒng)FPGA驗(yàn)證方法,構(gòu)造用例復(fù)雜,且用例可復(fù)用性低,效率比較低,無法快速地縮短產(chǎn)品研發(fā)周期。采用基于SystemVerilog的事務(wù)級建模的驗(yàn)證方法,不僅可以搭建通用的事務(wù)級模型,從而提高復(fù)用性,而且基于SystemVerilog的語言特性可以方便地對模型進(jìn)行靈活配置,從而提高FPGA測試的效率。
本文簡述了SystemVerilog語言的語言特性,介紹了利用SystemVerilog進(jìn)行事務(wù)級建模的方法,之后利用基于SystemVerilog的事務(wù)級建模的驗(yàn)證方法驗(yàn)證了FPGA串口功能的正確性,闡述了基于SystemVerilog的事務(wù)級建模在FPGA測試中的優(yōu)勢。
1 SystemVerilog簡介
SystemVerilog簡稱SV語言,它建立在Verilog語言的基礎(chǔ)上,是IEEE 1364 Verilog-2001標(biāo)準(zhǔn)的擴(kuò)展增強(qiáng),可兼容Verilog 2001,并成為了下一代硬件設(shè)計(jì)和驗(yàn)證的語言。其具有以下特性:①在Verilog基礎(chǔ)上集成了C語言的很多特點(diǎn),具有面向?qū)ο筇匦?,有助于采用事?wù)級的驗(yàn)證和提高驗(yàn)證的重用性;②支持約束隨機(jī)的產(chǎn)生,可以方便地產(chǎn)生約定的數(shù)據(jù),從而降低用例構(gòu)造的復(fù)雜度;③支持覆蓋率統(tǒng)計(jì)分析及斷言驗(yàn)證。
SystemVerilog屬于面向?qū)ο缶幊陶Z言,也有類的概念,且語法與C/C++類似,可以使用類的封裝、對象的生成和使用、類的繼承和擴(kuò)展等特性來搭建事務(wù)級模型。
2 基于事務(wù)級建模驗(yàn)證的FPGA串口功能
Transaction-level Modeling(事務(wù)級建模)簡稱TLM,它起源于SystemC的一種通信標(biāo)準(zhǔn)。所謂“Transaction level”,是相對DUT中各個(gè)模塊之間信號線級別的通信而言的。簡單而言,一個(gè)“Transaction”就是將具體某一特定功能的一組信息封裝在一起,進(jìn)而形成一個(gè)類?,F(xiàn)以構(gòu)造一個(gè)RS422串口協(xié)議模型為例,簡要介紹事務(wù)級模型的構(gòu)建。
2.1 RSS422串口模型
RS422串口協(xié)議傳輸時(shí)序如圖1所示。
在圖1中,每一位代表的意義為:①空閑位。處于邏輯“1”的狀態(tài),表示當(dāng)前線路上沒有數(shù)據(jù)傳送。②起始位。先發(fā)出一個(gè)邏輯“0”的狀態(tài),表示開始傳輸數(shù)據(jù)。③數(shù)據(jù)位。起始位后緊接著為數(shù)據(jù)位,數(shù)據(jù)位長度可以為4,5,6,7,8。④校驗(yàn)位。1 B數(shù)據(jù),校驗(yàn)數(shù)據(jù)傳送的正確性,可以分為奇校驗(yàn)和偶校驗(yàn)。⑤停止位。高電平,一個(gè)字符數(shù)據(jù)傳輸結(jié)束的標(biāo)志,長度為1~2 B。
根據(jù)上述RS422串口協(xié)議,構(gòu)建了以下的串口事務(wù)級模型。
2.2 基于RSS422串口模型驗(yàn)證串口功能
現(xiàn)有一DUT實(shí)現(xiàn)了串口收發(fā)功能。具體而言,接收串口輸入數(shù)據(jù),然后收到回傳命令后將接收的數(shù)據(jù)通過串口發(fā)出,串口格式為有效數(shù)據(jù)8 B、停止位1位、偶校驗(yàn)。為了驗(yàn)證其功能的正確性,搭建了驗(yàn)證平臺(tái),將上述的串口模塊與DUT對接。利用上述的串口模型構(gòu)建用例為:
class tc_uart_test;
C_UART_MOD mo_uart_mod;
//根據(jù)需求配置串口參數(shù)
mo_uart_mod. mo_uart_item.randomize() with {
mb4_data_len == 8; //配置有效數(shù)據(jù)長度為8
mb2_stop_len == 1; //配置停止位長度為1
mb_crc_sel == 0; //配置校驗(yàn)方式為偶校驗(yàn)
mb32_pkt_num == 1; //配置數(shù)據(jù)幀數(shù)為1幀
mb32_data_num== 10; //配置1幀字符個(gè)數(shù)為10個(gè)
};
endclass:tc_uart_test
用例構(gòu)建完畢后,驗(yàn)證平臺(tái)按照設(shè)定參數(shù)自動(dòng)產(chǎn)生1幀數(shù)據(jù),之后通過串口模型將數(shù)據(jù)驅(qū)動(dòng)到DUT接口,同時(shí),接收DUT發(fā)送的串口數(shù)據(jù),并發(fā)送到指定的文件中。
3 測試結(jié)果及其分析
測試仿真結(jié)果如圖2所示。
用例仿真結(jié)果如圖2所示。從波形上可以看出,驗(yàn)證平臺(tái)正確驅(qū)動(dòng)串口輸入數(shù)據(jù)到FPGA輸入端口sdin,F(xiàn)PGA正確輸出串口發(fā)送數(shù)據(jù)sdout。
比對通過RS422串口模型打印的發(fā)送串口數(shù)據(jù)文件與接收
到的串口數(shù)據(jù)文件,兩者結(jié)果一致。這表明FPGA正確接收了輸入的串口數(shù)據(jù)sdin,并將收到的數(shù)據(jù)正確地通過串口sdout發(fā)出,即驗(yàn)證了FPGA串口功能的正確性。對比兩個(gè)文件結(jié)果,采用基于SystemVerilog的事務(wù)級建模構(gòu)建的RS422串口模型,有效、快速地驗(yàn)證了FPGA串口功能的正確性。同時(shí),利用該串口模型還可以構(gòu)造出指定的幀頭和幀尾、含有幀的校驗(yàn)和、定向串口數(shù)據(jù)等復(fù)雜場景的串口激勵(lì)。該RS422串口模型可以用于多個(gè)FPGA項(xiàng)目串口功能的驗(yàn)證,具有良好的可重用性,極大地提高了FPGA測試的效率。因此,基于SystemVerilog的事務(wù)級建模在FPGA測試中具有以下優(yōu)勢:①面向?qū)ο蟮木幊探Y(jié)構(gòu),可以方便地對諸如某個(gè)協(xié)議接口、某一組特定功能的信號等進(jìn)行事務(wù)級建模;②基于SystemVerilog隨機(jī)約束的語言特性,可以方便、靈活地對事務(wù)級模型進(jìn)行參數(shù)配置,具有良好的可重用性;③基于SystemVerilog的事務(wù)級建模可將驗(yàn)證與設(shè)計(jì)通過接口分離,驗(yàn)證與設(shè)計(jì)可以分別單獨(dú)調(diào)試,便于對FPGA整個(gè)開發(fā)流程的管理。
4 結(jié)束語
本文結(jié)合具體實(shí)例構(gòu)建了基于SystemVerilog的事務(wù)級模型,并以此模型驗(yàn)證了FPGA功能的正確性。驗(yàn)證結(jié)果表明,基于SystemVerilog的事務(wù)級模型具有很好的可重用性,在FPGA測試中極大地提高了測試效率。下一步研究方向?yàn)椴捎没赟ystemVerilog的事務(wù)級建模方法,結(jié)合UVM 、VMM等驗(yàn)證方法學(xué),構(gòu)造通用的自動(dòng)化驗(yàn)證平臺(tái),從而進(jìn)一步提高FPGA測試效率。
參考文獻(xiàn)
[1]鐘文楓.SystemVerilog與功能驗(yàn)證[M].北京:機(jī)械工業(yè)出版社,2010.
[2]張強(qiáng).UVM實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2014.
〔編輯:張思楠〕