福建睿矽微電子科技有限公司 柯志斌
一種雙核安全芯片仿真和驗(yàn)證平臺(tái)的實(shí)現(xiàn)
福建睿矽微電子科技有限公司 柯志斌
本文先從FPGA驗(yàn)證板的制作說起,再分別介紹FPGA驗(yàn)證平臺(tái)和ASIC仿真平臺(tái)的搭建和測(cè)試,并著重闡述了兩平臺(tái)之間的異同點(diǎn),全面簡(jiǎn)潔地闡述了雙核安全芯片的整個(gè)驗(yàn)證測(cè)試流程。
驗(yàn)證平臺(tái);仿真平臺(tái);FPGA;ASIC;雙核安全芯片
雙核安全芯片主要包括安全核系統(tǒng)(以下簡(jiǎn)稱安全核)、應(yīng)用核系統(tǒng)(以下簡(jiǎn)稱應(yīng)用核)、雙核通信三個(gè)部分。在驗(yàn)證平臺(tái)上,先是兩個(gè)系統(tǒng)各自獨(dú)立調(diào)試,再進(jìn)行雙核通信測(cè)試,最后是雙核之間的安全驗(yàn)證。本文著重闡述在整個(gè)測(cè)試過程中經(jīng)常碰到的JTAG、UART、存儲(chǔ)、燒錄等調(diào)試基本要素,并就FPGA和ASIC兩平臺(tái)的異同點(diǎn)進(jìn)行詳細(xì)說明。
首先要進(jìn)行FPGA芯片的選型工作,主要包括FPGA單元資源是否足夠,內(nèi)置SRAM IP容量是否滿足應(yīng)用需求,芯片的管腳是否夠用。除了芯片應(yīng)用時(shí)需要的功能管腳外,還要考慮到數(shù)模混合IP驗(yàn)證需要增加的引腳:如USB、磁卡、IC卡、數(shù)據(jù)安全防護(hù)等模塊,需要將模擬部分用類似功能的硬件電路搭建出來。綜合考量,最終選用Xlinx的Artix-7 XC7A200T-2FBG67GC芯片,官網(wǎng)有相應(yīng)的開發(fā)板套件資料AC701 Evaluation Kit[1],參考并羅列出重點(diǎn)注意事項(xiàng),保留FPGA能正常啟動(dòng)和下載的核心模塊,其余根據(jù)實(shí)際需求,進(jìn)行大幅度刪減,再增加自身的功能模塊。
驗(yàn)證板由電源板、基板和核心板組成。電源板與基板等高平放著相連;核心板搭于基板上方,通過基板左右兩側(cè)的長(zhǎng)條形連接座進(jìn)行連接。
三個(gè)板子各自分開設(shè)計(jì),主要是考慮到:(1)前期屬于設(shè)計(jì)階段,無法一次性設(shè)計(jì)到位,避免后續(xù)調(diào)試因?yàn)樾「膭?dòng)而必須全部改版。(2)每塊板功能明顯不同,可以分別由各專業(yè)人員分別設(shè)計(jì),獨(dú)立負(fù)責(zé)。(3)每塊板都可以拆卸,設(shè)計(jì)時(shí)也要充分考慮到與其他項(xiàng)目板子的混用性,以達(dá)到項(xiàng)目間資源充分利用,節(jié)省成本。
板子拼連要充分考慮三個(gè)板子之間的尺寸及拼接問題,穩(wěn)定性很重要,否則后面調(diào)試時(shí)會(huì)常有一些莫名其妙的問題。因本身驗(yàn)證平臺(tái)就是用于驗(yàn)證IP功能的,IP功能是否正確尚不知道,如再加上板子自身的不穩(wěn)定因素,調(diào)試起來就異常困難,疑神疑鬼,費(fèi)事費(fèi)力,嚴(yán)重延誤工期。電源板的制作要嚴(yán)格參照AC701開發(fā)板,注意各個(gè)電壓的電流余量,以保證FPGA芯片能滿負(fù)荷運(yùn)轉(zhuǎn),達(dá)到最大效率。
前期,安全核和應(yīng)用核的調(diào)試接口是分開的,都用SWD模式(SWDIO,SWDCLK,GND,VDD),便于調(diào)試。也可以將雙核的JTAG調(diào)試接口串聯(lián)起來調(diào)試[2],如圖1所示;但沒有現(xiàn)成的編譯器可以調(diào)試。因此,先用SWD模式分開調(diào)試,功能完好后,再進(jìn)行串聯(lián)調(diào)試,避免把串聯(lián)調(diào)試的不確定性問題帶入項(xiàng)目中。驗(yàn)證板上則采用了兼容JTAG和SWD的雙核調(diào)試接口,如圖2所示。
UART串口是最常用的通信接口,也是必備的應(yīng)用調(diào)試接口。安全核和應(yīng)用核都需要一個(gè)調(diào)試UART。 為方便測(cè)試,也為了FPGA和ASIC實(shí)現(xiàn)的一致性,兩平臺(tái)都植入了專門用于測(cè)試用的uart串口,見第4章節(jié)。
安全核和應(yīng)用核中的SRAM、ROM和eflash,都需要用FPGA內(nèi)置的SRAM單元進(jìn)行替換;因此,SRAM的容量大小是FPGA芯片選型的重要因素。SRAM、ROM、eflash都采用AHB總線連接在總線矩陣(BusMatrix)上,所以用SRAM替換后,可以做到AHB接口的讀寫時(shí)序保持一致。 應(yīng)用核還包括EMC控制器(External Memory Controller),可以外掛pflash和psram,用于程序和數(shù)據(jù)的擴(kuò)展。
圖1 JTAG串聯(lián)調(diào)試連接示意圖
圖2 兼容JTAG和SWD的雙核調(diào)試接口
Bootload配置數(shù)據(jù)存在于安全核中,前期也是以SRAM的形式進(jìn)行調(diào)試,盡量簡(jiǎn)潔,能簡(jiǎn)單配置各個(gè)模塊啟動(dòng)運(yùn)行就可以了;等后續(xù)調(diào)試穩(wěn)定后,再重新以ROM形式進(jìn)行驗(yàn)證。
調(diào)試階段,可以通過安全核和應(yīng)用核自身的JTAG接口進(jìn)行程序和數(shù)據(jù)的燒錄,包括對(duì)SRAM、ROM、eflash和外置pflash、psram的燒寫;等調(diào)試穩(wěn)定后,應(yīng)用開發(fā)人員也可以通過bootload進(jìn)行燒錄動(dòng)作,如通過uart或usb接口與PC機(jī)進(jìn)行通信,也可以直接通過emmc接口直接從SD卡中獲取數(shù)據(jù)并燒錄。
仿真平臺(tái)模擬實(shí)際的FPGA平臺(tái)進(jìn)行搭建,外設(shè)接口需要有相應(yīng)的外圍設(shè)備仿真模型進(jìn)行通信測(cè)試。實(shí)際應(yīng)用測(cè)試時(shí),經(jīng)常用兩個(gè)FPGA開發(fā)板進(jìn)行通信測(cè)試;仿真平臺(tái)也可以如此測(cè)試,但會(huì)嚴(yán)重降低仿真速度。
為方便仿真測(cè)試,參照ARM公司的Cortex-M0 DesignStart Eval的資料,將cmsdk_uart_capture.v加入到頂層testbench.v中,用于模擬實(shí)際應(yīng)用測(cè)試時(shí)用到的PC機(jī)UART接口。同時(shí)將簡(jiǎn)易的串口cmsdk_apb_uart.v植入到芯片當(dāng)中;編譯時(shí)將cmsdk_uart.c加到src中。這樣在仿真時(shí),需要觀測(cè)的數(shù)據(jù)就可以通過printf函數(shù)輸出到仿真軟件界面的console窗口或者fwrite到log文件。該log文件與實(shí)際調(diào)試時(shí)PC機(jī)串口上的顯示數(shù)據(jù)是完全一致的。通過比對(duì)這兩個(gè)文件,就可以發(fā)現(xiàn)ASIC在前端、后端設(shè)計(jì)當(dāng)中可能產(chǎn)生的錯(cuò)誤,同時(shí)也可以驗(yàn)證RTL設(shè)計(jì)代碼的魯棒性。
ASIC中PLL都是由特定的IP供應(yīng)商提供的,F(xiàn)PGA上只能調(diào)用FPGA現(xiàn)有的PLL進(jìn)行模擬,頻率一致就行。本芯片可以根據(jù)應(yīng)用場(chǎng)景不同,選擇不同頻率,以節(jié)省功耗;這一點(diǎn)在FPGA上約束并實(shí)現(xiàn)較為繁瑣,且會(huì)增大很大工作量,這里省去該功能。
ASIC中的低功耗設(shè)計(jì),主要包括 (1) PMU(Power Management Unit),用來產(chǎn)生power switch以控制各個(gè)單元模塊的電源關(guān)斷;FPGA中保留這些power switch控制信號(hào)進(jìn)行行為觀測(cè),不會(huì)對(duì)各模塊電源進(jìn)行處理。 (2) 門控時(shí)鐘,通過寄存器配置來對(duì)各個(gè)單元模塊的時(shí)鐘進(jìn)行單獨(dú)控制;行為簡(jiǎn)單,但如果在FPGA中引入門控時(shí)鐘的話,會(huì)數(shù)倍地增加后續(xù)的工作量且不利于調(diào)試,還極有可能導(dǎo)致FPGA跑步下去,因?yàn)镕PGA里面的clock資源有限。因此,將門控時(shí)鐘模塊舍去,通過對(duì)配置時(shí)鐘的寄存器進(jìn)行行為觀測(cè)即可。 (3)Multi-Voltage(多電壓域),本身FPGA和ASIC中各種電壓差異較大,對(duì)此不做處理。
ASIC中的SRAM和ROM一般由工藝廠的memory compiler配置生成,eflash一般由工藝廠或IP供應(yīng)商另外提供。FPGA上,通過JTAG對(duì)SRAM進(jìn)行燒錄來模擬elfash的燒錄功能,真正的eflash和rom的功能只能通過ASIC仿真來校驗(yàn);兩驗(yàn)證平臺(tái)要對(duì)讀寫進(jìn)行嚴(yán)格的時(shí)序比對(duì),以保證SRAM與實(shí)際的eflash模型功能行為完全一致。
通過宏定義(`ifdef-`else-`endif)來實(shí)現(xiàn)FPGA和ASIC兩平臺(tái)共用一套代碼,以SRAM為例,摘抄如下:
`ifdef FPGA_Check
fpga_sram u_fpga_sram();
`else
asic_sram u_asic_sram();
`endif
本文介紹的FPGA驗(yàn)證板,先是進(jìn)行簡(jiǎn)單的植入并調(diào)試驗(yàn)證成功,在植入安全芯片各種IP進(jìn)行功能驗(yàn)證;后再進(jìn)行全面的雙核植入,通過了應(yīng)用開發(fā)人員產(chǎn)品級(jí)的高覆蓋率的功能驗(yàn)證和批量測(cè)試;ASIC仿真平臺(tái),也通過了前端驗(yàn)證工程師的多次RTL仿真和后仿真校驗(yàn);仿真和驗(yàn)證平臺(tái)均穩(wěn)定運(yùn)行。該雙核安全芯片業(yè)已順利MPW。
[1]Xilinx Artix-7 FPGA AC701 Evaluation Kit[DB/OL].http://www.xilinx.com/products/boards-and-kits/ek-a7-ac701-g.html.
[2]NXP Semiconductors,LPC43xx/LPC43Sxx ARM Cortex-M4/M0 multicore microcontroller User manual[DB/OL](2015-10-10).http://cache.nxp.com/documents/user_manual/UM10503.pdf?fsrch=1amp;sr=1amp;pageNum=1.
[3]ARM Ltd,Cortex-M0 DesignStart Eval[DB/OL].https://developer.a(chǎn)rm.com/products/designstart/processor-ip/evaluate.
柯志斌(1982—),福建莆田人,碩士研究生,工程師,主要研究方向:數(shù)字芯片設(shè)計(jì)、MCU設(shè)計(jì)、POS機(jī)安全芯片設(shè)計(jì)。