用于可编程电路的缓存调试系统的制作方法

文档序号:6621366阅读:189来源:国知局
用于可编程电路的缓存调试系统的制作方法
【专利摘要】本发明涉及用于可编程电路的缓存调试系统。提供一种具有片上系统电路系统的集成电路,该片上系统电路系统包括片上系统互连件和微处理器单元子系统。子系统可包括执行存储器中存储的指令的微处理器核。缓存可用于为微处理器核缓存数据。存储器一致性控制单元可用于在微处理器单元子系统操作期间保持存储器一致性。存储器一致性控制单元可通过总线耦合到片上系统互连件。可在总线中插入命令转换器。命令转换器可具有与互连件通信的从接口和与存储器一致性控制单元通信的主接口。集成电路可具有可编程电路系统,其被编程以实现耦合到互连件的调试主机。在调试操作期间,命令转换器可转换来自调试主机的命令。
【专利说明】用于可编程电路的缓存调试系统
[0001]本申请要求于2013年7月25日提交的美国专利申请号13/951,104的优先权,通过引用将其全部内容并入本文。

【技术领域】
[0002]本发明涉及调试集成电路(例如具有硬连接电路系统如片上系统电路系统的可编程集成电路)的操作。

【背景技术】
[0003]可编程集成电路,例如现场可编程门阵列(FPGA),包含能够由用户编程以执行定制功能的逻辑电路系统。片上系统(SOC)集成电路包括微处理器电路系统、存储器、互连总线和外围设备。一些集成电路包括基于在许多现场可编程门阵列电路中建立的可编程逻辑电路系统类型的第一部分,以及基于硬连接片上系统电路系统的第二部分。这些集成电路(其有时被称为片上系统现场可编程门阵列(S0CFPGA))由于可编程电路系统的存在而表现出灵活性以及由于硬连接片上系统电路系统的存在而表现出巨大的处理能力。
[0004]一些片上系统集成电路的调试方案是侵入式的,并且要求中断处理电路系统。虽然现有的非侵入式调试方案不要求在调试期间中断处理电路系统,但仅允许存取有限的性能监控信息和指令跟踪。
[0005]因此,期望能够在具有处理器和存储器的集成电路上执行改进的调试操作。


【发明内容】

[0006]可提供具有片上系统电路系统的集成电路,该片上系统电路系统包括片上系统互连件和微处理器单元子系统。微处理器单元子系统还可包括一级缓存、二级缓存、存储器管理单元、存储器一致性控制单元和执行存储器中存储的指令的微处理器核。
[0007]缓存可用于为微处理器核缓存数据。存储器一致性控制单元可用于在微处理器单元子系统的操作期间保持存储器一致性。
[0008]存储器一致性控制单元可通过总线耦合到片上系统互连件。命令转换器可在总线中插入。命令转换器可具有与互连件通信的从接口和与存储器一致性控制单元中的从接口通信的主接口。
[0009]集成电路可为片上系统现场可编程门阵列或包括可编程电路系统的其它集成电路。可编程电路系统可包括互连可编程逻辑区域的可编程互连件。可编程电路系统可通过从外部设备(例如程序员或配置集成电路)将配置数据加载到可编程逻辑区域中的存储器兀件被编程。
[0010]可对可编程电路系统进行编程以实现调试主机(debug master,调试主机/调试主接口)。调试主机可使用总线耦合到外部调试工具。用户可使用调试工具提供指令给调试主机,以执行所需的调试操作。响应所述指令,调试主机可以发布命令。可通过片上系统互连件将命令提供给命令转换器中的从接口。命令转换器可以转换在从接口上接收的命令,并且可以使用命令转换器中的主接口将相应的转换命令提供给存储器一致性控制单元。
[0011]本发明进一步特征、性质和各种优点从附图及以下优选实施例的详细描述中将更加明显。

【专利附图】

【附图说明】
[0012]图1是根据本发明的一个实施例的基于具有硬连接片上系统电路系统的集成电路(如可编程集成电路)的说明性调试系统的示图,其中,硬连接片上系统电路系统可提供有编程的和硬连接的调试主机和其他资源用于支持调试操作。
[0013]图2是根据本发明的一个实施例,使用图1的系统执行调试操作所涉及的说明性步骤的流程图。
[0014]图3是根据本发明的一个实施例,使用图1的系统执行一致性调试操作所涉及的说明性步骤的流程图。
[0015]图4是根据本发明的实施例,使用图1的系统以在不中断处理电路系统或修改应用程序代码的情况下,通过执行对缓存的后门存取来执行调试所涉及的说明性步骤的流程图。

【具体实施方式】
[0016]一种示例性系统类型可用于执行调试操作,如图1的系统10所示。如图1所示,受测集成电路(例如集成电路10)可耦合到外部设备(例如调试工具4和编程设备6)。编程设备6可用于对集成电路10进行编程,以执行所期望的定制逻辑功能。调试工具4可用于在集成电路10上执行测试。
[0017]作为一个示例,集成电路10可为具有可编程逻辑类型的可编程集成电路,其有时被称为片上系统现场可编程门阵列(S0CFPGA),或可以是具有可编程电路系统30的其它可编程器件。可编程电路系统30可包括输入/输出电路系统12,用于驱动信号离开器件10并用于经由输入/输出引脚14从其它器件接收信号。互连资源16(如全局和局部垂直和水平导线和总线)可用于在器件10上路由信号。互连资源16可包括导线和在各导线之间的可编程连接,因此有时可被称为可编程互连件16。
[0018]可编程电路系统30可包括可编程逻辑块,例如可编程逻辑区域18。可编程逻辑区域18可包括组合和时序逻辑电路系统,并且可经配置以执行定制逻辑功能。可编程互连件16可包含可编程电路系统,因此可被认为是一种可编程逻辑类型。
[0019]集成电路10中的每个可编程逻辑块18可包含可编程存储器元件20。能够使用引脚14和输入/输出电路系统12向存储器元件20加载配置数据(也称为编程数据)。能够从外部资源(例如配置集成电路即,本身已经加载有来自程序员的配置数据的配置集成电路)加载配置数据,或从其它外部编程设备(例如基于在计算机或其它计算设备上运行的编程软件的编程工具)加载配置数据。用于提供配置数据给器件10的外部编程设备在图1中被为编程设备6。
[0020]一旦加载有配置数据,集成电路10的可编程电路系统30中的存储器元件的每个提供相应的静态控制输出信号,其控制可编程逻辑18中的相关逻辑部件的状态。存储器元件20可使用任何适合的易失性和/或非易失性存储器结构,例如随机存取存储器(RAM)单元、熔断器、反熔丝、可编程只读存储器存储单元、掩模编程和激光编程结构等。因为在编程期间存储器元件20加载有配置数据,因此存储器元件20有时被称为配置存储器或配置RAM0
[0021]如果需要,可编程电路系统30可提供有内部存储器(例如存储器块24)以用于存储可编程逻辑18中实现的定制电路产生和使用的数据。专用电路(有时称为硬连接电路)也可包括在可编程电路系统30中。例如,数字信号处理电路可合并到可编程电路系统30中。
[0022]除了使用可编程电路系统30的资源为用户实现所期望的定制逻辑电路之外,也可使用来自编程设备6的配置数据对可编程电路系统30进行编程,以实现测试相关的电路,例如调试主机40。
[0023]集成电路10可包含硬连接电路系统32。存储器接口电路系统可用于在集成电路10和外部存储器42 (例如,随机存取存储器)之间提供接口。电路系统32还可包括内部随机存取存储器44。高速缓冲存储器46 (例如一级(LI)和二级(L2)高速缓冲存储器)可用于为存储器44和/或42缓存数据。
[0024]集成电路10可为片上系统现场可编程门阵列,其中可编程电路系统30用作现场可编程门阵列块,并且其中电路系统32用作片上系统块。可编程电路系统30的存在允许定制集成电路10,以产生多种多样的不同的逻辑设计。片上系统电路系统32的存在允许采用硬连接电路处理非常适合硬连接电路的任务,例如视频处理、微处理器应用、通信(例如,使用通用异步收发器(UART))和磁盘驱动器控制功能等。
[0025]硬连接电路系统32可包括用于支持调试操作的硬连接电路,例如调试主机48。硬连接调试主机48和/或调试主机40 (其在可编程电路系统30的可编程逻辑构造中实现)可通过路径(如路径50)与调试工具4通信。路径50可为联合测试行动组(JTAG)路径或其它适合的通信路径。
[0026]硬连接电路32可包括互连件,例如互连件52 (有时被称为片上系统互连件)。调试主机48可具有主总线接口,例如主接口 54,其中,调试主机48利用主接口 54与互连件52中的相关从接口 56通信。调试主机40的主接口 58可类似地与互连件52中的从接口60通信。
[0027]微处理器单元子系统64可用于处理硬连接电路系统32的处理任务。子系统64可包括存储器一致性控制单元70、一个或更多个微处理器核68或其它微处理器电路系统、缓存46和存储器管理单元66。存储器一致性控制单元70可用于在存储器存取操作期间保持缓存和存储器的一致性。
[0028]外围设备62可使用从电路和主电路经由互连件52耦合到集成电路10中的资源。外围设备62可包括通信模块(例如,UART电路)、图形处理单元、视频加速器、调制解调器、显示控制器、硬盘驱动控制器和其它用于集成电路10的支持电路。与使用可编程电路系统30相比,使用硬连接电路系统来执行通过外围设备62和微处理器核68执行的功能通常更加高效,但这样的功能,如果需要,可使用可编程电路系统30部分或完整实现。
[0029]总线82可在子系统64和互连件52之间耦合。可在总线82中插入命令转换器76。命令转换器76保持存储器一致性,并用作互连件52和微处理器单元子系统64之间的接口。
[0030]互连件52可具有接口,用于支持与资源(例如子系统64 (经由路径160)、内部存储器44(经由路径162)和外部存储器42 (经由路径164))通信。因此,在内部存储器内容可能已经被缓存时,调试主机40具有两条路径存取内部存储器内容(其中的第二条包括一致性存取):1)直接经由互连件52和路径162 ;2a)经由互连件52、转换器76、存储器一致性控制单元70、互连件52,内部存储器44或2b)互连件52、转换器76、存储器一致性控制单元70以及L1/L2缓存46。
[0031]测试复杂电路(例如集成电路10)能够具有挑战性。利用图1所示类型的配置,诸如调试工具4的设备可用于帮助测试集成电路10,而集成电路10正在系统8中使用。在操作期间,微处理器核68可执行存储器(例如,存储器44、42和/或46)中存储的指令,并且可编程电路系统30可执行定制逻辑功能。利用调试工具4执行的调试操作能够用于辅助识别性能问题,例如在微处理器电路68上运行的代码的问题和/或集成电路10中的其它电路系统操作的问题。
[0032]调试工具4可提供用户接口,使用该用户接口,用户能够控制对集成电路10的测试(调试)操作。调试工具4可以使用专用测试硬件、在一个或更多个计算机上运行的测试软件或在计算设备上运行的其它测试软件来实现。联网或单机计算机系统可用于实现调试工具4。调试工具4中的键盘、触摸控制器、显示器和其它输入输出设备可用于收集来自用户的输入以及向用户提供输出。
[0033]优选地,调试工具4允许用户定义将要在集成电路10的调试期间执行的调试操作。使用调试工具4可执行的调试操作的示例包括从所期望的存储器位置读取数据、写入数据到期望的存储器位置、读取以及写入与具体缓存位置关联的数据和观测系统操作等。在设置操作期间,可给调试工具4提供关于将要调试的具体集成电路性能(例如,关于电路32的片上系统布局的信息、关于电路30的资源的信息等)的信息(例如,数据库信息和/或来自用户的手动输入信息)。
[0034]使用这些信息,调试工具4可与集成电路10中的一个或更多个调试主机(例如调试主机40和48)交互。每个调试主机与调试工具接口,并提供耦合到片上系统互连件52的总线主接口(参见,例如,主接口 54和58)。在测试期间,调试主机作为中间物,其允许调试工具4与耦合到片上系统互连件52的资源(例如外围设备62和微处理器单元子系统64)通信。
[0035]如果需要,调试主机可经配置以包括期望的存储器地址和与调试操作关联的其它信息。通过将此信息配置到调试主机(例如,通过使用编程设备6或其它编程技术在可编程电路系统30中实现调试主机40),能够提高测试速度。
[0036]在可编程电路系统30中实现调试主机的优点在于测试是可能的,其中,作为一个示例,调试主机经编程具有150个预定义读取位置,其中每个位置被读取一百次,以观测在核68上运行的应用程序如何执行。另一方面,硬连接调试主机(例如调试主机48)在其性能方面比较通用,因此在调试主机48上实施的可比较测试程序在每次执行测试时,需要重新加载150个不同的读取位置中的每一个一次。
[0037]通常,调试主机40或调试主机48可用于利用调试工具4执行调试操作。调试工具4使用调试主机40执行测试的配置在此处有时被描述为说明性示例。
[0038]互连件52可包括用作电路系统32的主总线(有时称为SOC互连总线)的总线资源。互连件52也可包括总线主接口和总线从接口。电路系统32可包括一致性端口总线82,以提供对存储器一致性控制单元的存取。总线82可在子系统64 (存储器一致性控制单元70)和互连件52之间耦合。可在总线82中插入片上系统命令转换器76。片上系统命令转换器76可具有通过总线82与主接口 80通信的片上系统命令转换器从接口 78,和用于通过总线82与存储器一致性控制单元从接口 72通信的片上系统命令转换器主接口 74。如果需要,主接口 74和从接口 72之间的总线82的区段可表示从接口 78和主接口 80之间的总线82的区段的子集。主接口 80可与片上系统互连件从接口(例如从接口 56和60)通信。
[0039]图2示出可利用系统8执行的示例性调试操作类型。
[0040]在步骤84,编程设备6 (例如,外部配置集成电路和/或基于计算机的编程工具)可用于将配置数据加载到可编程电路系统30中。配置数据优选包括对可编程电路系统30进行编程以在可编程电路系统30中实现调试主机40 (例如,在可编程电路30的部分中),从而执行所期望的调试操作的配置数据。可编程电路系统30的其它部分可用于形成用户逻辑。通过形成定制调试主机,能够比使用硬连接调试主机更高效地执行调试操作(例如,通过避免重复重载结合调试主机48描述的操作类型)。电路系统30还可以结合电路系统32的操作被测试。
[0041]在步骤86,用户(即,操作调试工具4的测试人员)可开始系统操作。在操作期间,集成电路10的处理资源(例如,核68)可执行集成电路10的存储电路(例如,电路系统32中的存储器和缓存)中存储的指令。存储器一致性控制单元70可用于保持存储器一致性。运行的软件(即,在核68上运行的应用程序)设置存储器管理单元66。例如,存储器管理单元设置确定具体存储器地址范围是否是可缓存、回写行为、通写行为、排序行为(强序(strongly ordered)或非强序,存储器类型特性(器件存储器或普通存储器)等。
[0042]在步骤88,用户可设置调试工具4。具体地,用户可使用键盘或其他设备通知调试工具4片上系统电路系统32正在使用的地址空间。用户还优选通知调试工具4调试主机的性能(例如,通信时使用的调试参数、调试主机40的JTAG标识符(ID)等),并且通知调试工具4在测试期间要作出的读和写请求上将要执行的关于地址转换器的详细信息。
[0043]测试开始前,用户可分析集成电路10上加载的应用程序(例如,在核68上运行的应用程序)的性质,以确定执行哪种类型的调试操作。例如,用户可能感兴趣在应用程序操作期间检查具体存储器位置处的存储器内容,以揭示关于应用程序是否在令人满意地操作的信息。用户可分析应用程序的结构和与应用程序关联的存储器管理单元(MMU)设置,以识别调试的目标存储器地址。作为另一个示例,用户可能感兴趣观测当具体数据被写入缓存以强制应用程序发生非预期的行为时(强制的无效缓存条目、预获取缓存条目),应用程序如何执行。确定将要执行哪种类型的测试后,用户可继续设置测试系统8。
[0044]在步骤90,用户可设置片上系统命令转换器76。用户可使用调试工具4 (例如,通过调试工具将可视用户接口上的命令行呈现给用户)来执行设置操作。响应用户的命令行条目或其它指令,调试工具4可使用调试主机40和互连件52与转换器76通信。步骤90处的设置操作期间,向转换器76提供关于主片上系统互连总线标识符的转换、存储器地址的转换和缓存属性的转换的信息。用户能够在转换器76中设置参数,例如,在一个说明性方案中,主接口 ID、AxUSER和AxCACHE参数。这些片上系统命令转换器参数设置命令转换器76在命令转换器从接口 78和命令转换器主接口 74之间执行的转换。
[0045]在步骤92,用户指示调试工具4执行调试操作,并且调试工具4收集来自用户的这些指令。可使用系统8执行的调试操作的示例包括一致性存储器调试、对L2缓存的后门存取、L2缓存的性能分析、应用程序缓存活动的监测、处理器活动的监测、在处理器上运行的应用程序上强制具体行为等。
[0046]在步骤94,调试工具4指示调试主机40发布命令,以实现期望的调试操作。发布的命令可以是,例如,存储器存取命令(读取命令和/或写入命令)。作为响应,调试主机40使用主接口 58将命令提供给互连件52中的从接口 60。
[0047]在步骤96,主接口 80接收来自从接口 60的命令,并将命令提供给转换器76的从接口 78。从接口 78接收用于转换器76的命令。步骤96处转换器76接收的命令可为存储器存取命令,例如读取命令和/或写入命令。
[0048]在步骤98,命令转换器76可根据在步骤90的设置操作期间建立的命令转换器设置参数来执行转换操作。可执行的转换操作的示例包括主片上系统互连总线标识符的转换、存储器地址的转换和缓存属性的转换。转换操作在从接口 78( S卩,经由本示例中的互连件52和接口 60和80接收来自调试主机40中的主接口 58的命令的接口)和主接口 74之间执行。转换命令(例如,基于其命令转换器76已经执行地址转换的存储器存取命令)可用于调试电路系统10。例如,能够将具体缓存能力、回写和通写行为强制到LI和/或L2缓存上。
[0049]在步骤100,存储器一致性控制单元70可接收来自转换器76的转换命令(即,从接口 72可通过总线82经由主接口 74接收转换命令)。
[0050]在步骤102,随着集成电路10响应转换命令,用户可观测转换命令对系统性能的影响(例如,通过收集数据、观测输出信号等),并且能够分析这些测试结果。
[0051]图2的调试技术可用于执行一致性调试操作而不影响应用程序和处理器执行。
[0052]图3是包括执行一致性调试操作(即,保持存储器一致性的调试操作)所涉及的说明性步骤的流程图。在图3的示例中,数据被存储在随机存取存储器(RAM)地址范围0x8000_0000-0x8000_FFFF上,并且微处理器核68操作这个数据(执行读取、写入和修改)。
[0053]在步骤104,编程设备6 (例如,外部配置集成电路和/或基于计算机的编程工具)可用于将配置数据加载到可编程电路系统30中。如结合图2所描述的,配置数据优选地包括对可编程电路系统30编程以实施调试主机40和主接口 58从而执行所期望的调试操作的配置数据。
[0054]在步骤106,用户可以启动系统操作,起动系统8以使集成电路10的处理资源(例如,核68)可以执行集成电路10的存储电路(例如,电路系统32中的存储器和缓存)中所存储的指令。在系统操作期间,存储器一致性控制单元70可用于保持存储器一致性。
[0055]在核68上运行的应用程序设置存储器管理单元66。例如,存储器管理单元66的存储器管理单元设置确定具体存储器地址范围是否是可缓存、回写行为、通写行为、排序行为(强序或非强序)、存储器类型行为(器件存储器或普通存储器)等。在本示例中,存储器管理单元设置操作确定RAM地址范围0x8000_0000-0x8000_FFFF是否可缓存。
[0056]在步骤108,用户可设置调试工具4。具体地,用户可使用键盘或其他设备通知调试工具4片上系统电路系统32正在使用的地址空间。用户还可以通知调试工具4调试主机的性能(例如,通信时使用的调试参数、调试主机40的JTAGID等),并且可以通知调试工具4在测试期间要作出的读和写请求上将要执行的关于地址转换的详细信息。
[0057]测试开始前,用户可分析集成电路10上所加载的应用程序(例如,在核68上运行的应用程序)的性质,以确定执行哪种类型的调试操作。作为一个示例,用户可能有兴趣在应用程序操作期间检查具体存储器位置处的存储器内容。用户可分析应用程序的结构和与应用程序关联的存储器管理单元66的存储器管理单元(MMU)设置,以识别调试的目标存储器地址。
[0058]在步骤110,用户可设置片上系统命令转换器76。用户可使用调试工具4上的命令行来执行设置操作。响应用户的命令行条目,调试工具4可使用调试主机40和与转换器76通信的互连件52。在步骤110处的设置操作期间,用户可使用参数,如AxUSER和AxCACHE参数,来指示命令转换器76如何通过总线82与存储器一致性控制单元70通信。在操作期间,存储器一致性控制单元70使用参数,如AxUSER和AxCACHE参数,确定缓存行为。因此关于存储器的缓存行为的详细信息(即,在图3的示例中,RAM地址范围0x8000_0000-0x8000_FFFF是否可缓存)反映在AxUSER和AxCACHE参数中。
[0059]在这些设置操作期间,用户对存储器一致性控制单元70中的AxUSER和AxCACHE参数进行编程,以匹配存储器管理单元66的设置。在本示例中,调试过程将包括监测RAM地址范围0x8000_0000-0x8000_FFFF上的数据。步骤110的设置操作也包括设置将由命令转换器76执行的命令转换操作(例如,地址转换)。在操作中,转换器76将由命令转换器从接口 78所接收的命令转换器从接口地址转换到命令转换器主接口 74上的相应的命令转换器主接口地址。作为一个示例,步骤110可包括设置命令转换器76,以将命令转换器从接口地址0x0000_0000转换到命令转换器主接口地址0x8000_0000。
[0060]在步骤112,用户指示调试工具4执行调试操作,并且用户通过调试工具4收集这些指令。在图3的示例(一致性调试)中,用户使用调试工具的命令行,指示调试工具读取地址0x8000_0000。已经通知调试工具4合适的地址转换操作以执行用户提供的读取请求。因此,调试工具4将所请求的读地址(0x8000_0000)转换到0x0000_0000 (作为一个示例)。[0061 ] 在步骤114,调试主机40发布存储器存取请求(即,在本示例中,调试主机40发布存储器读取请求到0x0000_0000)。
[0062]在步骤116,命令转换器76接收来自调试主机的存储器存取请求。在本示例中,命令转换器从接口 78接收读取请求(即,命令转换器76的命令转换器从接口 78接收针对0x0000_0000的读取请求)。
[0063]在步骤118,命令转换器76可根据在步骤110的设置操作期间所建立的命令转换器设置参数来执行转换操作。具体地,命令转换器76将从调试工具接收的命令转换器从接口地址转换到相应的命令转换器主接口地址(即,在本示例中,RAM地址范围0x8000_0000-0x8000_FFFF中的地址)。已经通知命令转换器76 (在步骤110)合适的地址转换以执行来自调试主机的读取请求。命令转换器从接口 78可具有,作为一个示例,IGB的地址空间,并且命令转换器执行的地址转换可允许此IGB的地址空间被映射到微处理器单元子系统64中的IGB的地址空间的四分之一。
[0064]在步骤120,存储器一致性控制单元70可接收来自转换器76的转换命令(即,从接口 72可通过总线82经由主接口 74接收转换命令)。在本示例中,接收与读取请求关联的命令转换器主接口地址0x8000_0000。
[0065]在步骤122,存储器一致性控制单元70可处理存储器存取请求。具体地,存储器一致性控制单元70可启动一致性读取以获得RAM地址范围0x8000_0000处的请求数据。
[0066]存储器一致性控制单元70知道RAM/缓存中的数据的状态。因此,存储器一致性控制单元70能够获得从适当位置(即,L2缓存或LI缓存或RAM42/44)读取的数据的有效版本。调试主机不需要知道数据存储细节,因为这些操作通过存储一致性控制单元70管理。读取被认为是“一致的”,因为存储器一致性控制单元知道从哪获得数据的有效版本。
[0067]在步骤124,可分析系统的性能。数据已经被读取,以响应于读取请求从存储器一致性控制单元提供给命令转换器,并且从命令转换器提供给调试主机。调试工具接收来自调试主机的数据用于分析,并用于将调试结果呈现给用户。在调试过程期间不中断微处理器单元子系统64的操作。在调试期间,即使从缓存读取数据,也不中断微处理器单元子系统64和核68。
[0068]图4中示出用于调试系统8的另一个说明性方案。图4的示例包括对L2缓存的后门存取,而不中断处理器核68或修改应用程序代码(即,执行对缓存后门存取的调试操作)。在本示例中,存储器位置范围0X8000_0000-0X8000_00FF处的数据在L2缓存中缓存。核68从这个位置执行或操作此数据(读取、写入和修改)。
[0069]在步骤126,编程设备6 (例如,外部配置集成电路和/或基于计算机的编程工具)可用于将配置数据加载到可编程电路系统30中。加载到可编程电路系统30 ( S卩,到存储器元件20)的配置数据优选包括配置可编程电路系统30以实现用于执行期望的调试操作的调试主机40的配置数据。通过形成定制调试主机的方式,能够比使用硬连接调试主机更有效地执行调试操作(例如,通过避免重复重载如结合调试主机48所描述的操作)。
[0070]在步骤128,用户(即,操作调试工具4的测试人员)可启动系统8。当被启动时,核68开始运行并执行应用程序(即,代码)。所运行的应用程序设置存储器管理单元66。在本示例中,存储器管理单元设置定义存储器地址范围0x8000_0000-0x8000_00FF在L2缓存中可缓存。
[0071]在步骤130,用户可设置调试工具4。具体地,用户可使用键盘或其他设备通知调试工具4片上系统电路系统32正在使用地址空间。用户还优选地通知调试工具4调试主机的性能(例如,通信时使用的调试参数、调试主机40的JTAGID等),并且通知调试工具4地址转换以执行用户提供的读取和写入请求。
[0072]测试开始前,用户可分析集成电路10上所加载的应用程序(例如,在核68上运行的应用程序)的性质,以确定执行哪种类型的调试操作。例如,用户可能有兴趣检查当应用程序的行为通过将数据写入具体缓存位置而改变时,应用程序是如何执行的。
[0073]在步骤132,用户可使用命令行或与调试工具4关联的其它接口来设置片上系统命令转换器76。用户可使用AxUSER和AxCACHE参数来指示命令转换器76如何通过总线82与存储器一致性控制单元70通信。存储器一致性控制单元70使用AxUSER和AxCACHE参数确定缓存行为。在图4的示例中,调试过程包括在对应地址范围0x8000_0000-0x8000_00FF的L2缓存中重写数据,以强制存储器一致性控制单元70上的非预期行为。用户将AxUSER和AxCACHE参数编程到存储器一致性控制单元70,以强制地址范围0x8000_0000_0x8000_00FF在L2缓存中可缓存,以及相对L2缓存回写。
[0074]用户能够通过使用AxUser和AxCACHE参数,以及通过重写数据到L2缓存在存储器一致性控制单元上强制发生的非预期行为的示例包括强制缓存行无效、强制处理器页表中所定义的不可缓存区的写入分配和强制对具体缓存区域的写入。步骤132的操作包括设置将由命令转换器76执行的地址转换。在操作中,命令转换器76将由命令转换器从接口78接收的命令转换器从接口地址转换到命令转换器主接口 74上相应的命令转换器主接口地址。在本示例中,用户设置命令转换器76以将从接口地址0x0000_0000转换到主接口地址 0x8000_0000。
[0075]在步骤134,用户指示调试工具4执行调试操作,并且用户通过调试工具4收集这些指令。在本示例中(对L2缓存的后门存取),用户指示调试工具根据调试工具命令行将数据写入到地址0x8000_0000。已经通知调试工具合适的地址转换操作以执行用户提供的写入命令。因此,调试工具4将地址0x8000_0000的写入命令转换到地址0x0000_0000 (在本示例中)。
[0076]在步骤136,调试主机40发布相应的存储器写入命令。在本示例中,调试主机40发布写入命令到地址0x0000_0000。
[0077]在步骤138,主接口 80接收命令,并将命令提供给转换器76的从接口 78。从接口78接收命令。在本示例中,从接口 78和转换器76接收0x0000_0000的写入命令。
[0078]在步骤140,命令转换器76可根据在步骤90的设置操作期间建立的命令转换器设置参数来执行转换操作。具体地,转换器76将来自调试工具的从接口 78的从接口地址转换到主接口 74的相应的主接口地址。已经通知转换器76合适的地址转换以执行来自调试主机的写入命令。因此,转换器76将命令转换器从接口地址0x0000_0000转换到命令转换器主接口地址0x8000_0000。如关于图3的示例所描述的,从接口 78可有IGB的地址空间。转换器76执行的地址转换可允许这个IGB的地址空间映射到子系统64中的IGB的地址空间的四分之一。
[0079]在步骤142,存储器一致性控制单元70可接收来自转换器76的转换命令(即,从接口 72可通过总线82经由主接口 74接收转换的写入命令)。在图4示例中,转换器76的从接口 78接收与写入命令关联的命令转换器主接口地址0x8000_0000。
[0080]在步骤144,存储器一致性控制单元70处理存储器写入命令。在本示例中,存储器一致性控制单元启动写入,以在对应指定的存储器地址0x8000_0000的L2缓存位置中存储数据。向L2缓存写入数据后,可通过观测应用程序执行的变化和/或使用调试工具4观测系统8来观测与所写入数据关联的强制行为。通过这种方式,出于调试目的,能够在不中断内核68以及子系统64上运行的应用程序不知道调试工具4的这种侵入的情况下,能够改变子系统64的操作。电路10(如,核68)上运行的应用程序代码(软件)未发生改变。
[0081]附加实施例:
[0082]附加实施例1:一种可操作以与外部调试工具接口的集成电路,其中,用户利用外部调试工具提供调试命令,所述集成电路包括:可编程电路系统;从可编程电路系统的部分实现的调试主机,其中所述调试主机耦合到调试工具,以接收来自调试工具的命令;耦合到调试主机的片上系统互连件;微处理器子系统,其具有处理电路系统、缓存和存储器一致性控制单元,其中所述微处理器子系统利用总线耦合到片上系统互连件;以及在总线中插入的命令转换器,其中所述命令转换器转换从调试主机接收到的命令并通过总线将相应的转换命令提供给存储器一致性控制单元。
[0083]附加实施例2:如附加实施例1所述的集成电路,其中所述可编程电路系统包括:可编程互连件;和可编程逻辑阵列区域,其通过可编程互连件耦合并且包含加载有配置数据的存储器元件。
[0084]附加实施例3:如附加实施例2所述的集成电路,进一步包括片上系统电路系统,其中形成有片上系统互连件、微处理器子系统和命令转换器。
[0085]附加实施例4:如附加实施例3所述的集成电路,进一步包括在调试主机和调试工具之间耦合的联合测试行动组路径,其中调试主机经配置以接收来调试工具的指令,其命令调试主机发布存储器存取命令。
[0086]附加实施例5:如附加实施例4所述的集成电路,其中命令转换器包括:命令转换器从接口,其耦合到片上系统互连件以接收来自调试主机的存储器存取命令;以及命令转换器主接口,其耦合到存储器一致性控制单元,其中所述命令转换器经配置以转换存储器存取命令并且经配置以利用命令转换器主接口将转换的存储器存取命令提供给存储器一致性控制单元。
[0087]附加实施例6:如附加实施例5所述的集成电路,其中存储器元件经配置以接收来自外部编程设备的配置数据。
[0088]附加实施例7:如附加实施例5所述的集成电路,其中片上系统电路系统包括耦合到片上系统互连件的外围设备。
[0089]附加实施例8:如附加实施例7所述的集成电路,其中外围设备包括选自包括下列项的组的外围设备=UART电路、图形处理单元、视频加速器、调制解调器、显示控制器和硬盘驱动器控制器。
[0090]附加实施例9:一种调试具有可编程电路系统和片上系统电路系统的集成电路的方法,包括:对可编程电路系统编程以在可编程电路系统中实现调试主机;使用调试主机发布命令;通过片上系统电路系统中的片上互连件将命令从调试主机提供给命令转换器;使用命令转换器转换命令;以及使用片上系统电路系统中的微处理器单元子系统的存储器一致性控制单元处理来自命令转换器的转换命令。
[0091]附加实施例10:如附加实施例9所述的方法,进一步包括在通过片上系统互连件将命令提供给命令转换器之前,设置命令转换器。
[0092]附加实施例11:如附加实施例10所述的方法,其中命令转换器包括耦合到片上系统互连件的从总线接口以及与存储器一致性控制单元中的从接口通信的主总线接口,并且其中设置命令转换器包括提供参数给命令转换器,所述参数设置将在命令转换器的从总线接口和命令转换器的主总线接口之间执行的转换操作。
[0093]附加实施例12:如附加实施例11所述的方法,其中转换命令包括转换存储器存取命令中的存储器地址。
[0094]附加实施例13:如附加实施例10所述的方法,其中设置命令转换器包括设置命令转换器以将至少第一存储器地址转换到至少第二存储器地址。
[0095]附加实施例14:如附加实施例13所述的方法,其中转换命令包括转换存储器读取请求。
[0096]附加实施例15:如附加实施例14所述的方法,其中微处理器单元子系统包括微处理器核,方法进一步包括:响应存储器读取请求,使用存储器一致性控制单元启动一致性读取以获得所请求的数据;以及在不中断微处理器核的情况下,将数据从存储器一致性单元提供给调试主机。
[0097]附加实施例16:如附加实施例13所述的方法,其中转换命令包括转换存储器写入命令。
[0098]附加实施例17:如附加实施例16所述的方法,其中微处理器单元子系统包括微处理器核,所述方法进一步包括:响应存储器写入命令,在不中断微处理器核的情况下,使用存储器一致性控制单元启动数据的写入。
[0099]附加实施例18:—种调试包含可编程电路系统和微处理器单元子系统的集成电路的方法,包括:对可编程电路系统进行编程以形成调试主机;使用外部调试工具,接收来自用户的将要执行的调试操作的指令;响应指令,命令调试主机在集成电路中的互连件上发布命令;使用命令转换器,转换由调试主机发布的命令;以及使用微处理器单元子系统中的存储器一致性控制单元接收转换命令。
[0100]附加实施例19:如附加实施例18所述的方法,其中集成电路包括片上系统现场可编程门阵列集成电路,并且其中转换命令包括转换存储器读取请求以执行一致性调试操作。
[0101]附加实施例20:如附加实施例18所述的方法,其中集成电路包括片上系统现场可编程门阵列集成电路,并且其中转换命令包括转换存储器写入请求以执行对缓存的后门存取操作。
[0102]前述实施例仅仅是本发明原理的示例,并且在不偏离本发明的范围和精神的情况下,本领域技术人员能够作出各种修改。
【权利要求】
1.一种可操作以与外部调试工具接口的集成电路,利用所述外部调试工具,用户提供调试命令,所述集成电路包括: 可编程电路系统; 由所述可编程电路系统的一部分实现的调试主机,其中所述调试主机耦合到所述调试工具以接收来自所述调试工具的命令; 片上系统互连件,其耦合到所述调试主机; 微处理器子系统,其具有处理电路系统、缓存和存储器一致性控制单元,其中所述微处理器子系统利用总线耦合到所述片上系统互连件;和 命令转换器,其插入在所述总线中,其中所述命令转换器转换从所述调试主机接收到的命令,并通过所述总线将相应的转换命令提供给所述存储器一致性控制单元。
2.根据权利要求1所述的集成电路,其中所述可编程电路系统包括: 可编程互连件;和 可编程逻辑阵列区域,其通过所述可编程互连件耦合并包括加载有配置数据的存储器元件。
3.根据权利要求2所述的集成电路,进一步包括片上系统电路系统,在其中,形成有所述片上系统互连件、所述微处理器子系统和所述命令转换器。
4.根据权利要求3所述的集成电路,进一步包括在所述调试主机和所述调试工具之间耦合的联合测试行动组路径,其中所述调试主机经配置以接收来自所述调试工具的指令,所述指令命令所述调试主机发布存储器存取命令。
5.根据权利要求4所述的集成电路,其中所述命令转换器包括: 命令转换器从接口,其耦合到所述片上系统互连件以接收来自所述调试主机的所述存储器存取命令;和 命令转换器主接口,其耦合到所述存储器一致性控制单元,其中所述命令转换器经配置以转换所述存储器存取命令,并且经配置以利用所述命令转换器主接口将所转换的存储器存取命令提供给所述存储器一致性控制单元。
6.根据权利要求5所述的集成电路,其中所述存储器元件经配置以接收来自外部编程设备的所述配置数据。
7.根据权利要求5所述的集成电路,其中所述片上系统电路系统包括耦合到所述片上系统互连件的外围设备。
8.根据权利要求7所述的集成电路,其中所述外围设备包括选自包括下列设备的组的外围设备=UART电路系统、图形处理单元、视频加速器、调制解调器、显示控制器和硬盘驱动器控制器。
9.一种调试具有可编程电路系统和片上系统电路系统的集成电路的方法,其包括: 对所述可编程电路系统进行编程以在所述可编程电路系统中实现调试主机; 使用所述调试主机发布命令; 通过所述片上系统电路系统中的片上系统互连件将来自所述调试主机的所述命令提供给命令转换器; 使用所述命令转换器转换所述命令;以及 使用所述片上系统电路系统的微处理器单元子系统中的存储器一致性控制单元,处理来自所述命令转换器的转换命令。
10.根据权利要求9所述的方法,进一步包括在通过所述片上系统互连件将所述命令提供给所述命令转换器之前设置所述命令转换器。
11.根据权利要求10所述的方法,其中所述命令转换器包括耦合到所述片上系统互连件的从总线接口以及与所述存储器一致性控制单元中的从接口通信的主总线接口,并且其中设置所述命令转换器包括提供参数给所述命令转换器,所述参数设置将要在所述命令转换器的所述从总线接口和所述命令转换器的所述主总线接口之间执行的转换操作。
12.根据权利要求11所述的方法,其中转换所述命令包括转换存储器存取命令中的存储器地址。
13.根据权利要求10所述的方法,其中设置所述命令转换器包括设置所述命令转换器以将至少第一存储器地址转换到至少第二存储器地址。
14.根据权利要求13所述的方法,其中转换所述命令包括转换存储器读取请求。
15.根据权利要求14所述的方法,其中所述微处理器单元子系统包括微处理器核,所述方法进一步包括: 响应所述存储器读取请求,使用所述存储器一致性控制单元启动一致读取以获得所请求的数据; 将来自所述存储器一致性控制单元的所述数据提供给所述调试主机,而不中断所述微处理器核。
16.根据权利要求13所述的方法,其中转换所述命令包括转换存储器写入命令。
17.根据权利要求16所述的方法,其中所述微处理器单元子系统包括微处理器核,所述方法进一步包括: 响应所述存储器写入命令,使用所述存储器一致性控制单元启动数据的写入,而不中断所述微处理器核。
18.—种调试包含可编程电路系统和微处理器单元子系统的集成电路的方法,其包括: 对所述可编程电路系统进行编程以形成调试主机; 使用外部调试工具,接收来自用户的、与将要执行的调试操作有关的指令; 响应所述指令,命令所述调试主机在所述集成电路中的互连件上发布命令; 使用命令转换器,转换由所述调试主机发布的所述命令;以及 使用所述微处理器单元子系统中的存储器一致性控制单元,接收转换命令。
19.根据权利要求18所述的方法,其中所述集成电路包括片上系统现场可编程门阵列集成电路,并且其中转换所述命令包括转换存储器读取请求以执行一致性调试操作。
20.根据权利要求18所述的方法,其中所述集成电路包括片上系统现场可编程门阵列集成电路,并且其中转换所述命令包括转换存储器写入请求以执行对缓存的后门存取操作。
【文档编号】G06F11/22GK104346247SQ201410359964
【公开日】2015年2月11日 申请日期:2014年7月25日 优先权日:2013年7月25日
【发明者】M·雷格尤纳斯, S·海丁格 申请人:阿尔特拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1