曾清樂 宋文強(qiáng) 李敬磊
(工業(yè)和信息化部電子第五研究所,廣東 廣州 510610)
基于UVM的FPGA測試技術(shù)的研究
曾清樂 宋文強(qiáng) 李敬磊
(工業(yè)和信息化部電子第五研究所,廣東 廣州 510610)
FPGA設(shè)計規(guī)模和復(fù)雜度的急劇增加使得對其測試的難度提高。本文研究UVM(通用驗證方法學(xué))架構(gòu)和特點(diǎn),采用UVM搭建驗證平臺,以TS101作為上位機(jī)、FPGA作為其接口控制功能為例,驗證FPGA邏輯設(shè)計的正確性。
現(xiàn)場可編程邏輯器件;通用驗證方法學(xué);待測設(shè)計
FPGA是英文Field Programmable Gate Array(現(xiàn)場可編程門陣列)的縮寫,是在GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的邏輯器件,其應(yīng)用越來越廣泛,由FPGA器件所實現(xiàn)的功能正逐漸取代以往的傳統(tǒng)軟件,在現(xiàn)代電子系統(tǒng)中扮演著越來越重要的角色,被廣泛地應(yīng)用于航空、航天、通信、汽車工業(yè)等領(lǐng)域。隨著FPGA應(yīng)用領(lǐng)域的擴(kuò)展以及其重要性的提高,其可靠性就變得越來越突出,因此對FPGA的測試驗證將變得尤為重要。通用驗證方法學(xué)(UVM,Universal Verification Methodology的縮寫)起源于OVM(Open Verification Methodology),是由Cadence、Mentor和Synopsys聯(lián)合推出的新一代驗證方法學(xué)。UVM具有可配置、可復(fù)用的特點(diǎn),可產(chǎn)生受約束的隨機(jī)化激勵,以達(dá)到對系統(tǒng)的充分驗證。
本文以TS101為上位機(jī)、FPGA作為其接口控制功能為驗證對象,使用基于System Verilog語言[1]的UVM驗證方法學(xué)構(gòu)建驗證平臺,完成驗證需求,提高了驗證效率和平臺的可重用性。
2.1 UVM驗證方法概述
UVM驗證平臺[2]由一系列可重用的通用驗證部件(UVC,Universal Verification Component)組成,包括數(shù)據(jù)包、驅(qū)動器、BFM(Bus Functional Mode)、序列發(fā)生器、監(jiān)視器、代理、環(huán)境、記分板(Scoreboard)等。這些通用驗證部件具有可配置、易使用、封裝成型,以及可重用等優(yōu)點(diǎn)。下面簡要介紹各部件的作用:
數(shù)據(jù)包(Transaction/Sequence):是發(fā)送到驅(qū)動器(Driver)的激勵事物,可以是普通數(shù)據(jù)包、總線事物、指令集等,可經(jīng)過SystemVerilog約束隨機(jī)化過程來產(chǎn)生,即激勵信號;
驅(qū)動器(Driver)/BFM:是將由傳輸級模型(TLM,Transaction Level Modeling)產(chǎn)生的上層抽象化的數(shù)據(jù)流,根據(jù)特定的傳輸協(xié)議和傳輸時序轉(zhuǎn)化成信號級發(fā)送給DUT(Design Under Test,待測試設(shè)計);
序列發(fā)生器(Sequencer):啟動特定的Sequence,使其產(chǎn)生受約束的隨機(jī)傳輸級數(shù)據(jù);
監(jiān)視器(Monitor):根據(jù)特定協(xié)議采集數(shù)據(jù)并轉(zhuǎn)換成傳輸級模型發(fā)送給記分板(Scoreboard);
記分板(Scoreboard):比較輸入與輸出信號并給出比較結(jié)果;
代理(Agent):像一個虛擬的容器,將序列發(fā)生器(Sequencer)、驅(qū)動器(Driver)、監(jiān)視器(Monitor)封裝在一起;
環(huán)境(Environment):也像一個虛擬的容器,將代理(Agent)、記分板(Scoreboard)、數(shù)據(jù)包(Transaction/Sequence)封裝在一起。
圖1 典型的UVM平臺示意圖
圖1[3]中實線連線表示驗證平臺不同組件之間的數(shù)據(jù)連接,虛線連線表示驗證平臺與DUT之間的物理接口連接。In_agent封裝了Sequencer、Driver和Monitor,主要用于向DUT發(fā)送激勵信號,過程為首先在Driver中申請一個item(Transaction),在Sequencer調(diào)度下由Sequence產(chǎn)生一個item(Transaction),再由Driver根據(jù)協(xié)議驅(qū)動到DUT端口上。同時In_agent的Monitor將產(chǎn)生的激勵信號發(fā)送至Reference Model。Reference Model通常模擬DUT的行為。Out_agent的Monitor用于監(jiān)測DUT的輸出,并將數(shù)據(jù)發(fā)送至Scoreboard。Scoreboard將接收來自Reference Model和DUT輸出的數(shù)據(jù)進(jìn)行對比。
2.2 驗證模塊概述
本文中的驗證模塊是以TigerSHARC為DSP的上位機(jī),F(xiàn)PGA主要作為其接口控制。DSP是采用慢速設(shè)備協(xié)議,通過配置寄存器設(shè)置等待周期為3;讀寫操作的譯碼過程為:首先給出存儲器的片選信號,開始傳送過程,同時發(fā)出地址信息。在下一周期里,RD或WR變?yōu)橛行?。對于寫操作,Tiger-SHARC驅(qū)動數(shù)據(jù);若為讀操作,被測的DUT開始驅(qū)動數(shù)據(jù)。
圖2 驗證模塊接口關(guān)系圖
表1 地址映射關(guān)系表
待測設(shè)計接口關(guān)系如圖2所示,地址映射關(guān)系如表1所示。TS101(TigerSHARC 101)通過總線與DUT(FPGA)進(jìn)行通信,需要通過串口輸出數(shù)據(jù)時,首先TS101向DUT對應(yīng)的FIFO中寫入數(shù)據(jù),再發(fā)送命令啟動數(shù)據(jù)發(fā)送;DUT接收完串口數(shù)據(jù)后給出有效標(biāo)記,TS101判斷數(shù)據(jù)有效標(biāo)記,標(biāo)記有效時,讀取數(shù)據(jù)。其中異步串口的波特率為5Mbps,每字節(jié)10bit,包括起始位1位,數(shù)據(jù)位8位,停止位1位,無奇偶校驗位,空閑狀態(tài)為高電平。TS101需要通過Arinc-429總線輸出數(shù)據(jù)時,TS101向DUT對應(yīng)的FIFO中寫入數(shù)據(jù),DUT通過Arinc-429總線輸出;接收Arinc-429總線數(shù)據(jù)時,數(shù)據(jù)經(jīng)DUT譯碼存儲后,TS101通過總線讀取。其中Arinc-429通信協(xié)議[4]是一種廣泛應(yīng)用于航空系統(tǒng)的串行通訊協(xié)議。該協(xié)議規(guī)定了差分傳輸,雙極性歸零碼,最高100kbps。通信字為32bit,數(shù)據(jù)字間隔為4位,奇校驗。
從驗證模塊分析測試需求,搭建驗證平臺需要3個Agent,1個總線協(xié)議轉(zhuǎn)換BFM(Bus Function Model)。第一個Agent命名為reg_agent,主要是用于產(chǎn)生地址、數(shù)據(jù)、讀/寫、片選信號;第二個Agent命名為429_agent,主要是用于產(chǎn)生429總線數(shù)據(jù)和接收429數(shù)據(jù);第三個Agent命名為uart_agent,主要用于產(chǎn)生串口數(shù)據(jù)和接收串口數(shù)據(jù);一個BFM是將reg_agent產(chǎn)生的總線數(shù)據(jù),按照總線時序驅(qū)動到DUT端口?;赨VM驗證平臺的可重用性,Agent和BFM均設(shè)計為可配置的。例如對于串口uart_agent,繼承uvm_sequence_item的類中成員變量數(shù)據(jù)長度和停止位長度可定義、奇偶校驗的有效性、奇校驗/偶校驗、校驗位長度,以及在接口驅(qū)動時可根據(jù)波特率調(diào)整驅(qū)動時序。對于reg_agent,繼承uvm_sequence_item的類地址和數(shù)據(jù)位可參數(shù)化位數(shù)、成員變量讀/寫控制信號、數(shù)據(jù)、地址信號。對于BFM(Bus Function Model),主要是按照時序驅(qū)動數(shù)據(jù)到端口,定義為通用的類,根據(jù)不同的芯片時序驅(qū)動總線數(shù)據(jù)。
基于UVM的驗證平臺如圖3所示。整個驗證平臺由外部腳本環(huán)境和內(nèi)部UVM環(huán)境組成。腳本文件是控制平臺的編譯、仿真運(yùn)行等。整個平臺在虛擬Sequencer調(diào)度下,由Sequenc產(chǎn)生激勵信號分別給 reg_agent、uart_agent和429_agent的Driver,驅(qū)動DUT的端口。Reference Model接收來自各個Monitor的信號模擬DUT的行為。Scoreboard接收來自DUT的輸出結(jié)果與Reference Model輸出結(jié)果進(jìn)行比較,在本驗證平臺為比對輸入與輸出數(shù)據(jù)的一致性。
圖3 基于UVM驗證平臺
以DUT接收Arinc-429總線數(shù)據(jù)為例分析驗證結(jié)果。通過429_agent模擬Arinc-429信號輸入至管腳fkin_a、fkin_b,輸入的數(shù)據(jù)確定為0x8820,輸入的波形如圖4所示。Arinc-429數(shù)據(jù)輸入至 FPGA,F(xiàn)PGA接收并存儲至地址0xFC0000F,模擬DSP讀取。圖5為DSP讀取的結(jié)果,可以看出與輸入一致。
圖4 Arinc-429輸入數(shù)據(jù)的波形
圖5 DSP讀取Arinc-429數(shù)據(jù)結(jié)果波形
其次,本文的驗證平臺將寄存器、DSP總線、UART串口和Arinc-429總線分離出來,構(gòu)造出多個獨(dú)立的agent,這樣在對下一個項目進(jìn)行驗證的時候,每一個獨(dú)立的子agent都可以被其他環(huán)境進(jìn)行例化重用。而傳統(tǒng)的測試床將所有信號集中在一個工程中,一旦項目中模塊稍有變化便不能進(jìn)行復(fù)用。因而,將信號進(jìn)行分離的方法使得驗證的環(huán)境變得更加靈活,同時極大地提高驗證環(huán)境的重用性。
本文搭建的基于UVM驗證平臺的FPGA驗證環(huán)境,具有高效性和可重用性。該驗證環(huán)境針對不同的功能模塊進(jìn)行獨(dú)立的、可配置的設(shè)計,從而提高了驗證的效率。下一步研究方向是研究采用自動化的腳本語言,以及研究構(gòu)建合理的人機(jī)交互界面生成驗證環(huán)境,以便更有效地提高測試效率。
[1]鐘文楓.SystemVerilog與功能驗證[M].北京:機(jī)械工業(yè)出版社,2010.
[2]Accdlera.Universal verification methodology1.1 user's guide [M].Cadence Design Systems Inc.,Mentor Graphics Corp.,Synopsys Inc.,2011.
[3]張強(qiáng).UVM實戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2014.
[4]ARINC公司.ARINC429傳輸規(guī)范[Z].2002.
Research on FPGATesting Technology Based on UVM
Zeng Qingle Song Wenqiang Li Jinglei
(CEPREI,Guangzhou 510610,Guangdong)
Dramatically increasing in the scale and complexity of FPGA design makes it more difficult to be tested.This article studies the structure and characteristics of universal verification methodology(UVM).It uses UVM to set up the verification platform,taking the TS101 as the host computer and FPGA as function of the interface control,verifying the correctness of the FPGA logic design.
FPGA;universal verification methodology;DUT
TN407
B
1008-6609(2016)05-0065-03
曾清樂,男,湖南衡陽人,碩士研究生,工程師,研究方向:軟件測試。