首页> 中国专利> 仿真和原型制作中重叠时钟和数据传播的相干可观测性和可控制性

仿真和原型制作中重叠时钟和数据传播的相干可观测性和可控制性

摘要

该专利的独立权利要求指示对实施例的简要描述。一种仿真控制块使得用户能够在同一阶段查看整个设计,以使用户可以在同一逻辑参考周期内观察并控制中止的设计。时钟锥和设计触发器均以在评价参考时间的周期K之后出现的状态提供。在仿真的周期K+1期间,计算周期K+1的派生时钟的值。而且,在仿真的周期K+1期间,基于时钟的周期K值计算顺序元件的值。当仿真由于中断而中止时,时钟锥恢复到其先前状态。本摘要不旨在限制权利要求的范围。

著录项

  • 公开/公告号CN112753034A

    专利类型发明专利

  • 公开/公告日2021-05-04

    原文格式PDF

  • 申请/专利权人 美商新思科技有限公司;

    申请/专利号CN201980062772.9

  • 申请日2019-09-25

  • 分类号G06F30/367(20200101);G06F1/08(20060101);G06F30/331(20200101);G06F119/18(20200101);H03K19/21(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人傅远

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:51:07

说明书

本申请根据35USC 119(e)要求于2018年9月25日提交的美国申请序列号62/736,111的权益,其全部内容通过引用并入本文。

如在美国专利商标局的文件中所显示的,本专利文件的受让人不反对任何人对专利文件本身或专利申请进行的传真复制,但是保留受版权保护的所有著作中包括的任何内容的所有权利。

在以下的背景技术、发明内容和具体实施方式中,标题不应被解释为是必要的限制。在以下背景技术、发明内容和具体实施方式中,对任何出版物的引用或标识并不将相关性或状态指示为任何所要求保护或描述的实施例的现有技术。文本全部用斜体表示的段落指示许多Synopsys专利规范所共有的文本。

背景技术

在传统硬件仿真系统中,仿真周期分为两个阶段,在这两个阶段期间,对时钟和数据输入进行评价。首先,响应于主要数据输入的改变,对派生时钟的值进行评价。然后,经评价的时钟应用于触发器和锁存器,从而使得这样的顺序元件的经更新输出能够传播到设计的其余部分。换句话说,传统硬件仿真系统要求时钟在评价设计中设置的顺序元件之前完全传播。在传统系统中,对时钟和数据的这种串行评价会减慢仿真速度并导致效率低下。因此,仍然需要一种改进的硬件仿真系统。

发明内容

权利要求指示对在本公开内容中发现的创新、实施例和/或示例中的一个或多个创新、实施例和/或示例的简要描述。

本发明内容并不试图完全表示在商业中使用的任何特定创新、实施例或示例。附加地,本发明内容不旨在指示创新、实施例或示例的基本要素,也不旨在限制本公开的主题的范围。

本公开内容中发现的创新、实施例和/或示例并非包括所有创新、实施例和/或示例,而是描述了主题的基本意义。因而,本发明内容的一种用途是稍后提供的具体实施方式的序言。

在仿真设计中重叠派生时钟和数据触发器/锁存器评价意味着可以并行而非串行评价两者。虽然这种方案增加了仿真性能,但是在遇到断点时,仿真设计的状态随时可能和希望行使可观察性或可控制性的用户在常识上是相悖的。

一旦达到断点,其他设计评价将通过防止将新时钟和数据输入应用于设计来暂停。在这点上,中止的设计似乎处于以下状态:设计触发器已经评价了参考时间的周期K,同时时钟锥已经评价了周期K+1。

仿真模块允许在同一阶段将整个设计呈现给用户,这是用户预期的,以便能够在同一逻辑参考周期中观察或控制停止的设计。时钟锥和设计触发器均将在评价参考时间的周期K之后出现的状态下呈现。为了实现该目标,如果在当前时钟周期的评价期间的任何点检测到断点,则时钟锥恢复到其先前状态。

通过向用户提供设计的连贯视图,设计状态可以直接与另一仿真器、模拟器或真实硬件的输出进行比较。这样做时,隐藏了应用于设计的基础变换的复杂性。在没有仿真模块的情况下,对于预期传统断点行为的用户,可能无法通过重叠时钟和数据评价来实现性能提升。

一种根据本发明的一个实施例的硬件仿真系统控制块部分包括N个延迟块,每个延迟块接收第一信号,该第一信号表示延迟值,该延迟值与用于仿真系统的N个时钟信号中的不同时钟信号相关联,并且其中与每个时钟信号相关联的延迟值定义时钟信号的转变时间。硬件仿真系统控制块还部分包括最小延迟计算器块,其适于计算N个延迟值中的最小值;时钟调度器,其被配置为调度用于其关联的延迟值与最小延迟匹配的每个时钟的转变。时钟调度器还被配置为将其延迟值与最小延迟值不匹配的每个时钟的关联的延迟递减最小延迟。时钟调度器将最小延迟供应给N个延迟块中的每个延迟块。硬件仿真系统控制块还部分包括时钟信号生成器,其被配置为导致时钟调度器所确定的时钟信号的转变。

在一个实施例中,硬件仿真系统控制块还部分包括N个触发器,每个触发器与N个延迟块中的不同延迟块相关联,并且适于接收其关联的延迟块的输出;以及N个多路复用器,每个多路复用器与N个延迟块中的不同延迟块相关联,并且适于在其第一输入处接收其关联的延迟块的输出。前N个多路复用器中的每个多路复用器具有第二输入,该第二输入适于接收其关联的触发器的输出。每个多路复用器都有选择端子,该选择端子适于当触发信号被断言时,将其第二输入递送到最小延迟计算器。触发信号响应于用户所插入的仿真中断而中止对设计的仿真。

在一个实施例中,硬件仿真系统控制块还部分包括第二第一触发器,其适于接收时钟生成器的输出;以及第二多路复用器,其适于在其第一输入处接收时钟调度器的输出,并且在其第二输入处接收第二触发器的输出。如果触发信号未被断言,则多路复用器将其第一输入递送到其输出。如果触发信号被断言,则多路复用器将其第二输入递送到其输出。第二多路复用器的输出施加到仿真电路设计的硬件仿真系统。

在一个实施例中,硬件仿真系统控制块在仿真的周期K+1期间计算与时钟信号的仿真周期K相对应的顺序元件的值。在一个实施例中,硬件仿真系统控制块在仿真的周期K+1期间计算仿真的周期K+1的时钟的值。

在一个实施例中,每个延迟块部分包括减法器,其适于在其第一输入处接收最小延迟;第一触发器,其接收延迟块的输出并且将其输出提供给减法器的第二输入;XOR门,其在其第一输入处接收最小延迟,并且在其第二输入处接收延迟块的输出;第二触发器,其接收XOR的输出;以及多路复用器,其在其第一输入处接收与该块相关联的延迟值,并且在其第二输入处接收减法器的输出。多路复用器响应于第二触发器的输出信号而供应其输出。

在一个实施例中,硬件仿真系统控制块还部分包括边缘检测器,其被配置为检测N个时钟信号中的至少第一个时钟信号的边缘以生成第一信号;第一触发器,其在其使能引脚处接收第一信号,并且在其时钟引脚接收系统时钟;第二触发器,其在其使能引脚处接收第一信号,并且在其时钟引脚处接收系统时钟;以及组合逻辑,其接收第一触发器的输出信号并且将数据递送到第二触发器的数据输入。

一种根据本发明的一个实施例的逻辑电路部分包括边缘检测器,其被配置为检测时钟信号的边缘并且生成第一信号;第一触发器,其在其使能引脚处接收第一信号,并且在其时钟引脚处接收系统时钟;第二触发器,其在其使能引脚处接收第一信号,并且在其时钟引脚处接收系统时钟;以及组合逻辑电路,其接收第一触发器的输出信号并且将数据供应给第二触发器的数据输入。

一种根据本发明的一个实施例的控制电路设计的硬件仿真的方法部分包括:接收信号,该信号表示延迟值,该延迟值与N个时钟信号中的不同时钟信号中的每个时钟信号相关联,与每个时钟信号相关联的延迟值定义时钟信号的转变时间;计算N个延迟值中的最小值;调度其关联的延迟值与最小延迟相匹配的每个时钟的转变;使其延迟值与最小延迟值不匹配的每个时钟的关联的延迟递减最小延迟;以及根据所调度的转变或所递减的延迟来生成时钟信号的转变。

在一个实施例中,该方法还部分包括:在N个时钟中的每个时钟内存储前一周期的所调度的转变或所递减的延迟中的一个;响应于触发信号,递送所存储的调度的转变或所递减的延迟;存储所生成的前一时钟信号的转变;以及响应于触发信号,为每个时钟信号递送时钟信号的前一转变或其当前转变。

在一个实施例中,该方法还部分包括:在仿真的周期K+1期间计算与时钟信号的仿真周期K相对应的顺序元件的值。在一个实施例中,该方法还部分包括:在仿真的周期K+1期间计算仿真的周期K+1的时钟值。

在一个实施例中,该方法还部分包括:检测N个时钟信号中的至少第一个时钟信号的边沿以生成第一信号;将该第一信号施加到第一触发器的使能引脚上,该第一触发器在其时钟引脚处接收系统时钟;将第一信号施加到第二触发器的使能引脚上,该第二触发器在其时钟引脚处接收系统时钟;将第一触发器的输出施加到组合逻辑的输入;以及将组合的输出施加到第二触发器的数据输入。

一种根据本发明的一个实施例的对数据和时钟信号进行流水线化处理的方法部分包括:检测N个时钟信号中的至少第一个时钟信号的边缘以生成第一信号;将第一信号应用到第一触发器的使能引脚,该第一触发器在其时钟引脚处接收系统时钟;将第一信号施加到第二触发器的使能引脚,该第二触发器在其时钟引脚处接收系统时钟;将第一触发器的输出施加到组合逻辑的输入;以及将组合的输出施加到第二触发器的数据输入。

附图说明

以下具体实施方式、附图、所附附图和所附权利要求均指示所要求保护的发明的创新、实施例和/或示例的性质和优点。所有附图仅出于说明的目的指示所要求保护的发明的创新、实施例和/或示例,并不限制所要求保护的发明的范围。这样的附图不一定按比例绘制,并且是本公开的一部分。

在附图中,相似的部件或特征可以具有形式为标签的相同或相似的附图标记(诸如字母数字符号,例如,参考数字),并且可以指示相似或等同的功能性。进一步地,可以通过在参考标签之后加上破折号和第二标签来区分相同类型的各种部件,该第二标签在相似部件之间进行区分。如果说明书中只使用第一参考标签,则该描述可适用于具有相同的第一参考标签的类似部件中的任何类似部件,而与第二参考标签无关。附图的简要描述如下。

图1是根据本发明的一个实施例的硬件仿真控制块的简化高级框图。

图2是根据本发明的一个实施例的数字时钟信号Clk1和Clk2及其对应全局最小值和全局时间的时序图。

图3是根据本发明的一个实施例的用于硬件仿真控制块的延迟块的示意图。

图4是根据本发明的一个实施例的使得能够以流水线方式并行评价数据和时钟信号的逻辑电路的简化示例性框图。

图5是根据本公开的实施例的集成电路的设计和制造中的各个操作的流程图。

图6A、图6B和图6C是适合与该技术的实施例以及该技术的电路设计和电路实施例一起使用的计算机系统的简化框图。

图7是仿真系统的框图。

在这样的各个附图中,可以省略参考标记,由于它与公认的工程实践一致;然而,本领域的普通技术人员应当理解,当在作为整体的图示和描述这种不同附图的随附公开的上下文中观看时,所图示的部件很容易理解。

具体实施方式

附图和以下具体实施方式仅通过说明来表示创新、实施例和/或示例,其中在单个实施例中一起对各种特征、结构或特点进行了描述,以简化本公开。这样的示例性创新、实施例和/或示例所公开的元件、过程、机器、系统、制造或组成中的任何元件、过程、机器、系统、制造或组成的变化容易被识别,并且在没有背离所要求保护的原理的情况下,可以用于商业。附图和具体实施方式还可以隐含或明确指示本文中所描述的示例性实施例的子集的优点和改进。

在附图和具体实施方式中,可以对许多具体细节进行描述,以实现示例性创新、实施例和/或示例中的一个或多个示例性创新、实施例和/或示例。为了不使以下具体实施方式中的示例性创新、实施例和/或示例的呈现晦涩难懂,本领域中已知的一些处理步骤或操作可以组合在一起用于呈现和说明目的,并且不再进行详述。然而,本领域技术人员将认识到,这些示例性创新、实施例和/或示例可以在没有这些具体细节或其等同形式的情况下用于商业。在其他实例中,没有对公知过程和设备进行详细描述,以免不必要地使这些示例性创新、实施例和/或示例的各方面晦涩难懂。在其他实例中,根本不会对本领域中已知的一些处理步骤或操作进行描述。相反,以下描述集中于各种示例性创新、实施例和/或示例的独特特征或元件。更进一步地,虽然本描述可以以单数形式是指结构的一些部件,但是在整个附图中可以描绘一个以上的部件,并且相似的部件使用相似的数字标记。

当设计在FPGA、硬件仿真或其他原型制作系统中配置和运行时,每个仿真周期可以分为两个时间段,即,时钟生成活动时间和组合电路评价时间。在已知仿真技术中,所得的最小仿真周期时间是时钟生成活动时间和组合电路评价时间的总和。在时钟生成活动时间期间,生成输入变量的值,这些值在耦合到锁存器或触发器的时钟引脚时用作时钟,并且这些值传播到锁存器或触发器的时钟引脚。组合电路评价时间与用于评价顺序元件(例如,锁存器和触发器)以及有助于评价顺序元件的数据输入的组合电路的时间相对应,该组合电路通常称为组合路径或数据路径。连接到锁存器或触发器的时钟引脚(例如,时钟端子)的设计网络或变量在本文中称为派生时钟。根据该定义,设计的主要时钟可以被视为派生时钟。

当组合电路包括锁存器时,根据耦合到锁存器的使能输入引脚的时钟信号的信号(例如,时钟信号),锁存器在被评价或使能时变为透明,而在时序周期内的任何时间,在未被评价或禁用时都变为非透明。当组合电路包括触发器时,根据时钟信号的值改变信号值或例如从低逻辑水平转变到高逻辑水平时的耦合到触发器的时钟输入引脚的信号(诸如时钟信号),该触发器在被评价或使能时变为透明,而在未被评价或禁用时变为非透明。

在评价触发器和/或锁存器以进行适当电路操作时,需要知道派生时钟的值。时钟树包括主要设计输入变量,这些主要设计输入变量输入到任何(可选)组合逻辑,该任何(可选)组合逻辑用于在触发器和/或锁存器的输入处生成派生时钟信号。因而,时钟树可以驱动时钟树顺序电路或元件(例如,时钟树触发器或设计顺序电路)的输入,从而使得将根据派生时钟信号评价时钟树顺序电路或设计顺序电路。时钟树顺序电路生成时钟信号作为输出,该时钟信号被耦合以评价另一顺序电路。如在整个说明书中所使用的,耦合器件直接或间接连接,而连接器件直接连接。相比之下,顺序电路生成输出信号,该输出信号仅耦合到其他顺序电路的数据输入信号(即,数据路径信号),并不用于评价任何其他顺序电路。

当时钟树映射到FPGA上时,通过任何(可选)组合逻辑或通过未把较长延迟时间考虑在内的路径传播主要设计输入变量可能会导致仿真期间意外的设计电路故障。然而,为了确保设计的正确操作,仅应当利用时钟的稳定值来评价电路,以防止在仿真或原型制作期间发生意外操作。这可以通过允许时钟树在派生时钟输入处稳定到最终值来实现。

在仿真周期的第一部分期间,在没有传播任何组合路径的同时,进行时钟树评价。在仿真周期的第二阶段中,在没有执行时钟树评价的同时,传播组合数据路径。如果专用于时钟传播的FPGA间FPGA布线资源在组合路径传播期间处于空闲状态而专用于组合数据路径的资源在时钟传播期间处于空闲状态,则由于仿真器的运行速度可能较慢,所以总体布线解决方案并非最佳。

根据本发明的一个方面,在硬件仿真期间对派生时钟(本文中可替代地被称为时钟锥)和触发器以及锁存器(下文中可替代地被称为顺序元件)的评价并行且以流水线方式执行。为了实现该目的以加快仿真速度,在设计中对触发器和锁存器进行评价之前的一个周期内执行对派生时钟的评价。

因而,在仿真周期K期间,计算时钟的值,如同在参考仿真的周期K一样。在周期K+1的开始,如在周期K中计算的时钟的稳定值用于评价顺序元件。结果,在仿真的周期K+1期间,计算出以下内容:(i)周期K+1中的派生时钟的值;以及(ii)与时钟值的周期K相对应的顺序元件的值。

为了使得一旦触发断点并且中止仿真就能够实现设计的可观察性和可控制性,使时钟锥返回一个周期恢复到其前一状态。这确保了仿真的周期K中发生的断点提供周期K的派生时钟和顺序元件二者。通过向用户提供设计的连贯视图,设计状态直接与另一仿真器、模拟器、或其他硬件相当。

为了简单起见,假设设计具有两个时钟,即,周期为6个单位的Clk1和周期为10个单位的Clk2。假设Clk1和Clk2的占空比为50%。时钟信号Clk1和Clk2产生以时间单位0、3、5、6、9、10、12、15出现的8个仿真周期。随着仿真时间的延长,这8个仿真周期以对应时间单位重复出现。应当理解,设计通常包括多于两个的时钟。

传统仿真系统要求对于每个仿真周期(下文中可替代地被称为周期)K,时钟Clk1和Clk2在顺序元件之间的数据传播之前传播。因此,在传统系统中,仿真周期长度由时钟锥传播所花费的时间与随后数据在顺序元件之间传播所花费的时间之和来限定。换句话说,在传统仿真系统中,串行进行时钟和数据的传播。

根据本发明的实施例,并行进行时钟和数据的传播。因而,在每个仿真周期K期间评价的时钟锥用于评价对周期K+1的设计的顺序元件之间的数据的传播。因为根据本发明的实施例,对时钟锥和顺序元件的评价由一个时钟周期分开,所以评价并行发生,因此导致了仿真周期长度的减少。

在仿真设计时,设计者经常插入一个或多个触发(本文中也被称为中断或断点),该一个或多个触发使得仿真停止(在本文中也称为中止),以便使得用户能够观察并检查设计值。例如,当寄存器输出改变为特定值时,触发可能会发生。因此,参考时间的周期K中出现的断点必须同时呈现派生时钟以及周期K期间的触发器和锁存器。因为周期K期间触发的断点将在周期K中找到顺序元件,而在周期K+1中找到派生时钟,所以本发明的实施例将时钟锥返回一个周期,以提供正确结果。因此,设计者在断点期间对设计所做的并且可能已经在整个设计中传播的任何修改(例如,将值写入寄存器)也应予以撤消和说明,以便在中止周期期间向用户提供对设计的状态的准确描述。

图1是根据本发明的一个实施例的硬件仿真控制块100的简化高级框图。控制块100被示为部分包括N个延迟块10

每个延迟块101经由限定其关联时钟的时段的对应信号delay

在正常操作中,当信号触发未被断言时,多路复用器(复用器)14

最小延迟计算器块16从多路复用器14

时钟调度器18适于调度其延迟值与最小延迟匹配的每个时钟的转变,并且使其延迟值与最小延迟值不匹配的每个时钟的延迟值递减最小延迟。例如,假设正在被仿真的设计具有两个时钟,即,Clk1和Clk2,即,i等于2。还假设Clk1和Clk2的延迟值分别为3个时间单位和5个时间单位。因而,信号Clk1每三个时间单位具有从低到高或高到低的转变,并且信号Clk2每五个时间单位具有从低到高或高到低的转变。

在第一仿真周期期间,信号Clk1和Clk2分别以3个时间单位和5个时间单位转变(切换)。在第二仿真周期期间,最小延迟块计算器16确定延迟3小于延迟5。因而,在第二仿真周期期间,时钟调度器18以3个时间单位调度信号Clk1上的转变并且以(5-3=2)个时间单位调度信号Clk2上的转变。在第三仿真周期期间,最小延迟块计算器16确定延迟2小于延迟3。因此,在第三仿真周期期间,时钟调度器18以(3-2=1)个时间调度单位信号Clk1上的转变并且以5个时间单位调度信号Clk2上的转变。在第四仿真周期期间,最小延迟块计算器16确定延迟1小于延迟5。因此,在第四仿真周期期间,时钟调度器18以3个时间单位调度信号Clk1上的转变并且以(5-1=4)个时间单位调度时钟Clk2上的转变。根据上文所描述的协议,确定时钟转变的过程继续进行。下表I中总结了八个仿真周期中Clk1和Clk2的转换,其中符号#表示延迟值:

表1

图2是时钟信号Clk1和Clk2的时序图以及与上述表I相关联的对应全局最小延迟。图1还示出了全局时间。时钟信号生成器20被配置为导致如由时钟调度器18确定且如上文所描述的时钟上的转变。

为了确定性地将时钟锥恢复为先前状态,必须为控制时钟生成的内部信号维持采样值。如上文所描述的,在基于动态调度的延迟的时钟生成方案中,针对有助于动态调度、时钟调度器状态和时钟信号的每个延迟块,维持采样值。

当断点被触发时,每个延迟块内的表示周期K的样本用作最小延迟计算器块16的输入,并且允许通过组合逻辑传播到时钟调度器18,时钟调度器18的内部状态恢复为其采样值。同样,表示时钟周期K的样本应用于设计并且被允许传播。因而,当时钟停止触发单元30在例如周期K中断言信号触发时,多路复用器14

一旦清除了断点并且恢复了设计评价,则再次允许时钟锥评价周期K+1,同时数据触发器保持处于周期K中。因此,恢复了时钟锥和数据触发器评价的交错重叠,并且设计继续像其在到达断点之前一样重叠执行。用户清除断点之后,通过允许时钟锥前进到周期K+1,仿真恢复,同时数据触发器保持处于周期K中。

图3是每个延迟块10

如果输出信号延迟_增量等于全局_最小_延迟输入信号,则XOR门208生成逻辑低值,从而使得触发器208在信号CK的下一转变期间选择接收指派给延迟块的延迟值的多路复用器210的输入I

图4是根据本发明的一个实施例的逻辑电路500的简化示例性框图,该逻辑电路500使得能够以流水线方式并行评价数据和时钟信号。硬件仿真控制块100生成时钟信号Clk1、Clk2、……、Clkn,如图1和图2所示并且上文所详细地描述的。图4示出了用于确保在周期K+1中评价的时钟Clk1用于数据传播的周期K评价中以实现流水线化的附加地电路系统。尽管仅示出了时钟Clk1的电路系统,但是应当理解,其他时钟具有相似附加电路,为了清楚起见,该相似附加电路未示出。

流水线逻辑500被示为包括边缘检测器300和数据路径控制逻辑400。被示为部分包括触发器302以及具有一个反相输入的AND门304的边缘检测器300检测时钟信号Clk1的转变,并且作为响应,生成信号Clk1_edge。信号Clk1_edge应用于触发器304、308的使能EN端子。设置在触发器304的输出(Q)与触发器308的数据输入(D)之间的是数据路径组合逻辑锥306,其通常包括许多组合门(为了简单起见,未示出)。触发器302、304和308在它们的时钟端子处接收系统时钟。从数据路径组合逻辑锥306接收的信号EN和数据在系统时钟到达之前稳定且有效。触发器308的输出Q递送到正在被仿真的设计。

具体实施方式-技术支持

通用计算机说明

图6A、图6B和图6C是适合与该技术的实施例以及该技术的电路设计和电路实施例一起使用的计算机系统的简化框图。

在图6A中,计算机系统3110通常包括至少一个计算机或处理器3114,其经由总线子系统3112与许多外围设备通信。通常,计算机可以包括或处理器可以是以下任一项:微处理器、图形处理单元、或数字信号处理器、以及它们的电子处理等同物,诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。下文还对术语‘处理器’和‘计算机’进行定义。这些外围设备可以包括存储子系统3124、用户接口输入设备3122、用户接口输出设备3120、以及网络接口子系统3116,该存储子系统3124包括存储器子系统3126和文件存储子系统3128。输入和输出设备允许用户与计算机系统3110交互。

该计算机系统可以是服务器计算机、客户端计算机、工作站、大型机、个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、智能手机、web设施、机架式“刀片”、信息亭、电视、游戏机、网络路由器、交换机或网桥、或能够(顺序或以其他方式)执行指定该机器要采取的动作的指令124的任何数据处理机器。

该计算机系统通常包括操作系统,诸如Microsoft的Windows、Sun Microsystems的Solaris、Apple Computer的MacOs、Linux或Unix。该计算机系统通常还可以包括基本输入/输出系统(BIOS)和处理器固件。处理器使用操作系统、BIOS和固件来控制子系统以及连接到处理器的接口。与这些操作系统兼容的典型处理器包括Intel的Pentium和Itanium、Advanced Micro Devices的Opteron和Athlon、以及ARM Holdings的ARM处理器。

所要求保护的本发明的创新、实施例和/或示例既不限于传统计算机应用,也不限于运行它们的可编程装置。例如,所要求保护的创新、实施例和/或示例可以包括光学计算机、量子计算机、模拟计算机等。该计算机系统可以是多处理器或多核系统,并且可以使用分布式系统或远程系统或在其中实现。本文中的‘处理器’本文中在广义上用于包括单处理器和多核阵列或多处理器阵列,其包括图形处理单元、数字信号处理器、数字处理器、以及这些设备的组合。进一步地,虽然仅图示了单个计算机系统或单个机器,但是使用此类术语的单数形式还应当表示计算机系统或机器的任何集合,这些计算机系统或机器单独或共同执行指令124以执行本文中所讨论的指令集合中的任何一个或多个指令集合。由于计算机和网络的不断改变的性质,所以对图6A所描绘的计算机系统3110的描述仅旨在作为用于说明优选实施例的一个示例。计算机系统3110的许多其他配置可能具有比图6A所描绘的计算机系统更多或更少的部件。

网络接口子系统3116提供到外部网络的接口,其包括到通信网络3118的接口并且经由通信网络3118耦合到其他计算机系统或机器中的对应接口设备。通信网络3118可以包括许多互连的计算机系统、机器和通信链路。这些通信链路可以是有线链路、光学链路、无线链路、或用于传达信息的任何其他设备。通信网络3118可以是任何合适的计算机网络,例如,诸如互联网之类的广域网和/或诸如以太网之类的局域网。通信网络可以是有线和/或无线的,并且通信网络可以使用加密和解密方法,诸如使用虚拟专用网络可获得的加密和解密方法。通信网络使用一个或多个通信接口,该一个或多个通信接口可以从其他系统接收数据或向其他系统传输数据。通信接口的实施例通常包括以太网卡、调制解调器(例如,电话、卫星、电缆或ISDN)、(异步)数字用户线(DSL)单元、火线接口、USB接口等。可以使用一种或多种通信协议,诸如HTTP、TCP/IP、RTP/RTSP、IPX、和/或UDP。

用户接口输入设备3122可以包括字母数字键盘、小键盘、指向设备(诸如鼠标,轨迹球,触摸板,手写笔或图形输入板)、扫描仪、并入显示器的触摸屏、诸如话音识别系统或麦克风之类的音频输入设备、视线识别、脑电波模式识别、以及其他类型的输入设备。这些设备可以通过有线方式或无线方式连接到计算机系统。一般而言,使用术语“输入设备”旨在包括将信息输入到计算机系统3110中或通信网络3118上的所有可能的设备类型和方式。用户接口输入设备通常允许用户选择在一些类型的用户接口输出设备(例如,显示器子系统)上出现的对象、图标、文本等。

用户接口输出设备3120可以包括显示器子系统、打印机、传真机、或诸如音频输出设备之类的非视觉显示器。显示器子系统可以包括阴极射线管(CRT)、诸如液晶显示器(LCD)之类的平板设备、投影设备、或用于创建可见图像的其他设备(诸如虚拟现实系统)。显示器子系统还可以诸如经由音频输出设备或触觉输出(例如,振动)设备来提供非视觉显示器。一般而言你,使用术语“输出设备”旨在包括将信息从计算机系统3110输出到用户或另一机器或计算机系统的所有可能类型的设备和方式。

存储器子系统3126通常包括多个存储器,其包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)3130(或其他易失性存储设备)以及其中存储固定指令的只读存储器(ROM)3132。文件存储子系统3128为程序和数据文件提供持久存储,并且可以包括硬盘驱动器、软盘驱动器、以及相关联的可移除介质、CD-ROM驱动器、光盘驱动器、闪存或可移除介质盒。实现某些实施例的功能性的数据库和模块可以由文件存储子系统3128存储。

总线子系统3112提供了一种用于使计算机系统3110的各个部件和子系统按预期彼此通信的设备。尽管总线子系统3112被示意性地示出为单个总线,但是总线子系统的备选实施例可以使用许多总线。例如,基于RAM的主存储器可以使用直接存储器访问(DMA)系统直接与文件存储系统通信。

图6B描绘了存储器3140,诸如与文件存储子系统3128和/或网络接口子系统3116相关联的非暂态计算机可读数据和信息存储介质,并且可以包括指定电路设计的数据结构。存储器3140可以是硬盘、软盘、CD-ROM、光学介质、可移除介质盒、或以易失性形式或非易失性形式存储计算机可读数据的其他介质。从这种存储器读取到计算机中的软件可以在选定时刻处从有形形式转换为通过介质(诸如网络、连接器、电线或迹线、电脉冲、或诸如空间或大气之类的介质、电磁频谱中的波长比红外光长的电磁辐射)传播的传输信号。

图6C指示使用所描述的技术创建的集成电路3190,该集成电路3190包括例如从单元库中选择的一个或多个单元。

具体实施方式-技术支持

硬件/软件等同物

本文中所描述的创新、实施例和/或示例中的一些创新、实施例和/或示例包括和/或使用处理器。如本文中所使用的,术语‘处理器’指示有形数据和信息处理设备,其通常使用序列变换(也被称为‘操作’)对数据和信息进行物理变换。数据和信息可以由能够通过处理器存储、访问、传输、组合、比较或以其他方式操纵的电信号、磁信号、光信号或听觉信号物理表示。术语“处理器”可以指示单处理器和多核系统或多处理器阵列,其包括图形处理单元、数字信号处理器、数字处理器、或这些元件的组合。

处理器可以是电子处理器(例如,包括数字逻辑电路系统(例如,二进制逻辑))或模拟处理器(例如,运算放大器)。处理器还可以是非电子处理器,例如,在基于光学信号处理、DNA变换或量子力学、或技术的组合(诸如光电处理器)的处理器中可以看出。对于以二进制形式构造的数据和信息,可以使用AND、OR和NOT逻辑操作(及其派生物、诸如NAND、NOR和XOR操作)来变换数据和信息的任何处理器都可以使用布尔逻辑的任何功能来变换数据和信息。诸如模拟神经网络处理器之类的处理器还可以非数字方式变换数据和信息。没有科学证据表明这些处理器中的任何处理器正在以相当于人类大脑的生物电结构的任何方式或形式处理、存储和检索数据和信息。

一个或多个处理器还可以在‘云计算’环境中或作为‘软件即服务’(SaaS)来支持相关操作的性能。例如,操作中的至少一些操作可以由在分布式系统或远程系统处可用的处理器组来执行,这些处理器可以经由通信网络(例如,互联网)和经由一个或多个软件接口(例如,应用程序接口(API))来访问。

如本文中所使用的,术语‘模块’指示有形数据和信息处理设备,其通常在大小和/或复杂性上受到限制。例如,术语‘模块’可以指示可以变换数据和信息的一个或多个方法或过程。术语‘模块’还可以指示计算机程序中一个或多个方法和过程的组合。术语‘模块’还可以指示数字逻辑设备的小型网络,其中逻辑设备的互连为网络提供了结构。包括以专用语言(诸如System C)指定的模块的方法和过程可以用于生成数字逻辑设备网络的规范,该数字逻辑设备处理数据和信息的结果与从方法和过程获得的结果完全相同。

模块可以被永久配置(例如,硬连线以形成硬件)、被临时配置(例如,使用软件编程)、或两种配置的组合(例如,结构化ASIC)。经永久配置的模块可以例如使用通常在制造期间配置的专用集成电路(ASIC)(诸如算术逻辑单元(ALU)、可编程逻辑阵列(PLA)或只读存储器(ROM))来制造。经临时配置的模块可以使用现场可编程门阵列(FPGA,例如,Xilink或Intel的Altera所出售的)、随机存取存储器(RAM)或微处理器来制造。模块被配置为通常使用应用于数据和信息的序列变换(也称为‘操作’)处理数据和信息(或在ROM和RAMS的情况下,通过使用输入信息作为存储输出数据和信息的存储器的地址变换数据和信息),以执行本发明的创新、实施例和/或示例的各个方面。

经临时配置的模块不需要在任一时刻配置。例如,包括一个或多个模块的处理器可以具有在不同时间配置的模块。处理器可以在一个时刻处包括一个或多个模块的集合,并且在不同的时刻处包括一个或多个模块的不同集合。以永久配置形式、临时配置形式或这两种形式的组合来制造或实现模块的决策可能受成本、时间考虑、工程约束和/或特定设计目标的驱动。模块处理的“物质”与制造或实现模块的形式无关。

如本文中所使用的,术语‘算法’指示包括模块可以用来变换数据和信息以实现结果的操作或指令序列或集合的过程。模块可以包括一个或多个算法。如本文中所使用的,术语‘线程’是指指令序列,其可以包括整个过程或算法的指令的子集。进程或算法可以划分为多个线程,这些线程可以并行执行。

如本文中所使用的,术语‘计算机’包括至少一个信息处理器,该至少一个信息处理器例如可以使用可以包括晶体管的电子门来执行某些操作,诸如(但不限于)AND、OR和NOT逻辑操作,其中添加了存储器(例如,基于使用NOT-AND或NOT-OR操作的触发器的存储器)。据说这种处理器是图灵完备的或在计算上通用的。无论计算机是否是数字计算机,它通常都包含许多模块。

如本文中所使用的,术语‘软件’或‘程序’指示配置用于本说明书中所描述的创新、实施例和示例中的处理器的一个或多个算法和数据结构。可通过软件配置的这样的设备包括一个或多个计算机,例如,独立、客户端或服务器计算机;或一个或多个硬件模块;或一个或多个这样的计算机或模块的系统。如本文中所使用的,术语“软件应用”指示数据和指令集合,这些数据和指令配置处理器以实现特定结果,例如,执行文字处理操作或加密数据集合。

如本文中所使用的,术语‘编程语言’指示用于指定包括软件的指令和数据集合的语法和句法。编程语言包括汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种更高级语言(诸如传统过程编程语言,例如,“C”编程语言或类似编程语言(诸如SystemC)、或面向对象的编程语言(诸如Smalltalk、C++等)、以及任何未来的等同编程语言)的任何组合编写的源代码或目标代码。

软件从数据和信息存储设备录入(等同于读取)到计算机或计算机系统的一个或多个存储器中。该计算机通常具有用于读取用于运送软件的存储介质的设备,或具有通过网络接收软件的接口设备。在通用计算机说明章节中对该过程进行了讨论。

具体实施方式-技术支持

EDA系统/工作流程说明

图7图示了在使用带有计算机的软件工具以及可能的特殊硬件辅助工具设计、验证和制造诸如集成电路之类的制品以变换并验证表示集成电路的设计数据和指令时执行的各种过程。这些过程开始于使用设计者所供应的信息生成产品构思110,该信息在过程期间被变换以创建使用EDA软件工具112的制品(在本文中被称为设计或设备),EDA软件工具112在本文中也可以表示为EDA软件、设计工具或验证工具。当设计定案时,该设计可以下线134,其通常是在将集成电路的图稿(例如,几何图案)发送到制造设施以制造掩模组时,该掩模组然后用于制造集成电路。在下线之后,制造136半导体管芯并且执行封装和组装过程138,从而产生完成的集成电路140,该完成的集成电路140在本文中也可以表示为电路、设备、部件、芯片或SoC(片上系统)。

制品(例如,电路或系统)在商业中以范围从低级晶体管布局到高级描述语言的多种抽象级使用。大多数设计者使用诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera之类的硬件描述语言(HDL)从较高抽象级开始设计其电路和系统。对于开发者而言,高级HDL更容易理解,尤其是对于大型系统而言,高级HDL可能描述了高度复杂的概念,而使用较低抽象级则很难理解这些概念。HDL描述可能会转换为其他抽象级,这对开发人员很有帮助。例如,高级描述可以转换为逻辑级寄存器传送级(RTL)描述、门级(GL)描述、布局级描述、或掩模级描述。每个较低抽象级都会把更多细节引入设计描述中。较低抽象级可以由计算机自动生成,从设计库导出,或由另一设计自动化技术创建。较低抽象级的规范语言的示例是SPICE,其大量使用基于模拟的电路的详细描述。

使用EDA软件工具112的设计过程包括下文所描述的过程114至132。该设计流程描述仅用于说明目的,并不意味着限制本公开。例如,实际集成电路设计可能需要设计者以与本文中所描述的顺序不同的顺序执行设计操作。

在系统设计114期间,设计者描述了要制造的功能。设计者还可以执行假设分析计划以完善功能性并检查成本等。该阶段可能会发生硬件-软件架构分区。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括:Model Architect产品、Sabre产品、System Studio产品、以及Designware产品。

在逻辑设计和功能验证116期间,以一种或多种硬件描述语言或HDL指定电路中的模块,并且检查HDL中的设计的功能准确性,也就是说,以匹配被设计为确保设计产生正确输出的电路或系统的规范要求。示例性HDL语言是Verilog、VHDL和SystemC。通常使用基于软件的仿真器和其他工具(诸如测试台生成器、静态HDL检查工具和形式验证工具)来完成功能验证。在一些情形下,被称为‘仿真器’或‘原型制作系统’的特殊硬件用来加快功能验证。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括VCS产品、Vera产品、Designware产品、Magellan产品、Formality产品、ESP产品、以及Leda产品。还可以在该状态下使用的购自Synopsys的示例性仿真器和原型制作产品包括Zebu.RTM和Protolink.RTM。(RTM=“注册商标”)。

在测试118的合成和设计期间,HDL代码转化为网表。可以针对目标技术优化该网表。附加地,可以设计并实现测试以检查完成的集成电路。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括设计编译器产品、物理编译器产品、测试编译器产品、功率编译器产品、FPGA编译器产品、Tetramax产品、以及Designware产品。

在网表验证120期间,检查网表是否符合时序约束以及是否与HDL代码相对应。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括Formality产品、Primetime产品、以及VCS产品。

在设计计划122期间,针对时序和顶级布线,构建并分析了集成电路的总体平面图。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括Astro产品和IC编译器产品。

在布局实现方式124期间,物理放置(诸如晶体管或电容器之类的电路元件的定位)和布线(通过多个导体对其的连接)发送,如同选择库单元以执行特定逻辑功能一样。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括Astro产品和IC编译器产品。

在分析和提取126期间,以布局级验证电路功能,这准许对布局设计进行改进。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括Astrorail产品、Primerail产品、Primetime产品、以及Star RC/XT产品。

在物理验证128期间,检查布局设计以确保制造约束(诸如DRC约束、电气约束、光刻约束以及与HDL设计规范匹配的电路系统功能)的正确性。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括Hercules产品。

在分辨率增强130期间,执行布局的几何操纵以改善设计的可制造性。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括Proteus产品。

在下线期间,创建数据以用于生产光刻掩模(如果适当,则在应用光刻增强之后)。可以在下线期间使用的来自Synopsys公司的示例EDA软件产品包括IC编译器和定制设计器系列产品。

在掩模数据准备132期间,‘下线’数据用于产生光刻掩模,该光刻掩模用于生产成品集成电路。可以在该阶段使用的加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括CATS系列产品。

对于所有上文所提及的集成电路设计工具,可以使用来自其他EDA供应商的类似工具,诸如Cadence、Siemens、其他公司实体或来自大学的各个非商业性工具、或开源存储库作为备选方案。

可以在上述阶段中的一个或多个阶段使用本公开的各实施例。具体地,可以在EDA软件112中使用本公开的一些实施例。

优选地,存储子系统用于存储程序和数据结构,该程序和数据结构提供本文中所描述的一些或全部EDA工具以及用于为库开发单元以及使用该库进行物理和逻辑设计的工具的功能性。这些程序和数据结构通常以本领域普通技术人员已知的方式由一个或多个处理器执行。

具体实施方式-技术支持

仿真环境说明

EDA软件系统(诸如图5所描绘的元件112)通常包括仿真系统116,以验证电路设计的功能性。图7描绘了典型仿真系统,其包括主机系统300(通常是EDA系统的一部分)和仿真器系统202(通常是一组可编程设备,诸如现场可编程门阵列(FPGA))。主机系统通常使用编译器210来生成数据和信息,以将仿真器配置为仿真电路设计。要仿真的更多电路设计中的一个电路设计被称为DUT(被测设计)。仿真器是硬件系统,其仿真DUT,例如使用仿真结果来验证DUT的功能性。可以用于本文中所公开的实施例的仿真系统的一个示例是购自Synopsys公司的ZeBu服务器。

主机系统300包括一个或多个处理器。在主机系统由多个处理器组成的实施例中,本文中被描述为由主机系统执行的功能可以分布在多个处理器之间。

主机系统300通常包括编译器210,其处理以表示DUT的硬件描述语言编写的代码,从而产生数据(通常为二进制数据)和用于配置仿真系统202来仿真DUT的信息。编译器210可以变换、改变并重新配置DUT的时序,向DUT的时序添加新功能,和/或控制DUT的时序。

主机系统和仿真器使用仿真连接所携载的信号来交换数据和信息。连接可以是一个或多个电缆,例如,引脚配置与RS232或USB协议兼容的电缆。该连接可以是诸如局域网之类的有线通信介质或网络或诸如互联网之类的广域网。连接可以是使用诸如Bluetooth.RTM或IEEE 802.11之类的无线协议的无线通信介质或具有一个或多个访问点的网络。主机系统和仿真器可以通过诸如网络服务器之类的第三设备交换数据和信息。

该仿真器包括许多FPGA(或其他可编程设备),例如,图2中的元件204

可编程设备可以包括可编程逻辑块的阵列和可重新配置互连的层次结构,其允许根据HDL代码中的描述彼此连接可编程逻辑块。可编程逻辑块中的每个可编程逻辑块都可以被配置为执行复杂组合功能或仅简单逻辑门,诸如AND和XOR逻辑块。

在许多FPGA中,逻辑块还包括存储器元件,其可以是简单的锁存器、触发器、或更复杂的存储器块。依据不同逻辑块之间的互连的长度,信号可能会在不同时间到达逻辑块的输入端子。

可编程处理器204

对于要被仿真的DUT,仿真器从主机系统接收包括对DUT的描述的一个或多个位文件。这些位文件还指定主机系统使用跟踪和注入逻辑、分区到仿真器FPGA的映射以及设计约束创建的DUT的分区。基于位文件,仿真器将FPGA配置为执行DUT的功能。对于一些仿真器,仿真器的一个或多个FPGA已经在FPGA的硅中内置了跟踪和注入逻辑。对于这种类型的仿真器,不必通过主机系统配置FPGA以仿真跟踪和注入逻辑。

主机系统110接收(例如,从用户或从数据存储装置)对要仿真的DUT的描述。在一个实施例中,DUT描述采用硬件描述语言(HDL),诸如寄存器传送语言(RTL)。在另一实施例中,DUT描述在网表级文件中,或在网表级文件和HDL文件的混合中。如果DUT描述的一部分或整个DUT描述采用HDL,则主机系统会合成DUT描述以基于DUT描述来创建门级网表。主机系统可以使用DUT的网表来将DUT划分为多个分区,其中这些分区中的一些分区包括跟踪和注入逻辑。跟踪和注入逻辑跟踪经由FPGA接口交换的接口信号。附加地,跟踪和注入逻辑可以用于将所跟踪的接口信号注入FPGA的逻辑。主机系统将每个分区映射到仿真器的FPGA。对于一些仿真器,跟踪和注入逻辑仅包括在FPGA组的选择分区中。跟踪和注入逻辑可以内置到仿真器的FPGA中的一个或多个FPGA中。主机系统可以合成要映射到FPGA中的多路复用器。多路复用器可以用于通过跟踪和注入逻辑将接口信号注入DUT逻辑。

主机系统创建位文件,该位文件描述DUT的每个分区以及分区到FPGA的映射。对于并入了跟踪和注入逻辑的分区,位文件还描述了逻辑的并入。位文件还可以包括放置和路线信息以及设计约束。主机系统存储位文件,并且还为DUT的部件存储信息,这些信息描述哪些FPGA要仿真DUT的每个部件(每个部件映射到哪些FPGA)。

根据请求,主机系统将位文件传输到仿真器。主机系统指令仿真器仿真DUT。在DUT仿真期间或在仿真结束时,主机系统通过仿真连接从仿真器接收仿真结果。仿真结果是仿真器基于DUT的仿真而生成的数据和信息。仿真结果包括每个FPGA的跟踪和注入逻辑所跟踪的接口信号(接口信号的状态)。主机系统可以存储仿真结果,或将这些仿真结果传输到另一处理系统。

在对DUT的仿真之后,用户可以请求调试DUT的部件。如果做出这种请求,则用户可以提供仿真的时间段以进行调试。主机系统基于所存储的信息来标识配置了哪些FPGA来仿真部件。主机系统取回所存储的接口信号,其与该时间段相关联的并且通过每个标识的FPGA的跟踪和注入逻辑跟踪。主机系统指令仿真器一次一个、一次多个或全部重新仿真所标识的FPGA。主机系统将所取回的接口信号传输到仿真器,以便在该时间段内重新仿真部件。每个标识的FPGA的跟踪和注入逻辑将其从主机系统接收的相应接口信号注入映射到FPGA的DUT的逻辑中。在对FPGA进行多次重新仿真的情况下,结果可以全部合并在一起以具有完整的调试视图。

主机系统在部件的重新仿真期间从仿真器接收由所标识的FPGA的逻辑跟踪的信号。主机系统存储从仿真器接收的信号。与在初始仿真期间跟踪的信号相比,在重新仿真期间跟踪的信号可能具有更高的采样率。例如,在初始运行中,所跟踪的信号可能包括每X毫秒保存的硬件状态。然而,在重新仿真中,所跟踪的信号可能包括每Y毫秒保存的硬件状态,其中Y小于X。如果用户请求查看在重新仿真期间跟踪的信号的波形,则主机系统可以取回所存储的信号并且显示信号的曲线(生成信号的波形)。之后,用户可以例如请求重新仿真相同的部件,但是时间段不同,或重新仿真另一部件。

主机系统通常包括至少七个子系统:设计合成器、映射模块、运行时间模块、结果模块、调试模块、波形模块和存储模块。这些子系统中的每个子系统都可以体现为硬件、软件、固件或其组合。这些部件一起配置仿真器,并且监测仿真结果。

设计合成器将DUT的HDL转换为门级逻辑。对于要仿真的DUT,设计合成器接收对DUT的描述。如果对DUT的描述全部或部分采用HDL(例如,RTL或其他抽象级),则设计合成器210合成DUT的HDL以创建其中以门级逻辑描述DUT的门级网表。

映射模块对DUT进行分区,并且将分区映射到仿真器FPGA。映射模块使用DUT的网表将门级的DUT划分为多个分区。对于每个分区,映射模块取回跟踪和注入逻辑的门级描述,并且将逻辑并入分区中。如上文所描述的,分区中包括的跟踪和注入逻辑被配置为跟踪经由分区所映射到的FPGA的接口交换的信号(跟踪接口信号)。跟踪和注入逻辑可以在分区之前并入DUT中。例如,在合成DUT的HDL之前或之后,跟踪和注入逻辑可以通过设计合成器并入。因此,跟踪和注入逻辑可能与分区不匹配,它可能是子集,超集,甚至与分区不同。

除了包括跟踪和注入逻辑之外,映射模块还可以在分区中包括附加跟踪逻辑,以便跟踪未被跟踪和注入逻辑跟踪的某些DUT部件的状态(以跟踪除跟踪和注入逻辑所跟踪的接口信号)。映射模块可以在分区之前的DUT中或分区之后的分区中包括其他跟踪逻辑。在合成描述之前,设计合成器可以在DUT的HDL描述中包括附加跟踪逻辑。

映射模块将DUT的每个分区映射到仿真器的FPGA。映射模块使用设计规则、设计约束(例如,时序或逻辑约束)以及关于仿真器的信息来执行分区和映射。对于DUT的部件,映射模块将描述哪些FPGA要模拟每个部件的信息存储在存储模块中。

基于分区和映射,映射模块生成一个或多个位文件,该一个或多个位文件描述所创建的分区以及逻辑到仿真器的每个FPGA的映射。位文件可以包括诸如DUT的约束之类的附加信息以及FPGA之间的连接和每个FPGA内的连接的布线信息。映射模块可以生成用于DUT的每个分区的位文件,该位文件可以存储在存储模块中。根据用户的请求,映射模块将位文件传输到仿真器,仿真器使用该位文件将FPGA配置为仿真DUT。

如果仿真器包括具有跟踪和注入逻辑的专用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的任何元件(例如,部件或信号)以进行调试/重新仿真。

波形模块基于所跟踪的信号来生成波形。如果用户请求查看在仿真运行期间跟踪的信号的波形,则主机系统从存储模块中取回信号。波形模块向用户显示信号曲线。对于一个或多个信号,当从仿真器接收到信号时,波形模块可以自动生成信号曲线。

具体实施方式-语义支持

指示符‘商业解决方案’仅针对以下段落指示工程领域(因此是非抢占式的,参见Bilski)特定电子结构、指定机器的过程、可制造电路(及其Church-Turing等同物)、或在商业中用于解决技术问题的物质组成,也就是说,在商业中使用科学应用或在商业中使用技术。

指示符‘抽象’(当在本文中所公开的任何实施例的专利权利要求中用于新商业解决方案时,该新商业解决方案是一种或多种自然法则的科学应用{参见Benson},并且解决了商业中使用的技术问题{参见Diehr}或对现有商业解决方案进行了改进{参见Diehr},由一位或多位发明人精确定义{参见MPEP 2111.01},如下:

a)如果新商业解决方案并不新颖,则它为‘抽象’(例如,它在同等现有技术中众所周知{参见Alice}和/或使用现有技术的等同解决方案相当普遍用于科学、工程或商业{参见Bilski},因此根据35U.S.C.102不能取得专利,例如,因为它“难以理解”{参见Merriam-Webster的‘抽象’定义}商业解决方案与现有技术的等同解决方案有何不同;或

b)如果新商业解决方案显而易见,也就是说,如果现有技术包括至少一个类似的现有技术解决方案{参见KSR}或现有技术包括本领域普通技术人员可以组合它们{参见Alice}以等同于新商业解决方案的至少两个现有技术项{“PHOSITA”,参见MPEP 2141至2144},则它为‘抽象’,因此根据35U.S.C.103不能取得专利,例如,因为它“难以理解”新商业解决方案与现有技术的PHOSITA组合/应用有何不同;或

c)如果因为操作性描述中的指导不足,或因为仅使用未指定元件、参数或功能性来描述{参见Mayo}通用实现方式,以使PHOSITA无法实例化新商业解决方案的有用实施例,而无需例如通过PHAZITA执行特殊编程{参见Katz}或电路设计,所以新商业解决方案未在操作性描述中公开,则它为‘抽象’,因此根据35U.S.C.112不能取得专利,例如,因为它“难以理解”如何在商业中使用新商业解决方案的任何实施例。

具体实施方式-总结

前述具体实施方式单独指示本文中所描述的单个特征、结构、功能或特点以及两个或更多个这样的特征、结构、功能或特点的任何组合,只要这样的特征、结构、功能或特点或其组合鉴于本领域技术人员的知识作为一个整体基于本说明书,而与这样的特征、结构、功能或特点或其组合是否解决了本文中所公开的任何问题无关并且不限于权利要求的范围。当所要求保护的发明的实施例包括特定特征、结构、功能或特点时,无论是否明确描述,该实施例都在本领域技术人员的知识范围之内,以与其他实施例结合使用这样的特征、结构、功能或特点来替代另一特征、结构、功能或特点。

鉴于前述具体实施方式,对于本领域技术人员而言,显而易见的是,在本文中所描述的诸如元件的功能和布置之类的创新、实施例和/或示例的范围内,可以做出许多变化,而没有背离本文中所描述的原理。对于本领域技术人员而言,显而易见的,实施例的一个或多个元件可以替代另一实施例中的一个或多个元件。本文中所描述的实施例直接指示本发明的原理及其有用应用,从而使得本领域的其他技术人员能够理解各种实施例和变型如何适合于所指示的特定用途。

出于说明和描述的目的,已经提供了所要求保护的发明的创新、实施例和/或示例的前述具体实施方式。它并不旨在穷举或将所要求保护的发明限于所描述的精确形式,而是应被赋予与本文中所公开的原理和特征相一致的最宽范围。显然,本领域技术人员将认识到许多变化。在没有限制的情况下,通过引用在本专利申请中描述、指示或并入的任何和所有等同物具体通过引用并入本文中对创新、实施例和/或示例的描述中。另外,本文中关于任何一个实施例通过引用描述、指示或并入的任何和所有变化也应被认为是关于所有其他实施例的教导。任何这样的变化都包括当前已知的变化以及未来的变化,例如,本文中所使用的任何元件包括提供相同功能的未来等同元件,而与未来等同物的结构无关。

意图是所要求保护的发明的范围由所附权利要求书和等同物限定和判断。所附权利要求在此并入具体实施方式中,其中每个权利要求独立作为单独实施例。与权利要求中所明确叙述的特征相比,所公开的实施例可以使用更多的特征来描述。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号