CN108351907B - 用于调试电路设计的方法和电路 - Google Patents
用于调试电路设计的方法和电路 Download PDFInfo
- Publication number
- CN108351907B CN108351907B CN201680062228.0A CN201680062228A CN108351907B CN 108351907 B CN108351907 B CN 108351907B CN 201680062228 A CN201680062228 A CN 201680062228A CN 108351907 B CN108351907 B CN 108351907B
- Authority
- CN
- China
- Prior art keywords
- transaction
- protocol
- circuit design
- signals
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/31703—Comparison aspects, e.g. signature analysis, comparators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3177—Testing of logic operation, e.g. by logic analysers
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Tests Of Electronic Circuits (AREA)
- Debugging And Monitoring (AREA)
Abstract
各种示例的实施例被指向用于调试电路设计的电路和方法。根据一个示例的实施例,捕获操作期间由电路设计产生的一组信号的波形数据(104)。为所述一组信号生成数据结构(110),并将信号的波形数据存储在所述数据结构中。识别与所述一组信号相关联的通信信道(114)。分析存储在所述数据结构中的波形数据以定位用于一个或多个通信信道的一组信号中的事务级事件(114)。通过计算机系统输出指示所述一组事务级事件的位置的数据。
Description
技术领域
本公开大致涉及测试逻辑电路,更具体地涉及调试电路设计。
背景技术
可编程集成电路(IC)可由用户编程以执行指定的逻辑功能。被称为现场可编程门阵列(FPGA)的一种可编程IC通常包括可编程资源,该可编程资源被安排在具有可编程互连和可编程逻辑的可编程片阵列中。可编程互连通常包括大量由可编程互连点(PIP)互连的不同长度的大量互连线。可编程逻辑使用可编程元件来实施电路设计的逻辑,其中可编程元件可以包括例如函数发生器、寄存器、算术逻辑等等。通常通过将配置数据流加载到定义如何配置可编程元件的内部配置存储器单元中来编程可编程互连和可编程逻辑。可以从存储器(例如,从外部PROM)读取配置数据或通过外部装置将配置数据写入FPGA。各个存储单元的集合状态确定了FPGA的功能。
在开发电路设计的过程中,通常对电路设计进行测试,以在物理实现和部署之前评估其运行和性能。电路设计的测试可能需要观察电路设计的专用集成电路(ASIC)实施中的电路模块的运行,使用基于软件的模拟模型来模拟(simulate)电路模块,或者在可编程IC上仿真(emulate)电路模块。在仿真电路设计时,可编程IC上的可编程资源被配置为实施电路设计。在一些实现中,可以使用ASIC实施的电路模块的模拟、仿真和/或运行的组合来对电路设计的运行进行建模。在一个示例中,在对电路设计的第一电路模块进行模拟的同时,可以仿真电路设计的第二电路模块。在测试期间,测试数据被提供给电路设计的模拟的/仿真的/ASIC实施的电路模块,并且数据信号从电路设计的各个节点被捕获。可以通过被配置为执行电路设计的模拟模型的软件调试工具将数据信号输入到模拟电路设计并从模拟电路设计中捕获数据信号。数据可以被输入到电路设计并从电路设计中被捕获,该电路设计在可编程IC上仿真或者被实施为使用各种电路的ASIC,这些电路包括例如集成逻辑分析器电路,其被包括在可编程IC或ASIC芯片中或被连接到可编程IC或ASIC芯片。
发明内容
各种示例实施涉及调试电路设计。根据示例实施,公开了用于调试电路设计的方法。捕获操作期间由电路设计产生的一组信号的波形数据。为所述一组信号在计算机系统的存储器电路中生成数据结构,并将所述一组信号的波形数据存储在所述数据结构中。通过所述计算机系统的处理器电路识别与所述一组信号相关联的通信信道。分析存储在所述数据结构中的波形数据以定位用于一个或多个通信信道的一组事务级事件。输出指示所述一组事务级事件的位置的数据。
可选择地,该方法可以进一步包括:提供可扩展应用程序接口API,所述API被配置以为用户查询所指定的一组标准搜索所述一组事务级事件。
可选择地,该方法可以进一步包括:响应于经由用户接口输入的用户查询,使用所述可扩展API,基于所述数据结构识别所述一组信号中与由所述用户查询指定的一组标准相匹配的部分。
可选择地,识别所述一组事务级事件包括:基于包括在所述电路设计中的元数据、所述电路设计中的信号名称或它们的组合来识别由被识别的通信信道实施的协议。为被识别的协议提供应用程序接口API,所述API被配置以从所述一组信号的数据结构中识别出用于所述协议的事务级事件。为实施所识别的协议中的一个协议的通信信道,执行为所述协议提供的API以确定用于所述通信信道的事务级事件。
可选择地,为所述协议提供所述API包括从API库中为所述协议获取所述API。
可选择地,所述通信信道中的至少有一个通信信道与所述一组信号组中的多个信号相关联,以及用于所述通信信道的所述事务级事件包括数据事务,由包括在所述电路设计中的处理器执行的程序指令,或它们的其组合。
可选择地,所述方法还包括:对于所述被识别的事务中的至少一个事务,穿过实施所述被识别的协议中不同协议的所述通信信道中的两个通信信道之间的接口来追踪所述至少一个事务。对所述至少一个事务的跟踪是基于所述电路设计中的元数据来执行的。
可选择地,对于至少一个通信信道,为所述通信信道而确定的所述事务级事件包括第一协议的第一组事务。所述方法进一步包括:从所述第一组事务中识别第二协议的第二组事务,其中与所述第一协议相比,所述第二协议是更高级的协议。
可选择地,所述第二协议被配置用于视频帧、网络数据包或者CPU指令的通信。
可选择地,所述方法还包括基于所述一组事务级事件,确定所述电路设计中的多个电路模块的一组性能指标。所述电路模块的所述一组性能指标通过用户界面显示。
可选择地,所述一组性能指标包括延迟、时序余量、功耗、信号抖动、吞吐量、数据传输大小或它们的组合。
可选择地,所述方法还包括,对于至少一个性能指标,确定在用户指定的时间段内的所述性能指标的最小值、最大值和平均值。
可选择地,所述方法还进一步包括在图形用户界面GUI窗口中显示:所述一组信号的波的形的图形表达示;用于识别所述波形中所述事务级事件的可视标记;以及标识一个或多个检测到的协议违例规的位置和类型的可视标记。
可选择地,所述方法还包括模拟所述电路设计的运行。
可选择地,所述方法进一步还包括:配置可编程集成电路IC的可编程资源以实施所述电路设计,以及使用所述可编程IC上的集成逻辑分析器,捕获所述波形数据并将所述波形数据传送给所述计算机系统。
根据示例性实施例,公开了一种用于调试电路设计的装置。该装置包括计算布局,该计算布局包括一个或多个处理器电路和被耦接到处理器电路的存储器电路。一组指令被存储在存储器电路中。当由处理器电路执行时,该组指令将处理器电路配置为捕获在操作期间由电路设计产生的一组信号的波形数据,并将波形数据存储在存储器中。处理器电路还被配置以为波形数据中的该信号生成相应的数据结构。处理器电路还被配置为识别由该组信号实施的通信信道。对于每个通信信道,处理器电路基于数据结构来识别通信信道的一组事务级事件。处理器电路被配置为将指示该组事务级事件的数据存储在存储器电路中。
可选择地,该装置可以进一步包括:被可通信地耦接到计算布局的可编程集成电路(IC)。该组指令还可以使一个或多个处理器电路对可编程IC的可编程资源进行编程以实施电路设计。
可选择地,由一个或多个处理器电路识别用于通信信道的一组事务级事件可以包括基于包括在电路设计中的元数据、电路设计中的信号名称或者它们的组合来识别由所识别的通信信道实施的协议。可以为所识别的协议提供应用程序接口(API),API被配置为从该组信号的数据结构来识别用于协议的事务级事件。对于实施了所识别的协议中的一个协议的通信信道,可以执行为协议提供的用于确定通信信道的事务级事件的API。
可选择地,该组指令可以进一步使得处理器基于所识别的事务级事件来确定电路设计的一组性能指标,该组性能指标包括延迟、时序余量、功耗、信号抖动、吞吐量、数据传输大小或它们的组合。
可选择地,该组指令可以进一步使处理器提供用户界面。响应于经由用户界面输入的用户查询,处理器可以基于数据结构来识别所述一组信号中与由用户查询指定的一组标准相匹配的部分,并且使用用户界面显示所识别的部分的图形表达。
其他特征将通过考虑以下具体实施方式和权利要求而被认识到。
附图说明
通过查阅以下具体实施方式并参考附图,所公开的方法和电路的各个方面和特征将变得显而易见,在附图中:
图1示出了用于调试电路设计的示例过程;
图2示出了用于识别事务级事件的示例过程;
图3示出了用于基于所识别的事务级事件来分析电路设计的示例过程;
图4示出了用于识别多个协议层的事务的示例过程;
图5示出了根据一个或多个实施例的被配置以提供调试工具的示例计算设备;以及
图6示出了根据一个或多个实施方式的具有集成逻辑分析器电路的示例可编程IC。
具体实施方式
在以下描述中,阐述了许多具体细节以描述此文中呈现的具体示例。然而,对于本领域技术人员来说显而易见的是,可以在不具备下文给出的所有具体细节的情况下实践一个或多个其他示例和/或这些示例的变体。在其他情况下,众所周知的特征未被详细描述,以免混淆文中示例的描述。
调试是开发电路设计不可或缺的一部分。调试要在可编程IC上实施的电路设计通常涉及通过模拟和/或仿真电路设计来测试可编程IC的运行。调试电路设计过程中的困难之一涉及调试通信信道/接口的操作,以确保该操作符合例如通信信道或接口使用的协议的所有要求。一些通信协议使用大量数据和控制信号来实施通信信道。例如,高级可扩展接口(AXI)信道由各种时钟和复位信号、写地址信号、写数据信号、写响应信号、读地址信号、读数据信号和/或低功率接口信号组成。目前,开发人员肉眼检查采样数据信号的波形以人工识别在每个通信信道上执行的通信信道和事务级事件(transaction-level event)(例如,数据事务或处理器指令)以评估高级操作和/或确定是否发生协议违例。同样地,开发人员必须肉眼检查波形来评估电路设计的性能。随着事务次数的增加,通过肉眼来检查波形变得越来越困难。
本文公开了用于在事务级调试电路设计的方法和装置。在电路设计的运行期间捕获由电路设计产生的一组信号的波形。例如,可以通过在基于软件的模拟模型中模拟电路设计和/或在可编程IC上仿真电路设计来生成该组信号。可以通过在时间上连续的时刻对数据信号的一个或多个模拟特性(例如,电压、相位或幅度)进行采样来捕获数据信号的波形。对于该组信号中的每个信号,生成相应的数据结构,并且将该信号的波形数据存储在数据结构中。识别由该组信号实施的通信信道。分析存储在数据结构中的波形数据以在用于一个或多个通信信道的数据信号中定位事务级事件。事务级事件可以包括,例如通信信道上的单独的数据事务,由处理器电路执行的各个指令或在可编程逻辑中实施的硬件加速功能。输出指示该组事务级事件的位置的数据。
可以使用各种分析过程来定位通信信道的事务级事件。在一些实施例中,首先识别由通信信道实施的协议。协议可以包括但不限于AXI、外围组件高速互连(PCIe)、通用串行总线(USB)、IEEE1394和/或串行连接SCSI。可以例如基于电路设计中包括的元数据、电路设计中的信号名、用户输入或它们的组合来识别协议。对于每个被识别的协议,提供相应的应用程序接口(API)。每个API都被配置为从数据结构中识别用于协议的事务级事件。可以通过例如从API库中获取API来提供用于通信协议的API。对于每个实施协议的通信信道,执行API以在用于通信信道的数据信号中定位事务级事件。
在一些实施例中,调试工具被配置为从一组捕获的数据信号中识别事务级事件。调试工具可以被配置为例如生成和显示波形的图形表达,其中波形具有识别波形中的事务级事件的可视标记,以供用户通过图形用户界面(GUI)窗口进行肉眼检查和/或分析。事务级事件的图示可以帮助用户对波形进行肉眼检查。例如,视觉标记可被添加到通信信道的波形,以识别通过通信信道传输的数据事务的开始和结束点。
在另一个例子中,调试工具可以跟踪跨越了实施不同协议的多个连接的通信信道的数据事务。为了便于参考,跨越实施不同协议的通信信道而传输的数据事务可以被称为异构事务(heterogeneous transaction)。在一些实施例中,调试工具以图形方式识别波形的显示的图形表达中的异构事务。例如,调试工具可以高亮显示与由用户选择的异构事务相对应的所显示的波形的所有部分。可以使用各种过程来追踪异构事务。在一些实施例中,可以基于电路设计中的元数据来追踪异构事务,例如,该元数据指示不同数据信道之间的接口连接。
在一些实施例中,调试工具可以被配置为分析事务级事件,以评估电路设计的运行。例如,调试工具可以被配置为评估被捕获的数据信号中的一个或多个数据信号是否符合一个或多个通信协议。在一些实施例中,调试工具还可以通过GUI窗口生成并显示用于一个或多个电路模块或捕获的数据信号的协议违例的图形指示。例如,所显示的捕获的数据信号的图形表达可以被补充具有用于识别检测到的协议违例的位置和类型的视觉标记。
另外地或可选地,调试工具可以被配置为分析事务级事件和/或数据结构,以评估电路设计的各种性能指标。性能指标可以包括例如延迟、时序余量(timing slack)、功耗、信号抖动、时钟抖动、吞吐量、字节计数(byte count)、数据拍计数(beat count)、空闲周期(idle cycle)、数据传输大小或其组合。
在一些实施例中,调试工具被配置为分析被捕获的数据信号,以评估一个或多个电路模块的各种性能指标。性能指标可以包括例如吞吐量、延迟、时序余量,功耗、信号抖动、时钟抖动、吞吐量、字节计数、数据拍计数、空闲周期、数据传送大小、每秒指令数、每周期指令数、缓存未命中(cache miss)或它们的组合。在一些实施例中,调试工具可以进一步确定指定时间段内的一个或多个性能指标的最小值、最大值、平均值和/或变化率。调试工具可以被配置为显示通信信道的性能指标,该性能指标被显示在GUI窗口中信道的波形的图形表达边上。
在一些实施例中,调试工具提供用于搜索事务级事件的可扩展API。该API的扩展性在于除了一组预设的搜索之外,它还可以被用户调整以执行事务级事件的定制查询。在一些实施例中,调试工具为用户提供GUI窗口以配置可扩展API以用于事务级事件的定制查询。事务级事件的定制查询可以使得用户轻易地搜索事务级事件以用于被测电路设计特别感兴趣的场景。作为说明性的示例,对于实施三重模块冗余(triple modular redundancy,TMR)电路的电路设计,设计者可能希望识别冗余电路产生不同结果的事务。调试工具可以被配置为高亮显示波形的一部分,所述波形的一部分对应于与通过GUI窗口输入的查询相匹配的事务级事件。
在一些实施例中,调试工具可以被配置为从所识别的事务级事件中识别用于一个或多个更高层协议的事务。例如,用于较低层协议的一些数据事务可以对应于由较高层协议执行的较大数据事务。例如,事务级事件可以被分组成事务级事件的子集,例如对应于以太网数据包(Ethernet packet)、视频流的帧(frame of a video stream)和/或CPU调用堆栈(CPU call stack)。
可以使用各种基于硬件或软件的监视接口来捕获被测的电路设计在运行过程中生成的各种信号的波形数据。监视接口可以包括例如由调试工具实施的软件过程,或用于仿真电路设计的可编程IC中包括的监视电路(例如,集成逻辑分析器(integrated logicanalyzer))。在一些实施例中,监视电路可以是在可编程IC中实施或与可编程IC耦接的硬连线电路。在一些其它实施中,监视电路可以与被仿真的一个或多个电路模块一起在电路设计中被实例化,并且一起被实施在可编程IC的可编程资源中。
一些可编程IC可以包括被耦接到一组可编程资源的处理器。可编程资源可以被配置为实施电路设计的硬件部分,并且处理器可以被配置为实施电路设计的软件部分。在一些实施例中,处理器可以被编程为捕获电路设计的一组信号的波形数据。
现在看附图,图1示出了用于调试电路设计的示例过程。在框102中,对电路设计的运行进行模拟和/或仿真。在框104中,在模拟/仿真期间,捕获在电路设计的各个节点处生成的一组数据信号的波形,并将其存储在波形文件106中。在一些实施例中,还可以在框104中获取元数据108。元数据108可以指定例如电路设计的数据信号或电路模块的各种特性。可以例如基于信号和/或电路模块的命名规则(naming convention)、电路模块之间的网络连接(net connection)和/或电路设计中的电路模块的配置设置来获取元数据。在框110中,解析波形文件并生成数据结构以存储该组数据信号中的每一个数据信号的相应波形数据。在框114中,识别通信信道。在框114中,还基于数据结构112、元数据108或它们的组合来为每个通信信道识别事务级事件116。参考图2更详细地讨论通信信道和事务级事件的识别。在框118中,分析事务级事件以在事务级评估电路设计的性能和/或运行。如前所述,分析可以包括例如识别协议违例、跟踪异构事务、评估一个或多个性能指标或者执行事务级事件116的用户指定的查询。
图2示出了用于识别事务级事件的示例过程。在框202中,在由电路设计生成的一组数据信号中识别通信信道。在框204中,识别与通信信道相关联的协议。可以基于例如包括在电路设计中的元数据来识别通信信道和/或协议。例如,数据信号的命名和电路设计的层次结构可以识别通信信道并指示通信信道实施了哪个通信协议。可选地,在一些实施例中,可以不通过电路设计的元数据来识别通信信道和/或协议。例如,电路设计的信道命名和层次结构可以从一组被捕获的波形中推断出来,例如通过使用模式匹配和/或因果分析(pattern matching and/or causation analysis)。
在框206中,对于所识别的协议中的每一个,提供相应的API。API被配置为从数据结构中识别用于特定协议的事务级事件。作为说明性示例,可以基于AXI信号VALID、READY、RLAST和WLAST的值来识别AXI通信信道的数据事务。例如,可以通过对VALID或READY信号的断言来识别AXI数据事务的开始位置。可以通过RLAST信号被断言和清除(asserted andcleared)来识别AXI读事务的结束位置。可以通过WLAST信号被断言然后BRESP被断言来识别AXI写事务的结束位置。可以例如从具有用于多个通信协议的相应的API库中提供通信协议的API。在框208中,使用所提供的API来处理数据结构,以确定所识别的通信信道的事务级事件。
图3示出了基于所识别的事务级事件分析电路设计的示例过程。如前所述,可以分析事务级事件和/或信号数据结构以评估电路设计的性能和/或运行。在该示例中,分析包括一些静态分析过程,它们可以在无需用户交互的情况下在框304、306和308中自动执行。
在框304中,搜索信号数据结构303中的事务级事件302和/或波形数据,以检测一个或多个通信协议的违例。协议违例被检测的方式取决于由每个通信协议规定的数据事务的要求/限制。在一个示例中,AXI协议要求固定突发模式事务(fixed burst modetransaction)的长度不超过16拍。在AXI违例的另一个示例中,当ARVALID信号被断言且ARREADY信号为低电平时,ARADDR、ARBURST、ARCACHE、ARID、ARLEN、ARLOCK、ARPROT、ARSIZE、ARQOS和ARREGION信号必须保持稳定。在一些实施例中,例如可以从具有用于多个通信协议的各组测试标准的库中获取用于检测特定通信协议的违例的标准。
在框306中,跨越不同通信信道追踪异构事务。如前文所述,可以使用各种过程来追踪异构事务。在一些实施例中,可以基于电路设计中的例如指示不同通信信道之间的接口连接的元数据来追踪异构事务。在一些其他实施例中,两个通信信道的命名规则可以指示两个通信信道是相互连接的。
在框308中,评估电路设计的性能指标。如前文所述,性能指标可以包括例如吞吐量、延迟、时序余量、功耗、信号抖动、时钟抖动、字节计数、数据拍计数、空闲周期、数据传送大小、每秒指令数、每周期指令数、缓存未命中或它们的各种组合。可以针对电路设计中的单独的事务、单独的通信信道和/或单独的电路模块来评估性能。另外或可选地,性能指标可以评估事务、通信信道和/或电路模块的组合的性能。例如,一种性能指标可以分析用于异构事务的多个通信信道的该事务的吞吐量,以确定哪个通信信道限制了该事务的整体吞吐量。
在该示例中,还在框310、312和314中执行动态分析。动态分析响应于用户输入而动态地实时配置——从而允许执行用户定制的分析。在框310中,提供GUI窗口。GUI窗口可以被配置为显示模拟数据和/或分析结果,以用于由用户进行肉眼检查和/或调试。例如,如前文所述,调试工具的GUI窗口可以被配置为显示捕获的波形、性能指标、协议违例和/或所识别的异构事务的图形表达。另外,GUI窗口包括用于用户定制查询和/或调试的输入和显示界面。响应于用户通过GUI的输入,该过程执行用户输入所请求的操作,例如在框312和314中所述那样。在该示例中,针对为用户指定的定制搜索查询,在框312中搜索事务级事件和/或信号数据结构。框310中提供的GUI窗口中显示与该搜索查询相匹配的波形部分。如前文所述,事务级事件和/或信号数据结构的用户定制查询可以使得用户容易地识别波形的部分,给部分对应于仅在被测电路设计环境中相关的情况。在该示例中,在框314中还响应于用户输入进行符号调试。符号调试器(symbolic debugger)可以识别例如响应于包括在电路设计中的处理器执行单独的HLL指令而启动的数据事务。
在一些实施例中,可以为多层通信协议识别事务,所述多层通信协议包括例如用于在开放式系统互连(OSI)模型中实施抽象层的通信协议。图4示出了用于识别多层协议的事务的示例过程。在框402中,基于例如参考图2所述的数据结构,识别用于较低层协议的第一组事务。在框404中,基于第一组事务,可以识别用于较高层协议的第二组事务。例如,可以使用用于较低层协议的第一组事务中的多个事务来执行用于较高层协议的事务。可以通过以与参考图2所讨论的方式类似的方式生成协议的API来识别用于较高层协议的事务。在框406中,分析第二组事务。可以如参照图3中的事务级事件的分析中所讨论的那样,分析第二组事务。可以重复该过程,以基于例如第二组事务来识别更高层协议的事务。
图5示出了根据一个或多个实施例的被配置为提供调试工具的示例计算机系统。在该示例中,计算机系统500包括由被耦接到主机总线515的一个或多个处理器505、存储器/储存器布局510、输入设备530、显示设备535和网络适配器545所组成的布局。布局500可以用电路板上的分开的组件来实施,或者可以实施在集成电路内部。当被实施在集成电路内部时,处理器计算设备被称为微控制器。
计算机系统500的架构取决于如本领域技术人员所认识到的实施要求。处理器505可以是一个或多个通用处理器,或者一个或多个通用处理器与合适的协处理器的组合,或者一个或多个专用处理器(例如,RISC、CISC、流水线处理器等)。存储器/储存器布局510通常包括多级高速缓冲存储器和主存储器。存储器/储存器布局510可以包括诸如由磁盘(未示出)、闪存、EPROM或其他非易失性数据储存器提供的本地和/或远程永久储存器。
存储器/储存器设备510包括程序代码565,如上文所述,程序代码565当由处理器505执行时实施调试应用程序555。程序代码565可以通过以下设备存储和提供:各种计算机可读存储介质或传送通道(诸如磁盘或光盘或磁带或光带)、电子储存器设备或通过被耦接到网络适配器545的网络上的应用服务。在操作期间,调试应用程序555将调试数据560(例如波形数据、数据结构和/或事务级事件)存储在存储器/储存器设备510中。可以通过显示设备535来提供如上所述用于调试的GUI窗口。
本领域技术人员将认识到,包括一个或多个处理器和配置有程序代码的存储器布局的各种替代性的计算布局将适用于支持本文公开的过程和数据结构。另外,可以通过各种计算机可读存储介质或诸如磁盘或光盘或磁带的传输通道、电子储存器设备或通过网络的应用服务来提供这些过程。
图6示出了根据一个或多个实施例的具有集成的逻辑分析器电路的示例性可编程IC。可编程IC也可以被称为片上系统(SOC),其包括处理器子系统610和可编程逻辑子系统630。在该示例中,可编程IC还包括具有用于电源和/或安全管理的各种电路的子系统640以及用于与外部电路进行数据通信的输入/输出(I/O)子系统650。子系统610、630、640和650可以使用多个半导体裸片形成,并且如以上示例中所描述的那样互连在IC封装中。
处理子系统610可以被编程为通过执行用户程序来实施电路设计的软件部分。可选地或另外地,程序可以实施一个或多个流量发生器,其被配置为向在可编程资源632中实施的部分电路设计的一个或多个端口产生数据信号。该程序可以被指定为配置数据流的一部分,或者可以是从片上或片外数据存储设备中获取得到。处理子系统610可以包括用于执行一个或多个软件程序的各种电路612、614、616和618。电路612、614、616和618可以包括例如一个或多个处理器核、浮点单元(FPU)、中断处理单元、片上存储器、存储器高速缓存和/或高速缓存一致性互连。
可编程IC 602的可编程逻辑子系统630可以被编程为实施如前文所述的部分电路设计和流量发生电路。例如,可编程逻辑子系统可以包括一些可编程资源632,其可以被编程为实施在配置数据流中指定的一组电路。可编程资源632包括可编程互连电路、可编程逻辑电路和配置存储单元。可编程逻辑使用可编程元件来实施电路设计的逻辑,可编程元件可以包括例如函数发生器、寄存器、算术逻辑等。可编程互连电路可以包括通过可编程互连点(PIP)互连的大量不同长度的互连线。
可编程资源632可通过将配置数据流加载到配置存储单元中来编程,配置存储单元定义了可编程互连电路和可编程逻辑电路如何被配置。然后,单个存储器单元的集体状态确定了可编程资源632的功能。可以从存储器(例如,从外部PROM)读取配置数据或者通过外部设备将配置数据写入到可编程IC 602中。在一些实施例中,可以通过包括在可编程逻辑子系统630中的配置控制器634将配置数据加载到配置存储器单元中。在一些其他实施例中,可以通过由处理器子系统610执行的启动过程将配置数据加载到配置存储器单元中。
可编程IC 602可以包括用于将处理子系统610与可编程逻辑子系统630内实施的电路互连的各种电路。在该示例中,可编程IC 602包括核心交换机626,其可以在处理子系统610和可编程逻辑子系统630的各个数据端口之间路由数据信号。核心交换机626还可以在可编程逻辑子系统630或可编程处理子系统610中的任意一个与可编程IC的各种其他电路(诸如内部数据总线)之间路由数据信号。可选地或另外地,处理子系统610可以包括用于与可编程逻辑子系统直接连接的接口连接的接口——旁路核心开关626。例如,可以使用由ARM发布的AMBA AXI协议规范(AXI)来实施这样的接口。
在一些实施例中,处理子系统610和可编程逻辑子系统630还可以通过存储器控制器621对片上存储器622或片外存储器(未示出)的存储器位置读或写。存储器控制器621可以被实施为与一种或多种不同类型的存储器电路进行通信,所述存储器电路包括但不限于双倍数据速率(DDR)2、DDR3、低功耗(LP)DDR2类型的存储器,不管是16位、32位还是具有ECC的16位等等。存储器控制器621能够与之通信的不同存储器类型的列表仅以说明的目的而被提供,而并不意图作为限制或是穷尽。如图6所示,可编程IC 602可包括存储器管理单元620和转换后备缓冲器(translation look-aside buffer)624以将子系统610和630所使用的虚拟存储器地址转换成存储器控制器621所使用以访问特定存储器位置的物理存储器地址。
在这个示例中,可编程IC包括用于与外部电路进行数据通信的I/O子系统650。I/O子系统650可以包括各种类型的I/O设备或接口,包括例如闪存型I/O设备、高性能I/O设备、低性能接口、调试I/O设备和/或RAM I/O设备。
I/O子系统650可以包括以660A和660B所示的一个或多个闪存接口660。例如,闪存接口660中的一个或多个接口可被实施为被配置用于4位通信的四串行外围接口(Quad-Serial Peripheral Interface,QSPI)。闪存接口660中的一个或多个闪存接口可以被实施为并行8位NOR/SRAM类型的接口。闪存接口660中的一个或多个闪存接口可以被实施为被配置用于8位和/或16位通信的NAND接口。应当理解的是,所描述的具体接口是为了说明而不是限制的目的而提供的。可以使用具有不同位宽的其他接口。
I/O子系统650可以包括提供比闪存接口660更高性能的一个或多个接口662。接口662A-662C中的每一个接口可以分别被耦接到DMA控制器664A-664C。例如,接口662中的一个或多个接口可以被实施为通用串行总线(USB)类型的接口。接口662中的一个或多个接口可以被实施为千兆位以太网类型的接口。接口662中的一个或多个接口可以被实施为安全数字(SD)类型的接口。接口662中的一个或多个接口可以被实施为PCIe接口。
I/O子系统650还可以包括一个或多个接口666,例如接口666A-666D,其提供比接口662更低的性能。例如,接口666中的一个或多个接口可以被实施为通用I/O(GPIO)类型的接口。接口666中的一个或多个接口可以被实施为通用异步接收器/发送器(UniversalAsynchronous Receiver/Transmitter,UART)类型的接口。接口666中的一个或多个接口可以被实施为串行外围接口(SPI)总线类型的接口的形式。接口666中的一个或多个接口可以被实施为控制器区域网络(CAN)类型的接口和/或I2C类型的接口的形式。接口666中的一个或多个接口也可以被实施为三重计时器计数器(TTC)和/或监视计时器(WDT)类型的接口的形式。
I/O子系统650可以包括一个或多个调试接口668,例如处理器JTAG(PJTAG)接口668A和追踪接口668B。PJTAG接口668A可以为可编程IC 602提供外部调试接口。追踪接口668B可以提供端口以从处理子系统610或可编程逻辑子系统630中接收调试(例如跟踪)信息。
如图所示,接口660、662、666和668中的每一个接口都可以被耦接到多路选择器670。多路选择器670提供可以被直接路由或耦接到可编程IC 602的外部引脚的多个输出,例如,其中放置有可编程IC 602的封装的焊球。例如,可编程IC 602的I/O引脚可以在接口660、662、666和668之间共享。用户可以通过配置数据流来配置多路选择器670以选择要使用接口660-668中的哪个并将选定的接口通过多路选择器670耦接到可编程IC 602的I/O引脚。I/O子系统650还可以包括构造多路选择器I/O(FMIO)接口,以将接口662-668连接到可编程逻辑子系统的可编程逻辑电路。另外地或可选地,可编程逻辑子系统630可以被配置为在可编程逻辑内实施一个或多个I/O电路。在该示例中,可编程IC 602包括具有用于电源和/或安全管理的各种电路的子系统640。例如,子系统640可以包括电源管理单元646,电源管理单元646被配置为监测和保持用于给可编程IC 602的各种子系统供电的一个或多个电压域。在一些实施例中,电源管理单元646可以在个别子系统空闲时禁用其电源,以降低功耗,而不需要禁用正在使用的子系统的电源。
子系统640还可以包括安全电路以监测子系统的状态以确保其正确运行。例如,子系统640可以包括被配置为监测各种子系统的状态(例如,如状态寄存器644所示)的一个或多个实时处理器642。实时处理器642可以被配置为响应于检测到错误而执行多个任务。例如,对于一些错误,实时处理器642可以响应于检测到错误而产生警告。在另一个示例中,实时处理器642可以复位子系统以尝试恢复子系统以使其正确运行。子系统640包括可用于互连各种子系统的交换机网络648。例如,交换机网络648可以被配置为将各种子系统610、630和640连接到I/O子系统650的各种接口。在一些应用中,交换机网络648还可以用于将实时处理器642与要被监测的子系统进行隔离。某些应用标准(例如,IEC-61508SIL3或ISO-26262标准)可能需要这种隔离,以确保实时处理器642不受到其他子系统中发生的错误的影响。
集成逻辑分析器电路680被配置为探测包括在或被连接在可编程IC 602中的一个或多个子系统610、630、640或650之间的数据总线的数据。在一些实施例中,在数据总线上传输的信号的采样可以经由通过交换机648的信号路径682被提供给集成逻辑分析器电路680。另外地或可选地,集成逻辑分析器电路680可以通过专用信号线(未示出)接收在数据总线上传输的信号的采样。集成逻辑分析器电路680可以通过诸如JTAG接口668的I/O子系统650中的一个或多个通信电路接收测试数据输入或调试控制信号并输出采样数据信号。在一些实施例中,集成逻辑分析器电路680经由通过交换机648的信号路径被耦接到I/O子系统650中的通信电路。可选地或另外地,集成逻辑分析器电路680可以通过专用信号线(例如,虚线信号线684)被直接耦接到I/O子系统650中的通信电路。
所公开的方法和电路被认为适用于各种系统和应用。通过参考说明书,其他方面和特征对于本领域技术人员来说将是显而易见的。尽管在某些情况下可以在个别附图中描述各方面和特征,但是应该理解,可以将一个图中的特征与另一个图中的特征进行组合,即使这种组合并未被明确示出或被明确描述为组合。所公开的各种过程和电路可以被实施为被配置为执行软件的一个或多个处理器,如专用集成电路(ASIC),或者如可编程逻辑器件上的逻辑。说明书和附图仅意在作为示例,本发明的真实范围由所附权利要求书指出。
Claims (12)
1.一种方法,其特征在于,所述方法包括:
捕获由模拟电路设计或仿真所述电路设计而产生的一组信号的波形数据;
为所述一组信号在计算机系统的存储器电路中生成数据结构,并将所述一组信号的波形数据存储在所述数据结构中;
基于包括在所述电路设计中的元数据,通过所述计算机系统的处理器电路识别与所述一组信号相关联的通信信道;
分析存储在所述数据结构中的波形数据以定位用于一个或多个通信信道的一组事务级事件;
输出指示所述一组事务级事件的位置的数据;
基于所述一组事务级事件,确定所述电路设计中的多个电路模块的一组性能指标,其中所述一组性能指标包括延迟、时序余量、功耗、信号抖动、吞吐量、数据传输大小或它们的组合;以及
通过用户界面显示所述多个电路模块的所述一组性能指标。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:提供可扩展应用程序接口API,所述API被配置成:针对用户查询所指定的一组标准来搜索所述一组事务级事件。
3.根据权利要求2所述的方法,其特征在于,所述方法进一步包括:响应于经由用户接口输入的用户查询,使用所述可扩展API,基于所述数据结构识别所述一组信号中与由所述用户查询指定的一组标准相匹配的部分。
4.根据权利要求1所述的方法,其特征在于,所述分析存储在所述数据结构中的波形数据以定位用于一个或多个通信信道的一组事务级事件包括:
基于包括在所述电路设计中的元数据、所述电路设计中的信号名称或它们的组合来识别由被识别的通信信道实施的协议;
为被识别的协议提供应用程序接口API,所述API被配置以从所述一组信号的数据结构中识别出用于所述协议的事务级事件;以及
为实施被识别的协议中的一个协议的通信信道,执行为所述协议提供的API以确定用于所述通信信道的事务级事件。
5.根据权利要求4所述的方法,其特征在于,为所述协议提供所述API包括从API库中为所述协议获取所述API。
6.根据权利要求4所述的方法,其特征在于:
所述通信信道中的至少一个通信信道与所述一组信号中的多个信号相关联;以及
用于所述通信信道的所述事务级事件包括数据事务,由包括在所述电路设计中的处理器执行的程序指令,或它们的组合。
7.根据权利要求4所述的方法,其特征在于,所述方法还包括:对于所述被识别的事务中的至少一个事务,穿过所述通信信道中的两个通信信道之间的接口来追踪所述至少一个事务,所述通信信道实施所述被识别的协议中不同协议;其中对所述至少一个事务的跟踪是基于所述电路设计中的元数据来执行的。
8.根据权利要求1所述的方法,其特征在于:
对于至少一个通信信道,为所述通信信道而确定的所述事务级事件包括第一协议的第一组事务;以及
所述方法进一步包括:从所述第一组事务中识别第二协议的第二组事务,其中与所述第一协议相比,所述第二协议是更高级的协议。
9.根据权利要求8所述的方法,其特征在于,所述第二协议被配置用于视频帧、网络数据包或者CPU指令的通信。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括,对于至少一个性能指标,确定在用户指定的时间段内的所述性能指标的最小值、最大值和平均值。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括在图形用户界面GUI窗口中显示:
所述一组信号的波形图形表达;
识别所述波形中所述事务级事件的可视标记;以及
标识一个或多个检测到的协议违例的位置和类型的可视标记。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
配置可编程集成电路IC的可编程资源以实施所述电路设计;以及
使用所述可编程IC上的集成逻辑分析器,捕获所述波形数据并将所述波形数据传送给所述计算机系统。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/924,090 | 2015-10-27 | ||
US14/924,090 US9678150B2 (en) | 2015-10-27 | 2015-10-27 | Methods and circuits for debugging circuit designs |
PCT/US2016/051103 WO2017074568A1 (en) | 2015-10-27 | 2016-09-09 | Methods and circuits for debugging circuit designs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108351907A CN108351907A (zh) | 2018-07-31 |
CN108351907B true CN108351907B (zh) | 2022-04-01 |
Family
ID=57047289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680062228.0A Active CN108351907B (zh) | 2015-10-27 | 2016-09-09 | 用于调试电路设计的方法和电路 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9678150B2 (zh) |
EP (1) | EP3369015B1 (zh) |
JP (1) | JP6653756B2 (zh) |
KR (1) | KR102596638B1 (zh) |
CN (1) | CN108351907B (zh) |
WO (1) | WO2017074568A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10031834B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US10474515B2 (en) * | 2017-05-10 | 2019-11-12 | Intel IP Corporation | Debugging translation block and debugging architecture |
US10740186B2 (en) * | 2017-05-15 | 2020-08-11 | The Boeing Company | High data integrity processing system |
US10816600B1 (en) * | 2017-11-28 | 2020-10-27 | Xilinx, Inc. | Protocol analysis and visualization during simulation |
US11556162B2 (en) * | 2018-03-16 | 2023-01-17 | Advanced Micro Devices, Inc. | Per-instruction energy debugging using instruction sampling hardware |
US11042564B1 (en) * | 2018-09-27 | 2021-06-22 | Xilinx, Inc. | Transaction associations in waveform displays |
US11475191B2 (en) * | 2019-05-15 | 2022-10-18 | International Business Machines Corporation | Generating and adding additional control information to logic under test to facilitate debugging and comprehension of a simulation |
US11302412B2 (en) * | 2019-06-03 | 2022-04-12 | Advantest Corporation | Systems and methods for simulated device testing using a memory-based communication protocol |
CN112257360B (zh) * | 2020-10-21 | 2024-04-16 | 海光信息技术股份有限公司 | 用于数据波形的调试方法、装置、调试系统以及存储介质 |
CN112379658A (zh) * | 2020-11-10 | 2021-02-19 | 华东师范大学 | 一种片上can控制器调试系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101029918A (zh) * | 2007-01-23 | 2007-09-05 | 北京芯技佳易微电子科技有限公司 | 一种基于可编程器件的可控集成电路测试系统及方法 |
CN101320065A (zh) * | 2008-07-22 | 2008-12-10 | 中国科学院长春光学精密机械与物理研究所 | 航天光学遥感器成像电路的仿真测试方法 |
CN102361449A (zh) * | 2004-05-19 | 2012-02-22 | 阿尔特拉公司 | 用于调整集成电路性能的设备和方法 |
CN102687123A (zh) * | 2009-11-10 | 2012-09-19 | 飞思卡尔半导体公司 | 高级通信控制器单元和用于记录协议事件的方法 |
CN104541451A (zh) * | 2012-09-25 | 2015-04-22 | 英特尔公司 | 脉冲宽度调制接收器电路 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7283944B2 (en) * | 2003-12-15 | 2007-10-16 | Springsoft, Inc. | Circuit simulation bus transaction analysis |
US20110289373A1 (en) * | 2007-01-31 | 2011-11-24 | Klein Russell A | Electornic Design Emulation Display Tool |
US8032329B2 (en) * | 2008-09-04 | 2011-10-04 | Sonics, Inc. | Method and system to monitor, debug, and analyze performance of an electronic design |
CN103748562B (zh) * | 2010-12-23 | 2019-03-29 | 英特尔公司 | 测试、验证和调试架构 |
US9135213B2 (en) * | 2011-01-13 | 2015-09-15 | Xilinx, Inc. | Extending a processor system within an integrated circuit and offloading processes to process-specific circuits |
US10776233B2 (en) * | 2011-10-28 | 2020-09-15 | Teradyne, Inc. | Programmable test instrument |
US8533655B1 (en) * | 2011-11-15 | 2013-09-10 | Xilinx, Inc. | Method and apparatus for capturing data samples with test circuitry |
US9582625B2 (en) * | 2012-06-22 | 2017-02-28 | Mentor Graphics Corporation | Test bench transaction synchronization in a debugging environment |
US20150091907A1 (en) * | 2013-09-27 | 2015-04-02 | Byte Paradigm Sprl | Method and system for storing waveform data |
-
2015
- 2015-10-27 US US14/924,090 patent/US9678150B2/en active Active
-
2016
- 2016-09-09 JP JP2018521372A patent/JP6653756B2/ja active Active
- 2016-09-09 EP EP16775370.6A patent/EP3369015B1/en active Active
- 2016-09-09 CN CN201680062228.0A patent/CN108351907B/zh active Active
- 2016-09-09 KR KR1020187011243A patent/KR102596638B1/ko active IP Right Grant
- 2016-09-09 WO PCT/US2016/051103 patent/WO2017074568A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102361449A (zh) * | 2004-05-19 | 2012-02-22 | 阿尔特拉公司 | 用于调整集成电路性能的设备和方法 |
CN101029918A (zh) * | 2007-01-23 | 2007-09-05 | 北京芯技佳易微电子科技有限公司 | 一种基于可编程器件的可控集成电路测试系统及方法 |
CN101320065A (zh) * | 2008-07-22 | 2008-12-10 | 中国科学院长春光学精密机械与物理研究所 | 航天光学遥感器成像电路的仿真测试方法 |
CN102687123A (zh) * | 2009-11-10 | 2012-09-19 | 飞思卡尔半导体公司 | 高级通信控制器单元和用于记录协议事件的方法 |
CN104541451A (zh) * | 2012-09-25 | 2015-04-22 | 英特尔公司 | 脉冲宽度调制接收器电路 |
Also Published As
Publication number | Publication date |
---|---|
US9678150B2 (en) | 2017-06-13 |
JP6653756B2 (ja) | 2020-02-26 |
EP3369015A1 (en) | 2018-09-05 |
CN108351907A (zh) | 2018-07-31 |
US20170115348A1 (en) | 2017-04-27 |
JP2018537762A (ja) | 2018-12-20 |
WO2017074568A1 (en) | 2017-05-04 |
KR20180072700A (ko) | 2018-06-29 |
EP3369015B1 (en) | 2021-03-03 |
KR102596638B1 (ko) | 2023-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351907B (zh) | 用于调试电路设计的方法和电路 | |
CN111931445B (zh) | 用于调试逻辑系统设计的方法、仿真器及存储介质 | |
US20170140082A1 (en) | Target Capture And Replay In Emulation | |
US10078113B1 (en) | Methods and circuits for debugging data bus communications | |
US20110078350A1 (en) | Method for generating multiple serial bus chip selects using single chip select signal and modulation of clock signal frequency | |
US20120151263A1 (en) | Debug state machines and methods of their operation | |
US9977758B1 (en) | Device profiling for tuning OpenCL applications on programmable integrated circuits | |
US8683265B2 (en) | Debug state machine cross triggering | |
US20120150474A1 (en) | Debug state machine cross triggering | |
CN115146568B (zh) | 一种基于uvm的芯片验证系统及验证方法 | |
US10073933B2 (en) | Automatic generation of properties to assist hardware emulation | |
US7373619B2 (en) | Post-silicon test coverage verification | |
US10664563B2 (en) | Concurrent testbench and software driven verification | |
López-Paradís et al. | Gem5+ rtl: A framework to enable rtl models inside a full-system simulator | |
US10664637B2 (en) | Testbench restoration based on capture and replay | |
DeOrio et al. | Bridging pre-and post-silicon debugging with BiPeD | |
CN117076337B (zh) | 一种数据传输方法、装置、电子设备及可读存储介质 | |
Lei et al. | Validating direct memory access interfaces with conformance checking | |
US9581643B1 (en) | Methods and circuits for testing partial circuit designs | |
US9864830B1 (en) | Method and apparatus for placement and routing of circuit designs | |
US9946624B1 (en) | Systems and methods to capture data signals from a dynamic circuit | |
JP2001249823A (ja) | マイクロコンピュータ開発支援装置 | |
Forbes et al. | Experiences with two fabscalar-based chips | |
US11295052B1 (en) | Time correlation in hybrid emulation system | |
Du et al. | FPGA-controlled PCBA power-on self-test using processor's debug features |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |