白創(chuàng),李帆,汪東
(1.長沙理工大學(xué) 物理與電子科學(xué)學(xué)院,湖南 長沙 410114;2.柔性電子材料基因工程湖南省重點實驗室,湖南 長沙 410114;3.湖南轂梁微電子有限公司,湖南 長沙 410005)
隨著半導(dǎo)體制造工藝的不斷進(jìn)步,芯片的集成度越來越高,實現(xiàn)的功能越來越復(fù)雜,使得芯片正確性調(diào)試與故障定位的需求難以得到保證[1].同時芯片的快速市場化又使得其研發(fā)周期越來越短.因此,可靠的調(diào)試手段顯得尤為重要,準(zhǔn)確、快速的調(diào)試方法直接影響到芯片的開發(fā)效率與進(jìn)度[2].
根據(jù)通信接口的不同,常用片上調(diào)試方法包括基于串口通信、基于BDM 接口和基于JTAG 接口3種調(diào)試方法.基于串口通信的調(diào)試方法,其功能雖然完善,調(diào)試過程也十分簡便[3],但因其占用芯片一些引腳資源,存在無法進(jìn)行自我調(diào)試等弊端,使得該方法在某些場合并不適用[4-5].而基于BDM 接口的片上調(diào)試技術(shù)雖然被業(yè)界廣泛使用[6],但是沒有相關(guān)協(xié)議支持邊界掃描功能,需要開發(fā)者自行承擔(dān)風(fēng)險.基于JTAG 接口的調(diào)試方法是目前包含軍事領(lǐng)域在內(nèi)大部分芯片采用的調(diào)試方法,具有良好的靈活性和擴(kuò)展性且占用較少的引腳資源等特點[7-12].因此本文針對L-DSP 調(diào)試需求,設(shè)計實現(xiàn)一種基于JTAG 接口的調(diào)試電路來完成L-DSP 的調(diào)試功能.傳統(tǒng)JTAG調(diào)試方法需要CPU 傳輸調(diào)試數(shù)據(jù),當(dāng)數(shù)據(jù)量過大時會占用CPU 大量資源,導(dǎo)致調(diào)試效率不高.為提高調(diào)試效率,本文在調(diào)試電路中增加DT-DMA 模塊實現(xiàn)調(diào)試數(shù)據(jù)直接在外設(shè)與內(nèi)存之間傳輸,縮短調(diào)試周期.
在調(diào)試模式下,調(diào)試電路(Emulate and Test,ET)通過來自仿真器的串行輸入接收調(diào)試指令,經(jīng)過串并轉(zhuǎn)換、異步時鐘處理、指令譯碼等操作來完成相應(yīng)的調(diào)試工作.圖1 為ET 總體設(shè)計框架圖,包括ET調(diào)試端口、芯片存儲訪問、流水線控制、事件分析、DT-DMA 5 個部分,其中ET 調(diào)試端口提供整個調(diào)試系統(tǒng)的控制機(jī)制,是調(diào)試軟件通過JTAG 接口進(jìn)行系統(tǒng)訪問的入口;事件分析模塊提供包括硬件斷點、數(shù)據(jù)、地址觀察點,以及一些其他重要參數(shù)的統(tǒng)計等功能;DT-DMA 模塊提供調(diào)試數(shù)據(jù)傳輸通路,調(diào)試數(shù)據(jù)導(dǎo)入、導(dǎo)出芯片時采用此條通路,不占用CPU 資源.
圖1 ET 總體設(shè)計框架圖Fig.1 Framework of ET
ET 調(diào)試端口是ET 的核心控制部分,是符合IEEE 1149.1 協(xié)議標(biāo)準(zhǔn)[7]并擴(kuò)展的仿真調(diào)試端口,ET結(jié)構(gòu)如圖2 所示.TAP(Test Access Port)控制器是一個同步有限狀態(tài)機(jī),掌握著整個JTAG 協(xié)議的狀態(tài),其狀態(tài)遷移如圖3 所示,通過TDI、TMS、TCK 端口接收調(diào)試軟件發(fā)出的指令并進(jìn)行譯碼,發(fā)送具體命令給指定的模塊去執(zhí)行,通過TDO 端口輸出芯片返回調(diào)試數(shù)據(jù)給調(diào)試軟件.
圖2 ET 調(diào)試端口結(jié)構(gòu)圖Fig.2 Structure of ET debug port
圖3 JTAG 狀態(tài)機(jī)狀態(tài)遷移圖Fig.3 State transition of JTAG state machine
存儲訪問部分提供調(diào)試軟件訪問芯片存儲的接口,實現(xiàn)對芯片內(nèi)外存儲空間以及特殊編制寄存器的讀寫,使除開受保護(hù)的地址區(qū)域外其余存儲資源對外是透明的.整體結(jié)構(gòu)如圖4 所示,存儲訪問模塊將ET 內(nèi)寄存器空間和其他地址空間(Memory 存儲和CPU 寄存器)進(jìn)行區(qū)分,避免了即使訪問ET 內(nèi)部寄存器也需要繞到存儲控制器的情況,提高工作效率.
流水線控制部分實現(xiàn)調(diào)試軟件對處理器流水線的精確控制,指令包括暫停、運行、復(fù)位CPU、單步執(zhí)行指令等.直接將來自ET 調(diào)試端口的流水控制指令進(jìn)行譯碼,產(chǎn)生相應(yīng)的控制信號發(fā)送給處理器.調(diào)試模式下,在控制CPU 的同時會發(fā)出信號去控制相應(yīng)的外設(shè),避免外設(shè)出現(xiàn)失控的情況.
圖4 存儲訪問結(jié)構(gòu)圖Fig.4 Structure of storage access
事件分析部分實現(xiàn)了硬件斷點、硬件觀察點、參數(shù)統(tǒng)計等功能.本文調(diào)試電路提供兩個硬件斷點、一個硬件觀察點和一個用于統(tǒng)計重要參數(shù)的計數(shù)器.硬件斷點用于監(jiān)控程序指令地址,設(shè)置一個硬件斷點寄存器用來保存目標(biāo)指令地址,將程序地址總線接入事件分析邏輯內(nèi)與目標(biāo)值進(jìn)行比較,程序運行后當(dāng)程序地址總線上出現(xiàn)目標(biāo)值后ET 立即發(fā)出流水線暫停信號.硬件觀察點用于監(jiān)控數(shù)據(jù)總線與地址總線上的值,行為與硬件斷點一致,工作流程如圖5 所示.參數(shù)統(tǒng)計功能實現(xiàn)了對目標(biāo)地址、數(shù)據(jù)等一些重要參數(shù)出現(xiàn)次數(shù)的統(tǒng)計;搭配硬件斷點/觀察點,實現(xiàn)了對從程序起始到硬件斷點/觀察點處指令運行周期的統(tǒng)計.
圖5 硬件斷點/觀察點工作流程圖Fig.5 Hardware breakpoint/watchpoint work flow chart
DT-DMA 是一條專門為調(diào)試數(shù)據(jù)設(shè)計的傳輸通路,用于代替CPU 對調(diào)試數(shù)據(jù)進(jìn)行傳輸,并且在數(shù)據(jù)傳輸過程中不會影響CPU 的正常運行.DT-DMA有兩種方式實現(xiàn)調(diào)試數(shù)據(jù)的傳輸,一是從開始地址傳輸一定數(shù)據(jù)量的方式;二是從開始地址傳輸至結(jié)束地址.DT-DMA 接收到請求后會依次對存儲進(jìn)行訪問,數(shù)據(jù)傳輸不占用CPU 資源.
DT-DMA 傳輸機(jī)制能被ET 或CPU 分時來控制,其請求處理流程如圖6 所示,在Polite 模式下仿真器的請求會受到調(diào)試掩碼寄存器的影響,掩碼為1 時無法實時傳輸調(diào)試數(shù)據(jù);Rude 模式下忽視掩碼寄存器.DT-DMA 有搶先和非搶先兩種工作模式,搶先模式下,DT-DMA 使用總線的優(yōu)先權(quán)高于CPU,會打斷CPU 強(qiáng)制占用總線資源直到數(shù)據(jù)傳輸完成;非搶先模式下,DT-DMA 利用CPU 不使用總線的間隙進(jìn)行數(shù)據(jù)傳輸.
圖6 DT-DMA 請求處理流程圖Fig.6 Process for handling a DT-DMA request
采用Cadence 軟件中的NC-Verilog 仿真工具,根據(jù)JTAG 協(xié)議,針對調(diào)試功能編寫相應(yīng)的測試激勵輸入到調(diào)試電路邏輯,用Debug 工具Verdi 查看仿真結(jié)果,用IMC 仿真工具查看代碼覆蓋率.
圖7 邏輯功能驗證圖Fig.7 Function verification diagram
圖7 為功能仿真示意圖,示例為ET 內(nèi)寄存器讀寫,將目標(biāo)數(shù)據(jù)給到ET_DataCPU 寄存器中,在寫使能有效時將數(shù)據(jù)寫到指定地址(仿真中數(shù)據(jù)為0x566,地址為0x82e);讀數(shù)據(jù)時,給出讀指令,在確認(rèn)讀數(shù)據(jù)信號有效后把返回的數(shù)據(jù)給到RSAC_DataToJIR 寄存器中,圖7 中可以看出寄存器讀寫結(jié)果均正確.同理,在相同環(huán)境下依次驗證其他調(diào)試功能,調(diào)試功能均正確.所有調(diào)試功能仿真完成后對代碼覆蓋率進(jìn)行統(tǒng)計,圖8 為屏蔽了toggle 后的代碼覆蓋率結(jié)果,結(jié)果表明覆蓋率達(dá)到100%.
圖8 代碼覆蓋率Fig.8 Coverage
采用Synopsys 公司的Design Compiler 綜合工具,在0.18 μm CMOS 工藝下對本文調(diào)試電路進(jìn)行綜合.綜合時系統(tǒng)時鐘頻率為150 MHz,調(diào)試時鐘頻率為10 MHz,綜合后面積開銷為167 234.76 μm2,功耗為8.89 mW.
FPGA 原型驗證環(huán)境如圖9 所示.將L-DSP 全芯片代碼固化至FPGA,采用TI 公司的CCS 調(diào)試軟件作為仿真工具,通過XDS 仿真器與FPGA 相連,針對每種調(diào)試功能,依次進(jìn)行驗證.驗證同時,將JTAG 信號用邏輯分析儀捕獲備份,經(jīng)過處理后返回編譯環(huán)境.
圖9 FPGA 原型驗證環(huán)境Fig.9 Environment of FPGA prototype verification
圖10 為硬件斷點功能驗證示意圖.在調(diào)試模式下,新建硬件斷點(圖中為0x84f8),運行后CCS 顯示程序停在了指令地址為0x0084f8 的地方,與預(yù)期結(jié)果相同.同理,針對所有調(diào)試功能依次進(jìn)行驗證,結(jié)果表明調(diào)試功能均正確.
圖10 硬件斷點功能驗證Fig.10 Verification for hardware breakpoint
DT-DMA 數(shù)據(jù)傳輸速度驗證部分,分別用CPU和DT-DMA 兩種方式從調(diào)試軟件傳輸同一段數(shù)據(jù)至FPGA,將邏輯分析儀抓取到的JTAG 信號進(jìn)行整理,再用Debug 工具Verdi 查看波形,找到這段數(shù)據(jù)傳輸始末位置,對比兩種方式所用傳輸時間.圖11展示了5 次傳輸不同數(shù)據(jù)量的實驗,統(tǒng)計了兩種數(shù)據(jù)傳輸方式所用的時間,統(tǒng)計結(jié)果表明DT-DMA 所用傳輸時間明顯少于CPU.因為調(diào)試數(shù)據(jù)首先會被仿真器通過JTAG 串行通信傳輸至ET,再由兩種傳輸方式傳輸至指定區(qū)域,所以數(shù)據(jù)傳輸速度會受到JTAG 串行通信的限制,但實驗表明,DT-DMA 平均所用時間仍是CPU 傳輸?shù)?2.15%.
圖11 兩種傳輸方式時間對比Fig.11 Time contrast of two methods
針對L-DSP 的調(diào)試功能,本文設(shè)計了一種復(fù)用JTAG 接口的調(diào)試電路,能夠有效、快速地實現(xiàn)存儲空間訪問、流水線控制、硬件斷點/觀察點、事件統(tǒng)計等調(diào)試功能.同時通過引入DT-DMA 模塊實現(xiàn)調(diào)試數(shù)據(jù)在外設(shè)與內(nèi)存之間直接傳輸,經(jīng)FPGA 原型驗證,調(diào)試數(shù)據(jù)傳輸速度是CPU 傳輸?shù)? 倍,有效提升了調(diào)試效率.