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