文/郝燚 馮文楠 馮曦 胡毅 唐曉柯
集成電路是現(xiàn)代信息社會的基石,發(fā)明自20世紀50年代,經(jīng)過幾十年的快速發(fā)展,目前最先進的集成電路工藝達到了7nm制程。電路的復雜度和集成度已經(jīng)進入到巨大規(guī)模集成電路階段,這對相關的設計和驗證工作都是巨大的挑戰(zhàn)。為了應對挑戰(zhàn),業(yè)界提出了SystemVerilog語言,并以SystemVerilog語言為基礎構建了新的驗證方法學UVM。開發(fā)者可以基于UVM快速和高效地驗證復雜的設計。
SWP接口是應用于eNFC移動支付方案中SIM卡芯片的新接口。歐洲電信聯(lián)盟(ETSI)已經(jīng)制定了SWP接口的相關標準,其支持全雙工通信模式,通過電壓、電流的調(diào)制分別表示兩個方向的信息,接口傳輸速率最快可達到1.69Mhz。
本文將以SWP接口模塊為仿真驗證對象,基于UVM驗證方法學搭建模塊驗證環(huán)境,利用隨機激勵等先進方法對SWP接口模塊進行驗證。本方法不僅適應于SWP接口模塊,更可以重用到其他接口類模塊的驗證工作中。
通用驗證方法學(Universal Verification Methodology,UVM)是一個以SystemVerilog類庫為主體的驗證平臺開發(fā)框架,驗證工程師可以利用其可重用組件構建具有標準化層次結(jié)構和接口的功能驗證環(huán)境。UVM繼承自OVM(Open Verification Methodology) 和VMM(Verification Methodology Manual),吸 收了兩者的優(yōu)點,其正式版本在2011年2月由Accellera推出,得到了Synopsys、Mentor、Cadence三大EDA公司的支持,目前已經(jīng)廣泛應用于各個設計公司的芯片驗證中。目前,UVM標準已經(jīng)制定到UVM1.2,并在2017年被IEEE宣布為正式標準,即IEEE1800.2。
UVM 中所有的類有一個共同的基類uvm_void。它沒有數(shù)據(jù)成員,也沒有成員函數(shù)。由uvm_void類擴展得到了兩個子類,分別為uvm_object類和uvm_port_base類。其中uvm_object類是 UVM中所有的實體的基類。uvm_port_base是 UVM 中各種通信端口的基類?;诤诵幕悢U展出整個UVM庫類,提供了phase機制、工廠機制、config機制、消息機制。驗證環(huán)境組件由核心分支uvm_component類擴展實現(xiàn)。
在UVM庫類的基礎上我們很容易快速實現(xiàn)組件的創(chuàng)建和訪問,創(chuàng)建環(huán)境,連接和運行組件,生成激勵并傳遞、控制,生成報告,打印有效信息。
傳統(tǒng)SIM卡芯片只有7816接口,為實現(xiàn)移動支付,eNFC方案在SIM卡和手機間定義了SWP接口,使電信運營商通過SIM卡即可以控制手機端移動支付交易。目前,ETSI歐洲電信聯(lián)盟已經(jīng)制定了TS 102 613協(xié)議標準,定義了SWP和外部非接觸式射頻前端CLF通信的多層協(xié)議體系。
使用13.56Mhz頻段的eNFC方案基于兩顆芯片:非接觸式前端芯片(CLF)和智能卡芯片(UICC)。CLF芯片集成在手機主板上,UICC芯片上通過增加新的接口與CLF芯片進行通信,這個接口就是SWP接口。
SWP(Single Wire Protocol)是基于SIM卡C6 引腳的單線連接方案。SWP接口界面包括三根線:VCC(C1)、GND(C5)、SWP(C6)。VCC和GND與7816接口共用,所以僅在一根信號線SWP上基于電壓和負載調(diào)制原理實現(xiàn)全雙工通訊。這樣可以實現(xiàn)智能卡在ISO 7816 界面定義下同時支持7816 和SWP 兩個接口,并預留了擴展第三個高速(USB)接口的引腳(C4和C8)。eNFC方案的SWP接口的連接結(jié)構見圖1。
SWP接口在CLF和UICC間的一根單線上定義了S1 和S2 兩個方向的信號,實現(xiàn)全雙工通訊。S1 是電壓調(diào)制信號(RZ-return zero),S2 是電流調(diào)制信號,實際上采用的是負載調(diào)制方式。S1 信號是標準的數(shù)字電壓信號,SIM 卡通過檢測S1 信號的高低變化,同時可以在S1 信號的編碼基礎上恢復出時鐘信號;S2 信號必須在S1 信號為高的階段才有效,CLF芯片通過檢測S2信號的變化區(qū)分“1”、“0”信號。S1和S2信號的編碼規(guī)則如圖2和3所示。
圖1:SWP接口和NFC芯片連接示意圖
圖2:SWP接口信號S1編碼示意圖
圖3:SWP接口信號S2編碼示意圖
S2 電流信號和S1電壓信號疊加在一起,CLF端需要特定的接收和解調(diào)電路,信號的噪聲容限稍低。SWP 傳輸?shù)牟ㄌ芈士梢詮?06KBPS 最高上升至1.69MBPS。
SWP接口協(xié)議ETSI TS 102 613中接口分為兩層,第一層是物理層,定義了接口物理連接的激活、保持、?;钸^程,定義了電氣特性(包括電壓、電流、時序以及電壓電流的編碼規(guī)則)、機械特性(物理連接)和性能指標(數(shù)據(jù)速率)、也定義了通信鏈接的初始化建立和結(jié)束流程。第二層是數(shù)據(jù)鏈路層,又分兩個子層,分別是MAC層(Medium Access Control layer)和LLC層(Logical Link Control layer),其中MAC層負責SWP接口協(xié)議幀的建立和解析,LLC層負責數(shù)據(jù)通訊和糾錯。LLC層又分為必需支持的ACT層、SHDLC層和可選支持的CLT層協(xié)議。
表1:驗證組件說明
圖5:仿真驗證環(huán)境框圖
SWP接口設計分為數(shù)字和模擬兩部分。數(shù)字部分實現(xiàn)了SWP協(xié)議MAC層以下的邏輯功能,也是本文的模塊驗證的對象,本文中將統(tǒng)一稱呼數(shù)字部分為SWP模塊。模擬部分實現(xiàn)了SWP接口電流調(diào)制和IO功能,在本文中統(tǒng)一稱呼模擬部分為SWIO。
SWP模塊的輸入Din和輸出Dout均為電壓信號,經(jīng)過SWIO的調(diào)制,整合為一個雙向的S1、S2電壓電流調(diào)制信號,作為UICC端SWP接口的最終信號表達形式與CLF端連接。SWP模塊和SWIO關系如圖4所示。
SWP接口IP集成在32位CPU芯片中,與原7816接口是互不影響,地位相等的兩個接口。芯片系統(tǒng)支持多接口檢測,芯片進入低功耗狀態(tài)后可以由SWP接口的外部激活動作喚醒,芯片電氣性能滿足ETSI TS 102 613協(xié)議要求,功耗設計指標滿足SWP協(xié)議ETSI TS 102 221協(xié)議要求。
針對SWP模塊的特點,基于UVM驗證方法學,搭建SWP模塊仿真驗證環(huán)境。各驗證環(huán)境組件均繼承自UVM基類,層次劃分清晰,便于繼承和擴展使用。
SWP模塊掛接在APB總線,仿真驗證環(huán)境中使用DesignWare的AMBA APB VIP,減少搭建驗證平臺的時間,使用VIP不僅可以可靠信任,同時能構造豐富的總線操作。使用dw_vip_setup安裝VIP。SWP接口的通信段模型基于UVM基本類自行開發(fā)實現(xiàn),按照ETSI 102 613協(xié)議開發(fā),實現(xiàn)時考慮復用性和模塊級到系統(tǒng)級驗證的可移植性。
對待測SWP接口模塊,從APB總線端使用VIP給予SWP模塊寄存器訪問和數(shù)據(jù)讀寫操作,從SWP接口使用SWP接口通信模型給予SWP模塊接口通信操作,構造各種時序,遍歷各種通信速率和數(shù)據(jù),進行充分驗證。因為SWP接口支持全雙工通信,所以在驗證環(huán)境上采用Virtual Sequencer來調(diào)度控制APB和通信段的sequencer。同時構造兩個Scoreboard來分別判斷兩個數(shù)據(jù)端的數(shù)據(jù)傳輸正確。驗證環(huán)境框圖如圖5,驗證組件說明如表1所示。
在phase階段調(diào)用topology函數(shù)可以得到UVM驗證環(huán)境的hierarchy,如圖6所示。
驗證激勵實現(xiàn)時,transaction根據(jù)SWP協(xié)議定義了兩種幀類型,分別為數(shù)據(jù)幀和控制幀。其中數(shù)據(jù)幀有完整的幀頭、幀尾、crc校驗字節(jié),負責數(shù)據(jù)通信;控制幀控制接口電平的切換,完成狀態(tài)控制。在計分板中,只收集數(shù)據(jù)幀的信息進行比對。Sequence中分別使用do with產(chǎn)生有約束的transaction。
Vritual sequencer調(diào)度APB Agent和SWP Agent各自的sequencer實現(xiàn)全雙工通信。激勵分為隨機激勵和定向激勵,其中隨機激勵通過改變種子多次run達到滿意的覆蓋率;定向激勵主要完成接口狀態(tài)切換驗證。
激勵共計25個,其中隨機激勵12個,直接激勵13個。覆蓋率統(tǒng)計如圖7所示。
(1)時鐘控制:SWP接口通信速率缺省在200k~1Mhz,可以接口激活后根據(jù)交互結(jié)果進行協(xié)商。SWP接口時鐘周期swp_clk_period缺省為固定值在forever塊中產(chǎn)生時鐘,同時使用config_db的wait_modified任務獲得支持sequence中協(xié)商到后的周期值,重新get此周期值產(chǎn)生新的時鐘。
(2)Overrid方式改變SWP接口S1信號占空比:S1信號占空比根據(jù)協(xié)議存在可變范圍,故根據(jù)協(xié)議和設計指標要進行拉偏驗證,通過在sequence中overridswp_driver中的發(fā)送task實現(xiàn)。
(3)crc校驗錯誤:在SWP的數(shù)據(jù)transaction中定義crc_err位,缺省約束為0不出錯。sequence里面通過調(diào)用constraint_mode(0)關閉約束為0,重新約束crc_err為1,post_randomize中根據(jù)crc_err來決定是否構造錯誤情況。
圖6:仿真驗證環(huán)境組件層次
圖7:SWP接口的驗證結(jié)果
本文介紹了基于UVM驗證方法學的SWP接口驗證方法,使用DesignWare的AMBA VIP實現(xiàn)了SWP接口的充分驗證,其中一些實現(xiàn)方法的思路可以應用到類似的接口驗證中。該接口驗證環(huán)境不僅可以在模塊驗證中使用,其中的SWP Agent和激勵還可以快速的移植到SOC的驗證環(huán)境中使用。SWP接口的全雙工通信,非常適合UVM的隨機激勵,大大提高了驗證效率,對比使用傳統(tǒng)Verilog語言描述的定向激勵來驗證的方式,隨機激勵覆蓋的驗證場景更豐富和全面。