用于调试任何片上系统状态、功率模式、重置、时钟和复杂数字逻辑的基于异步可编程 ...的利记博彩app
【专利摘要】公开了异步调试接口,其允许JTAG代理、基于JTAG的调试器、固件和软件调试、访问和覆盖正在被测试的核心逻辑的任何功能寄存器、中断寄存器、功率/时钟选通使能等等。所述异步调试接口在宽范围的时钟频率下工作,并且允许读事务和写事务在不切换到调试或测试模式的情况下在侧通道上以及片上处理器结构内发生。所述异步调试接口使用双线和四线JTAG控制器配置工作,并且符合诸如1149.1、1149.7等等IEEE标准,并且提供调试复杂的片上系统状态和片上产品的有效和无缝的方式。
【专利说明】用于调试任何片上系统状态、功率模式、重置、时钟和复杂数字逻辑的基于异步可编程JTAG的接口
【技术领域】
[0001 ] 本申请涉及在1149标准下的测试设备体系结构。
【背景技术】
[0002]联合测试行动组(JTAG)是稍后被标准化为IEEE 1149.1“Standard Test AccessPort and Boundary-Scan Architecture”的内容的通用名称,其中IEEE是电气与电子工程师学会的简称。IEEE 1149.7标准是IEEE 1149.1的补充标准,增加了额外的功能。JTAG最初被设计用于使用边界扫描来测试印刷电路板并且仍然广泛用于这一应用。
[0003]IEEE 1149的“边界扫描体系结构”使用用于设置并读取管脚上的值的5管脚串行协议而不直接访问核心逻辑。被称为边界扫描寄存器(BSG)的串行扫描路径拦截位于核心逻辑和管脚之间的信号。当系统不在测试模式中时,边界扫描寄存器将核心逻辑的信号透明地连接到管脚。在测试模式中,BSR可以用于设置和/或读取值。在外部模式中,被设置或读取的值将是也被称为“管脚”的I/O焊盘的值。在内部模式中,被设置或读取的值将是核心逻辑的值。
[0004]BSR是移位寄存器,其形成位于核心逻辑周围的路径。正在被测试的系统的核心逻辑的信号管脚连接到构成BSR的单元,这些单元围绕核心逻辑(边界)。移位寄存器连接到测试设备的输入和出口,允许将测试向量发送到BSR,因而测试核心逻辑。
[0005]尽管这一标准化方案,但是由于在测系统处于“测试”模式中,一些实时情形没有使用边界扫描体系结构被测试。
[0006]因而,存在对于一种克服现有技术的缺点的用于执行核心逻辑的实时测试的机制的持续需要。
【专利附图】
【附图说明】
[0007]通过参照结合附图的下面详细描述,本文档的前述方面和许多伴随的优点将变得更好理解,因此将变得更容易被认识到,其中相似的附图标记在各种视图中始终表示相似的部件,除非以其它方式规定。
[0008]图1是根据一些实施例的异步调试接口的简化方框图;
[0009]图2是根据一些实施例包括图1的核心逻辑和TAP控制器的在IEEEl 149下的边界扫描体系结构的简化方框图;
[0010]图3是根据一些实施例对于构成图1的核心逻辑的不同芯片复制的图2的边界扫描体系结构的方框图;
[0011 ] 图4是根据一些实施例由图1的异步调试接口的TAP控制器使用的状态机;
[0012]图5是根据一些实施例的图1的异步调试接口的读接口的示意图;
[0013]图6是根据一些实施例的图1的异步调试接口的写接口的示意图;
[0014]图7是表示根据一些实施例图1的异步调试接口的读接口和写接口与优先级仲裁器之间的连接的示意性方框图;
[0015]图8是根据一些实施例由图1的异步调试接口使用的优先级仲裁器的示意图;
[0016]图9是根据一些实施例在图1的异步调试接口中由软件使用来管理TAP控制器中的空闲状态的查找表;以及
[0017]图10是根据一些实施例由图1的异步调试接口执行的写操作的流程图。
【具体实施方式】
[0018]根据本文描述的实施例,公开了异步调试接口,其允许JTAG代理、基于JTAG的调试器、固件和软件调试、访问和覆盖正在被测试的核心逻辑的任何功能寄存器、中断寄存器、功率/时钟选通使能等等。异步调试接口在宽范围的时钟频率下工作,并且允许读事务和写事务发生在侧通道上以及片上处理器结构内而不必切换到调试或测试模式中。异步调试接口使用双线和四线JTAG控制器配置进行工作,并且符合IEEE标准,例如1149.1、1149.7等等,并且提供调试复杂的片上系统状态和片上系统广品的有效和无缝的方式。
[0019]在下面的详细描述中,参照通过说明的方式示出可以在其中实践本文描述的主题的具体实施例的附图。然而,应该理解,本领域中的普通技术人员在阅读本公开时,其它实施例将变得明显。下面的详细描述因此不应该在限制的意义上被解释,因为主题的范围由权利要求限定。
[0020]根据一些实施例,图1中描绘了异步调试接口 100的简化方框图。异步调试接口100由读接口 200、写接口 300、优先级仲裁器400和智能单元350组成。异步调试接口 100在核心逻辑500上按照两种方式实时地操作:1)经过到核心逻辑的侧通道连接260,以及2)通过经过JTAG接口 250利用JTAG调试器250和TAP控制器600。异步调试接口 100因而被嵌入在JTAG网络中(例如JTAG调试器250和一个或多个TAP控制器600)中。
[0021]如在本文使用的,当正在被测试的核心逻辑500在其正常状态中操作时,即,在其操作中没有任何中断时,异步调试接口 100被认为实时地运行。因而,异步调试接口 100在不改变在核心逻辑500内操作的任何时钟的速度的情况下并且在不改变由核心逻辑接收的功率的情况下进行操作,。关于最后一点,当异步调试接口 100正在核心逻辑上实时地运行测试时,核心逻辑500未被置于低功率操作状态中。
[0022]JTAG调试器250和TAP或测试访问端口、控制器600被设计为在包括但不局限于IEEE 1149.1和IEEE 1149.7 (在本文被称为JTAG标准)的IEEE 1149标准下进行操作。尽管JTAG调试器250能够在核心逻辑500处于测试模式中时在该核心逻辑上执行测试,但是异步调试接口 100在核心逻辑500上实时地进行操作。异步调试接口 100因而利用JTAG调试器250和TAP控制器600的能力,但是包括没有由JTAG调试器250提供的额外的能力,以便在不干扰核心逻辑500的正常操作的情况下便于执行实时测试。
[0023]异步调试接口 100的读接口 200和写接口 300处理位于TAP控制器600和核心逻辑500之间的协议。核心逻辑500至少包括主机CPU 220。在图1的简化表示中,核心逻辑500包括主机CPU 220和通过开放核心协议(OCP)总线230耦合到主机的一个或多个额外的CPU 240。为了简单起见,核心逻辑500中的其它电路未在图1中重点介绍,但是核心逻辑可以包括额外的功能,包括但不局限于联网能力、图形和视频能力、易失性和非易失性存储介质以及外围设备电路。优先级仲裁器400解决在JTAG调试器250和主机CPU 220或核心逻辑500的其它CPU 240之间的冲突,当这二者同时试图访问OCP总线230时。
[0024]智能单元350可以由硬件逻辑和/或由处理器(未示出)执行的软件程序构成。在一些实施例中,智能单元350包括结合JTAG调试器250使用来测试核心逻辑500的测试套件450和查找表550。
[0025]在一些实施例中,如下所述,智能单元350包括被发送到JTAG调试器250的查找表550。查找表550使JTAG调试器250能够获得TAP控制器600在等待来自优先级仲裁器400的总线访问许可时需要处于空闲状态中的时钟周期的数量。在一些实施例中,查找表550中的值由在确定空闲状态时钟周期时采用TAP控制器600和核心逻辑500的相对时钟速率的新颖公式确定。
[0026]常规调试方法是将也被称为在测系统的正在被测试的系统置于特定的测试或调试模式中,固定频率下的单个时钟用于在测系统和测试逻辑二者。在图1中,例如,核心逻辑500是在测系统。在常规调试下,核心逻辑500因而在其功能模式和测试模式之间进行切换,在其功能模式中,核心逻辑如所设计的进行操作,而在测试模式中,调试操作被执行。对于这一常规方案存在许多缺点,其中之一是,在测试模式中操作的核心逻辑没有忠实地实时代表核心逻辑的操作。
[0027]相反,异步调试接口 100具有在不将核心逻辑500置于测试模式中的情况下调试或覆盖任何片上系统状态或特征的能力。使用这一接口,不需要减慢用于访问核心逻辑500内的任何功能逻辑的该核心逻辑的锁相环时钟。异步调试接口 100在宽范围的JTAG以及功能时钟频率下工作,并且使用唯一的握手机制和异步协议来在功能域和测试时钟域之间传输数据。异步调试接口 100因而提供在不需要昂贵的片上逻辑分析器的情况下实时地调试功能逻辑的强大的机制。
[0028]在进一步描述异步调试接口之前,对在IEEE 1149下的边界扫描体系结构的介绍是适当的。图2示出了根据一些实施例符合1149的系统700的简化示意图。(图1的JTAG调试器250是符合1149的系统的示例。)围绕核心逻辑500的是形成边界扫描寄存器(BSR)的多个边界扫描单元760A-760J(共同地,“边界扫描单元760”)、相对应的I/O焊盘770A-770J加上接收测试数据输入(TDI)的输入的I/O焊盘770K、指令寄存器710和指令解码器740、旁路寄存器720、ID寄存器730、一个或多个设计专用外部测试数据寄存器750以及测试访问端口控制器或者首先在图1中介绍的TAP控制器600。TDI输入经过I/O焊盘770K被馈送到第一边界扫描单元760A,经过每一个随后的边界扫描单元760B、760C...760J被传递到测试数据输出(TDO)输出。
[0029]因为仅存在单个数据输入(TDI),因此图2的边界扫描体系结构是串行的。符合1149的系统700使用测试时钟信号(TCK)来为数据输入、测试模式状态信号(TMS)和可选的测试重置信号(TRST)以及TDI和TDO信号计时。TAP控制器600是状态机,转换由TMS信号进行控制。TAP控制器600的状态机能够完成重置操作,访问指令寄存器并且访问由指令寄存器选择的数据。对于每一个TCK脉冲,数据的一个比特被传输到TDI输入中并且被传输离开TDO输出。
[0030]在核心逻辑500的正常操作期间,边界扫描单元760是不可见的。系统700可以处于两种测试模式,外部测试模式和内部测试模式,之一中。在外部测试模式中,边界扫描单元760用于设置并读取I/O焊盘770的值。在内部测试模式中,边界扫描单元760用于设置并读取核心逻辑500的值。
[0031]JTAG标准想象至少两个测试数据寄存器,围绕核心逻辑500的边界扫描寄存器760和旁路寄存器720。此外,可以包括设计专用测试数据寄存器以便实现设计专用测试。这些设计专用测试数据寄存器可以是公共可访问的,但是不要求是这样的。在一些实施例中,每当异步调试接口 100将被使用时,测试套件450使用用户定义的(定制)指令对指令寄存器710进行编程。
[0032]TAP控制器600可以由单个TAP控制器或彼此串联布置的多个TAP控制器组成。图3例如以具有N个单独的TAP控制器的TAP控制器600为特征。这些单独的TAP控制器中的每一个可以连接到核心逻辑500内部的不同电路(500A、500B…500N)。为了简单起见,在本文被称为“TAP控制器600”的控制器可以由单个TAP控制器或多个TAP控制器组成。
[0033]返回到图2,符合1149的系统700的几个寄存器被显示为并联连接在公共串行输入(TDI)和公共串行输出(TDO)之间的基于移位寄存器的元件的集合。指令寄存器710控制哪一个寄存器,边界扫描寄存器760、设备ID寄存器730、设计专用测试数据寄存器750之一或旁路寄存器720,在给定的时间形成位于TDI和TDO之间的串联路径。复用器790控制在TDI和TDO之间的串联路径,尽管可以替代地使用其它设备来控制串行输出。
[0034]当没有选择其它测试数据寄存器中的任意一个时,旁路寄存器720经过该电路提供单比特串联连接。因为可能存在几个TAP控制器600,每一个TAP控制器串联连接到不同的测试电路(图3),旁路寄存器720允许测试数据在不影响其它部件的正常操作的情况下经过设备流到该其它部件。因而,在其中电路500A未被测试但是电路500B被测试的图3中,旁路寄存器720将与第一电路一起使用,使得测试数据本质上完全绕过第一电路,并且继续到第二测试电路。边界扫描寄存器760允许板互连的测试并且检测诸如开路和短路的生产缺陷。边界扫描寄存器760还允许在测试它们的系统逻辑或流经系统输入和输出的信号的采样时访问部件的输入和输出。设备识别寄存器730是允许确定制造商、零件号和部件的变体的可选的测试数据寄存器。
[0035]图2还示出了设计专用测试数据寄存器750。在1149.1和1149.7下可选的这些寄存器中的一个或多个允许访问诸如自测试、扫描路径等等的设计专用测试支持特征。它们可以是公共可用的或完全私有的,仅由例如接下来的安全认证可访问。
[0036]当指令寄存器710指示用户定义的指令时,设计专用测试数据寄存器被激活。在一些实施例中,异步调试接口 100与这些外部测试数据寄存器750通过接口进行连接。再次,基于设计要求,用户定义的指令可以是公共的或私有的。
[0037]例如,如上所述,用户定义的指令可以被发送到指令寄存器710 (通过测试套件450中的程序之一),使得通过第一外部测试数据寄存器750的方式在串行输入(TDI)和输出(TDO)之间创建路径。在下文中,执行系统调试所需的数据和控制可以经过外部测试数据寄存器750被移位。异步调试接口 100读取外部测试数据寄存器750的内容,并且执行核心逻辑500的系统调试。因而,使用用户定义的(定制)指令的指令寄存器710的编程触发异步调试接口 100以便执行核心逻辑500的实时测试。
[0038]在一些实施例中,通过异步调试接口 100获得的调试结果可以在TAP控制器600处于“捕获DR”状态中时被装入测试数据寄存器750中,并且可以在“移位DR”状态期间被移位到输出(TDO)上。图4示出了根据一些实施例的TAP控制器600的状态图。状态机的最右边部分与指令寄存器710 (IR)有关。状态机600的这一右侧因而用于配置一个或多个TAP控制器600,以便通过选择设计专用测试数据寄存器750通过指令寄存器710的方式来执行某一任务。通过为指令寄存器710装入用户定义的指令,外部测试数据寄存器750之一被激活,并且从异步调试接口 100的智能单元350接收指令,其中该指令可以由测试套件450组成。
[0039]JTAG调试器250因而本质上将异步调试接口 100的测试套件450转换为经过测试数据输入(TDI)和TMS JTAG端口发送的串行测试向量。每当要执行实时读或实时写操作时,该测试套件450将用户定义的定制指令编程到TAP控制器600。这或者激活读接口 200或者激活写接口 300,并且允许读取和写入经过侧通道260发生。读操作和写操作可以例如包括覆盖核心逻辑500内的功能寄存器,打开核心逻辑内的调制解调器,关闭到核心逻辑中的音频块的功率,等等。
[0040]异步调试接口 100的读接口 200和写接口 300处理TAP控制器600和核心逻辑500之间的协议。此外,可编程优先级仲裁器400被设计为解决TAP控制器600和核心逻辑500内的CPU之间的冲突。
[0041]图5是根据一些实施例的异步调试接口 100的读接口 200的示意图。在智能单元350实时地执行寄存器、存储器单元或核心逻辑500的I/O管脚的读操作的情况下,使用读接口 200。读接口 200使用由TAP控制器600使用的相同测试时钟TCK。在发生读取和写入之间的冲突的情况下,优先级仲裁器400解决它们。
[0042]图5中的读接口 200的简化图将电路分为TCK域(左侧)和功能时钟域(右侧),TCK是由JTAG逻辑(JTAG调试器250和TAP控制器600)使用的时钟,并且功能时钟是核心逻辑500的操作时钟。读接口 200包括五个D触发器20A-20E和二到一复用器(MUX) 60A和60B。最初,优先级仲裁器400确保OCP总线230在发出在图5中被表示为read_grant的读许可之前不被使用。
[0043]JTAG读选择寄存器JTAG_read_sel_reg控制MUX 60B的选择线,MUX60B经过该MUX将“常高”输入(l’bl)馈送到MUX 60A。当用户定义的指令被发送到JTAG调试器250的指令寄存器710时,JTAG_read_sel_reg被置位。MUX 60A由来自D触发器20A的输出控制。同时,离开功能时钟域,读许可被馈送到D触发器20B中,通过D触发器20A被计时(使用测试时钟,TCK),D触发器20A控制MUX 60A。
[0044]因为MUX 60A具有常低输入(Γ b0),D触发器20C的输入仅在JTAG_read_sel_reg被激活并且read_grant由优先级仲裁器400发出之后才被馈送到Q输出。这产生read_select信号,其经过两个额外的D触发器20D和20E由功能时钟(例如核心逻辑500的功能时钟)计时。读接口 200的操作因而完成。
[0045]图6是根据一些实施例的异步调试接口 100的写接口 300的示意图。在智能单元350正在执行寄存器、存储器单元或核心逻辑500的I/O管脚的实时写操作时,使用写接口300。
[0046]如同读接口 200 —样,图6中的写接口 300的简化图将电路分为TCK域(左侧)和功能时钟域(右侧)。写接口 200包括五个D触发器40A-40E和二到一复用器(MUX) 70A和70B。最初,优先级仲裁器400确保OCP总线230在发出在图6中被表示为write_grant的写许可之前不被使用。
[0047]JTAG写选择寄存器JTAG_write_sel_reg控制MUX 70B的选择线,MUX 70B将“常高”输入(Γ bl)馈送到MUX 70A。当用户定义的指令被发送到JTAG调试器250的指令寄存器710时,JTAG_write_sel_reg被置位。MUX 70A由来自D触发器40A的输出控制。同时,离开功能时钟域,写许可被馈送到D触发器40B,通过D触发器40A被计时(使用测试时钟,TCK),D触发器40A控制MUX 70A。
[0048]因为MUX 70A具有常低输入(Γ b0),D触发器40C的输入仅在JTAG_write_Sel_reg被激活并且write_grant由优先级仲裁器400发出之后才被馈送到Q输出。这产生write_select信号,其经过两个额外的D触发器40D和40E由功能时钟(例如核心逻辑500的功能时钟)计时。写接口 300的操作因而完成。
[0049]图7是表示在接收到read_select或write_select信号之后优先级仲裁器400如何生成read_grant或write_grant信号的简化图。根据一些实施例,在图8中说明了优先级仲裁器400。
[0050]在核心逻辑500和异步调试接口 100的智能单元350分别请求地址/数据总线(例如作为核心逻辑500的一部分的OCP总线230)的使用的情况下,优先级仲裁器400解决冲突。在图8中,优先级仲裁器400由两个D触发器80A、80B、两个与门90A、90B和反相器92组成。D触发器80A、80B 二者由功能(核心逻辑)时钟控制。
[0051]每当实时读操作或实时写操作要由异步调试接口 100执行时,智能单元350请求访问核心逻辑500的OCP总线230。当请求经过D触发器80A被计时时,Q结果与D输入相同,并且因而经过与门90A被馈送,与门90A接着由反相器92反转。与门的另一输入来自对于来自核心逻辑500的总线访问的请求。
[0052]同时,核心逻辑500也可以请求对OCP总线230的访问,如在电路图的下部分中指示的。该请求经过D触发器80B由功能时钟计时,并且被馈送到与门90C中,与门90C的另一输入来自对于总线访问的JTAG代理请求(例如TAP控制器600或异步调试接口 100的智能单元350)。
[0053]回忆到图1,在一些实施例中,异步调试接口 100的智能单元350包括测试套件450和查找表550,它们二者都在核心逻辑500上执行测试时被装入JTAG调试器250中。测试套件450由JTAG调试器250或另一 JTAG代理执行并且与符合JTAG的TAP控制器600一起操作。基于从核心逻辑500接收的数据,异步调试接口 100从核心逻辑500的寄存器读取并且写入核心逻辑500的寄存器。
[0054]如它的名称表明的,异步调试接口 100异步地操作。JTAG调试器250和核心逻辑500使用不同的时钟进行操作。因而,在一些实施例中,异步调试接口 100使用查找表550来在这些读操作和写操作期间插入等待状态。
[0055]图9是根据一些实施例由异步调试接口 100使用的如在图1中介绍的查找表550。查找表550示出了在由TAP控制器600使用的测试时钟TCK和由核心逻辑500使用的功能时钟之间的许多可能频率组合的小的集合。查找表550还概述了 TAP控制器600在每一个读事务和写事务之间需要停留在空闲状态中以便允许主机CPU正确地处理侧通道260事务的额外的TCK时钟周期的数量。如本文使用的,侧通道事务指代异步调试接口 100和核心逻辑500中的主机CPU 220之间的任何事务,不涉及JTAG接口 270。主机CPU 220 一次通过OCP总线230与一个或多个额外的处理器(被表示为CPU 240)进行通信以便执行事务。
[0056]在一些实施例中,查找表550在计算TAP控制器空闲周期的数量时使用下面的公式:
[0057]N_idle_cycles = (TCK/clk)*MCF
[0058]其中TCK是TAP控制器600的时钟,elk是核心逻辑500的时钟,并且MCF是乘法时钟因子。在查找表550中,MCF为四。MCF是基于核心逻辑500的设计的常数。MCF可以取决于各种因素而改变,该各种因素例如是多TAP JTAG网络中的TAP控制器的数量、核心逻辑时钟的频率、侧通道260数据路径的时延以及其它操作条件和设计考虑因素。
[0059]假设核心逻辑500时钟elk在10MHz下操作。如在查找表550中指示的,测试时钟TCK可以在50MHz (蓝色)或在20MHz (黄色)下操作。在测试逻辑在50MHz (蓝色)下操作的情况下,TAP控制器600所需要的空闲周期的数量为:
[0060]N_idle_cylces = (TCK/clk) *MCF = 50/100*4 = 1/2*4 = 2
[0061]因而,当测试时钟在50MHz下操作并且核心逻辑时钟在10MHz下操作时,TAP控制器600将在每一个读事务和写事务之间的两个时钟周期内停留在空闲状态中。
[0062]在测试时钟在20MHz (黄色)下操作的情况下,TAP控制器600所需要的空闲周期的数量为:
[0063]N_idle_cylces = (TCK/clk) *MCF = 50/100*4 = 1/5*4 = 0.8
[0064]在这种情况下,0.8的值被四舍五入到I。因而,当测试时钟在20MHz下操作并且核心逻辑时钟在10MHz下操作时,TAP控制器600将在每一个读事务和写事务之间的单个时钟周期内停留在空闲状态中。
[0065]当在测试时钟TCK速率和核心逻辑elk速率之间存在明显差异时,空闲状态的数量明显升高。例如,在核心逻辑500在IMHz下操作并且TAP控制器600在50MHz (粉红)下操作的情况下,TAP控制器600所需要的空闲周期的数量为:
[0066]N_idle_cylces = (TCK/clk) *MCF = 50/1*4 = 50*4 = 200
[0067]因而,当测试时钟在20MHz下操作并且核心逻辑时钟在IMHz下操作时,TAP控制器600将在每一个读事务和写事务之间的两百个时钟周期内停留在空闲状态中。
[0068]替代地,在核心逻辑500在IMHz下操作并且TAP控制器600在20MHz (绿色)下操作的情况下,TAP控制器600所需要的空闲周期的数量为:
[0069]N_idle_cylces = (TCK/clk) *MCF = 20/1*4 = 20*4 = 80
[0070]因而,当测试时钟在20MHz下操作并且核心逻辑在IMHz下操作时,TAP控制器600将在每一个读事务和写事务之间的八十个时钟周期内停留在空闲状态中。
[0071]因为核心逻辑500可以在不同的时钟频率下操作,因此异步调试接口 100的智能单元350使用查找表550来确定多少空闲状态要插入在每一个读事务和每一个写事务之间。图4中所示的状态机允许通过将零发送到TAP控制器600来引入这些空闲状态。只要TAP控制器接收到零,状态机就将保持在运行-测试/空闲状态中。
[0072]图10是根据一些实施例表示多个写操作如何由异步调试接口 100执行的流程图。智能单元350将测试套件450和查找表550装入JTAG调试器250中(块102)。使用TAP控制器600、边界扫描寄存器760和JTAG接口 270,JTAG调试器250在核心逻辑500上的测试套件450上运行一个或多个测试。
[0073]回忆到JTAG调试器250在外部测试模式或者内部测试模式中进行操作,在外部测试模式中,边界扫描单元760用于设置并读取I/O焊盘770的值,而在内部测试模式中,边界扫描单元760用于设置并读取核心逻辑500的值。然而,在这种情况下,异步调试接口100实时地操作。因而,在测试套件450的执行期间,一定存在来自核心逻辑500的读操作或者到核心逻辑的写操作,这会导致在核心逻辑内部发生的操作的冲突。
[0074]例如,当将发生实时写操作(块106)时,智能单元350将用户定义的指令装入JTAG调试器250中(块108)。回忆到当用户定义的指令被发送到指令寄存器710时,这产生通过外部测试数据寄存器750之一的方式位于串行输入(TDI)和串行输出(TDO)之间的路径。因而,外部测试数据寄存器750被激活(块110)。基于JTAG指令寄存器710中的定制指令以及外部测试数据寄存器750的内容,异步调试接口 100的智能单元350得到写请求并且将它存储在寄存器JTAG_write_sel_reg中,其中这一寄存器驱动MUX 70B (图6)的选择线。类似地,在外部测试数据寄存器750包含读请求的情况下,异步调试接口 100的智能单元350得到读请求并且将它存储在寄存器JTAG_read_sel_reg中,其中这一寄存器驱动MUX 60B(图5)的选择线。
[0075]一旦外部测试数据寄存器750被激活,智能单元350就使用写接口 300来在寄存器、存储器单元或核心逻辑500的I/O端口上执行写操作(块112)。因为这实时地发生,因此优先级仲裁器400保持由智能单元350发起的写入,直到OCP总线可用为止(块114)。一旦OCP总线可用(块116),优先级仲裁器400就经过侧通道通路260将写操作释放到OCP总线(块118)。因为JTAG调试器250不考虑实时操作,因此,如上所述,智能单元350替代地使用写接口 300来执行到核心逻辑500的写操作。
[0076]在多个写操作被执行(块120)的情况下,智能单元350触发JTAG调试器250和TAP控制器300以便将空闲周期插入在接下来的写操作之间(块122)。因而,TAP控制器600保持在运行测试/空闲状态中(在如由查找表550确定的周期数量内),同时读/写操作经过侧通道260在核心逻辑500上执行。
[0077]因为JTAG调试器250和TAP控制器300使用测试时钟进行操作并且核心逻辑500使用功能时钟进行操作,因此空闲周期使测试套件450能够在不干扰核心逻辑的正常操作的情况下在该核心逻辑上执行操作,因而使异步调试接口 100能够获得较高质量的测试结果。换句话说,测试结果反映核心逻辑500的实时操作。
[0078]异步调试接口 100因而允许JTAG代理和固件或软件在没有对昂贵的片上探测逻辑的依赖性的情况下调试系统的功能逻辑,并且提供调试复杂的片上系统状态和基于片上系统的产品的有效和无缝的方式。
[0079]尽管关于有限数量的实施例描述了本申请,但是本领域中的技术人员将意识到根据其的许多修改和变形。意图是所附权利要求涵盖落在本发明的真实精神和范围内的所有这样的修改和变形。
【权利要求】
1.一种用于异步地调试核心逻辑的系统,所述核心逻辑包括中央处理单元、总线和功能块,所述系统包括: 智能单元,包括由符合联合测试行动组(符合JTAG)的调试器执行的测试程序,所述符合JTAG的调试器使用测试时钟与符合JTAG的测试访问端口(TAP)控制器一起操作,所述测试程序在所述核心逻辑上经过JTAG接口实时地运行; 读接口,用于经过侧通道从所述核心逻辑的寄存器、存储器单元或输入/输出(I/O)端口进行读取; 写接口,用于经过所述侧通道向所述核心逻辑的所述寄存器、所述存储器单元或所述I/O端口进行写入;以及 优先级仲裁器,用于在通过所述智能单元或所述核心逻辑内的电路到所述核心逻辑的所述总线的访问之间进行仲裁; 其中,使用所述JTAG接口通过所述测试程序将位于到所述核心逻辑的所述寄存器、所述存储器单元或所述I/O端口的接下来的写操作或者从所述核心逻辑的所述寄存器、所述存储器单元或所述I/O端口的接下来的读操作之间的空闲状态的预定数量发送到所述核心逻辑,其中,所述接下来的写操作或所述接下来的读操作经过所述侧通道发生。
2.如权利要求1所述的系统,其中,所述空闲状态的预定数量基于功能时钟频率和测试时钟频率。
3.如权利要求2所述的系统,其中,使用下面的公式计算所述空闲状态的预定数量: N_idle_cycles = (TCK/clk)*MCF 其中,TCK是所述测试时钟频率,elk是所述功能时钟频率,并且MCF是乘法因子。
4.如权利要求3所述的系统,其中,所述乘法因子基于TAP控制器的数量、所述功能时钟频率和位于所述核心逻辑与所述TAP控制器之间的数据路径的时延。
5.如权利要求3所述的系统,其中,所述乘法因子为四。
6.如权利要求1所述的系统,所述智能单元进一步包括: 查找表,包括: 功能时钟的多个频率; 测试时钟的多个频率;以及 基于功能时钟频率和测试时钟频率的多个空闲状态; 其中,所述测试程序: 从所述查找表获得所述空闲状态的预定数量;并且 将所述预定数量发送到所述TAP控制器。
7.如权利要求1所述的系统,其中,所述预定数量包括所述TAP控制器的指令寄存器和数据寄存器之间的运行状态/空闲状态的数量。
8.如权利要求1所述的系统,其中,所述TAP控制器包括N个不同的TAP控制器单元,每一个TAP控制器单元耦合到所述核心逻辑内的不同电路。
9.一种用于异步地调试核心逻辑的方法,所述核心逻辑包括中央处理单元、总线和功能块,所述方法包括: 通过智能单元使用测试时钟在联合测试行动组(JTAG)调试器上结合JTAG测试行动端口(TAP)控制器执行测试程序,所述测试程序在所述核心逻辑上经过JTAG接口实时地运 行; 通过所述测试程序将用户定义的指令发送到所述JTAG调试器,其中,所述用户定义的指令使写选择寄存器在写接口中被使能; 通过所述测试程序发起到所述核心逻辑的第一写操作,所述第一写操作经过所述写接口和所述核心逻辑之间的侧通道发生,其中,所述JTAG调试器和所述JTAG TAP控制器不是侧通道事务的一部分; 通过所述智能单元将空闲状态的预定数量发送到所述核心逻辑,其中,所述智能单元使用所述JTAG调试器、所述TAP控制器和所述JTAG接口将所述空闲状态发送到所述核心逻辑;并且 通过所述智能单元发起到所述核心逻辑的第二写操作,其中,所述第二写操作经过所述侧通道被发送。
10.如权利要求9所述的方法,进一步包括: 通过优先级仲裁器中断由所述智能单元发起的所述第一写操作,其中,所述总线正在由所述核心逻辑的电路使用。
11.如权利要求10所述的方法,进一步包括: 通过所述优先级仲裁器允许所述第一写操作使用所述侧通道被发送到所述核心逻辑。
12.如权利要求9所述的方法,进一步包括: 通过所述智能单元从被装入在所述JTAG调试器中的查找表获得所述预定数量。
13.如权利要求9所述的方法,进一步包括: 基于功能时钟频率的频率和测试时钟的第二频率计算所述预定数量。
14.如权利要求9所述的方法,进一步包括: 基于下面的公式计算所述预定数量:
N_idle_cycles = (TCK/clk)*MCF 其中,TCK是测试时钟的频率,elk是功能时钟的频率,并且MCF是乘法因子。
15.一种用于异步地调试核心逻辑的方法,所述核心逻辑包括中央处理单元、总线和功能块,所述方法包括: 通过智能单元使用测试时钟在联合测试行动组(JTAG)调试器上结合JTAG测试行动端口(TAP)控制器执行测试程序,所述测试程序在所述核心逻辑上经过JTAG接口实时地运行; 通过所述测试程序将用户定义的指令发送到所述JTAG调试器,其中,所述用户定义的指令使读选择寄存器在读接口中被使能; 通过所述测试程序发起从所述核心逻辑的第一读操作,所述第一读操作经过所述读接口和所述核心逻辑之间的侧通道发生,其中,所述JTAG调试器和所述JTAG TAP控制器不是侧通道事务的一部分; 通过所述智能单元将空闲状态的预定数量发送到所述核心逻辑,其中,所述智能单元使用所述JTAG调试器、所述TAP控制器和所述JTAG接口将所述空闲状态发送到所述核心逻辑;并且 通过所述智能单元发起从所述核心逻辑的第二读操作,其中,所述第二读操作经过所述侧通道被发送。
16.如权利要求15所述的方法,进一步包括: 通过优先级仲裁器中断由所述智能单元发起的所述第一读操作,其中,所述总线正在由所述核心逻辑的电路使用。
17.如权利要求16所述的方法,进一步包括: 通过所述优先级仲裁器允许使用所述侧通道将所述第一读操作发送到所述核心逻辑。
18.如权利要求15所述的方法,进一步包括: 通过所述智能单元从被装入在所述JTAG调试器中的查找表获得所述预定数量。
19.如权利要求15所述的方法,进一步包括: 基于功能时钟频率的频率和测试时钟的第二频率计算所述预定数量。
20.如权利要求15所述的方法,进一步包括: 基于下面的公式计算所述预定数量: N—idle—cycles = (TCK/clk)^MCF 其中,TCK是测试时钟的频率,elk是功能时钟的频率,并且MCF是乘法因子。
【文档编号】G06F11/36GK104246712SQ201280071797
【公开日】2014年12月24日 申请日期:2012年3月25日 优先权日:2012年3月25日
【发明者】H·林甘纳加利, V·凯里格哈塔姆 申请人:英特尔公司