掌桥专利:专业的专利平台
掌桥专利
首页

一种基于多核系统的芯片调试结构

文献发布时间:2024-04-18 19:59:31


一种基于多核系统的芯片调试结构

技术领域

本发明涉及芯片调试技术领域,特别涉及一种基于多核系统的芯片调试结构。

背景技术

随着集成电路设计技术和制造工艺的不断发展,芯片功能变得越来越强、架构也越来越复杂,传统的单核SoC(片上系统)架构已经无法满足日益增长的性能需求,多核SoC技术应运而生。多核系统的出现导致芯片调试变得异常困难,给传统的芯片调试方法带来了巨大的挑战。可调试性设计已经成为验证芯片设计正确性的一个非常重要的内容,如何设计并实现一个可控制性高、调试速度快、错误定位准确、低硬件开销的调试结构已经成为一个重大的研究课题。

发明内容

本发明的目的在于提供一种基于多核系统的芯片调试结构,为提高多核系统整个调试结构的可控制性和可观察性,该结构控制整个芯片启动运行,并使用扫描链技术,实现寄存器读写、存储器读写、状态监测等调试功能。该调试结构能够在低硬件开销的情况下,极大提高多核复杂调试结构的可控制性和可观察性,使得其能对错误现象进行快速定位,大大提升调试效率。

为解决上述技术问题,本发明提供了一种基于多核系统的芯片调试结构,在芯片内部集成设置一个调试控制单元来实现芯片调试功能;

所述调试控制单元内部包括:

状态机模块,主要负责芯片的复位初始化和整个数据处理流程,以及在该状态机模块中增加了调试状态;

JTAG接口收发模块,用于接收外部调试系统的JTAG信号,按照定义好的协议格式,将其通过串并转换成内部调试信号发给请求/响应处理模块,然后负责接收调试操作完成后返回的调试响应,并将其转换成JTAG信号发往芯片外部的调试系统;

请求/响应处理模块,接收JTAG接口收发模块发来的命令和数据,再根据调试接口协议将其转换成的调试命令和数据,发送至请求/响应分发模块,同时接收来自请求/响应分发模块返回的调试结果;

请求/响应分发模块,根据预先规划好的编码空间将从请求/响应处理模块来的调试请求和数据分发到内部网络节点接收模块、寄存器模块、Bist总控模块、Sacn总控模块或内部总线模块,并同时接收对应的响应;

内部网络节点接收模块,与Mesh网相连,用于接收核心发来的IO访问,发回的IO响应和发送调试Mem读写请求,接收Mem响应;

寄存器模块,包含多种配置寄存器、状态寄存器、使能寄存器、控制寄存器以及多种登记错误的寄存器组成,通过各种功能的寄存器,对该多核芯片进行控制以及对运行状态处理信息进行监测,以及通过设置断点寄存器,使该多核芯片支持断点调试;

内部总线模块,与片外I2C/UART/GPIO/SPI/LPC各种外设设备相连;

调试专网接收模块,与芯片调试专网相连,用于发送读写IO、BIST和SCAN请求,以及回收对应的响应;

Bist总控模块,负责对芯片内存储器阵列的BIST测试;

Sacn总控模块,负责对芯片内部扫描和状态监测。

优选的,所述调试控制单元还包括如下外部接口:

片外调试接口,通过标准JTAG调试接口,外部调试系统通过调试命令实现对该多核芯片的调试操作;

调试专网接口,整个芯片通过Mesh网进行片上互连,包含若干网络节点;

内部网络节点接口,作为整个芯片接入Mesh网的统一接口;

中断处理模块接口,作为芯片内部中断处理的根节点,主要负责接收各种中断请求并发送到目标核心,同时管理与中断相关的寄存器;

出片引脚,包括调试控制、芯片模式、启动配置、输出观测相关的引脚,以及LPC、UART、I2C、GPIO、SPI低速IO引脚;

芯片配置、观测引脚,包括和各个网络节点的上电复位、冷复位、启动控制和在位信息,调试控制单元负责向各部件输出配置、控制信息以及负责回收各部件上报的状态和报错信息。

优选的,所述状态机模块控制整个芯片的上电复位、冷复位、配置参数加载、内部存储器自测试、初始化程序加载、启动运行、睡眠唤醒、核心断连、运行状态监测;同时在调试状态下,核心暂停运行,此时调试人员能够通过调试接口发送调试命令,调试操作完成后,返回相应的调试响应,并通过JTAG调试接口送至外部调试平台,以供设计人员分析和定位错误。

优选的,调试命令和调试响应的传输方式类似,采用包格式,以字节为基本单位,根据具体的调试命令包和调试响应包类型,包含若干字节。

优选的,每个网络节点对应一个二级调试节点,网络节点编号与二级调试节点编号一致;串行调试网络总控由调试控制单元负责,通过调试专网连接片上所有模块,负责完成SCAN扫出、SCAN扫入、外部其它节点IO读写、BIST测试调试功能。

优选的,所述内部网络节点接收模块包含内部网络节点接口逻辑,其实现2个高带宽异步接口,包头通道与数据通道分开,写完成和读完成具有独立的虚通道;所述内部网络节点接收模块中定义了上行和下行两个方向的消息包,分别为:上行方向:IO读写响应、调试系统发起的存储器读写请求;下行方向:核心发起的IO读写请求、存储器读写响应。

优选的,所述调试控制单元接收来自JTAG调试接口发来的调试命令,根据调试命令的不同,会通过内部网络节点接口访问内部网络节点中核心的内部寄存器以及内部存储器的值,实现对内部核心运行情况的观测,或者会通过调试专网接收模块访问芯片的调试专网,通过调试专网完成对外部其它网络节点IO的读写或进行BIST和SCAN调试操作。

本发明与现有技术相比,具有如下有益效果:

1、通过状态机模块和寄存器模块中设置的控制寄存器,使其能够控制整个芯片的工作流程,这大大提高整个可调试性结构的可控制性。

2、通过对芯片的各类存储器进行地址编码以及寄存器模块中各种状态寄存器和配置寄存器,使其能够对调试想要观测的信号以及整个芯片的运行状态进行监测,这大大提高整个可调试性结构的可观察性。

3、该调试方法对系统具有低侵入性,在不占用芯片内部的通信接口的前提下,能对芯片系统运行的整个调试流程进行控制,并与可测试性设计共用扫描链逻辑,这大大提升内部电路的可观察性,使得调试效率大幅提升的同时,硬件资源占用很少,进一步缩小调试成本。

附图说明

图1为本发明实施例中片内调试控制单元的外部连接示意图。

图2为本发明实施例中片内调试控制单元的内部结构示意图。

图3为本发明实施例中调试专网连接示意图。

图4为本发明实施例中多核芯片的控制状态机示意图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。

采用JTAG技术,可能以较小的开销获得方便的测试和调试功能,所以该调试结构支持标准JTAG接口,除实现测试功能外(包括边界扫描测试和内部扫描测试),也支持基于该接口,通过调试命令实现对芯片的调试操作,并通过设置断点、状态机设计、扫描链以及寄存器模块中设置多种控制寄存器、配置寄存器和状态寄存器等技术来提高多核系统调试结构的可控制性和可观察性。因为JTAG技术能够以较小的开销获得方便的测试和调试功能,所以该调试结构支持标准JTAG接口,除实现测试功能外(包括边界扫描测试和内部扫描测试),也支持基于该接口,通过调试命令实现对芯片的调试操作,具体包括:1)内部寄存器读写;2)存储器读写;3)内部扫描链寄存器读写;4)状态监测;5)针对核心的调试中断,并在此基础上实现的更多调试功能。同时为提高该调试结构的可控制性和可观察性,通过以下方法来实现:1)在调试控制单元中的寄存器模块中设置硬件断点寄存器,使该调试结构支持断点调试,这会大大提高调试结构的可控制性,提升调试效率。2)在调试控制单元中加入状态机模块,该状态机控制整个芯片的上电复位、冷复位、配置参数加载、内部存储器自测试、初始化程序加载、启动运行、睡眠唤醒、核心断连、运行状态监测等,并对设计中状态机进行改进,增加调试状态,在该状态下,核心暂停运行,这时调试人员可以通过调试接口发送调试命令,调试操作完成后,返回相应的调试响应,并通过JTAG接口送至外部调试平台,以供设计人员分析和定位错误。

通过在芯片内部集成设置一个调试控制单元来实现芯片调试功能,因为调试控制单元主要负责整个芯片的上电复位、冷复位、配置参数加载、内部存储器自测试、初始化程序加载、启动运行、睡眠唤醒、核心断连、运行状态监测等调试功能,所以调试控制单元和片内所有主要模块都有接口。如图1所示,给出了调试控制单元的主要外部接口及与其它模块的连接关系。以下对这些接口做简单分类描述:

片外调试接口:该接口示意对于图1中的虚框①,通过标准JTAG调试接口,外部调试系统可通过调试命令实现对该多核芯片的调试操作。调试命令和调试响应的传输方式类似,采用包格式,以字节为基本单位,根据具体的调试命令包和调试响应包类型,包含若干字节。

调试专网接口:该接口示意对于图1中的虚框②,因为整个芯片通过Mesh网进行片上互连,包含了很多的网络节点。如图3所示,每个网络节点对应一个二级调试节点,网络节点编号与二级调试节点编号一致。串行调试网络总控由调试控制单元负责,通过如图3所示的调试专网连接片上所有模块,负责完成SCAN扫出、SCAN扫入、外部其它节点IO读写、BIST测试等调试功能,这大大提高了调试的可观察性。

内部网络节点接口:该接口示意对于图1中的虚框③,是整个芯片接入Mesh网的统一接口。因为该接口所连接的设备控制器大部分频率与Mesh网络频率不同,统一考虑,该接口都按照异步接口方式设计,实现2个高带宽异步接口,并定义好该接口与所连接的各个设备可能收到和发出的消息包类型与格式。

中断处理模块接口:该接口示意对于图1中的虚框④,中断处理模块是芯片内部中断处理的根节点,主要负责接收各种中断请求并发送到目标核心,同时管理与中断相关的寄存器。

出片引脚:包括一些调试控制、芯片模式、启动配置、输出观测等相关的引脚,以及LPC、UART、I2C、GPIO、SPI等低速IO引脚。

芯片配置、观测引脚:包括和各个网络节点的上电复位、冷复位、启动控制、在位信息等,调试控制单元负责向各部件输出配置、控制信息以及负责回收各部件上报的状态和报错信息。

了解完调试控制单元的外部接口,我们接下来介绍调试控制单元的内部结构。如图2所示,该调试控制单元内部由状态机模块、JTAG接口收发模块、请求/响应处理模块,请求/响应分发模块,内部网络节点接收模块,寄存器模块、内部总线模块、调试专网接收模块和Bist总控模块和Sacn总控模块组成。

所述JTAG接口收发模块用于接收外部调试系统的JTAG信号,按照定义好的协议格式,将其通过串并转换成内部调试信号发给请求/响应处理模块,然后负责接收调试操作完成后返回的调试响应,并将其转换成JTAG信号发往芯片外部的调试系统。

所述请求/响应处理模块接收JTAG接口收发模块发来的命令和数据,再根据调试接口协议将其转换成的调试命令和数据,发送至请求/响应分发模块,同时接收来自请求/响应分发模块返回的调试结果。

所诉请求/响应分发模块根据预先规划好的编码空间将从请求/响应处理模块来的调试请求和数据分发到内部网络节点接收模块,寄存器模块,Bist/Scan控制模块或内部总线模块,并同时接收对应的响应。

所述寄存器模块内部包含多种配置寄存器、状态寄存器、使能寄存器、控制寄存器以及多种登记错误的寄存器等组成,通过各种功能的寄存器,对该多核芯片进行控制以及对运行状态等处理信息进行监测,以及通过设置断点寄存器,使该多核芯片支持断点调试。

所述内部网络节点接收模块是与Mesh网相连,用于接收核心发来的IO访问,发回的IO响应和发送调试Mem读写请求,接收Mem响应,该模块包含了上文介绍过的内部网络节点接口逻辑,其实现2个高带宽异步接口,包头通道与数据通道分开,写完成和读完成具有独立的虚通道。该模块中定义了上行和下行两个方向的消息包,分别是:

下行方向:IO读写请求(核心发起)、存储器读写响应;

上行方向:IO读写响应、存储器读写请求(调试系统发起)。

所述调试专网接收模块是与芯片调试专网相连的,用于发送读写IO、BIST和SCAN请求,以及回收对应的响应。如图3所示,整个调试专网是通过Mesh网进行片上互连,共有32个Mesh网节点,串行调试网络总控由整个调试控制单元负责,通过调试二级代理连接片上所有模块。该调试专网负责完成SCAN读出、SCAN扫入、IO读、IO写以及BIST测试等调试功能。

所诉内部总线模块是与片外各种外设相连,因为所连接外设的IO读写接口和DMA读写接口都是AMBA接口,该模块用于实现AHB Master接口协议和内部协议的相互转换,从而实现对片外I2C/UART/GPIO/SPI/LPC等设备的控制。

所述Bist总控模块负责对芯片内存储器阵列的BIST测试,作为BIST的控制部件。

所述Scan总控模块负责对芯片内部扫描和状态监测,作为SCAN的控制部件。

所述状态机模块主要是芯片的复位初始化和整个数据处理流程,包括芯片所有功能模块的复位、存储器的自测试、芯片的启动运行等。为了加强在芯片调试过程中的可控制性,我们对设计的控制状态机进行了改进,增加了调试状态。如图4所示,下面是对状态机模块各个状态的介绍:

上电复位状态:若引脚DOCK_H为“0”,则无条件处于此状态。此状态下,若DCOK_H变为“1”,则转向“冷复位”状态;

冷复位状态:若引脚RESET_L为“1”,则转向“配置1”状态。

配置1状态:设置参数配置寄存器内容,配置完成后,转向“PLL升频”状态,若引脚RESET_L为“0”,则转入“冷复位”状态。

PLL升频状态:如果参数配置寄存器设置成PLL旁路模式,则直接转入时钟切换1状态;否则通过计数器计数方式等待PLL升频稳定,计数器溢出再转入“时钟切换1”状态;若引脚RESET_L为“0”,则转入“冷复位”状态。

时钟切换1状态:按顺序进行工作时钟的高低频切换,完成频率切换后,转向“结束复位”状态。

结束复位状态:结束芯片的复位,等待一段时间后,转向“配置2”状态;若收到复位命令则转入“进入复位”状态。

配置2状态:主要用于存储器自测试相关参数寄存器的配置,配置完成后,转向“存储器自测试”状态;如果收到复位命令则转入“进入复位”状态。

存储器自测试状态:对内部存储器进行自测试,存储器自测试结束转向配置3状态;如果等待指定时间尚未收到存储器自测试结束标志,则作为超时而转向配置3状态。

初始化加载状态:主要用于对芯片要处理的原始数据和运行参数进行加载,外部调试平台可以通过调试接口,设置断点控制寄存器和硬件断点寄存器。完成配置后,如果收到启动运行命令则转入“启动运行”状态;如果收到复位命令则转入“进入复位”状态。

运行状态:芯片开始对数据进行处理,若硬件断点匹配则转入“调试”状态;如果收到运行完成命令转入“初始化加载”状态;如果收到复位命令则转入“进入复位”状态。

调试状态:该状态下,同步FIFO不再往初始结果运算器中写入数据,芯片暂停处理数据,这时设计人员可以通过调试接口发送调试命令,调试操作完成后,返回相应的调试响应,并通过JTAG接口和自定义接口送至外部调试平台,以供设计人员分析和定位错误。如果收到继续执行命令,则转入“运行”状态;如果收到复位命令则转入“进入复位”状态。

进入复位状态:该状态下,芯片中所有功能部件都进入复位状态,等待复位结束后,转向“时钟切换2”状态;

时钟切换2状态:按顺序进行各模块的高低频工作时钟切换,然后转向“冷复位”状态。

简单概括来说,所述调试控制单元接收来自JTAG接口发来的调试命令,根据调试命令的不同,会通过内部网络节点接口访问内部网络节点中核心的内部寄存器以及内部存储器的值,实现对内部核心运行情况的观测,或者会通过调试专网接收模块访问芯片的调试专网,通过调试专网完成对外部其它网络节点IO的读写或进行BIST和SCAN调试操作,通过上述操作可以大大提高调试过程中的可观察性。

为了提高对芯片运行状态的可控制性,通过在寄存器模块中设置断点寄存器可以方便地控制芯片暂停在预先设定好的数据上。当需要调试某些特定数据时,先设置断点的匹配条件,当满足断点条件时,核心停止运行,这样我们就可以对该特定数据进行跟踪和调试。同时通过对原有状态机进行改进,增加调试状态,在该状态下核心停止运行,并在调试状态下通过寄存器模块登记芯片的运行状态和相关信息,利用状态机和设置断点寄存器能够很好大大提高该芯片调试的可控制性。

上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

技术分类

06120116522359