首页> 中国专利> 用于标识状态保持回路和振荡回路的硬件仿真系统和方法

用于标识状态保持回路和振荡回路的硬件仿真系统和方法

摘要

电路硬件仿真模块被配置为标识仿真图的振荡的子图,或者标识仿真图的状态保持的子图。仿真模块标识仿真电路内的一个或多个回路;生成仿真电路的至少一部分的非循环仿真,其中非循环仿真由一个或多个回路断路器表征;至少部分地基于表征非循环仿真的回路断路器的数量n,生成基于硬件的回路检测器电路的回路检测器仿真,其中回路检测器仿真包括振荡检测器或状态保持检测器中的至少一项;以及针对仿真电路的多个输入值,执行回路检测器仿真以生成输出,该输出指示仿真电路的振荡状态或状态保持状态中的至少一项。

著录项

  • 公开/公告号CN112673376A

    专利类型发明专利

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

    原文格式PDF

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

    申请/专利号CN201980058865.4

  • 发明设计人 O·库德特;F·迪吕;F·佩纳卢;

    申请日2019-09-25

  • 分类号G06F30/3308(20060101);G06F30/33(20060101);G06F30/333(20060101);

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

  • 代理人王茂华

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:36:57

说明书

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

技术领域

本发明涉及集成电路仿真,并且更具体地,涉及经由仿真来检测集成电路设计内的回路特性。

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

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

背景技术

芯片(例如,集成电路芯片)设计的一个步骤是验证网表的正确性。对网表的模拟是用于设计验证的优选技术,因为使用更多输入向量来提高正确性覆盖范围在计算上是可行的。

某些网表包括如下的回路,众所周知,由于信号的值可能取决于信号自身,因此这些回路会对使用软件或仿真器来模拟那些网表造成困难。当信号取决于自身时,电路可能会由错误行为表征,诸如振荡的信号输出(由于信号从未稳定而创建未定义的行为)和/或状态保持信号(创建不期望有的与时间有关的相关性)。

已知回路的静态分析在计算上过于昂贵,以至于无法评估在软件实现的仿真期间,回路是振荡的还是状态保持的。因此,错误回路在芯片设计期间可能不会被注意到,并且可能会使得网表无法操作或难以手动调试。

发明内容

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

某些实施例涉及通过利用硬件仿真实现网表来标识状态保持回路和/或振荡回路的软件仿真配置。某些实施例为回路安装附加硬件逻辑,该附加硬件逻辑不影响原始网表的性能并且仅负责在仿真时检测回路的错误行为(例如,振荡或状态保持)。每当有问题的回路结构被标识时,通知被生成,以将问题通知给用户,以启用用于设计的适当的调试过程。

各个实施例涉及用于经由电路仿真来进行电路回路检测的硬件仿真系统,该系统包括至少一个处理器和至少一个存储器,这些存储器存储指令,这些指令利用至少一个处理器使得系统:标识仿真电路内的一个或多个回路;生成仿真电路的至少一部分的非循环仿真,其中非循环仿真由一个或多个回路断路器表征;至少部分地基于表征非循环仿真的回路断路器的数量n,生成基于硬件的回路检测器电路的回路检测器仿真,其中回路检测器仿真包括振荡检测器或状态保持检测器中的至少一项;以及针对仿真电路的多个输入值,执行回路检测器仿真以生成输出,该输出指示仿真电路的振荡状态或状态保持状态中的至少一项。

在某些实施例中,标识仿真电路内的一个或多个回路包括标识仿真电路的一个或多个强连接组件;并且生成仿真电路的至少一部分的非循环仿真包括生成一个或多个强连接组件中的至少一个强连接组件的非循环仿真。

在各个实施例中,仿真电路的一个或多个强连接组件中的每一个包括多个顶点和连接多个顶点的多个边;并且生成一个或多个强连接组件中的至少一个强连接组件的非循环仿真包括:使用一个或多个回路断路器来替换一个或多个边,以生成一个或多个强连接组件中的至少一个强连接组件的非循环仿真。

回路检测器包括原始SCC的2

在各个实施例中,回路检测器仿真包括根据以下等式实现的振荡检测器:

在某些实施例中,回路检测器仿真包括根据以下等式实现的状态保持检测器:

各个实施例涉及用于经由电路仿真来进行电路回路检测的方法,该方法包括:标识仿真电路内的一个或多个回路;生成仿真电路的至少一部分的非循环仿真,其中非循环仿真由一个或多个回路断路器表征;至少部分地基于表征非循环仿真的回路断路器的数量n,生成基于硬件的回路检测器电路的回路检测器仿真,其中回路检测器仿真包括振荡检测器或状态保持检测器中的至少一项;以及针对仿真电路的多个输入值,执行回路检测器仿真以生成输出,该输出指示仿真电路的振荡状态或状态保持状态中的至少一项。

在某些实施例中,标识仿真电路内的一个或多个回路包括标识仿真电路的一个或多个强连接组件;并且生成仿真电路的至少一部分的非循环仿真包括生成一个或多个强连接组件中的至少一个强连接组件的非循环仿真。

在某些实施例中,仿真电路的一个或多个强连接组件中的每个强连接组件包括多个顶点和连接多个顶点的多个边;并且生成一个或多个强连接组件中的至少一个强连接组件的非循环仿真包括:使用一个或多个回路断路器来替换一个或多个边,以生成一个或多个强连接组件中的至少一个强连接组件的非循环仿真。

在各个实施例中,回路检测器仿真包括原始SCC的2

在各个实施例中,回路检测器仿真包括根据以下等式实现的振荡检测器:

在某些实施例中,回路检测器仿真包括根据以下等式实现的状态保持检测器:

某些实施例涉及用于电路设计、测试和/或制造的较有效/有益的电子结构,该电子结构包括被配置为执行本文所讨论的功能的多个模块。其他实施例涉及较有效/有益的电子电路,该电子电路包括被配置为执行本文所讨论的功能的多个模块。此外,某些实施例涉及用于电路设计、测试和/或制造的较有效/有益的方法,该方法包括被配置为执行本文所讨论的功能的多个模块。

各个实施例涉及包括可执行指令的非暂态计算机可读存储介质,可执行指令被配置为在由处理器执行时使得处理器:标识仿真电路内的一个或多个回路;生成仿真电路的至少一部分的非循环仿真,其中非循环仿真由一个或多个回路断路器表征;至少部分地基于表征非循环仿真的回路断路器的数量n,生成基于硬件的回路检测器电路的回路检测器仿真,其中回路检测器仿真包括振荡检测器或状态保持检测器中的至少一项;以及针对仿真电路的多个输入值,执行回路检测器仿真以生成输出,该输出指示仿真电路的振荡状态或状态保持状态中的至少一项。

根据某些实施例,标识仿真电路内的一个或多个回路包括标识仿真电路的一个或多个强连接组件;并且生成仿真电路的至少一部分的非循环仿真包括生成一个或多个强连接组件中的至少一个强连接组件的非循环仿真。

在各个实施例中,仿真电路的一个或多个强连接组件中的每个强连接组件包括多个顶点和连接多个顶点的多个边;并且生成一个或多个强连接组件中的至少一个强连接组件的非循环仿真包括:使用一个或多个回路断路器来替换一个或多个边,以生成一个或多个强连接组件中的至少一个强连接组件的非循环仿真。

回路检测器包括原始SCC的2

在各个实施例中,回路检测器仿真包括根据以下等式实现的振荡检测器:

在某些实施例中,回路检测器仿真包括根据以下等式实现的状态保持检测器:

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

在本公开内容中发现的创新、实施例和/或示例不是包括一切的,而是描述了主题的基本意义。因此,本发明内容的一个用途是稍后呈现的具体实施方式的序言。

附图说明

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

在附图中,相似的组件或特征可以具有呈标签形式的相同或相似的附图标记(诸如,字母数字符号,例如,参考标号),并且可以表示相似或等同的功能。此外,可以通过在参考标签之后添加破折号和第二标签来区分相同类型的各种组件,该第二标签在相似组件之间进行区分。如果在说明书中仅使用第一参考标签,则不论第二参考标签如何,该描述适用于具有相同第一参考标签的类似组件中的任一组件。对附图的简要描述如下。

图1示出了示例性网表,该示例性网表图示了其中的各种回路。

图2示意性地图示了本文所讨论的强连接组件。

图3图示了示例性的Verilog定义的电路的示意图。

图4图示了用于图3所示电路的回路分析电路的实现方式。

图5图示了另一示例性的Verilog定义的电路的示意图。

图6图示了用于图5所示电路的回路分析电路的实现方式。

图7图示了示例性的Verilog定义的电路的示意图。

图8图示了用于图7所示电路的回路分析电路的实现方式。

图9图示了根据各个实施例的包含两个回路断路器的回路分析电路的示意图。

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

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

图12是仿真系统的框图。

在这样的各个附图中,可以省略与公认的工程实践一致的附图标记;然而,本领域普通技术人员将理解,当从整体上以例示的方式以及描述了这样的各个附图的所附公开内容的上下文来看时,容易理解所图示的组件。

具体实施方式

附图和以下具体实施方式仅通过示例性的方式利用在单个实施例中一起描述的各种特征、结构或特性来表示创新、实施例和/或示例,以简化本公开。在不脱离所要求保护的原理的情况下,这样的示例性创新、实施例和/或示例所公开的任何元件、过程、机器、系统、制品或组成的变型将容易被识别并且可以在商业中使用。附图和具体实施方式还可以隐式或显式地表示本文描述的示例性实施例的子集的优点和改进。

在附图和具体实施方式中,可以描述许多具体细节来实现示例性创新、实施例和/或示例中的一个或多个。为了不使得以下具体实施方式中的示例性创新、实施例和/或示例的呈现晦涩难懂,本领域中已知的一些处理步骤或操作可以被组合在一起来进行呈现和用于例示目的,并且可以不进行详细描述。然而,本领域技术人员将认识到,这些示例性创新、实施例和/或示例可以在没有这些具体细节或其等同形式的情况下用于商业中。在其他情况下,未详细描述公知的过程和设备,以免不必要地使得这些示例性创新、实施例和/或示例的各方面不清楚。在其他情况下,可能完全没有描述本领域中已知的一些处理步骤或操作。相反,以下描述聚焦于各种示例性创新、实施例和/或示例的独特特征或元素。此外,尽管本描述可以单数形式指代结构的一些组件,但是在整个附图中可以描绘多于一个的组件,并且相同的组件使用相同的标号来标记。

定义

在对各个实施例的以下描述中,为附加的上下文提供了以下术语讨论。参考图1的图示提供对这些术语的讨论,图1图示了具有顶点集合V={A,B,C,D,E,F,G,H,I}的图。

如图1所示,一组有向边由连接顶点的粗箭头图示。如果从源顶点到目标顶点的边被表示为ST(源到目标),则图1所示的图中的边的集合为E={AC,BE,EC,CF,CD,DC,DE,FD,FG,FH,GI,HI}。

因此,图1的图G={V,E}是有向图,该有向图是顶点V和边E的对(V,E)。边集合E是VxV的子集。当且仅当(v1,v2)是边时,我们才说顶点v2是顶点v1的后继。当且仅当存在边的序列(v_i,v_{i+1}),0<=i<=n,使得v_0=v1且v_{n+1}=v2时,我们才说能从v1到达v2。

G的子图是图G’=(V’,E’),使得V’被包括在V中,并且E’被包括在(V’x V’)和E中。在图1所示的实施例中,G的子图S包含所示顶点和边的一部分。因此,S={{F,G,I,H},{FG,FH,GI,HI}}是G的子图。

子图G’=(V’,E’)的输入(在某些实施例中表示为Y)是V’的所有传入边,这些传入边不在E’中。因此,以上讨论的子图S(即S={{F,G,I,H},{FG,FH,GI,HI}})具有单个输入Y=CF。

有向图中的回路是边的序列(v_i,v_{i+1}),0<=i<=n,使得v0=v_{n+1}。当且仅当图不包含任何回路时,图才是非循环的。在图1所示的实施例中,图G包含4个回路:

·回路1包含{C,F,D,C}(使用平行线图示)。

·回路2包含{C,D,E,C}(使用邻近的虚线图示)。

·回路3包含{C,D,C}(使用间隔的虚线图示)。

·回路4包含{C,F,D,E,C}(使用点线图示)。

有向图G中的强连接组件C是G的子图,使得C的任何顶点可以从C的任何其他顶点到达。如本文所述,“强连接组件”被表示为“SCC”。在图1所示的实施例中,图G仅包括1个SCC,S={C,F,D,E}。如其中所示,S内的每个节点可以从S中的任何其他节点到达。此外,SCC包含以上讨论的所有可能的回路。

注意,图中的任何回路都必须被包括在SCC内。

给定强连接组件C=(V’,E’),我们可以将回路断路器定义为E’内包括的如下的边,去除该边就可以断开C内的回路。寻找最少数量的回路断路器可以包括确定使得强连接组件变为非循环,从而使得强连接组件不再包括回路所需的回路断路器的最少数量。在强连接组件内,我们可以定义E’中包括的集合BK,使得将BK顶点之间的每个边断开连接(例如,使用对应的断路器来替换顶点之间的每个边)导致C成为非循环图。集合BK在本文中被称为断点集合。一个平凡集合是BK=E’。例如,可以使用简单的O(|C|)贪婪算法来找到断点集合。

在图1所示的实施例中,去除边DC破坏了回路1和回路3。去除边EC破坏了回路2和回路4。去除边DC和EC使得图G非循环,因为G内不再存在任何回路。因此,图G需要回路断路器集合,BK包含两个回路断路器。

我们可以将网表简化为由单输出门构成的等效网表。然后,网表可以被建模为有向图(V,E),该有向图的顶点是门,并且使得当且仅当网表中存在一条线来连接门v1的输出端口和门v2的输入端口时,才存在边(v1,v2)。

让我们将B={0,1}定义为布尔值集合。具有n个变量的布尔函数是从B

令f是布尔函数。我们将增量函数δ定义为:

令g(Y,X)是从B

判定程序

各个实施例涉及被配置用于标识表征芯片设计的图内包括的子图的一个或多个特性的硬件仿真系统和方法。如本文中所讨论的,各个实施例通过在仿真硬件系统内将SCC作为非循环子图仿真来仿真附加硬件,其中常数被用于代替SCC的非循环子图仿真的断点。因此,各个实施例被配置为:例如在已经生成初始芯片设计(例如,网表)之后(例如,在生成与芯片设计相关联的Verilog代码之后),与芯片设计过程(例如,集成电路设计过程)一起执行和/或相关联地执行。

对于描述芯片设计的给定网表(例如,至少部分地由EDA软件工具生成),其中包括的一个或多个回路可以被分析来确定回路是否具有一个或多个有问题的特性。因此,在描述芯片设计的网表内,各个实施例被配置为标识网表内包括的一个或多个SCC(例如,被标识为实现芯片设计的整体图的子图)。如本文中所讨论的,SCC可以包括如下的子图,在该子图中,子图的所有顶点可以从所有其他顶点到达。因此,标识图内的一个或多个SCC可以通过确定哪些顶点可以从其他顶点到达并且标识如下的顶点分组来自动地执行,在这样的顶点分组中分组(子图)内的所有顶点可以从所有其他顶点到达。

对于每个SCC,令C是SCC。本文讨论的实施例计算C的输入,输入被指定为Y。此外,实施例计算断点集合X(例如,经由贪婪算法),断点集合X被标识为子图内如下的边,如果被去除则这样的边将使得SCC成为非循环子图。这些断点可以用回路断路器代替——经去除的边将先前利用边连接的顶点断开连接。在某些实施例中,硬件仿真系统可以被配置为标识使得整个图成为非循环的尽可能少的断点X,使得需要最少数量的回路断路器来确定图是否包括具有振荡回路或状态保持回路的任何SCC。令X={x_1,…,.X_n}。给定断点x_k(1<=k<=n),我们将g_k(Y,X)表示为布尔函数,该布尔函数被定义在与边x_k相对应的门的输出处。图9图示了一个示例性的SCC(利用其回路断路器表示)——图9所示的实施例针对示例性的SCC并入了2个回路断路器,其中G(Y,X)=[g_1(Y,X),g_2(Y,X)]。

当且仅当函数g_k(Y,X)的定点方程对k=[1,n]内的所有k具有解时,函数g_k(Y,X)才是良定义的(即,非振荡的)。换言之,对于所有Y值,必须存在满足x_k=g_k(Y,X)的X={x_1,…,X_n}值。

当且仅当函数g_k(Y,X)的定点方程具有唯一解时,函数g_k(Y,X)才是良定义的,并且不是状态保持的。

硬件检测程序

给定网表,以上讨论的判定程序可以由仿真系统通过仿真附加硬件来实现。该附加硬件被实现为将SCC作为非循环子图仿真(包括本文中讨论的回路断路器)并且使用常数代替其断点。因此,系统(例如,EDA软件工具)可以被配置为至少部分地基于所标识的SCC(和SCC的非循环变型)来自动生成适当的硬件仿真,以使得能够确定SCC的一个或多个特性。而且,附加硬件可以附加地包括下文所讨论的一个或多个回路确定电路。例如,回路确定电路可以包括一个或多个副本(例如,2

1.首先,如上所述,所提供的网表图的多个(例如,全部)SCC被标识。因为任何回路均被包含在唯一的SCC中,所以每个SCC可以被独立处理,同时确保通过本文所讨论的回路确定来考虑设计的所有回路。

2.令C是SCC。我们计算其输入集合Y和断点集合X。令X={x

3.在某些实施例中,系统生成包括用于以下函数OSC(Y)的仿真硬件电路的回路检测器,其被配置为确定SCC是否包括振荡回路。我们称该函数为振荡检测器。每当OSC(Y)=1时,SCC不接受针对该Y的定点解,这意味着它包含振荡回路。

4.在某些实施例中,系统生成包括用于以下函数STH(Y)的仿真硬件电路的回路检测器,其被配置为确定SCC是否包括状态保持回路。应当理解的是,回路检测器可以包括振荡检测器和状态保持检测器二者。在其他实施例中,回路检测器可以包括振荡检测器或状态保持检测器之一。每当OSC(Y)=0且STH(Y)=1时,SCC接受定点解,但解不是唯一的。这意味着它包含状态保持循环。我们称该函数为状态保持检测器。

表1:针对SCC的输入Y,根据检测器值进行的情况分析

在某些实施例中,振荡检测器和状态保持检测器产生可以操作来(例如,自动地)发起调试过程的值。作为其他示例,所产生的值可以由多个过程中的任一个过程来使用。注意,在不减慢模拟本身的情况下,在设计被模拟的同时评估这些检测器。这是因为检测器由SCC的副本组成,其中内部断点被强制设置为常数值,因此它们的速度不能比设计本身慢。

例如,包括振荡检测器或状态保持检测器中的至少一项的回路检测器的硬件仿真可以进一步被配置为生成警报(例如,要被提供给仿真模块的用户的弹出警报、发送给用户的与图的仿真(例如,实现为芯片设计的仿真)相关联的通知,等等)。在这样的实施例中,用户可以基于所接收的通知来选择发起调试过程。

示例1:具有振荡的SCC的设计

图3图示了由以下Verilog描述的电路的示意图:

module scc_1(input y,output gk);

wire xk;

not inv(not_xk,xk);

and and2(and_out,y,not_xk);

assign gk=and_out;

assign xk=gk;

endmodule

对于上述电路,只存在一个回路断路器x

OSC(y)=~(~g

=~(~(y.~0)+(y.~1))

=~(~y+0)

=y

所得到的解证明了当y=1(即,OSC(y)=1)时,电路中存在振荡;并且当y=0(OSC(y)=0)时,解中存在固定点。为了验证,当y=0时,输出gk稳定在0处。当y=1时,示意图简化为自回路反相器,并且gk的值在0和1之间振荡,并且从未稳定。

图4图示了评估OSC(y)和STH(y)的硬件实现方式的示意图。为了验证,传播使得“is_oscillating”变成被指定给“y”的常数,这与以上提供的等式OSC(y)的结果相同。一旦确定对于至少一个输入而言,SCC振荡,仿真模块就可以被配置为生成要被提供给用户的警报。

示例2:具有非振荡的、状态保持的SCC的设计

图5图示了由以下Verilog描述的电路示意图:

module scc_2(input y,output gk);

wire xk;

buf buffer(buf_out,xk);

and and2(and_out,y,buf_out);

assign gk=and_out;

assign xk=gk;

endmodule

执行用于确定SCC是否振荡的上述模型得到:

OSC(y)=~(~g

=~(~(y.0)+(y.1))

=~(~0+y)

=0

因此,无论输入如何,OSC(y)=0,并且因此在所示电路中不会发生振荡。

执行用于确定SCC是否状态保持的上述模型得到:

因此,当y=1时,电路是状态保持的——在这种情况下,xk可以被指定为0或1,并且两个值均是有效硬件状态。

图6图示了评估OSC(y)和STH(y)的硬件实现方式的示意图。为了验证,传播使得“is_oscillator”变为0并且“is_state_holding”被指定给“y”的常数,这与以上讨论的等式OSC(y)和STH(y)的结果相同。

示例3:具有稳定的、非状态保持的SCC的设计

图7图示了由以下Verilog描述的电路的示意图:

module scc_2(input y,output gk);

wire xk;

or or2(~xk,xk);

and and2(and_out,y,buf_out);

assign gk=and_out;

assign xk=gk;

endmodule

执行用于确定SCC是否振荡的上述模型得到:

OSC(y)=~(~g

=~(~(y.1)+(y.1))

=~(~y+y)

=0

因此,无论输入如何,OSC(y)=0,这指示在所示电路中不会发生振荡。

执行用于确定SCC是否状态保持的上述模型得到:

因此,无论输入如何,STH(y)=0,这指示所示电路永远不是状态保持的。

图8图示了评估OSC(y)和STH(y)的硬件实现方式的示意图。为了验证,传播使得信号“is_oscillator”和“is_state_holding”均变为0的常数,这与以上讨论的等式OSC(y)和STH(y)的结果匹配。结果的相关物是,由于电路是非振荡且非状态保持的,因此可以使用等效的无回路(非循环)电路来替换该电路。实际上,电路表现得就像从y到gk的单个缓冲器。

示例4:并入2个回路断路器的振荡检测

图9图示了针对需要2个回路断路器来形成其非循环变型的电路来评估OSC(y)和STH(y)的硬件实现方式(实现为仿真)的示意图。在所示的实施例中,鉴于2个所包括的回路断路器,仿真硬件电路包括实现在可适用的电路内的SCC的2

OSC(Y)=~((~g

如上所述,一旦确定所图示的硬件仿真的输出指示经由回路确定电路分析的给定SCC是振荡SCC或状态保持SCC,仿真模块可以被配置为为仿真模块的用户生成指示特定SCC实现振荡SCC或状态保持SCC的通知。

应当理解的是,提供图9中所示的2个回路断路器硬件实现方式的表示以说明某些实施例的各种功能,并且在某些实施例中,门的确切数量和/或类型可以被减少和/或以其他方式被修改,以提供用于提供功能的简化电路设计。类似逻辑可以与其他硬件仿真一起用于任意数量的回路断路器。

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

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

计算机系统可以是服务器计算机、客户端计算机、工作站、大型机、个人计算机(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来执行本文所讨论的指令集中的任一个或多个指令集合的计算机系统或机器的任何集合。由于计算机和网络的不断变化的性质,对图31A中描绘的计算机系统3110的描述仅作为一个示例来图示优选实施例。计算机系统3110的许多其他配置可以比图31A所示的计算机系统具有更多或更少的组件。

网络接口子系统3116提供到外部网络的接口,其包括到通信网络3118的接口,并且网络接口子系统3116经由通信网络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)系统来与文件存储系统直接通信。

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

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

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

处理器可以是电子的,例如,包括数字逻辑电路装置(例如,二进制逻辑)或者可以是模拟的(例如,运算放大器)。例如,在基于光信号处理、DNA变换或量子力学或这些技术的组合的处理器(诸如,光电处理器)中可以看到的,处理器还可以是非电子的。对于以二进制形式构造的数据和信息,可以使用与、或和非逻辑运算(及其衍生物,诸如与非、或非和异或运算)来变换数据和信息的任何处理器可以使用布尔逻辑的任何函数来变换数据和信息。诸如模拟神经网络处理器的处理器还可以以非数字方式来变换数据和信息。没有科学证据表明这些处理器中的任一个处理器正在以相当于人脑的生物电结构的任何方式或形式处理、存储和取回数据和信息。

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

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

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

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

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

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

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

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

软件从数据和信息存储设备输入或等效地读取到计算机或计算机系统的一个或多个存储器中。计算机通常具有用于读取存储介质的设备,该设备被用于传输软件或者具有通过网络来接收软件的接口设备。在“通用计算机说明”部分中讨论了该过程。

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

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

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

在系统设计114期间,设计者描述了待制造的功能。设计人员还可以执行假设分析计划来完善功能并检查成本等。在该阶段可能会发生硬件-软件架构分区。在该阶段可以使用的来自加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括:ModelArchitect、Saber、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软件产品包括:Design Compiler、Physical Compiler、Test Compiler、Power Compiler、FPGA Compiler、Tetramax和Designware产品。

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

在设计规划122中,针对时序和顶层布线,集成电路的总体平面图被构造并分析。可以在该阶段使用的来自加利福尼亚州山景城Synopsys公司的示例性EDA软件产品包括:Astro和IC Compiler产品。

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

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

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

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

在流片期间,数据被创建,以用于生产光刻掩模(根据需要,在应用光刻增强之后)。可以在流片期间使用的来自Synopsys公司的示例EDA软件产品包括IC Compiler和Custom Designer产品系列。

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

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

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

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

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

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

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

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

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

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

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

可编程处理器204

对于待被仿真的DUT,仿真器从主机系统接收包括DUT描述的一个或多个位文件。位文件进一步指定了主机系统使用跟踪和注入逻辑创建的DUT分区、分区到仿真器FPGA的映射以及设计约束。基于位文件,仿真器将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中的多路复用器。多路复用器可以由跟踪和注入逻辑使用来将接口信号注入到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,则映射模块可以生成特定配置,特定配置允许将它们连接到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共同运行所有周期可能只需要几分钟。

用户可以标识待重新仿真的DUT信号的层次结构或列表。为此,调试模块确定仿真信号的层次结构或列表所需的FPGA、取回必要的接口信号并且将所取回的接口信号传输到仿真器,以进行重新仿真。因此,用户可以标识DUT的任何元素(例如,组件或信号)以进行调试/重新仿真。

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

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

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

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

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

c)如果新的商业解决方案没有在启用描述的情况下公开,则其是“抽象的”,因为启用描述中的指导不足,或者因为仅使用未指定元素、参数或功能描述了通用实现{参见Mayo},使得在无需例如进行特殊编程{参见Katz}或PHOSITA执行的电路设计的情况下,PHOSITA无法将新的商用解决方案的有用实施例实例化,并且因此根据35 U.S.C.103是不能取得专利的,例如因为“难以理解”在商业中如何使用新的商业解决方案的任何实施例。

前述具体实施方式单独地表示本文所述的单独特征、结构、功能或特性以及两个或更多个这样的特征、结构、功能或特性的任意组合,以使得不论这样的特征、结构、功能或特性或其组合是否能够解决本文中所公开的任何问题,并且在不限制权利要求的范围的情况下,根据本领域技术人员的知识,这样的特征、结构、功能或特性或其组合整体基于本说明书。当所要求保护的本发明的实施例包括特定特征、结构、功能或特性时,无论是否被明确地描述为替代另一特征、结构、功能或特性,例如结合其他实施例使用这样的特征、结构、功能或特性在本领域技术人员的知识范围内。

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

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

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

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号