时间:2024-08-31
白创 李帆 汪东
摘 要:针对L-DSP的调试需求,设计了一种基于JTAG接口的片上调试电路.该调试电路实现了存储资源访问、CPU流水线控制、硬件断点/观察点、参数统计等调试功能.相对于传统调试方式,本文电路通过增加DT-DMA模块,实现数据在外设与内存之间直接传输,极大地提升了调试效率.调试电路在0.18 μm CMOS工艺下实现,面积为167 234.76 μm2,功耗为8.89 mW.同时,调试电路与L-DSP全芯片在FPGA下进行验证,结果表明,该调试电路调试功能完整且DT-DMA传输调试数据的速度是CPU传输的3倍.
关键词:调试;片上调试;JTAG接口;DT-DMA;DMA操作
中图分类号:TN495 文献标志码: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
随着半导体制造工艺的不断进步,芯片的集成度越来越高,实现的功能越来越复杂,使得芯片正确性调试与故障定位的需求难以得到保证[1]. 同时芯片的快速市场化又使得其研发周期越来越短. 因此,可靠的调试手段显得尤为重要,准确、快速的调试方法直接影响到芯片的开发效率与进度[2].
根据通信接口的不同,常用片上调试方法包括基于串口通信、基于BDM接口和基于JTAG接口3种调试方法.基于串口通信的调试方法,其功能虽然完善,调试过程也十分简便[3],但因其占用芯片一些引脚资源,存在无法进行自我调试等弊端,使得该方法在某些场合并不适用[4-5]. 而基于BDM接口的片上调试技术虽然被业界广泛使用[6],但是没有相关协议支持边界扫描功能,需要开发者自行承担风险.基于JTAG接口的调试方法是目前包含军事领域在内大部分芯片采用的调试方法,具有良好的灵活性和扩展性且占用较少的引脚资源等特点[7-12]. 因此本文針对L-DSP调试需求,设计实现一种基于JTAG接口的调试电路来完成L-DSP的调试功能.传统JTAG调试方法需要CPU传输调试数据,当数据量过大时会占用CPU大量资源,导致调试效率不高. 为提高调试效率,本文在调试电路中增加DT-DMA模块实现调试数据直接在外设与内存之间传输,缩短调试周期.
1 片上调试电路设计方案与实现
在调试模式下,调试电路(Emulate and Test,ET)通过来自仿真器的串行输入接收调试指令,经过串并转换、异步时钟处理、指令译码等操作来完成相应的调试工作. 图1为ET总体设计框架图,包括ET调试端口、芯片存储访问、流水线控制、事件分析、DT-DMA 5个部分,其中ET调试端口提供整个调试系统的控制机制,是调试软件通过JTAG接口进行系统访问的入口;事件分析模块提供包括硬件断点、 数据、地址观察点,以及一些其他重要参数的统计等功能;DT-DMA模块提供调试数据传输通路,调试数据导入、导出芯片时采用此条通路,不占用CPU资源.
1.1 ET调试端口
ET调试端口是ET的核心控制部分,是符合IEEE 1149.1协议标准[7]并扩展的仿真调试端口,ET结构如图2所示. TAP(Test Access Port)控制器是一个同步有限状态机,掌握着整个JTAG协议的状态,其状态迁移如图3所示,通过TDI、TMS、TCK端口接收调试软件发出的指令并进行译码,发送具体命令给指定的模块去执行,通过TDO端口输出芯片返回调试数据给调试软件.
1.2 存储访问与流水线控制
存储访问部分提供调试软件访问芯片存储的接口,实现对芯片内外存储空间以及特殊编制寄存器的读写,使除开受保护的地址区域外其余存储资源对外是透明的. 整体结构如图4所示,存储访问模块将ET内寄存器空间和其他地址空间(Memory存储和CPU寄存器)进行区分,避免了即使访问ET内部寄存器也需要绕到存储控制器的情况,提高工作效率.
流水线控制部分实现调试软件对处理器流水线的精确控制,指令包括暂停、运行、复位CPU、单步执行指令等.直接将来自ET调试端口的流水控制指令进行译码,产生相应的控制信号发送给处理器.调试模式下,在控制CPU的同时会发出信号去控制相应的外设,避免外设出现失控的情况.
1.3 事件分析
事件分析部分实现了硬件断点、硬件观察点、参数统计等功能.本文调试电路提供两个硬件断点、一个硬件观察点和一个用于统计重要参数的计数器.硬件断点用于监控程序指令地址,设置一个硬件断点寄存器用来保存目标指令地址,将程序地址总线接入事件分析逻辑内与目标值进行比较,程序运行后当程序地址总线上出现目标值后ET立即发出流水线暂停信号.硬件观察点用于监控数据总线与地址总线上的值,行为与硬件断点一致,工作流程如图5所示. 参数统计功能实现了对目标地址、数据等一些重要参数出现次数的统计;搭配硬件断点/观察点,实现了对从程序起始到硬件断点/观察点处指令运行周期的统计.
1.4 DT-DMA
DT-DMA是一条专门为调试数据设计的传输通路,用于代替CPU对调试数据进行传输,并且在数据传输过程中不会影响CPU的正常运行. DT-DMA有两种方式实现调试数据的传输,一是从开始地址传输一定数据量的方式;二是从开始地址传输至结束地址.DT-DMA接收到请求后会依次对存储进行访问,数据传输不占用CPU资源.
DT-DMA传输机制能被ET或CPU分时来控制,其请求处理流程如图6所示,在Polite模式下仿真器的请求会受到调试掩码寄存器的影响,掩码为1时无法实时传输调试数据;Rude模式下忽视掩码寄存器.DT-DMA有抢先和非抢先两种工作模式,抢先模式下,DT-DMA使用总线的优先权高于CPU,会打断CPU强制占用总线资源直到数据传输完成;非抢先模式下,DT-DMA利用CPU不使用总线的间隙进行数据传输.
2 ET逻辑功能验证与DC综合
2.1 ET逻辑功能验证
采用Cadence软件中的NC-Verilog仿真工具,根据JTAG协议,针对调试功能编写相应的测试激励输入到调试电路逻辑,用Debug工具Verdi查看仿真结果,用IMC仿真工具查看代码覆盖率.
图7为功能仿真示意图,示例为ET内寄存器读写,将目标数据给到ET_DataCPU寄存器中,在写使能有效时将数据写到指定地址(仿真中数据为0x566,地址为0x82e);读数据时,给出读指令,在确认读数据信号有效后把返回的数据给到RSAC_DataToJIR寄存器中,图7中可以看出寄存器读写结果均正确. 同理,在相同环境下依次验证其他调试功能,調试功能均正确. 所有调试功能仿真完成后对代码覆盖率进行统计,图8为屏蔽了toggle后的代码覆盖率结果,结果表明覆盖率达到100%.
2.2 DC综合
采用Synopsys公司的Design Compiler综合工具,在0.18 μm CMOS工艺下对本文调试电路进行综合.综合时系统时钟频率为150 MHz,调试时钟频率为10 MHz,综合后面积开销为167 234.76 μm2,功耗为8.89 mW.
3 FPGA原型验证
FPGA原型验证环境如图9所示. 将L-DSP全芯片代码固化至FPGA,采用TI公司的CCS调试软件作为仿真工具,通过XDS仿真器与FPGA相连,针对每种调试功能,依次进行验证. 验证同时,将JTAG信号用逻辑分析仪捕获备份,经过处理后返回编译环境.
图10为硬件断点功能验证示意图.在调试模式下,新建硬件断点(图中为0x84f8),运行后CCS显示程序停在了指令地址为0x0084f8的地方,与预期结果相同.同理,针对所有调试功能依次进行验证,结果表明调试功能均正确.
DT-DMA数据传输速度验证部分,分别用CPU和DT-DMA两种方式从调试软件传输同一段数据至FPGA,将逻辑分析仪抓取到的JTAG信号进行整理,再用Debug工具Verdi查看波形,找到这段数据传输始末位置,对比两种方式所用传输时间. 图11展示了5次传输不同数据量的实验,统计了两种数据传输方式所用的时间,统计结果表明DT-DMA所用传输时间明显少于CPU.因为调试数据首先会被仿真器通过JTAG串行通信传输至ET,再由两种传输方式传输至指定区域,所以数据传输速度会受到JTAG串行通信的限制,但实验表明,DT-DMA平均所用时间仍是CPU传输的32.15%.
4 结 论
针对L-DSP的调试功能,本文设计了一种复用JTAG接口的调试电路,能够有效、快速地实现存储空间访问、流水线控制、硬件断点/观察点、事件统计等调试功能.同时通过引入DT-DMA模块实现调试数据在外设与内存之间直接传输,经FPGA原型验证,调试数据传输速度是CPU传输的3倍,有效提升了调试效率.
参考文献
[1] 常志恒,肖铁军,史顺波.基于JTAG的片上调试器与调试系统的设计实现[J]. 计算机工程与应用,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片上调试系统的设计[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] 陈芳芳,周克宁. 面向电子控制器的片上可调试性结构设计[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] 何勇,王腾,王新安,等. 一种低代价零开销SoC在线调试系统设计[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调试系统[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] 王琪,高瑛珂,華斯亮,等. 可复用微处理器片上调试功能的设计与实现[J].计算机辅助设计与图形学学报,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接口的片上调试与性能分析方法[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在线调试系统的设计[J].微电子学,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测试调试系统设计技术[J]. 半导体技术,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)
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!