白創(chuàng) 李帆 汪東
摘? ?要:針對L-DSP的調(diào)試需求,設(shè)計(jì)了一種基于JTAG接口的片上調(diào)試電路.該調(diào)試電路實(shí)現(xiàn)了存儲資源訪問、CPU流水線控制、硬件斷點(diǎn)/觀察點(diǎn)、參數(shù)統(tǒng)計(jì)等調(diào)試功能.相對于傳統(tǒng)調(diào)試方式,本文電路通過增加DT-DMA模塊,實(shí)現(xiàn)數(shù)據(jù)在外設(shè)與內(nèi)存之間直接傳輸,極大地提升了調(diào)試效率.調(diào)試電路在0.18 μm CMOS工藝下實(shí)現(xiàn),面積為167 234.76 μm2,功耗為8.89 mW.同時(shí),調(diào)試電路與L-DSP全芯片在FPGA下進(jìn)行驗(yàn)證,結(jié)果表明,該調(diào)試電路調(diào)試功能完整且DT-DMA傳輸調(diào)試數(shù)據(jù)的速度是CPU傳輸?shù)?倍.
關(guān)鍵詞:調(diào)試;片上調(diào)試;JTAG接口;DT-DMA;DMA操作
中圖分類號:TN495? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ??文章編號:1674—2974(2020)08—0069—05
Abstract:According to the debug requirements of L-DSP, an on-chip debug circuit based on JTAG interface is proposed in this paper, which implements the debug functions such as storage resource access, CPU pipeline control, hardware breakpoint/observation point, and parameter statistics. Compared with the traditional debug mode, the proposed debug circuit realizes the direct transmission of data between peripherals and memory by adding a DT-DMA module, which greatly improves the debug efficiency. The proposed circuit is designed in a 0.18 μm CMOS process with an area of 167 234.76 μm2 and a power consumption of 8.89 mW. And the proposed circuit and L-DSP are verified under the FPGA. The results show that the proposed circuit has complete debug functions and the rate of DT-DMA for transferring debug data is three times faster than that of the CPU.
Key words:debugging;on-chip debug;JTAG interface;DT-DMA;DMA operation
隨著半導(dǎo)體制造工藝的不斷進(jìn)步,芯片的集成度越來越高,實(shí)現(xiàn)的功能越來越復(fù)雜,使得芯片正確性調(diào)試與故障定位的需求難以得到保證[1]. 同時(shí)芯片的快速市場化又使得其研發(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)險(xiǎn).基于JTAG接口的調(diào)試方法是目前包含軍事領(lǐng)域在內(nèi)大部分芯片采用的調(diào)試方法,具有良好的靈活性和擴(kuò)展性且占用較少的引腳資源等特點(diǎn)[7-12]. 因此本文針對L-DSP調(diào)試需求,設(shè)計(jì)實(shí)現(xiàn)一種基于JTAG接口的調(diào)試電路來完成L-DSP的調(diào)試功能.傳統(tǒng)JTAG調(diào)試方法需要CPU傳輸調(diào)試數(shù)據(jù),當(dāng)數(shù)據(jù)量過大時(shí)會占用CPU大量資源,導(dǎo)致調(diào)試效率不高. 為提高調(diào)試效率,本文在調(diào)試電路中增加DT-DMA模塊實(shí)現(xiàn)調(diào)試數(shù)據(jù)直接在外設(shè)與內(nèi)存之間傳輸,縮短調(diào)試周期.
1? ?片上調(diào)試電路設(shè)計(jì)方案與實(shí)現(xiàn)
在調(diào)試模式下,調(diào)試電路(Emulate and Test,ET)通過來自仿真器的串行輸入接收調(diào)試指令,經(jīng)過串并轉(zhuǎn)換、異步時(shí)鐘處理、指令譯碼等操作來完成相應(yīng)的調(diào)試工作. 圖1為ET總體設(shè)計(jì)框架圖,包括ET調(diào)試端口、芯片存儲訪問、流水線控制、事件分析、DT-DMA 5個(gè)部分,其中ET調(diào)試端口提供整個(gè)調(diào)試系統(tǒng)的控制機(jī)制,是調(diào)試軟件通過JTAG接口進(jìn)行系統(tǒng)訪問的入口;事件分析模塊提供包括硬件斷點(diǎn)、 數(shù)據(jù)、地址觀察點(diǎn),以及一些其他重要參數(shù)的統(tǒng)計(jì)等功能;DT-DMA模塊提供調(diào)試數(shù)據(jù)傳輸通路,調(diào)試數(shù)據(jù)導(dǎo)入、導(dǎo)出芯片時(shí)采用此條通路,不占用CPU資源.
1.1? ?ET調(diào)試端口
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)控制器是一個(gè)同步有限狀態(tài)機(jī),掌握著整個(gè)JTAG協(xié)議的狀態(tài),其狀態(tài)遷移如圖3所示,通過TDI、TMS、TCK端口接收調(diào)試軟件發(fā)出的指令并進(jìn)行譯碼,發(fā)送具體命令給指定的模塊去執(zhí)行,通過TDO端口輸出芯片返回調(diào)試數(shù)據(jù)給調(diào)試軟件.
1.2? ?存儲訪問與流水線控制
存儲訪問部分提供調(diào)試軟件訪問芯片存儲的接口,實(shí)現(xiàn)對芯片內(nèi)外存儲空間以及特殊編制寄存器的讀寫,使除開受保護(hù)的地址區(qū)域外其余存儲資源對外是透明的. 整體結(jié)構(gòu)如圖4所示,存儲訪問模塊將ET內(nèi)寄存器空間和其他地址空間(Memory存儲和CPU寄存器)進(jìn)行區(qū)分,避免了即使訪問ET內(nèi)部寄存器也需要繞到存儲控制器的情況,提高工作效率.
流水線控制部分實(shí)現(xiàn)調(diào)試軟件對處理器流水線的精確控制,指令包括暫停、運(yùn)行、復(fù)位CPU、單步執(zhí)行指令等.直接將來自ET調(diào)試端口的流水控制指令進(jìn)行譯碼,產(chǎn)生相應(yīng)的控制信號發(fā)送給處理器.調(diào)試模式下,在控制CPU的同時(shí)會發(fā)出信號去控制相應(yīng)的外設(shè),避免外設(shè)出現(xiàn)失控的情況.
1.3? ?事件分析
事件分析部分實(shí)現(xiàn)了硬件斷點(diǎn)、硬件觀察點(diǎn)、參數(shù)統(tǒng)計(jì)等功能.本文調(diào)試電路提供兩個(gè)硬件斷點(diǎn)、一個(gè)硬件觀察點(diǎn)和一個(gè)用于統(tǒng)計(jì)重要參數(shù)的計(jì)數(shù)器.硬件斷點(diǎn)用于監(jiān)控程序指令地址,設(shè)置一個(gè)硬件斷點(diǎn)寄存器用來保存目標(biāo)指令地址,將程序地址總線接入事件分析邏輯內(nèi)與目標(biāo)值進(jìn)行比較,程序運(yùn)行后當(dāng)程序地址總線上出現(xiàn)目標(biāo)值后ET立即發(fā)出流水線暫停信號.硬件觀察點(diǎn)用于監(jiān)控?cái)?shù)據(jù)總線與地址總線上的值,行為與硬件斷點(diǎn)一致,工作流程如圖5所示. 參數(shù)統(tǒng)計(jì)功能實(shí)現(xiàn)了對目標(biāo)地址、數(shù)據(jù)等一些重要參數(shù)出現(xiàn)次數(shù)的統(tǒng)計(jì);搭配硬件斷點(diǎn)/觀察點(diǎn),實(shí)現(xiàn)了對從程序起始到硬件斷點(diǎn)/觀察點(diǎn)處指令運(yùn)行周期的統(tǒng)計(jì).
1.4? ?DT-DMA
DT-DMA是一條專門為調(diào)試數(shù)據(jù)設(shè)計(jì)的傳輸通路,用于代替CPU對調(diào)試數(shù)據(jù)進(jìn)行傳輸,并且在數(shù)據(jù)傳輸過程中不會影響CPU的正常運(yùn)行. DT-DMA有兩種方式實(shí)現(xiàn)調(diào)試數(shù)據(jù)的傳輸,一是從開始地址傳輸一定數(shù)據(jù)量的方式;二是從開始地址傳輸至結(jié)束地址.DT-DMA接收到請求后會依次對存儲進(jìn)行訪問,數(shù)據(jù)傳輸不占用CPU資源.
DT-DMA傳輸機(jī)制能被ET或CPU分時(shí)來控制,其請求處理流程如圖6所示,在Polite模式下仿真器的請求會受到調(diào)試掩碼寄存器的影響,掩碼為1時(shí)無法實(shí)時(shí)傳輸調(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ù)傳輸.
2? ?ET邏輯功能驗(yàn)證與DC綜合
2.1? ?ET邏輯功能驗(yàn)證
采用Cadence軟件中的NC-Verilog仿真工具,根據(jù)JTAG協(xié)議,針對調(diào)試功能編寫相應(yīng)的測試激勵(lì)輸入到調(diào)試電路邏輯,用Debug工具Verdi查看仿真結(jié)果,用IMC仿真工具查看代碼覆蓋率.
圖7為功能仿真示意圖,示例為ET內(nèi)寄存器讀寫,將目標(biāo)數(shù)據(jù)給到ET_DataCPU寄存器中,在寫使能有效時(shí)將數(shù)據(jù)寫到指定地址(仿真中數(shù)據(jù)為0x566,地址為0x82e);讀數(shù)據(jù)時(shí),給出讀指令,在確認(rèn)讀數(shù)據(jù)信號有效后把返回的數(shù)據(jù)給到RSAC_DataToJIR寄存器中,圖7中可以看出寄存器讀寫結(jié)果均正確. 同理,在相同環(huán)境下依次驗(yàn)證其他調(diào)試功能,調(diào)試功能均正確. 所有調(diào)試功能仿真完成后對代碼覆蓋率進(jìn)行統(tǒng)計(jì),圖8為屏蔽了toggle后的代碼覆蓋率結(jié)果,結(jié)果表明覆蓋率達(dá)到100%.
2.2? ?DC綜合
采用Synopsys公司的Design Compiler綜合工具,在0.18 μm CMOS工藝下對本文調(diào)試電路進(jìn)行綜合.綜合時(shí)系統(tǒng)時(shí)鐘頻率為150 MHz,調(diào)試時(shí)鐘頻率為10 MHz,綜合后面積開銷為167 234.76 μm2,功耗為8.89 mW.
3? ?FPGA原型驗(yàn)證
FPGA原型驗(yàn)證環(huán)境如圖9所示. 將L-DSP全芯片代碼固化至FPGA,采用TI公司的CCS調(diào)試軟件作為仿真工具,通過XDS仿真器與FPGA相連,針對每種調(diào)試功能,依次進(jìn)行驗(yàn)證. 驗(yàn)證同時(shí),將JTAG信號用邏輯分析儀捕獲備份,經(jīng)過處理后返回編譯環(huán)境.
圖10為硬件斷點(diǎn)功能驗(yàn)證示意圖.在調(diào)試模式下,新建硬件斷點(diǎn)(圖中為0x84f8),運(yùn)行后CCS顯示程序停在了指令地址為0x0084f8的地方,與預(yù)期結(jié)果相同.同理,針對所有調(diào)試功能依次進(jìn)行驗(yàn)證,結(jié)果表明調(diào)試功能均正確.
DT-DMA數(shù)據(jù)傳輸速度驗(yàn)證部分,分別用CPU和DT-DMA兩種方式從調(diào)試軟件傳輸同一段數(shù)據(jù)至FPGA,將邏輯分析儀抓取到的JTAG信號進(jìn)行整理,再用Debug工具Verdi查看波形,找到這段數(shù)據(jù)傳輸始末位置,對比兩種方式所用傳輸時(shí)間. 圖11展示了5次傳輸不同數(shù)據(jù)量的實(shí)驗(yàn),統(tǒng)計(jì)了兩種數(shù)據(jù)傳輸方式所用的時(shí)間,統(tǒng)計(jì)結(jié)果表明DT-DMA所用傳輸時(shí)間明顯少于CPU.因?yàn)檎{(diào)試數(shù)據(jù)首先會被仿真器通過JTAG串行通信傳輸至ET,再由兩種傳輸方式傳輸至指定區(qū)域,所以數(shù)據(jù)傳輸速度會受到JTAG串行通信的限制,但實(shí)驗(yàn)表明,DT-DMA平均所用時(shí)間仍是CPU傳輸?shù)?2.15%.
4? ?結(jié)? ?論
針對L-DSP的調(diào)試功能,本文設(shè)計(jì)了一種復(fù)用JTAG接口的調(diào)試電路,能夠有效、快速地實(shí)現(xiàn)存儲空間訪問、流水線控制、硬件斷點(diǎn)/觀察點(diǎn)、事件統(tǒng)計(jì)等調(diào)試功能.同時(shí)通過引入DT-DMA模塊實(shí)現(xiàn)調(diào)試數(shù)據(jù)在外設(shè)與內(nèi)存之間直接傳輸,經(jīng)FPGA原型驗(yàn)證,調(diào)試數(shù)據(jù)傳輸速度是CPU傳輸?shù)?倍,有效提升了調(diào)試效率.
參考文獻(xiàn)
[1]? ? 常志恒,肖鐵軍,史順波.基于JTAG的片上調(diào)試器與調(diào)試系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與應(yīng)用,2012,48(30):78—82.
CHANG Z H,XIAO T J,SHI S B. Design of on-chip-debugger and debug system based on JTAG[J].? Computer Engineering and Applications,2012,48(30):78—82. (In Chinese)
[2]? ? 虞致國,魏敬和.一種基于JTAG的SoC片上調(diào)試系統(tǒng)的設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2009,26(5):5—8.
YU Z G,WEI J H. Design of on-chip SoC debug system based on JTAG interface[J]. Microelectronics and Computer,2009,26(5):5—8. (In Chinese)
[3]? ? DMYTRO F,RATYBOR C,BOHDAN K. Architecture of a tool for automated testing the worst-case execution time of real-time embedded systems firmware[C]//Proceedings of Experience of Designing and Application of CAD Systems in Microeletronics. Ukraine,2017:279—281.
[4]? ? 陳芳芳,周克寧. 面向電子控制器的片上可調(diào)試性結(jié)構(gòu)設(shè)計(jì)[J].電子器件,2018,41(3):708—712.
CHEN F F,ZHOU K N. On-chip debug structure design for electronic controllers[J]. Electronic Devices,2018,41(3):708—712.(In Chinese)
[5]? ? 何勇,王騰,王新安,等. 一種低代價(jià)零開銷SoC在線調(diào)試系統(tǒng)設(shè)計(jì)[J]. 微電子學(xué)與計(jì)算機(jī),2014,31(3):89—93.
HE Y,WANG T,WANG X A,et al. A low-cost zero-overhead in-circuit debug system design for SoC [J].? Microelectronics & Computer,2014,31(3):89—93. (In Chinese)
[6]? ? 沈曉慧,劉曉升,朱巧明. 基于S12微控制單元的BDM調(diào)試系統(tǒng)[J]. 計(jì)算機(jī)工程,2010,36(30):237—239.
SHEN X H,LIU X S,ZHU Q M. BDM debug system based on S12 micro controller unit [J].? Computer Engineering,2010,36(30):237—239.(In Chinese)
[7]? ? IEEE 1149.1—2001 IEEE standard test access port and boundary-scan architecture [S]. New York:The Institute of Electrical Engineers,2001:9—117.
[8]? ?IEEE-ISTO 5001TM—2003 The nexus 5001 forumTM standard for a global embedded processor debug interface[S]. Piscataway:IEEE- Industry Standards and Technology Organization(IEEE-ISTO),2003:7—107.
[9]? ? 王琪,高瑛珂,華斯亮,等. 可復(fù)用微處理器片上調(diào)試功能的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2012,24(10):1369—1374.
WANG Q,GAO Y K,HUA S L,et al. Design and implementation of reusable on-chip debug functions for microprocessors[J]. Journal of Computer-Aided Design & Computer Graphics,2012,24(10):1369—1374. (In Chinese)
[10]? 高瑛珂,王琪,李泉泉,等. 一種基于JTAG接口的片上調(diào)試與性能分析方法[J]. 微電子學(xué)與計(jì)算機(jī),2012,29(7):68—71.
GAO Y K,WANG Q,LI Q Q,et al. A method of on-chip-debugger and performance analysis based on JTAG interface [J]. Microelectronics & Computer,2012,29(7):68—71. (In Chinese)
[11]? 楊誠,張春.高速JTAG在線調(diào)試系統(tǒng)的設(shè)計(jì)[J].微電子學(xué),2014,44(2):214—217.
YANG C,ZHANG C. Design of high speed JTAG? interface on-line debug system[J].? Microelectronics,2014,44(2):214—217. (In Chinese)
[12]? 楊亮,于宗光,魏敬和. 一種基于JTAG接口的SIP測試調(diào)試系統(tǒng)設(shè)計(jì)技術(shù)[J]. 半導(dǎo)體技術(shù),2018,43(4):316—320.
YANG L,YU Z G,WEI J H. Design technology of a SIP test debugging system based on JTAG interface[J]. Semiconductor Technology,2018,43(4):316—320. (In Chinese)