论文部分内容阅读
随着集成电路制造工艺的不断发展,单芯片上可集成的晶体管数不断增多,芯片的功能和性能不断提高,内部结构越发复杂。这对流片成功率,高可靠软件系统开发等带来了更大的挑战,因而,需要更有效的调试方法保证软硬件的正确性。传统的调试手段逐渐显现出不足,可调试性设计应运而生。 可调试性设计是指在设计中为辅助调试而增加的专门设计,主要解决了集成电路开发中硬件调试和底层软件调试的问题。目前,常见的可调试性设计有软件调试器,硬件调试器(主要有在线仿真器和在线调试器)和片上追踪等。其中,由于在线调试器适用性广、性价比高,其在现代微处理器设计中得到广泛的应用。 基于北京大学微处理器研发中心承担的UniCore-3微处理器项目,本文完成了UniCore-3中在线调试器的设计和实现工作。 首先,本文分析并明确了调研的主要对象:基于JTAG技术的在线调试器。本文调研了现阶段主要处理器(包括MIPS、Sun和ARM等处理器)在线调试器的功能特性,组成结构和工作原理等。以调研结果为参考,本文结合UniCore-3处理器的功能特性,在基本功能、接口协议、功能扩展和多核支持等方面分析了UniCore-3处理器的调试需求。根据需求分析的结果,本文拟定了基于中断例外的调试机制,划分了软硬件功能并形成了设计规范。 其次,在设计规范的基础上,本文详细阐述了调试相关模块,包括指令断点单元、数据断点单元和片上调试器的设计和验证工作。本文从功能特性、接口时序和逻辑设计等方面对相应模块的设计和实现工作进行了详细说明。同时,本文采用了模块级验证和系统级汇编验证的方法对相应模块进行了功能验证。其中,共编写Verilog HDL代码5539行,发现并更正19处bug。 最后,本文详细阐述了调试软件的设计和实现工作。本文从功能设计和结构设计等方面对调试软件的设计工作进行了阐述。以核心功能:远程加载被调程序、调试信息打印、断点调试和多核支持为例,本文对调试软件的具体实现工作进行了详细的说明。其中,共编写设计代码5624行。