CN115298664A - 用于捕获硬件仿真数据的系统和方法 - Google Patents

用于捕获硬件仿真数据的系统和方法 Download PDF

Info

Publication number
CN115298664A
CN115298664A CN202180023249.2A CN202180023249A CN115298664A CN 115298664 A CN115298664 A CN 115298664A CN 202180023249 A CN202180023249 A CN 202180023249A CN 115298664 A CN115298664 A CN 115298664A
Authority
CN
China
Prior art keywords
data
register
simulation
stored
bits
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.)
Pending
Application number
CN202180023249.2A
Other languages
English (en)
Inventor
B·艾尔姆弗蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Synopsys Inc
Original Assignee
Synopsys Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Synopsys Inc filed Critical Synopsys Inc
Publication of CN115298664A publication Critical patent/CN115298664A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/333Design for testability [DFT], e.g. scan chain or built-in self-test [BIST]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

一种在由硬件仿真系统进行的电路设计的验证期间存储数据的方法,部分地包括:每N个仿真时钟周期接收一次寄存器数据的P个集合,每个集合包括与电路设计相关联的M个寄存器位。在捕获时钟的M个周期期间,将每个集合中的M个寄存器位存储在P个移位寄存器中。所存储的位在捕获时钟的M*P个周期期间被移出,其中(M+1)*P小于或等于N。

Description

用于捕获硬件仿真数据的系统和方法
相关申请
本申请依据35USC 119(e),要求于2020年01月31日提交的、题目为“DetectingTiming Violations In Emulation Using FPGA Reprogramming”的美国申请序列号62/968546的权益,其内容通过引用以其整体并入本文。
技术领域
本公开涉及硬件仿真系统,并且更具体地,涉及在这种系统中的数据存储。
背景技术
硬件仿真系统适于通过对布置在仿真系统中的可编程器件进行编程形成电路的仿真模型,来调试和验证被设计的电路的功能。仿真模型表示被设计的电路,并且通常以硬件描述语言(例如Verilog)进行描述,硬件描述语言被编译成仿真系统使用的格式。
硬件仿真系统包括多个硬件组件和软件组件,它们共同定义仿真模型的行为和被验证和/或设计的电路。硬件仿真系统的一种实现使用诸如现场可编程门阵列(FPGA)的可配置硬件。FPGA是一种集成电路,被设计为在其制造之后并且在现场由设计者进行编程。FPGA包含可编程逻辑块的阵列、存储器块以及可重配置互连的层级结构,这使得能够实现正在开发的设计。
在仿真系统中,用户对执行两个基本动作感兴趣,即(i)在设备硬件实现可用或完成之前运行设计,以及(ii)获取关于设计的信息以确定设计是否按预期操作并且符合所需的规格,诸如功率和速度。
获得关于设计的信息的关键要求是探测设计信号的能力。探测涉及在仿真系统运行时收集部分设计信号或全部设计信号的状态,并且以相对容易解释的格式(诸如波形集合)将它们呈现给用户。
发明内容
根据本公开的一个实施例,一种在由硬件仿真系统进行的电路设计的验证期间存储数据的方法部分地包括:每N个仿真时钟周期接收一次寄存器数据的P个集合,每个集合包括与电路设计相关联的M个寄存器位。方法还部分地包括:在捕获时钟的M个周期期间,将每个集合中的M个寄存器位存储在P个移位寄存器中;以及在捕获时钟的M*P个周期期间移出所存储的位,其中(M+1)*P小于或等于N。
根据本公开的一个实施例,一种非暂态计算机可读介质包括存储的指令,指令在由处理器执行时,使处理器每N个仿真时钟周期接收一次寄存器数据的P个集合,每个集合包括与电路设计相关联的M个寄存器位。指令还使处理器在捕获时钟的M个周期期间将每个集合中的M个寄存器位存储在P个移位寄存器中。指令还使处理器在捕获时钟的M*P个周期期间移出所存储的位,其中(M+1)*P小于或等于N。
根据本公开的一个实施例,一种电路部分地包括P个移位寄存器,每个移位寄存器被配置为:每N个仿真时钟周期接收一次寄存器数据的P个集合,每个集合包括M个寄存器位。P个移位寄存器中的每个移位寄存器还被配置为:在捕获时钟的M个周期期间存储M个寄存器位,并且在捕获时钟的M*P个周期期间移出所存储的位,其中(M+1)*P小于或等于N。
附图说明
从下面给出的详细描述并且从本公开实施例的附图,将更充分地理解本公开。附图用于提供本公开的实施例的知识和对本公开的实施例的理解,并且不将本公开的范围限制于这些特定实施例。此外,附图不一定按比例绘制。
图1示出了根据本公开的一个实施例的被捕获的快照数据以及初级数据。
图2是根据本公开的一个实施例的用于数据捕获和重建的流程图。
图3是根据本公开的一个方面的快照捕获逻辑的示例的简化框图。
图4是根据本公开的一个实施例的基于快照的记录引擎的简化高级框图。
图5是根据本公开的另一个实施例的快照捕获逻辑的简化框图。
图6是根据本公开的一个实施例的图4的数据收集和控制逻辑的框图。
图7示出了根据本公开的一些实施例的在集成电路的设计和制造期间使用的各种过程的流程图。
图8示出了根据本公开的一些实施例的仿真系统的一个示例的图。
图9示出了本公开的实施例可以在其中操作的计算机系统的一个示例的抽象图。
具体实施方式
基于FPGA的仿真平台通常包括数据捕获块和/或知识产权(IP)块,这些块用于捕获关于正在进行仿真的设计的信息并且将该信息呈现给用户。但是,这种IP的能力有限。通常存在两种类型的IP,即快速捕获和慢速捕获。快速捕获IP不影响设计性能,但通常在其性能降级之前在它们可以捕获的信号数目方面受到限制。慢速捕获IPS可以捕获设计中的所有信号,从而导致仿真设计运行较慢。
信号捕获不应当引起时钟抖动,时钟抖动发生在为了捕获数据而停止和启动设计时钟的系统中。例如,当数据捕获IP不能在一个仿真时钟周期内存储所有捕获的数据时,可能发生抖动。
一种用于执行信号捕获的方法是基于扫描链,其中扫描元件使用寄存器以及馈送寄存器的输入的2输入多路复用器(mux)。多路复用器和寄存器对被配置在链中,其中每个寄存器的输出被施加到下一个寄存器(即,扫描链中的下一个元件)的多路复用器的输入。每个多路复用器的其他输入由寄存器或被捕获的设计信号驱动。
当前基于扫描的信号捕获技术较慢,这是因为将数据移出扫描链所花费的时间可能相对较长。鉴于现代FPGA可能包含数百万个逻辑元件和寄存器,在每个时钟周期复制和移出所有数据可能使仿真系统的性能严重降级。
根据本公开的一个实施例的信号捕获方法和系统是快速的并且不会减慢仿真速度。在一个实施例中,可以捕获设计中的所有信号,从而提供对所有设计块的覆盖,而不施加不必要的先决条件或限制。在另一个实施例中,可以捕获较小的数据集合以减少将数据移出扫描链所花费的时间。一阶归约通过仅捕获寄存器输出来实现。然后可以使用软件工具,根据寄存器的输出重建/重新计算组合的逻辑信号输出。
根据一个实施例,通过使用比仿真时钟快的时钟移出数据来减少信号捕获时间。例如,如果仿真时钟周期频率为N,并且施加到扫描链的时钟频率(在本文中也被称为捕获时钟)为100*N,则可以在每个仿真时钟周期中移出100位数据,而不会不利地影响仿真速度。
为了避免使仿真时钟频率降级,同时便于需要被移出的相对大量的位,根据本公开的一个实施例,可以在多个仿真时钟周期上移出数据。在一个实施例中,与设计相关联的寄存器值(在本文中也被称为快照数据)每N个仿真时钟周期被捕获一次。在每N个仿真时钟周期的一个或多个周期期间,捕获与设计相关联的初级(primary)输入(PI)数据,诸如从与DUT通信的外部源或软件块接收的输入。
如下文进一步描述的,在设计的硬件仿真期间,快照数据以及PI数据被捕获并且被存储在存储介质中。存储的数据随后由软件仿真工具处理,以用于以波形或其他格式呈现给用户,如下面参考图2所描述的。为了处理存储的数据,软件仿真工具(在本文中也被称为软件仿真器)仿真由硬件仿真所仿真的设计副本。此外,作为硬件仿真器与软件仿真器之间握手的一部分,存储在存储介质中的数据符合由软件仿真器可以理解和识别的预定义协议和格式,以使软件仿真器能够正确地标识其数据被存储的每个信号。例如,存储介质中存储信号的地址可以由软件仿真器使用来正确地标识该信号。在另一个实施例中,信号名称可以被软件仿真器用作信号的标识符。软件仿真器使用从存储介质取回的数据来对设计进行仿真,以重建与所有中间周期相关联的数据,如下文进一步描述的。
图1示出了每N个仿真时钟周期(例如,周期0、周期N…)捕获一次的快照数据80、8N…,并且示出了在每个仿真时钟周期期间由硬件仿真工具捕获的PI数据90、91…9N。尽管图1示出了在每个仿真周期期间捕获PI数据,但是应当理解,在其他实施例中,可以仅在每N个仿真周期的子集期间捕获PI数据。如上所述,根据本公开的一个方面,可以由软件仿真器工具重建(计算)所有N个周期的设计中每个信号的值,以便生成连续波形。
图2是根据本公开的一个实施例的与由软件仿真工具进行的数据捕获和重建相关联的流程图50。在10处,由硬件仿真工具捕获与仿真周期N相关联的快照数据。在12处,由硬件仿真工具捕获与周期N相关联的PI数据。在14处,由执行被硬件仿真的电路的逻辑仿真的软件仿真工具根据PI和快照数据,来计算/构造周期N组合的逻辑值。然后在16处,使用如此计算的组合的逻辑值来确定所有周期N+1寄存器值。对于每个寄存器,寄存器的周期N+1输出值与到寄存器的周期N输入值相同。在周期N中,到每个寄存器的输入值由连接到寄存器的输入端子的组合的逻辑确定。软件仿真工具计算施加到每个寄存器的输入端子的组合的逻辑的输出值。
在35处,使用在14处计算的组合的逻辑值和在16处确定的寄存器值来显示波形。然后,数据捕获过程以类似方式继续,其中与仿真周期N+1相关联的所计算/重建的寄存器数据在20处被接收,并且在22处与捕获的周期N+1PI数据组合,以在24处重建/计算周期N+1组合的逻辑值。在26处,确定与周期N+2相关联的寄存器值。在35处,使用在24处计算的组合的逻辑值以及在26处确定的寄存器值来显示波形。类似地,与仿真周期N+2相关联的快照数据在30处被接收,并且在32处与接收的周期N+2PI数据组合,以在34处重建周期N+2组合的逻辑值。在36处,确定与周期N+2相关联的寄存器值。在35处,使用在34处计算的组合的逻辑值以及在36处确定的寄存器值来显示波形。然后,在后续的周期中重复该过程,直到在周期2N处捕获下一个快照数据。被称为VCS的EDA软件工具(可从加利福尼亚州山景城的Synopsys公司购买)可以用于在14、24和34处重建/计算组合的逻辑值。
图3是根据本公开的一个方面的快照捕获和传出逻辑45(在下文中备选地被称为快照捕获逻辑)的一个示例的简化框图。快照捕获逻辑45被示为分别在捕获多路复用器50和60处并行接收32位寄存器数据46和48。尽管快照捕获逻辑45被示为从一对寄存器接收数据,该对寄存器将它们的数据提供给多路复用器50和60,但是应当理解,在其他实施例中,可以由快照捕获逻辑并行接收来自任意数目的寄存器的数据。此外,虽然快照捕获逻辑45被示为被配置为接收和存储32位数据,但应当理解,在其他实施例中,快照捕获逻辑45可以被配置为接收具有任何位数目(16、32、64或其他)的数据。
快照捕获逻辑45还被示为部分地包括捕获控制逻辑40、链式多路复用器70、80,以及32位移位寄存器100、105。在捕获/复制模式期间,响应于捕获时钟的转换,移位寄存器100、105存储传入的数据。在传出模式期间,使用捕获时钟,将存储在移位寄存器100、105中的数据串行地移出并且一次移出一位,这也在下文进一步描述。
在捕获模式中时,在捕获时钟的每个周期期间,从捕获多路复用器50和链式多路复用器70递送32位数据46的一位,并且将其存储在移位寄存器100中。因此,在捕获时钟的32个周期之后,数据46的所有32位都被存储在移位寄存器100中。以类似的方式,在捕获时钟的32个周期之后,数据48的所有32位都被存储在移位寄存器105中。
在传出模式期间,存储在移位寄存器100、105中的数据被串行移位并且被存储在存储器108中。如图3中所示,移位寄存器100的输出经由链式多路复用器80耦合到移位寄存器105的输入,以形成扫描链。因此,在64个捕获时钟周期之后,存储在移位寄存器100和105中的64位数据被传输,并且被存储在下面描述的数据收集和控制逻辑中。因此,如果在一个仿真周期中有32个捕获时钟周期,则需要一个仿真周期来存储移位寄存器100、105中的寄存器数据,并且需要两个仿真周期来传输存储在移位寄存器100、105中的数据。因此,根据本公开的一个方面,存储在快照捕获逻辑的移位寄存器中的数据在多个仿真周期上被存储和传出,以使寄存器输出数据的传输速度与存储设备(诸如存储器设备)的速度相匹配,从而有利地放宽数据传输要求。在一个实施例中,扫描链长度可以动态地变化。
图4是根据本公开的一个实施例的硬件仿真数据捕获逻辑75的简化高级框图。快照捕获逻辑45被配置为捕获寄存器数据并且串行传出所存储的数据,如上面参考图2和图4详细描述的。由数据收集和控制逻辑160接收由快照捕获逻辑45传输的数据。
初级输入捕获逻辑120被配置为:在每个仿真时钟周期期间捕获初级输入数据,如上面参考图1所描述的,并且将捕获的数据传输到数据收集和控制逻辑160。在一个实施例中,初级输入捕获逻辑120可以使用类似于图3中所示的逻辑块。然而,可能需要相对较短的扫描寄存器链来捕获和传输所捕获的初级。在另一个实施例中,耦合到存储器的多路复用器集合可以用于存储和传出初级数据。
数据收集和控制逻辑160被配置为:将从快照控制逻辑45和初级输入控制逻辑120接收的数据组合,并且将组合的数据传输到数据控制逻辑170。信号事件(被施加到数据收集和控制逻辑160)指示递送给数据收集和控制逻辑160的数据是否使用户感兴趣。数据存储控制逻辑170被配置为将从数据收集和控制逻辑160接收的数据格式化并且存储在存储器180中。存储器180可以是本地存储器,或者是布置在另一个存储硬件上的远程存储器。存储器180可以是双端口存储器,以使能来自第一端口的数据的存储,并且使能从第二端口对数据进行的同时取回。
图5是根据本公开的另一个实施例的快照捕获逻辑45的简化逻辑框图。DUT 300被示为向快照捕获逻辑45提供S组寄存器数据2801…280(S-1)、280S。S组寄存器数据中的每组寄存器数据被示为包括3个寄存器数据集合,每个集合具有M位。例如,数据组2801被示为包括寄存器数据集合28011、28012和28013。类似地,数据组280S被示为包括寄存器数据集合280S1、280S2和280S3。如上所述,每个寄存器数据集合28011、28012、28013…280(S-1)1、280(S-1)2、280(S-1)3、280S1、280S2、280S3被示为包括M位。
快照捕获逻辑45被示为部分地包括S个寄存器组,即寄存器组2001…200(S-1)、200S,每个寄存器组具有3个M位寄存器集合,3个M位寄存器集合被配置为形成扫描链。例如,寄存器组2001被示为包括3个M位寄存器集合26011、26012和26013。同样,寄存器组200S被示为包括3个M位寄存器集合260S1、260S2和260S3。寄存器集合26011被示为包括寄存器2021…202M,并且寄存器集合26013被示为包括寄存器2061…206M。以类似的方式,寄存器集合260S1被示为包括寄存器2141…214M,并且寄存器集合260S3被示为包括寄存器2181…218M。每个寄存器集合被示为被配置为移位寄存器。
如上所述,寄存器集合26011、26012和26013共同形成寄存器组2001,并且寄存器集合260S1、260S2和260S3共同形成寄存器组200S。来自每个寄存器组的数据被示为被递送到数据收集和控制逻辑160。例如,寄存器组2601被示为将数据2751递送到数据收集和控制逻辑160,并且寄存器组260S被示为将数据275S递送到数据收集和控制逻辑160。所有寄存器集合中的寄存器由以比仿真时钟更高的频率操作的捕获时钟驱动。
如上所述,在每个捕获时钟周期期间,来自每个数据集合中的数据的一位被递送并且被存储在相关联的寄存器集合中。因此,例如,在每个捕获时钟周期期间,数据集合28011的一位被存储在寄存器集合26011中,数据集合28012的一位被存储在寄存器集合26012中,数据集合280S1的一位被存储在寄存器集合260S1中;并且数据集合280S3的一位被存储在寄存器集合260S3中。换句话说,每个数据集合被并行加载到其相关联的寄存器集合中。因此,在捕获时钟的M个周期之后,数据组2801…280(S-1)和280S中的所有3*M*S个数据位被加载,并且被存储在布置于捕获控制逻辑45中的寄存器中。因为每个寄存器组中的寄存器被配置作为移位寄存器,因此在捕获时钟的另外3*M个周期之后,存储在捕获控制逻辑45中的所有数据位经由输出数据2751…275(S-1)和275S被传输到数据收集和控制逻辑160。因此,对于图5中所示的示例,如果捕获时钟被配置为具有4M倍于仿真/DUT周期频率的频率,则在每个仿真周期期间,来自所有数据组的数据可以被并行加载到捕获控制逻辑45,并且被串行移出到数据收集和控制逻辑160。
每个寄存器集合相关联的是捕获多路复用器和链式多路复用器,经由捕获多路复用器和链式多路复用器接收来自相关联数据集合中的数据。例如,来自数据集合28011的数据经由捕获多路复用器26511和链式多路复用器27511被递送到寄存器集合26011。类似地,例如,来自数据集合280S3的数据经由捕获多路复用器265S3和链式多路复用器275S3被递送到寄存器集合260S3
快照捕获逻辑45也被示为部分地包括初级输入捕获逻辑120,初级输入捕获逻辑120被示为经由多路复用器298接收PI数据290。PI数据被存储在K位寄存器295中,并且被递送到数据收集和控制逻辑160。K位寄存器295(被示为包括K个寄存器2201…220K)也由捕获时钟驱动。因此,PI数据在捕获时钟的K个周期中被捕获,并且在捕获时钟的另外的K个周期中被传输到数据收集和控制逻辑160。在一些实施例中,K小于M。
图6是图4的数据收集和控制逻辑160的更详细视图。数据收集和控制逻辑160被示为部分地包括S个可选压缩块3101、3102…310S-1、310S,每个压缩块与图5中所示的快照捕获逻辑的S个数据输出2751、2752…275S-1、275S中的不同的S数据输出相关联,并且适于从图5中所示的快照捕获逻辑的S个数据输出2751、2752…275S-1、275S中的不同的S数据输出接收数据。数据收集和控制逻辑160还被示为部分地包括本地缓冲器320,本地缓冲器320适于存储直接从快照捕获逻辑接收的数据,或者备选地,适于存储从压缩块3101…310S-1、310S接收的数据,如所示的。在一个实施例中,快照帧传输块330被配置为:接收存储在本地缓冲器320中的数据,将接收的数据放置在帧中,将报头信息(诸如存储在每个帧中的位数目)添加到帧,以及将帧递送到数据存储控制逻辑170。捕获控制块325被配置为:响应于信号事件,将存储在本地缓冲器320中的数据标记为感兴趣的数据或不感兴趣的数据。被标记为感兴趣的数据(备选地,在本文中被称为“感兴趣”数据)被放置在帧中,如上面所描述的。被标记为不感兴趣的数据(备选地,在本文中被称为“不感兴趣”数据)可以按照预定义的策略进行存储或丢弃。每个帧包括来自N个仿真周期的快照数据和PI数据,其中N是等于1或大于1的整数。
如上所述,从捕获控制逻辑接收的数据可选地被压缩,以减小快照数据帧的大小。任何压缩方案(例如,诸如霍夫曼编码、Lempel-Ziv、LZMA、香农编码等)可以用于压缩数据。
本地缓冲器320适于将接收的数据标记为快照数据或PI数据,以区分两者,从而便于软件数据重建,如上面所描述的。数据的标记可以利用位标记器、通过位的位置或通过索引来实现。在一个实施例中,存储在本地缓冲器320中的数据可以被拆分成子帧而不是完整帧,以使得数据能够更快地流式传输到数据存储控制逻辑170中。
关于哪些数据“感兴趣”或“不感兴趣”的确定可以从一个仿真模型运行到另一个仿真模型运行改变。在一个实施例中,如上所述,这种确定使用信号事件来进行指示。信号事件触发机制可以简单或者复杂,使得它可以基于简单或复杂的设置和算法来标记“感兴趣”和“不感兴趣”的数据。
如上面参考图4描述的,数据存储控制逻辑170被配置为将从数据收集和控制逻辑160接收的数据引导到数据将被存储的位置。数据存储控制逻辑170可以将接收的数据转换成与其中存储数据的介质的要求相匹配的形式。数据存储控制逻辑170还被配置为维持关于数据被存储的位置的信息以供以后处理。这种存储介质包括(i)本地存储器,诸如内部FPGA存储器,(ii)外部存储器,诸如可以连接到FPGA的商用DDR或SRAM存储器,或(iii)另一个系统上的远程存储器。
对于所有存储介质,可用存储带宽(可以以其存储数据的速率)与一速率相匹配,数据收集和控制逻辑以该速率提供要被存储的数据。在一个实施例中,存储介质具有高带宽和高容量,以避免数据丢失,并且进一步便于大量快照帧的存储。在一个示例中,连接到现场可编程门阵列(FPGA)的双倍数据速率(DDR)存储器在存储带宽(例如,超过100Gbps)与存储容量(例如,数千兆字节的数据)之间提供良好的平衡。
本公开的实施例可以被修改以处理存储容量有限的情况。在一个实施例中,仿真可以被停止以将存储的数据复制到更大的存储装置中,诸如复制到层级结构的高速缓存中。例如,如果快照帧数据被存储在外部DDR存储器中,则当DDR存储器已满时,基于快照的记录引擎可以停止仿真,以便所存储的数据可以被从DDR存储器读取并且被写入到大容量存储装置,诸如大型磁盘阵列。一旦所有数据被复制到大容量存储装置,DDR内容就被擦除并且仿真可以恢复。在另一个实施例中,可以经由循环缓冲器方案来盖写数据。因此,一旦存储装置已满,最旧的数据就被最新的数据所盖写,以便仅最新的数据被维持。然后,由用户来停止数据捕获。当数据捕获停止时,用户将具有多达最大存储大小的最新可用数据。
图7图示了在诸如集成电路的制品的设计、验证和制造期间使用以转换和验证表示集成电路的设计数据和指令的过程700的示例集合。这些过程中的每个过程可以被结构化和使能为多个模块或操作。术语“EDA”表示术语“电子设计自动化”。这些过程从利用由设计师提供的信息创建产品构思710开始,该信息被转换以创建使用EDA过程712的集合的制品。在完成设计时,设计被流片(tape-out)734,这是将集成电路的图稿(例如,几何图案)发送到制造工厂以制造掩模组的时间,然后掩模组被用来制造集成电路。在流片之后,制造736半导体裸片,并且执行封装和组装过程738以生产成品集成电路740。
电路或电子结构的规格范围可以从低级晶体管材料布局到高级描述语言。使用诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera的硬件描述语言(“HDL”),可以使用高级表示来设计电路和系统。HDL描述可以被转换为逻辑级别的寄存器传输级(“RTL”)描述、门级描述、布局级描述或掩模级描述。设计的每个较低级别表示将更多有用的细节添加到设计描述中,例如,针对包括该描述的模块的更多细节。设计的较低级别表示可以由计算机生成,从设计库导出或由另一个设计自动化过程创建。表示设计的较低级别描述的规范语言的一个示例是SPICE,它用于具有许多模拟组件的电路的详细描述。在每个表示级别处的描述被使能,以供该层的对应工具使用(例如形式验证工具)。设计过程可以使用图7中描述的序列。所描述的过程由EDA产品(或工具)使能。
在系统设计714期间,指定要被制造的集成电路的功能。可以针对期望特性(诸如功耗、性能、面积(物理和/或代码行)和成本降低等)对设计进行优化。在该阶段,可以将设计划分为不同类型的模块或组件。
在逻辑设计和功能验证716期间,以一种或多种描述语言指定电路中的模块或组件,并且检查该规格的功能准确性。例如,可以验证电路的组件,以生成与所设计的电路或系统的规格要求进行匹配的输出。功能验证可以使用仿真器和其他程序,诸如测试台生成器、静态HDL检查器和形式验证器。在一些实施例中,被称为“仿真器”或“原型系统”的组件特殊系统被用来加速功能验证。
在用于测试718的综合和设计期间,HDL代码被转换为网表。在一些实施例中,网表可以是图形结构,其中图形结构的边表示电路的组件,并且其中图形结构的节点表示组件如何被互连。HDL代码和网表两者是制造的层级结构的产品,其可以由EDA产品使用来验证:集成电路在被制造时是否根据指定的设计执行。可以针对目标半导体制造技术优化网表。附加地,成品集成电路可以被测试,以验证集成电路是否满足规格的要求。
在网表验证720期间,检查网表是否符合时序约束以及是否与HDL代码相对应。在设计计划722期间,构造并分析集成电路的总体平面图,以进行时序和顶层布线。
在布局或物理实现724期间,进行物理放置(电路组件(诸如晶体管或电容器)的放置)和布线(电路组件通过多个导体的连接),并且可以执行从库中选择单元以使能特定的逻辑功能。如本文所使用的,术语“单元”可以指定晶体管、其他组件和互连的集合,其提供布尔逻辑功能(例如,AND、OR、NOT、XOR)或存储功能(诸如,触发器或锁存器)。如本文所使用的,电路“块”可以指代两个或两个以上的单元。单元和电路块两者可以被称为模块或组件,并且可以被使能为物理结构和仿真两者。诸如尺寸的参数被指定为用于所选择的单元(基于“标准单元”),并且使得在数据库中可访问,以供EDA产品使用。
在分析和提取726期间,在布局级验证电路功能,该布局级允许对布局设计的改进。在物理验证728期间,检查布局设计以确保制造约束(诸如DRC约束、电气约束、光刻约束)是正确的,并且确保电路功能与HDL设计规格匹配。在分辨率增强730期间,布局的几何形状被转变以改善电路设计被制造的方式。
在流片期间,创建数据以用于(如果合适,在应用光刻增强之后)生产光刻掩模。在掩模数据准备732期间,“流片”数据用于产生光刻掩模,该光刻掩模用于生产成品集成电路。
计算机系统(诸如,图8的计算机系统900或图7的主机系统807)的存储子系统可以用于存储程序或数据结构,该程序和数据结构由本文所述的一些或所有EDA产品使用,并且由用于开发库的单元的产品以及用于使用该库的物理和逻辑设计的产品使用。
图8描绘了示例仿真环境800的图。仿真环境800可以被配置为验证电路设计的功能。仿真环境800可以包括主机系统807(例如,作为EDA系统的一部分的计算机)和仿真系统802(例如,诸如现场可编程门阵列(FPGA)的可编程设备的集合或处理器)。主机系统通过使用编译器810来构造仿真系统以仿真电路设计来生成数据和信息。要被仿真的电路设计也被称为被测设计(DUT),其中来自仿真的数据和信息被用于验证DUT的功能。
主机系统807可以包括一个或多个处理器。在主机系统包括多个处理器的实施例中,这里描述的由主机系统执行的功能可以分布在多个处理器当中。主机系统807可以包括编译器810,以转换以表示DUT的描述语言编写的规范,并且以产生用于构造仿真系统802以仿真DUT的数据(例如,二进制数据)和信息。编译器810可以变换、改变、重建、控制DUT的定时和/或向DUT添加新函数。
主机系统807和仿真系统802使用由仿真连接承载的信号来交换数据和信息。该连接可以是但不限于一个或多个电缆,诸如具有与推荐标准232(RS232)或通用串行总线(USB)协议兼容的管脚结构的电缆。该连接可以是有线通信介质或网络,诸如局域网或广域网,诸如因特网。该连接可以是具有使用诸如蓝牙或IEEE802.11的无线协议的一个或多个接入点的无线通信介质或网络。主机系统807和仿真系统802可以通过诸如网络服务器的第三设备交换数据和信息。
仿真系统802包括多个FPGA(或其他模块),诸如FPGA 8041和8042以及附加的FPGA至804N。每个FPGA可以包括一个或多个FPGA接口,通过这些接口,FPGA与其他FPGA(以及潜在的其他仿真组件)相连,以便FPGA交换信号。FPGA接口可以被称为输入/输出管脚或FPGA垫。虽然仿真器可以包括FPGA,但是仿真器的实施例可以包括替代用于仿真DUT的FPGA或与用于仿真DUT的FPGA一起使用的其他类型的逻辑块。例如,仿真系统802可以包括定制的FPGA、用于仿真或原型的专用ASIC、存储器和输入/输出设备。
可编程设备可以包括可编程逻辑块阵列和可以使得可编程逻辑块能够根据HDL码中的描述互连的互连层级结构。可编程逻辑块中的每个可编程逻辑块可以使能复杂的组合功能或使能逻辑门,诸如AND逻辑块以及XOR逻辑块。在一些实施例中,逻辑块还可以包括存储器元件/设备,其可以是简单的锁存器、触发器或其他存储器块。取决于不同逻辑块之间的互连的长度,信号可以在不同的时间到达逻辑块的输入端,从而可以被临时存储在存储器元件/设备中。
可以将FPGA 8041-804N布置在一个或多个板8121和8122以及附加板812M上。可以将多个板布置到仿真单元8141中。可以使用仿真单元的底板或任何其他类型的连接来连接仿真单元内的板。此外,多个仿真单元(例如,8141和8142至814K)可以通过电缆或任何其他方式彼此连接,以形成多仿真单元系统。
对于要被仿真的DUT,主机系统807向仿真系统802发送一个或多个位文件。位文件可以指定DUT的描述,并且可以进一步指定由主机系统807利用跟踪和注入逻辑创建的DUT的分区、分区到仿真器的FPGA的映射以及设计约束。仿真器使用位文件构造FPGA以执行DUT的功能。在一些实施例中,仿真器的一个或多个FPGA可以将跟踪和注入逻辑内置于FPGA的硅中。在这种实施例中,主机系统可以不将FPGA构建为对跟踪和注入逻辑进行仿真。
主机系统807接收要被仿真的DUT的描述。在一些实施例中,DUT描述采用描述语言(例如,寄存器传输语言(RTL))。在一些实施例中,DUT描述是网表级别文件或网表级别文件和HDL文件的混合。如果部分DUT描述或整个DUT描述采用HDL语言,则主机系统可以综合DUT描述以使用DUT描述创建门级网表。主机系统可以使用DUT的网表将DUT划分成多个分区,其中分区中的一个或多个分区包括跟踪和注入逻辑。跟踪和注入逻辑跟踪经由FPGA的接口交换的接口信号。此外,跟踪和注入逻辑可以将跟踪的接口信号注入到FPGA的逻辑中。主机系统将每个分区映射到仿真器的FPGA。在一些实施例中,跟踪和注入逻辑被包括在用于一组FPGA的选择分区中。跟踪和注入逻辑可以内置于仿真器的一个或多个FPGA中。主机系统可以综合多路复用器以映射到FPGA中。跟踪和注入逻辑可以使用多路复用器来将接口信号注入DUT逻辑。
主机系统创建描述DUT的每个分区以及分区到FPGA的映射的位文件。对于包含跟踪和注入逻辑的分区,位文件还描述了所包含的逻辑。位文件可以包括布置和布线信息以及设计约束。主机系统存储位文件和描述哪些FPGA要仿真DUT的每个组件的信息(例如,每个组件映射到哪个FPGA)。
根据请求,主机系统将位文件传输到仿真器。主机系统向仿真器发信号以开始DUT的仿真。在DUT的仿真期间或在仿真结束时,主机系统通过仿真连接从仿真器接收仿真结果。仿真结果是由仿真器在DUT的仿真期间生成的数据和信息,其包括接口信号和接口信号的状态,这些数据和信息已经被每个FPGA的跟踪和注入逻辑跟踪。主机系统可以存储仿真结果和/或将仿真结果发送到另一处理系统。
在对DUT进行仿真之后,电路设计者可以请求调试DUT的组件。如果提出这种请求,则电路设计者可以指定要调试的仿真的时间段。主机系统使用存储的信息标识哪些FPGA正在仿真该组件。主机系统取回存储的接口信号,该接口信号与该时间段相关联,并且由每个所标识的FPGA的跟踪和注入逻辑跟踪。主机系统向仿真器发信号以重新仿真所标识的FPGA。主机系统将取回的接口信号发送到仿真器以在指定的时间段内重新仿真组件。每个所标识的FPGA的跟踪和注入逻辑将从主机系统接收的其各自的接口信号注入到映射到该FPGA的DUT的逻辑中。在多次重新仿真FPGA的情况下,合并结果会产生完全调试视图。
主机系统在部件的重新仿真期间从仿真系统接收由所标识的FPGA的逻辑跟踪的信号。主机系统存储从仿真器接收的信号。在重新仿真期间跟踪的信号可以具有比初始仿真期间的采样速率更高的采样速率。例如,在初始仿真中,跟踪信号可以包括每X毫秒保存的组件状态。然而,在重新仿真中,跟踪的信号可以包括每Y毫秒保存的状态,其中Y小于X。如果电路设计者请求查看在重新仿真期间跟踪的信号的波形,则主机系统可以取回存储的信号并显示该信号的图。例如,主机系统可以生成信号的波形。之后,电路设计者可以请求针对不同的时间段重新仿真相同的组件或重新仿真另一个组件。
主机系统807和/或编译器810可以包括子系统,诸如但不限于设计综合器子系统、映射子系统、运行时子系统、结果子系统、调试子系统、波形子系统和存储子系统。可以将子系统构建并使能为单个或多个模块,或者可以将两个或多个模块构建为模块。这些子系统一起构成仿真器并监控仿真结果。
设计综合器子系统将表示DUT 805的硬件描述语言转换成门级逻辑。对于要被仿真的DUT,设计综合器子系统接收该DUT的描述。如果DUT的描述完全或部分采用HDL语言(例如,RTL或其他表示级别),则设计综合器子系统综合DUT的HDL语言以创建门级网表,该门级网表具有根据门级逻辑对DUT的描述。
映射子系统对DUT进行分区,并将分区映射到仿真器FPGA中。映射子系统使用DUT的网表将门级的DUT划分为多个分区。对于每个分区,映射子系统取回跟踪和注入逻辑的门级描述,并将该逻辑添加到该分区。如上所述,包括在分区中的跟踪和注入逻辑用于跟踪经由该分区被映射到的FPGA的接口交换的信号(跟踪接口信号)。跟踪和注入逻辑可以在分区之前被添加到DUT。例如,跟踪和注入逻辑可以由设计综合器子系统在综合DUT的HDL语言之前或之后添加。
除了包括跟踪和注入逻辑之外,映射子系统还可以在分区中包括附加的跟踪逻辑,以跟踪未被跟踪和注入跟踪的某些DUT组件的状态。映射子系统可以在分区之前的DUT中或在分区之后的分区中包括附加跟踪逻辑。设计综合器子系统可以在综合HDL描述之前将附加跟踪逻辑包括在DUT的HDL描述中。
映射子系统将DUT的每个分区映射到仿真器的FPGA。对于分区和映射,映射子系统使用设计规则、设计约束(例如,定时或逻辑约束)以及关于仿真器的信息。对于DUT的组件,映射子系统在存储子系统中存储描述哪些FPGA要仿真每个组件的信息。
使用分区和映射,映射子系统生成一个或多个位文件,该一个或多个位文件描述所创建的分区以及逻辑到仿真器的每个FPGA的映射。位文件可以包括附加信息,诸如DUT的约束和在FPGA之间的连接的布线信息和每个FPGA内的连接。映射子系统可以为DUT的每个分区生成位文件,并且可以将该位文件存储在存储子系统中。根据电路设计者的请求,映射子系统将位文件传输到仿真器,并且仿真器可以使用位文件来构造FPGA以仿真DUT。
如果仿真器包括专用ASIC,专用ASIC包括跟踪和注入逻辑,则映射子系统可以生成将专用ASIC连接到DUT的特定结构。在一些实施例中,映射子系统可以保存跟踪/注入信号的信息以及该信息被存储在专用ASIC上的位置。
运行时子系统控制由仿真器执行的仿真。运行时子系统可以使仿真器开始或停止执行仿真。此外,运行时子系统可以向仿真器提供输入信号和数据。输入信号可以通过连接被直接地提供给仿真器,或者通过其他输入信号设备被间接地提供给仿真器。例如,主机系统可以控制输入信号设备向仿真器提供输入信号。输入信号设备可以是例如测试板(直接地或通过电缆)、信号发生器、另一仿真器或另一主机系统。
结果子系统处理由仿真器生成的仿真结果。在仿真期间和/或在完成仿真之后,结果子系统从仿真器接收在仿真期间生成的仿真结果。仿真结果包括在仿真期间跟踪的信号。具体地,仿真结果包括由每个FPGA仿真的跟踪和注入逻辑所跟踪的接口信号,并且可以包括由包括在DUT中的附加逻辑跟踪的信号。每个跟踪信号可以跨越多个仿真周期。跟踪信号包括多个状态,并且每个状态与仿真的时间相关联。结果子系统将跟踪信号存储在存储子系统中。对于每个存储的信号,结果子系统可以存储指示哪个FPGA生成跟踪信号的信息。
调试子系统允许电路设计者调试DUT组件。在仿真器已经仿真了DUT并且结果子系统已经在仿真期间接收到由跟踪和注入逻辑跟踪的接口信号之后,电路设计者可以通过针对特定时间段重新仿真组件来请求调试DUT的组件。在调试组件的请求中,电路设计者标识组件并指示要调试的仿真的时间段。电路设计者的请求可以包括采样率,该采样率指示跟踪信号的逻辑应当以多频繁的频率保存被调试组件的状态。
调试子系统使用由映射子系统存储在存储子系统中的信息来标识正在仿真组件的仿真器的一个或多个FPGA。对于每个所标识的FPGA,调试子系统从存储子系统取回在由电路设计者指示的时间段期间由FPGA的跟踪和注入逻辑跟踪的接口信号。例如,调试子系统取回由与时间段相关联的跟踪和注入逻辑所跟踪的状态。
调试子系统将取回的接口信号发送到仿真器。调试子系统指示调试子系统使用所标识的FPGA,并且指示每个所标识的FPGA的跟踪和注入逻辑将其各自的跟踪信号注入到FPGA的逻辑中,以针对所请求的时间段重新仿真组件。调试子系统还可以将由电路设计者提供的采样率传输到仿真器,从而跟踪逻辑以适当的间隔跟踪状态。
为了调试组件,仿真器可以使用组件已被映射到的FPGA。此外,组件的重新仿真可以在电路设计者指定的任何点上执行。
对于所标识的FPGA,调试子系统可以向仿真器发送指令以加载具有所标识的FPGA的相同配置的多个仿真器FPGA。调试子系统还向仿真器发信号以并行使用多个FPGA。来自多个FPGA中的每个FPGA与接口信号的不同时间窗一起使用,以在较短的时间量内生成较大的时间窗。例如,所标识的FPGA可能需要一个小时或更长时间才能使用一定数目的周期。然而,如果多个FPGA具有相同的数据和所标识的FPGA的结构,并且这些FPGA中的每一个FPGA运行周期的子集,则仿真器可能需要几分钟时间才能使FPGA共同使用所有周期。
电路设计者可以标识要重新仿真的DUT信号的层级或列表。为了实现这一点,调试子系统确定仿真信号层级或列表所需的FPGA,取回必要的接口信号,并且将取回的接口信号传送到仿真器以用于重新仿真。因此,电路设计者可以标识要调试/重新仿真的DUT的任何元件(例如,组件、设备或信号)。
波形子系统使用跟踪信号生成波形。如果电路设计者请求查看在仿真运行期间跟踪的信号的波形,则主机系统从存储子系统取回该信号。波形子系统显示信号的图。对于一个或多个信号,当从仿真器接收到信号时,波形子系统可以自动地生成信号的图。
图9图示了计算机系统900的示例机器,在其中可以执行用于使该机器执行本文所讨论的方法中的任何一个或多个的指令集。在备选实施方式中,该机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其他机器。该机器可以在客户端-服务器网络环境中以服务器或客户端机器的能力操作,可以作为对等(或分布式)网络环境中的对等机器操作,也可以作为云计算基础架构或环境中的服务器或客户端计算机操作。
机器可以是个人计算机(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥,或能够执行指令集(顺序指令或其他指令)的任何机器,指令集指定要由该机器执行的动作。此外,虽然图示了单个机器,但是术语“机器”也应当被理解为包括机器的任何集合,这些机器单独地或共同地执行一组(或多组)指令以执行本文讨论的任何一个或多个方法。
示例计算机系统900包括处理设备902、主存储器904(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)的动态随机存取存储器(DRAM))、静态存储器906(例如,闪存、静态随机存取存储器(SRAM)等))以及数据存储设备918,它们经由总线930彼此通信。
处理设备902表示一个或多个处理器,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或者是实现其他指令集的处理器,或者是实现指令集的组合的处理器。处理设备902还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备902可以被配置为执行指令926以执行本文描述的操作和步骤。
计算机系统900可以进一步包括网络接口设备908,以通过网络920进行通信。计算机系统900还可以包括视频显示单元910(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备912(例如键盘)、光标控制设备914(例如鼠标)、图形处理单元922、信号生成设备916(例如扬声器)、图形处理单元922、视频处理单元928和音频处理单元932。
数据存储设备918可以包括机器可读存储介质924(也被称为非暂态计算机可读介质),其上存储着体现本文所述的方法或功能中的任何一个或多个方法或功能的一个或多个指令集926或软件。在计算机系统900执行指令926期间,指令926也可以全部或至少部分地驻存在主存储器904内和/或驻存在处理设备902内,主存储器904和处理设备902也构成机器可读存储介质。
在一些实施方式中,指令926包括用于实现与本公开相对应的功能的指令。尽管在示例实施方式中将机器可读存储介质924示为单个介质,但是术语“机器可读存储介质”应当被认为包括单个介质或多个介质(例如,中心化或分布式数据库,和/或相关联的缓存和服务器)来存储一个或多个指令集。术语“机器可读存储介质”也应当被认为包括能够存储或编码指令集的任何介质,该指令集用于由机器执行并且使机器和处理设备902执行本公开的方法中的任何一个或多个。因此,术语“机器可读存储介质”应当被认为包括但不限于固态存储器、光学介质和磁性介质。
已经根据对计算机存储器内的数据位的操作的算法和符号表示,呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地向本领域的其他技术人员传达其工作实质的方式。算法可以是导致期望结果的操作的序列。这些操作是需要对物理量进行物理操纵的操作。这种量可以采取能够被存储、组合、比较以及以其他方式操纵的电或磁信号的形式。这种信号可以被称为位、值、元素、符号、字符、项、数字等。
但是,应当记住,所有这些和类似术语均应当与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非从本公开中另外明确指出,否则应当理解,贯穿本描述,某些术语指代计算机系统或类似电子计算设备的动作和过程,其将计算机系统的寄存器内的表示为物理(电子)量的数据操纵和转换为其他数据,该其他数据类似地被表示为计算机系统存储器或寄存器或其他这种信息存储设备内的物理量。
本公开还涉及用于执行本文中的操作的装置。该装置可以被特别构造以用于预期目的,或者它可以包括由计算机中存储的计算机程序选择性地激活或重新配置的计算机。这种计算机程序可以被存储在计算机可读存储介质中,诸如但不限于任何类型的磁盘(包括软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光学卡,或适于存储电子指令的任何类型的介质,每个均耦合到计算机系统总线。
本文提出的算法和显示不与任何特定的计算机或其他装置固有地相关。各种其他系统可以与根据本文的教导的程序一起使用,或者它可以被证明易于构造更专用的装置来执行该方法。另外,未参考任何特定编程语言来描述本公开。应当理解,可以使用各种编程语言来实现如本文所述的本公开的教导。
本公开可以被提供为计算机程序产品或软件,其可以包括其上存储有指令的机器可读介质,该指令可以用于对计算机系统(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存设备等。
在前述公开中,已经参考本公开的具体示例实施方式描述了本公开的实施方式。明显的是,在不脱离如所附权利要求中阐述的本公开的更广泛的精神和范围的情况下,可以对其进行各种修改。在本公开以单数形式指代一些元素的情况下,在附图中可以描绘一个以上的元素,并且相同的元素用相同的附图标记来标记。因此,本公开和附图应当被认为是说明性的而不是限制性的。

Claims (20)

1.一种在由硬件仿真系统进行的电路设计的验证期间存储数据的方法,所述方法包括:
每N个仿真时钟周期接收一次寄存器数据的P个集合,每个集合包括与所述电路设计相关联的M个寄存器位;
在捕获时钟的M个周期期间,将每个集合中的所述M个寄存器位存储在P个移位寄存器中;以及
在所述捕获时钟的M*P个周期期间移出所存储的位,其中(M+1)*P小于或等于N。
2.根据权利要求1所述的方法,还包括:
在一个或多个仿真周期期间,接收施加到所述电路的输入数据;以及
将所接收的输入数据存储在与所述P个移位寄存器不同的移位寄存器中。
3.根据权利要求2所述的方法,其中N等于1。
4.根据权利要求2所述的方法,还包括:
将所移出的位存储在本地缓冲器中。
5.根据权利要求2所述的方法,还包括:
压缩所移出的位;以及
将所压缩的位存储在本地缓冲器中。
6.根据权利要求2所述的方法,还包括:
如果所移出的位被标记为感兴趣,则将所移出的位存储在本地缓冲器中。
7.根据权利要求4所述的方法,还包括:
将存储在所述本地缓冲器中的所述数据布置在一个或多个帧中;以及
将所述帧递送到数据存储控制逻辑。
8.根据权利要求2所述的方法,还包括:
根据所接收的输入数据以及在周期N期间接收的所述寄存器数据,来计算与未接收到所述寄存器数据的周期相关联的所述寄存器数据,所计算的寄存器数据由对所述电路设计进行仿真的软件仿真工具计算。
9.一种非暂态计算机可读介质,所述非暂态计算机可读介质包括存储的指令,所述指令在由处理器执行时,使所述处理器:
每N个仿真时钟周期接收一次寄存器数据的P个集合,每个集合包括与所述电路设计相关联的M个寄存器位;
在捕获时钟的M个周期期间,将每个集合中的所述M个寄存器位存储在P个移位寄存器中;以及
在所述捕获时钟的M*P个周期期间移出所述存储的位,其中(M+1)*P小于或等于N。
10.根据权利要求9所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
在一个或多个仿真周期期间,接收施加到所述电路的输入数据;以及
将所接收的输入数据存储在与所述P个移位寄存器不同的移位寄存器中。
11.根据权利要求10所述的非暂态计算机可读介质,其中N等于1。
12.根据权利要求10所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
将所移出的位存储在本地缓冲器中。
13.根据权利要求10所述的非暂态计算机可读介质,其中所述指令还使所述处理器:
根据所接收的输入数据以及在周期N期间接收的所述寄存器数据,来计算未接收到所述寄存器数据的(N-1)个仿真周期的所述寄存器数据,所述处理器被配置为:通过运行对所述电路设计进行仿真的软件仿真工具来计算所述寄存器数据。
14.一种电路,所述电路包括P个移位寄存器,每个移位寄存器被配置为:每N个仿真时钟周期接收一次寄存器数据的P个集合,每个集合包括M个寄存器位,所述P个移位寄存器中的每个移位寄存器进一步被配置为:在捕获时钟的M个周期期间存储所述M个寄存器位,并且在所述捕获时钟的M*P个周期期间移出所述存储的位,其中(M+1)*P小于或等于N。
15.根据权利要求14所述的电路,还包括与所述P个移位寄存器不同的移位寄存器,所述不同的移位寄存器被配置为:接收并且存储在一个或多个仿真周期期间施加到所述电路的输入数据。
16.根据权利要求14所述的电路,其中N等于1。
17.根据权利要求14所述的电路,还包括本地缓冲器,所述本地缓冲器被配置为存储所移出的位。
18.根据权利要求14所述的电路,还包括:
一个或多个压缩块,被配置为压缩所移出的位;以及
本地缓冲器,被配置为存储所压缩的位。
19.根据权利要求14所述的电路,还包括本地缓冲器,所述本地缓冲器被配置为:如果所移出的位被标记为感兴趣,则存储所移出的位。
20.根据权利要求18所述的电路,还包括:
帧传输块,被配置为将存储在所述本地缓冲器中的所述数据转换为帧,并且将所述帧递送到数据存储控制逻辑。
CN202180023249.2A 2020-01-31 2021-01-29 用于捕获硬件仿真数据的系统和方法 Pending CN115298664A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202062968546P 2020-01-31 2020-01-31
US62/968,546 2020-01-31
PCT/US2021/015734 WO2021155169A1 (en) 2020-01-31 2021-01-29 System and method for capturing hardware emulation data

Publications (1)

Publication Number Publication Date
CN115298664A true CN115298664A (zh) 2022-11-04

Family

ID=74798024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180023249.2A Pending CN115298664A (zh) 2020-01-31 2021-01-29 用于捕获硬件仿真数据的系统和方法

Country Status (5)

Country Link
US (1) US20210240897A1 (zh)
EP (1) EP4097623A1 (zh)
KR (1) KR20220129077A (zh)
CN (1) CN115298664A (zh)
WO (1) WO2021155169A1 (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761484A (en) * 1994-04-01 1998-06-02 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US6694464B1 (en) * 1997-05-30 2004-02-17 Quickturn Design Systems, Inc. Method and apparatus for dynamically testing electrical interconnect
US6947882B1 (en) * 1999-09-24 2005-09-20 Mentor Graphics Corporation Regionally time multiplexed emulation system
WO2002001354A1 (en) * 2000-06-26 2002-01-03 Yang Sei Yang Rapid input/output probing apparatus and input/output probing method using the same, and mixed emulation/simulation method based on it
EP1538635B1 (en) * 2003-11-26 2008-05-14 Texas Instruments Incorporated Scan testable first-in first-out architecture
US7305635B1 (en) * 2005-02-04 2007-12-04 Dafca, Inc. Serial implementation of assertion checking logic circuit
US7861128B1 (en) * 2006-12-14 2010-12-28 Xilinx, Inc. Scan element with self scan-mode toggle
US10060979B2 (en) * 2016-08-02 2018-08-28 Texas Instruments Incorporated Generating multiple pseudo static control signals using on-chip JTAG state machine

Also Published As

Publication number Publication date
US20210240897A1 (en) 2021-08-05
WO2021155169A9 (en) 2022-03-10
EP4097623A1 (en) 2022-12-07
KR20220129077A (ko) 2022-09-22
WO2021155169A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
US10970443B2 (en) Generation of module and system-level waveform signatures to verify, regression test and debug SoC functionality
CN113255267B (zh) 使用现场可编程门阵列fpga重新编程检测仿真中的时序违规
CN110785761B (zh) 存在时钟动态重编程时仿真时间线的压缩方法
US20220385280A1 (en) Testable time-to-digital converter
US11023635B1 (en) Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames
CN114756085A (zh) 用于现场可编程门阵列(fpga)综合的形式化门控时钟转换
US20210374314A1 (en) Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views
US20210312113A1 (en) Method for finding equivalent classes of hard defects in stacked mosfet arrays
US11200127B2 (en) Automated self-check of a closed loop emulation replay
US11022634B1 (en) Rail block context generation for block-level rail voltage drop analysis
US10908213B1 (en) Reducing X-masking effect for linear time compactors
US20210240897A1 (en) System and method for capturing hardware emulation data
US20230244512A1 (en) Fast waveform capture with low hardware footprint enabling full visibility
US20240028812A1 (en) Waveform capture using multicycle path properties
US11734080B1 (en) Memory efficient and scalable approach to stimulus (waveform) reading
US20220300690A1 (en) Incremental compilation for fpga-based systems
US11403450B2 (en) Convergence centric coverage for clock domain crossing (CDC) jitter in simulation
US11941339B1 (en) Automated equal-resistance routing in compact pattern
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
US20230409788A1 (en) Synchronizing distributed simulations of a circuit design
US11816409B1 (en) Strongly connected component (SCC) graph representation for interactive analysis of overlapping loops in emulation and prototyping
US20230035693A1 (en) Clock signal realignment for emulation of a circuit design
US20230177244A1 (en) Creation of reduced formal model for scalable system-on-chip (soc) level connectivity verification
US20220391568A1 (en) Deterministic netlist transformations in a multi-processor parallel computing system
US20230071521A1 (en) Detecting simulation, emulation and prototyping issues using static analysis tools

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