CN113474780A - 用于使用相关样本生成及高效统计模拟来计算时序良率及良率瓶颈的新颖方法 - Google Patents
用于使用相关样本生成及高效统计模拟来计算时序良率及良率瓶颈的新颖方法 Download PDFInfo
- Publication number
- CN113474780A CN113474780A CN202080015783.4A CN202080015783A CN113474780A CN 113474780 A CN113474780 A CN 113474780A CN 202080015783 A CN202080015783 A CN 202080015783A CN 113474780 A CN113474780 A CN 113474780A
- Authority
- CN
- China
- Prior art keywords
- timing
- delay
- samples
- design
- arc
- 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
Links
Images
Classifications
-
- 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
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing analysis
-
- 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/337—Design optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/08—Probabilistic or stochastic CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/22—Yield analysis or yield 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)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开用于确定参数时序良率及瓶颈的方法及设备的各种实施例,所述方法及设备通过设计中的集成电路芯片的共同时序弧考虑电路路径之间的相关性。时序弧延迟的蒙特卡罗样本经生成并用于计算时序良率且识别良率瓶颈。
Description
版权声明
本专利文献的受让人不反对任何人对所述专利文献本身或出现在美国专利商标局文件中的专利申请案进行传真复制,但在其它方面对受版权保护的任何所包含的作者作品中的所有内容保留所有权利。
技术领域
本公开大体上涉及电子设计自动化的领域。更具体来说,本发明涉及统计时序分析,包含以下主题:特定来说使用相关样本生成及高效统计模拟来计算时序良率及良率瓶颈。
背景技术
随着移动装置、“物联网”(IOT)及人工智能装置的迅速发展,对可执行复杂功能同时消耗更少功率且因此更高效地使用功率的电路设计的需求在增加。这种对低功耗的需求导致现今构建的许多产品中使用的集成电路(IC)芯片的操作电压降低。操作电压的此降低又导致制造超大规模集成(VLSI)电路芯片的工艺环境变动的负面影响显著增加。更特定地说,用于制造IC芯片的工艺的变动导致与参数时序良率相关的挑战。参数时序良率是满足时序要求的IC芯片与未能满足时序要求的IC芯片的比率。现今基于角点的时序签发方法在预测IC设计的时序良率方面面临着越来越多的挑战。尽管已在领先的静态时序分析软件中广泛地采用例如参数良率的变动方法,但仍然缺少可用于使用变动信息来准确地计算时序良率的好方法。准确良率计算的主要挑战是捕捉设计的不同时序路径之间的拓扑相关性。由于极端的运行时间影响(即,运行此类模型所需的相对大量的时间),其中使用随机化值来辅助预测统计结果的蛮力全芯片蒙特卡罗(MC)分析是不可行的。
因此,将为有利的是,提供一种可更准确地预测特定特性(例如,工艺及环境变动)对VLSI芯片满足时序要求的可能性的影响且因此预测需要对数百万个局部随机变量进行建模的有关工艺及环境变动的特定假设的参数时序良率的系统。
附图说明
参考以下附图描述根据一或多个不同实施例的所公开方法及设备。附图是仅出于说明目的而提供且仅仅描绘所公开方法及设备的一些实施例的实例。提供这些附图以促进读者对所公开方法及设备的理解。所述附图不应被视为限制所主张发明的广度、范围或适用性。应注意,为清楚起见及便于说明,这些附图不一定按比例绘制。
图1A是集成电路(IC)的电路设计的一部分或“块”的简化图。
图1B是时序弧7的延迟d1,7的概率分布函数的标绘图。
图1C是时序弧7的延迟d2,7的概率分布函数的标绘图。
图2是100个随机变量的统计最小值的标绘图,其中所述随机变量是完全相关的。
图3是与图2中所展示的标绘图类似的标绘图,然而随机变量是完全独立的。
图4是本文中所公开的方法的一些实施例的高级流程图。
图5是意在提供可在模拟期间递增地计算统计矩以确定良率及瓶颈的方式的一个实例的样本伪代码。
图6A是适合与本技术的实施例一起使用的计算机系统的简化框图。
图6B说明电路设计。
图6C说明本技术的集成电路实施例。
图7说明在制造项目的设计、验证及制作中执行的设计及制造过程的一个实例。
图8说明关于包含主机系统及仿真器的测试平台的一个实例的实施方案的额外细节。
附图并不意在详尽性的或将所主张发明限于所公开的精确形式。应理解,所公开方法及设备可在修改及更改的情况下实施,且本发明应仅受权利要求书及其等效物限制。
具体实施方式
图1A是集成电路(IC)的电路设计的一部分或“块”100的简化图。在其中电路延迟的分析是通过“基于路径”的分析完成的一些情况下,IC设计被建模为包括多个路径,所述路径中的每一者穿过多个元件。例如,在图1A中,存在通过电路设计的块100的六个独特路径。第一路径被指定为D1。路径D1穿越块100的三个元件。第一元件是具有时钟输入及输出的寄存器102,第二元件是双输入AND门104且第三元件是反相器106。通过元件的每一路径与块100中编号为1到9的独特时序弧相关联。例如,存在通过输入AND门104的两个路径;从第一输入到输出的第一路径及从第二输入到输出的第二路径。这两个路径中的每一者具有独特时序弧4、5。路径D1以作为与每一元件102、104、106相关联的“时序弧”1、4、7的结果的延迟到达寄存器108。穿越路径D1的信号遇到的第一时序弧是时序弧1,且通过路径D1的时序弧1的延迟被指定为d1,1。第一数字指数是指路径D1的路径id“1”,且第二数字指数是指元件102的时序弧id“1”。遇到的第二时序弧是第二元件104的时序弧4,其具有指定为d1,4的延迟。最后,路径D1上遇到的第三时序弧是具有作为第三元件106的结果的延迟d1,7的时序弧7。应注意,数字指数“7”是指与反相器106相关联的时序弧id“7”。可看出,在这个简单实例中,存在6个独特路径及9个独特时序弧。另外,存在三个独特“端点”110,每一“端点”110在捕获触发器108的输入处。应注意,端点没有必要在捕获触发器的输入处,而是端点在测量路径的松弛度的点(即,将不施加可能影响松弛度的额外延迟的点)处。松弛度是所需时间与到达终点的时间之间的差。端点处的正松弛度s意味着到达那个端点处的时间可增加s,而不会影响电路的总延迟。相反,负松弛度意味着路径太慢,且如果整个电路将以所要速度工作,那么必须使路径加速(或延迟参考信号)。
在其它情况下,使用电路的基于图形的模型来辅助电路延迟的分析。在基于图形的分析的情况下,使用时序图形来对电路进行建模,其中在电路的起点及终点处存在源节点及汇节点。在汇与源之间界定数个其它节点以及一组电路元件(例如门及电线)。所述节点表示电路元件的引脚。对节点之间的传播延迟进行建模。在一些情况下,节点可以某种方式耦合使得从源到汇的一些路线经过相同元件。在一些情况下,延迟被建模为电路的图形表示中的相异节点。相比之下,路径分析定义一组路径,所述路径中的每一者具有输入及输出及所述路径穿越其的具有延迟的一组元件。一个路径中的若干元件可能是一或多个其它路径中的元件所共有的。在两种情况下,可表征从起点到终点的延迟且可基于延迟总和与从起点穿越到终点所需的最小时间之间的差来确定松弛度。
在其中使用基于路径的分析的所公开方法及设备的一些实施例中,路径上下文(即,哪个路径在讨论中)及基于变动感知时序分析确定的延迟分布的速度指数确定沿着每一所关注路径的时序弧的延迟。一旦分析完成,就将提取一组路径,且将收集所述路径的共同时序弧并使时序弧的子集与端点相关联。如果时序弧是归因于通过同一电路元件的延迟,那么时序弧被认为是两个路径所共有的。例如,路径D1上的时序弧7的延迟d1,7及路径D2上的时序弧7的延迟d2,7共享共同时序弧7,这是因为其均是通过图1A中所展示的反相器106的延迟的结果。然而,应理解,路径D1上的时序弧7的延迟d1,7的概率分布函数(即,由反相器106针对穿越路径D1的信号产生的可能延迟值的概率分布函数)的形状可能由于穿越路径D1的信号将穿越与穿越路径D2的信号不同的组件的事实而与路径D2上的时序弧7的延迟d2,7的概率分布函数的形状不同。图1B是路径D1的时序弧7的延迟d1,7的概率分布函数的标绘图。图1C是路径D2的时序弧7的延迟d2,7的概率分布函数的标绘图。从这两个标绘图可看出,每一标绘图的概率分布函数的形状略有不同。
在收集共同时序弧后,针对所述时序弧中的每一者生成随机延迟样本。这通过使蒙特卡罗值生成器生成多个速度指数来完成,每一速度指数与IC设计的时序弧中的一者相关联。速度指数是与局部工艺及环境变动相关的时序弧的慢度(即,通过电路元件的相对延迟)的量度。由蒙特卡罗值生成器生成的速度指数的每一值与时序弧相关联以生成正被模拟的IC的相关联时序弧的特定延迟样本的矩阵(即,“延迟矩阵”)内的延迟值。因此,延迟矩阵的每一元素表示与沿着讨论中的IC设计的一个路径的一个时序弧相关联的延迟。所公开分析可针对复杂电路内的块的每一路径或针对整个复杂电路(例如VLSI IC芯片的电路)对通过电路的个别路径执行。速度指数的使用允许在确定沿着每一良率关键路径的每一时序弧的延迟时考虑工艺及环境的局部变动的影响。使用蒙特卡罗技术考虑归因于工艺及环境变动(例如,基于由变动感知时序分析确定的概率密度函数)的延迟值的统计分布且允许考虑与不同路径中的共同时序弧相关联的延迟之间的相关性。
所公开方法通过对一组良率关键路径执行蒙特卡罗模拟来准确地计算参数时序良率且识别良率关键时序弧、路径及块。针对一个以上路径所共有的时序弧,使用同一速度指数值来生成放置在那个共同时序弧所位于的每一路径的延迟矩阵中的延迟值。具有若干路径所共有的时序弧的一个速度指数值考虑共享共同时序弧的路径之间的相关性,例如路径D1中的共享时序d1,4及路径D3中的d3,4。因此,考虑共同时序弧的影响允许捕获不同路径之间的相关性。
在图1A的块100的实例中,延迟矩阵(来自模拟的一组样本)可包含以下项:
D1=d1,1+d1,4+d1,7
D2=d2,2+d2,5+d2,7
D3=d3,1+d3,4+d3,8
D4=d4,2+d4,5+d4,8
D5=d5,3+d5,6+d5,9
D6=d6,3+d6,6
在模拟期间生成延迟矩阵的若干此类“例子”以创建一组模拟样本IC,每一模拟样本IC具有相同结构,但具有不同延迟值,其中延迟矩阵的(即,每一模拟样本IC的)每一例子的任何特定元件的延迟值由蒙特卡罗生成器输出的速度指数确定,接着使用所述速度指数来引用每一时序弧的延迟值。由蒙特卡罗生成器用于生成每一速度指数值的准则基于由如针对电路元件执行的变动感知时序分析确定的速度指数解决的特时序序弧的延迟的概率密度函数,所述电路元件对那个特定时序弧负责。
与“基于路径”的分析相反,可使用“基于图形”的分析来执行样本单元的类似建模。即,在其中使用基于图形的分析的所公开方法及设备的实施例中,基于如由变动感知时序分析确定的相关工艺及环境变量来识别以电路的图形表示建模的延迟并对其进行建模。在一些情况下,电路的图形表示内的第一延迟可为第一信号穿越电路元件的结果。电路的图形表示内的第二延迟可为第二信号穿越同一共同电路元件的结果。然而,如果第二信号在进入共同电路元件之前穿越与第一信号不同的元件,那么通过共同元件的第二延迟可能与通过共同元件的第一延迟不同。类似地,到不同输出元件的连接可能影响延迟。尽管如此,第一及第二延迟将关于工艺及环境相关(即,相同工艺及环境因素对第一及第二延迟两者的变动负责)。因此,可定义与特定工艺及环境条件相关联的“速度指数”。因此,响应于特定工艺及环境状态的变化的一或多个延迟与特定速度指数相关联。
生成随机样本(即,延迟矩阵的元素)且使用所述随机样本来评估路径“到达/松弛度”及“设计松弛度”。到达/松弛度是端点处的计算出的时序与那个端点所需的时序之间的差。例如,针对特定设计,信号必须以不超过13ns的延迟穿越特定路径。如果信号可在10ns内穿越路径,那么存在3ns的正到达/松弛度。另一方面,如果信号需要15ns来穿越路径,那么松弛度是-2ns。如果特定VLSI芯片设计具有100个此类路径(通常数目要大得多),那么最小到达/松弛度将定义“设计松弛度”。即,如果100个路径中的任一者未能满足时序要求,那么设计也将未能满足时序要求。因此,设计松弛度由所有路径的最差松弛度确定(即,最差是最小值,负数小于正数,且具有较高绝对值的负数小于具有较低绝对值的负数)。因此,设计松弛度是每一路径中的所有松弛度的统计最小值(min)。由于将存在IC的多个样本(即,多个延迟矩阵),因此将存在一组IC样本上的松弛度值的分布。一旦蒙特卡罗模拟完成(即,已生成若干时序矩阵,每一IC样本一个时序矩阵),就从相对于IC样本的总数目非负的松弛度的比率确定设计良率,且针对可优化设计的应用识别良率瓶颈,例如其中逻辑可直接插入到对应于增加良率所需的变更的门级网表中的良率ECO(工程变更订单)。
图2是100个随机变量的统计最小值的标绘图,其中随机变量是完全相关的。例如,每一随机变量可表示通过VLSI IC的特定路径的延迟。在此情况下,如果一个路径的每一时间弧与所有100个路径的每一其它路径中的对应时间弧相同,那么随机变量将是完全相关的。因此,图2中所展示的标绘图以零为中心,呈高斯分布。
图3是类似标绘图。然而,随机变量是完全独立的。在其中这些是通过VLSI IC的路径的实例中,所述路径中将不存在共同时序弧。比较这两个标绘图,可看出,来自图3中所展示的一组独立随机变量的分布更窄,但具有显著的均值漂移及相对长的尾部。因此,这个标绘图中所展示的分布比来自图2(其更以零为中心)中所展示的的一组相关随机变量的分布更差,在-4到-2的范围内的点要少得多。从这两个标绘图可看出,路径之间的相关性对设计松弛度分布具有很强影响。因此,在确定用于确定时序良率的设计松弛度分布时考虑路径之间的此相关性是重要的。
图4是本文中所公开的方法的一些实施例的高级流程图。首先,在待模拟的IC设计的单元内识别时序路径(步骤400)。执行变动感知时序分析(步骤402)以确定沿着贯穿设计的时序路径的时序弧。用于执行变动感知时序分析的若干技术在所属领域中是众所周知的。可出于所公开方法的目的而采用任何已知技术。即,本方法不依赖于用于执行此分析的任何特定技术。在确定作为分析结果的时序弧的延迟的统计变动后,识别一组良率关键时序路径。此类良率关键时序路径包含在确定良率时最有可能在静态上显著的那些路径。这一点,此类良率关键时序路径将可能有助于确定设计松弛度,因为其是可能具有负松弛度的路径。在一些实施例中,将良率关键时序路径的那个集合“修剪”成其6σ角(步骤404)。即,从变动感知时序分析输出的时序弧限于由在与标称的6个标准偏差内的变动产生的那些时序弧,例如与标称掺杂浓度超过6个标准偏差的偏差。这个修剪通过消除远处异常来提供路径时序的封闭值全域。
在识别那些良率关键时序路径且将其修剪成其6σ角后,识别不同良率关键路径内的共同时序弧(步骤406)。
接下来,运行模拟以生成时序弧的随机延迟样本(即,表示设计的一个样本中的时序弧的延迟的延迟矩阵的元素),所述随机延迟样本基于由蒙特卡罗值生成器生成的速度指数值来分配给贯穿单元的良率关键路径,且特别来说,确保具有共同时序弧的路径使用由蒙特卡罗值生成器生成的相同速度指数值。因此,每一特时序序弧的延迟样本提供与那个特时序序弧相关联的延迟分布(步骤408),每一延迟样本填充一个延迟矩阵的一个元素。任何特定时序弧的一组延迟样本形成那个时序弧的延迟分布。一组IC样本(即,多个延迟矩阵)上的每一时序弧存在一个此延迟分布。特定来说,蒙特卡罗值生成技术用于生成每一良率关键时序路径的时序弧中的每一者的值的延迟矩阵。另外的两个或更多个路径所共有的那些时序弧使用相同的生成速度指数值来生成同一延迟矩阵(即,模拟单元样本)内的延迟。蒙特卡罗生成技术使用从由变动感知时序分析提供的信息确定的概率分布及由6σ修剪施加的限制作为用于确定待用来生成延迟矩阵的特定例子(即,样本IC的延迟的模拟例子)的每一延迟的速度指数值的准则。即,蒙特卡罗值生成器将基于变动感知时序分析的结果、从变动感知时序分析产生的值的分布的6σ修剪来生成每一速度指数。每一时序弧的延迟样本值基于由变动感知时序分析确定的延迟分布、路径上下文(即,哪个路径在讨论中)及速度指数来选择。
接下来,可基于与每一端点相关联的延迟子集及每一端点的延迟要求来(即,针对每一延迟矩阵)计算每一IC样本的每一端点的到达/松弛度。每一IC样本的设计松弛度可通过识别具有最差松弛度的端点来确定。可针对一组IC样本上的每一端点确定延迟分布。另外,设计松弛度分布是一组IC样本上的松弛度值的分布。使用经计算出的到达/松弛度及设计松弛度分布来确定设计良率并更新块及设计级松弛度分布(步骤410)。即,通过确定具有每一IC样本的最差松弛度的端点且确定最差松弛度为非负的IC样本的数目除以IC样本的总数目,确定时序良率的值。即,时序良率是其中所有端点具有负的松弛度的所有IC样本相对于所有IC样本的总数的比率。
在更新块及设计级松弛度分布后,可生成单元的的一组新的随机延迟样本且使用所述随机延迟样本来再次对路径延迟分布进行采样(步骤408)。在步骤408及步骤410中执行的迭代过程完成时,或在贯穿那个迭代过程的特定点处,可基于其中所有路径具有非负松弛度的IC样本(即,延迟矩阵)与IC样本的总数目的比率对参数时序良率进行测量。即,可进行测量以确定将满足时序要求的所得产品与将不满足时序要求的所得产品的比率。另外,可识别时序良率瓶颈,例如具有非常差松弛度的关键单元、路径及块。可使用这些测量及瓶颈来确定何时结束通过重复步骤408及步骤410发生的迭代过程。瓶颈的确定可简单地通过识别更一致地具有负松弛度的特定路径来进行。
图5是意在提供可在模拟期间递增地计算交叉矩以确定瓶颈的方式的实例的样本伪代码。在一些实施例中,在模拟完成后,可通过计算每一时序弧的设计松弛度分布与个别延迟分布之间的交叉矩来计算良率瓶颈。
查看图5的伪代码,执行前三个“For循环”502、504、506,其中最内循环506计算自矩,中间循环504计算相对于松弛度的交叉矩且外循环502推进过程以针对所述样本中的每一者(即,针对延迟矩阵的每一例子)执行那个计算。接着,执行另两个For循环508、510。内循环508确定自矩的均值。外循环510计算交叉矩中的相关性,将每一时序弧的延迟分布与IC样本上的松弛度分布交叉。
除了提供准确的参数时序良率之外,所公开方法及设备还通过图5中所展示的统计回归方法识别在不同设计级下的良率瓶颈。所述方法在内循环506中的模拟期间递增地计算统计矩。且当模拟完成时,其将通过在计算循环510中计算设计松弛度分布与个别延迟分布之间的交叉矩(相关性、协偏度等)来计算良率瓶颈。一旦在循环510中计算出交叉矩,其就可在瓶颈分析中用于识别潜在良率ECO的良率瓶颈。即,瓶颈单元被定义为具有较大相关性(伪代码中的“ds”)的单元。
硬件实施方案
图6A是适合与本技术的实施例一起使用的计算机系统的简化框图。图6B说明电路设计且图6C说明本技术的集成电路实施例。
在一些实施例中,计算机系统610包含至少一个处理装置614,例如计算机或处理器。处理装置614经由总线子系统612与数个外围装置616、620、622、626、628进行通信。在一些此类实施例中,处理装置614可为或包含处理器、微处理器、图形处理单元、数字信号处理器,或其电子处理等效物,例如专用集成电路(‘ASIC’)或现场可编程门阵列(‘FPGA’)。本文中在最广泛意义上使用术语‘处理器’以包含单个处理器及多核心或多处理器阵列,其包含图形处理单元、数字信号处理器、数字处理器及这些装置的组合。此外,虽然可能仅说明单个计算机系统或单个机器,但使用此类术语的单数形式还应表示个别地或联合地执行指令以执行本文中所论述的若干组指令中的任何一或多个者的计算机系统或机器的任何集合。归因于计算机及网络的不断变化的性质,图6A中所描绘的计算机系统610的描述仅意在为用于说明优选实施例的目的一个实例。计算机系统610的具有比图6A中所描绘的计算机系统更多或更少的组件的许多其它配置是可行的。
在一些实施例中,所述外围装置包含以下项中的一或多者:存储子系统624,其包括存储器子系统626及文件存储子系统628;用户接口输入装置622;用户接口输出装置620;及网络接口子系统616。用户接口输入装置622及用户接口输出装置620允许用户与计算机系统610交互。
计算机系统610可为服务器计算机、客户端计算机、工作站、大型机、个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、智能手机、网络设施、机架式‘刀片’、信息亭、电视、游戏站、网络路由器、交换机或网桥,或能够执行指定待由那个机器采取的动作的指令(循序指令或其它指令)的任何数据处理机器。
在一些实施例中,计算机系统610包含操作系统,例如微软公司的Windows、太阳微系统公司的Solaris、苹果电脑公司的MacOs、Linux或Unix。在一些实施例中,计算机系统610还可包含基本输入/输出系统(BIOS)及处理器固件。在一些此类实施例中,操作系统BIOS及/或固件经维持在存储子系统624中。在一些此类实施例中,操作系统、BIOS及固件被处理器614用于控制连接到处理器614的子系统及接口。与这些操作系统兼容的典型处理器包含来自因特尔公司(Intel)的奔腾(Pentium)及安腾(Itanium)、来自超威半导体公司(Advanced Micro Devices)的皓龙(Opteron)及速龙(Athlon)与来自安谋国际科技股份有限公司(ARM Holdings)的ARM处理器。
所主张发明的创新、实施例及/或实例既不限于常规计算机应用程序也不限于运行其的可编程设备。例如,所主张内容的创新、实施例及/或实例可包含光学计算机、量子计算机、模拟计算机等。计算机系统可为多处理器或多核心系统且可使用分布式或远程系统或在分布式或远程系统中实施。
网络接口子系统616提供到外部网络的接口,例如到通信网络618的接口,且在一些实施例中,经由通信网络618耦合到其它计算机系统或机器(未展示)中的对应接口装置。在一些实施例中,通信网络618包括未明确地展示的许多互连计算机系统、机器及通信链路。这些通信链路可为有线链路、光学链路、无线链路,及/或可使用任何其它类型的装置来进行信息通信。此外,通信网络618可为任何合适的计算机网络,举例来说例如因特网的广域网及/或例如以太网的局域网。通信网络618可为有线及/或无线的,且在一些实施例中,使用加密及解密方法,例如虚拟专用网络可用的方法。在一些实施例中,通信网络618使用一或多个通信接口,所述通信接口可从其它系统接收数据及将数据传输到其它系统。通信接口的一些实施例包含以太网卡、调制解调器(例如,电话、卫星、电缆或ISDN)、(异步)数字用户线(DSL)单元、火线接口、USB接口等。在一些实施例中,可使用一或多种通信协议,例如HTTP、TCP/IP、RTP/RTSP、IPX及/或UDP。
用户接口输入装置622可包含字母数字键盘,小键盘,例如鼠标、轨迹球、触摸板、尖笔或图形输入板的指向装置,扫描仪,并入到显示器中的触摸屏,例如语音辨识系统或麦克风的音频输入装置,眼睛注视辨识,脑波模式辨识及其它类型的输入装置。此类装置可通过电线或无线地连接到计算机系统。一般来说,术语‘输入装置’的使用意在包含用于将信息输入到计算机系统610中或通信网络618上的所有可能类型的装置及方式。
用户接口输入装置通常允许用户选择出现在一些类型的用户接口输出装置(例如,显示子系统)上的对象、图标、文本等。
用户接口输出装置620可包含显示子系统、打印机、传真机或例如音频输出装置的非视觉显示器。显示子系统可包含阴极射线管(CRT)、例如液晶显示器(LCD)的平板装置、投影装置或用于创建可见图像的某种其它装置,例如虚拟现实系统。显示子系统还可例如经由音频输出或触觉输出(例如,振动)装置提供非视觉显示。一般来说,术语‘输出装置’的使用意在包含用于将信息从计算机系统610输出到用户或到另一机器或计算机系统的所有可能类型的装置及方式。
存储器子系统626通常包含数个存储器,包含用于在程序执行期间存储指令及数据的主随机存取存储器(‘RAM’)630(或其它易失性存储装置)及其中存储有固定指令的只读存储器(‘ROM’)632。文件存储子系统628为程序及数据文件提供持久存储,且可包含硬盘驱动器、软盘驱动器连同相关联的可卸除媒体、CD-ROM驱动器、光学驱动器、快闪存储器或可卸除媒体匣。实施某些实施例的功能的数据库及模块可由文件存储子系统628存储。
总线子系统612提供用于让计算机系统610的各种组件及子系统按预期彼此进行通信的装置。尽管总线子系统612示意性地被展示为单个总线,但总线子系统的替代实施例可使用多个总线。例如,基于RAM的主存储器可使用直接存储器存取(‘DMA’)系统来直接与文件存储系统进行通信。
在一些实施例中,软件模块可经存储在存储器子系统626内,所述软件模块致使计算机系统执行上文关于本公开中所描述的方法提及的功能。此类软件模块通过允许计算机系统在制造集成电路芯片的领域中执行改进的操作来改进计算机系统的操作。由计算机系统执行的功能根据此类软件模块运作是所属领域的重大改进且表示用于在确定设计良率时及在确定集成电路的时序中的瓶颈存在于何处时解决真实且重要的问题的方法的特定实施方案,从而允许在运行中进行设计改进以通过减少此类集成电路的生产中的浪费及低效率来改进集成电路设计良率并降低制造成本。
图6B描绘例如与文件存储子系统628及/或与网络接口子系统616相关联的非暂时性计算机可读数据及信息存储媒体的存储器640,且可包含指定电路设计的数据结构。存储器640可为硬盘、软盘、CD-ROM、光学媒体、可卸除媒体匣或以易失性或非易失性形式存储计算机可读数据的其它媒体。从此存储器读入计算机的软件可在选定时间瞬间从有形形式转换为通过媒体传播的传输信号(作为电脉冲通过例如网络、连接器、电线或迹线传播,或作为具有比红外光长的电磁波谱中的波长的电磁辐射通过例如空间或大气的媒体传播)。
图6C说明使用所描述技术创建的集成电路690,其包含例如选自单元库的一或多个单元。
本文中所描述的一些创新、实施例及/或实例包括及/或使用计算机系统,例如上文所描述的计算机系统610。如本文中所使用,术语‘计算机系统’表示通常使用序列变换(也被称为‘操作’)来物理上变换数据及信息的有形数据及信息处理装置。数据及信息可物理上由能够被处理器存储、存取、传送、组合、比较或以其它方式操纵的电信号、磁性信号、光学信号或声学信号表示。术语‘处理器’可表示单个处理器及多核心系统或多处理器阵列,其包含图形处理单元、数字信号处理器、数字处理器或这些元件的组合。
计算机系统可为电子的,例如,包括数字逻辑电路系统(例如,二进制逻辑),或模拟的(例如,运算放大器)。计算机系统也可为非电子的,例如,如在基于光学信号处理、DNA变换或量子力学或技术组合的计算机系统(例如光电计算机系统)中所看到。针对以二进制形式结构化的数据及信息,可使用AND、OR及NOT逻辑运算(及其衍生物,例如NAND、NOR及XOR运算)来变换数据及信息的任何计算机系统可使用任何布尔逻辑函数来变换数据及信息。例如模拟神经网络计算机系统的计算机系统也可非数字地变换数据及信息。没有科学证据表明这些计算机系统中的任一者以与人脑的生物电结构等效的任何方式或形式处理、存储及检索数据及信息。
一或多个计算机系统还可进行操作以支持在‘云计算’环境中或作为‘软件即服务’(SaaS)执行相关操作。例如,至少一些操作可由在分布式或远程系统处可用的计算机系统的群组来执行,这些计算机系统可经由通信网络(例如,因特网)及经由一或多个软件接口(例如,应用程序编程接口(API)存取。
如本文中所使用,术语‘模块’表示通常在大小及/或复杂性方面受限的有形数据及信息处理装置。例如,术语‘模块’可表示可变换数据及信息的一或多种方法或程序。术语‘模块’还可表示计算机程序中的一或多种方法及程序的组合。术语‘模块’还可表示数字逻辑装置的小型网络,其中所述逻辑装置的互连为网络提供结构。包括以专用语言(例如System C)指定的模块的方法及程序可用于生成处理数据及信息的数字逻辑装置的网络的规范,其中结果与从所述方法及程序获得的结果完全相同。
模块可经永久配置(例如,经硬连线以形成硬件)、经暂时配置(例如,用软件编程)或为两种配置的组合(例如,结构化ASIC)。例如,可使用专用集成电路(ASIC)(例如算术逻辑单元(ALU)、可编程逻辑阵列(PLA)或只读存储器(ROM))来制造永久配置模块,所有上述装置通常在制造期间配置。例如,可使用现场可编程门阵列(FPGA—例如,由赛灵思公司(Xilinx)或英特尔的阿尔特拉公司(Intel’s Altera)出售)、随机存取存储器(RAM)或微处理器来制造暂时配置的模块。模块经配置以通常使用应用于数据及信息的一系列变换(也被称为‘操作’)(或在ROM及RAMS的情况下,通过使用输入信息作为存储数据及信息的存储器的地址来变换数据及信息)来处理数据及信息,以执行本发明的本创新、实施例及/或实例的方面。
经暂时配置的模块不需要在任何一个时间瞬间配置。例如,包括一或多个模块的计算机系统可具有在不同时间配置的模块。计算机系统可在一个时间瞬间包括一组一或多个模块,且在不同时间瞬间包括一组不同的一或多个模块。以永久配置形式、暂时配置形式或两种形式的组合制造或实施模块的决定可能受成本、时间考虑、工程约束及/或特定设计目标所驱使。模块处理的‘实质’与其制造或实施形式无关。
如本文中所使用,术语‘算法’表示包括可被模块用于变换数据及信息以实现结果的一系列或一组操作或指令的过程。模块可包括一或多种算法。如本文中所使用,术语‘线程’是指可包括整个过程或算法的指令的子集的一系列指令。过程或算法可被分成可并行执行的多个线程。
如本文中所使用,术语‘计算机’包含至少一个信息处理器外加存储器(例如,使用NOT-AND或NOT-OR运算的基于触发器的存储器),所述信息处理器例如可使用可包括晶体管的电子门来执行例如(但不限于)AND、OR及NOT逻辑运算的某些操作。此处理器被称为图灵完备的或计算通用的。计算机,无论其是否为数字计算机,通常包括许多模块。
如本文中所使用,术语‘软件’或‘程序’表示配置计算机系统以在本说明书中所描述的创新、实施例及实例中使用的一或多种算法及数据结构。可通过软件配置的此类装置包含一或多个计算机,例如,独立、客户端或服务器计算机,或一或多个硬件模块,或一或多个此类计算机或模块的系统。如本文中所使用,术语‘软件应用程序’表示配置计算机系统以实现特定结果例如以执行文字处理操作或加密一组数据的一组数据及指令。
如本文中所使用,术语“编程语言”表示用于指定包括软件的若干组指令及数据的语法及句法。编程语言包含汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或以一或多种更高级语言的任何组合编写的源代码或目标代码,例如常规程序编程语言,例如C编程语言或类似编程语言(例如SystemC),或面向对象编程语言(例如Smalltalk、C++等)及任何未来的等效编程语言。
将软件从数据及信息存储装置输入,等效地,读入计算机或计算机系统的一或存储器。计算机通常具有用于读取用来输送软件的存储媒体的装置或具有通过网络接收软件的接口装置。这个过程在通用计算机解释区段中进行论述。
所附权利要求中所叙述的本发明可由计算机系统610来实施以执行设计及制造过程(DMP)的功能以创建制造项目。DMP可包含电子设计自动化(EDA)过程。在此DMP中,产品理念的信息由设计师供应。所述信息通过DMP变换以创建制造项目。
在一些实施例中,DMP 700使用EDA软件工具712(其在一些实施例中是EDA软件)作为设计工具或验证工具。当设计完成时,可退出EDA软件工具734,此时通常将集成电路的原图(例如,几何图案)发送到制作设施以制造掩模组,接着使用所述掩模组来制造集成电路。在退出之后,制作半导体裸片736且执行封装及组装过程738,这导致完成的集成电路740,其在本文中也可表示为电路、装置、组件、芯片或SoC(片上系统)。
制造项目,例如通过DMP生产的电路或系统在商业中以从低级晶体管布局到高级描述语言的多种抽象级使用。大多数设计者从高抽象级开始以使用例如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera的硬件描述语言(‘HDL’)来设计其电路及系统。高级HDL更容易让开发者理解,尤其是对于庞大系统,且可描述使用较低抽象级难以掌握的高度复杂的概念。HDL描述可转换成对开发者有帮助的其它抽象级。例如,高级描述可被转换为逻辑级寄存器传送级(‘RTL’)描述、门级描述、布局级描述或掩模级描述。每一较低抽象级将更多细节引入到设计描述中。较低抽象级可由计算机自动地生成,从设计库衍生或通过另一设计自动化技术创建。较低抽象级的规范语言的实例是SPICE,其大多用于基于模拟的电路的详细描述。
图7说明在例如集成电路的制造项目的设计、验证及制作中使用具有配合例如计算机系统610的计算机系统的软件工具及本文中未明确地展示的可能的专门的硬件辅助工具来变换及验证表示集成电路设计的设计数据及指令而执行的DMP 700的一个实例。关于图7所公开的DMP仅用于说明目的且并不意在限制本公开。例如,在所公开方法及设备的一些实施例中,DMP可能需要设计者以与本文所描述的序列不同的序列执行设计操作。
实例DMP 700从产品理念的创建开始(步骤710)。在一些实施例中,DMP 700实施EDA软件工具712。在系统设计714期间,设计者使用EDA工具来辅助描述待制造的功能性。设计者还可执行what-if规划以细化功能性及检查成本等。硬件-软件架构划分可在这个阶段发生。可在这个阶段使用的来自加利福尼亚州山景城的新思科技公司(Synopsys,Inc.ofMountain View,California)的EDA软件产品的实例包含:Model Architect、Sabre、SystemStudio及Designware产品。
接下来,执行逻辑设计及功能验证(步骤716)。在逻辑设计及功能验证期间,以一或多种硬件描述语言或HDL指定电路中的模块。另外,检查设计的功能准确性。即,检查设计以匹配正在设计的电路或系统的规范的要求以确保设计产生正确的输出。HDL语言的实例包含:Verilog、VHDL及SystemC。功能验证通常通过使用基于软件的模拟器及其它工具(例如测试平台生成器、静态HDL检查工具及形式验证工具)来完成。在一些情况下,称为‘仿真器’或‘原型设计系统’的特殊硬件用于加速功能验证。可在这个阶段使用的EDA软件产品的实例包含:VCS、Vera、Designware、Magellan、Formality、ESP及Leda产品,每一产品来自加利福尼亚州山景城的新思科技公司。可在这个状态下使用的也可购自新思科技公司的仿真器及原型设计产品的实例包含:Zebu.RTM.及Protolink.RTM.(RTM表示‘注册商标’)。
下一步骤需要合成及设计以进行测试(步骤718)。在合成及设计以进行测试期间,将HDL代码转化为网表。网表可针对目标技术进行优化。此外,可设计及实施测试以检查完成的集成电路。可在这个阶段使用的EDA软件产品的实例包含:Design Compiler、PhysicaCompiler、Test Compiler、Power Compiler、FPGA Compiler、Tetramax及Designware产品,每一产品来自加利福尼亚州山景城的新思科技公司。
在合成及设计以进行测试后,验证网表(步骤720)。在网表验证期间,检查网表是否符合时序约束以及是否与HDL代码对应。可在这个阶段使用的EDA软件产品的实例包含:Formality、Primetime及VCS产品,每一产品来自加利福尼亚州山景城的新思科技公司。
接下来,执行设计规划(步骤722)。在设计规划期间,针对时序及顶级布线构造及分析集成电路的总体平面布置图。可在这个阶段使用的EDA软件产品的实例包含:Astro及IC Compiler产品,每一产品自加利福尼亚州山景城的新思科技公司。
在设计规划后,实施布局(步骤724)。在布局实施期间,发生物理放置(例如晶体管或电容器的电路元件的定位)及布线(通过多个导体对所述电路元件的连接),同时可选择库单元来执行特定逻辑功能。可在这个阶段使用的EDA软件产品的实例包含:Astro及ICCompiler产品,每一产品来自加利福尼亚州山景城的新思科技公司。
一旦布局实施完成,就执行分析及提取(步骤726)。在分析及提取期间,以布局级验证电路功能,这容许布局设计的细化。可在这个阶段使用的EDA软件产品的实例包含:Astrorail、Primerail、Primetime及Star RC/XT产品,每一产品来自加利福尼亚州山景城的新思科技公司。
接下来,验证物理布局(步骤728)。在物理验证期间,检查布局设计以确保制造约束的正确性,例如设计规则约束、电气约束、光刻约束及匹配HDL设计规范的电路系统功能。可在这个阶段使用的EDA软件产品的实例包含来自加利福尼亚州山景城的新思科技公司的Hercules产品。
接下来,进行布局分辨率的增强(步骤730)。在分辨率增强期间,执行布局的几何操纵以改进设计的可制造性。可在这个阶段使用的EDA软件产品的实例是来自加利福尼亚州山景城的新思科技公司的Proteus产品。
在设计规划、物理实施、分析及提取、物理验证及分辨率增强中的一或多者期间,例如上文在图4中所公开的用于确定及优化设计良率的方法及设备,可作为这些步骤中的一或多者的一部分来执行。
接下来,制备掩模且“退出”设计(步骤732)。创建数据以用于(在应用光刻增强之后,如果适当的话)光刻掩模的生产。退出数据用于生产用来生产完成的集成电路的光刻掩模。可在这个阶段使用的EDA软件产品的实例包含来自加利福尼亚州山景城的新思科技公司的CATS系列产品。另外,可在退出期间使用的EDA软件产品的实例包含来自加利福尼亚州山景城的新思科技公司的IC Compiler及Custom Designer系列产品。
上文所提及的集成电路设计工具仅仅是可使用的工具的实例。来自其它EDA供应商(例如Cadence、Siemens)、其它公司实体、大学或开源存储库的类似商业工具及各种非商业工具可用作替代物。
存储子系统优选地用于存储程序及数据结构,所述程序及数据结构提供本文中所描述的一些或所有EDA工具,及应用于库的单元开发与使用库的物理及逻辑设计的工具的功能性。这些程序及数据结构通常由一或多个处理器以所属领域的一般技术人员已知的方式执行。
根据所公开方法及设备的一些实施例,EDA过程,例如关于图7的DMP 700所公开的EDA过程通常包含用于验证电路设计的功能的仿真器。例如,在上文关于图7所提及的DMP700中,购自新思科技公司的可用于辅助逻辑设计功能验证(步骤712)的仿真器及原型设计产品的实例包含:Zebu.RTM.及Protolink.RTM.(RTM表示‘注册商标’)。图8说明关于包含主机系统801及仿真器802的测试平台800的一个实例的实施方案的额外细节。在一些实施例中,仿真器802是一组可编程装置,例如FPGA 804。在一些此类实施例中,主机系统801使用编译器810来生成数据及信息以配置仿真器802以仿真电路设计。待仿真的一或多个电路设计被称为被测设计(‘DUT’)。仿真器802是仿真DUT的硬件系统。即,仿真器802用于仿真DUT的性能以验证DUT的功能性。可用作本文中所公开的实施例的仿真器802的产品的一个实例是购自新思科技公司的ZeBu服务器。
主机系统801包括一或多个处理器806。在其中主机系统801由多个处理器806组成的实施例中,本文中描述为由主机系统801执行的功能可经分布在多个处理器806当中。
在一些实施例中,主机系统801内的处理器806中的至少一者包含处理以硬件描述语言编写的代码的编译器810,所述硬件描述语言表示由仿真器802仿真的DUT。所述编译器产生用于配置仿真器802以仿真DUT的数据(通常是二进制的)及信息。编译器810可变换DUT、变更DUT、重新配置DUT、将新功能添加到DUT及/或控制DUT的时序。
主机系统801及仿真器802使用由仿真连接808携载的信号来交换数据及信息。连接808可为一或多个电缆,例如,具有与RS232或USB协议兼容的引脚配置的电缆。连接808可为有线通信媒体或网络,例如局域网,或广域网,例如因特网。所述连接可为无线通信媒体或具有一或多个接入点的使用例如Bluetooth.RTM或IEEE 802.11的无线协议的网络。主机系统801及仿真器802可通过例如网络服务器(未展示)的第三装置交换数据及信息。
在一些实施例中,仿真器802包含多个FPGA 804。在一些此类实施例中,每一FPGA804通过总线811与仿真器802的其它FPGA 804(及潜在的其它仿真器硬件组件)介接以便使FPGA 804交换信号。虽然本文中所公开的一些实施例使用包括FPGA的仿真器,但其它实施例可包含其它类型的逻辑块来代替FPGA 804或连同FPGA 804一起用于仿真DUT。例如,一些实施例可使用定制FPGA、用于仿真或原型设计的专用ASIC、存储器及输入/输出装置。
FPGA 804可驻留在一或多个硬件板812上。若干板812可经放置到硬件单元814中。每一单元814内的板812可通过电缆或任何其它部件彼此连接以形成多单元仿真器802。在一些实施例中,在不脱离本公开的教示的情况下,仿真器802包括单个板812、具有一或多个板812的单个单元814,或具有多个单元814,每一单元具有一或多个板812,每一板812具有一或多个单元。
针对待仿真的DUT,仿真器802从主机系统801接收一或多个“位文件”。位文件包含DUT的描述。位文件进一步指定由主机系统801创建的DUT的分区,具有:(1)跟踪及注入逻辑,(2)分区到仿真器802的FPGA的映射,及(3)设计约束。基于位文件,仿真器802配置FPGA804以执行经仿真DUT的功能。对于一些仿真器802,仿真器802的一或多个FPGA 804已将跟踪及注入逻辑内置到FPGA 804的硅中。针对这种类型的仿真器802,FPGA 804不必由主机系统801配置以仿真跟踪及注入逻辑。
主机系统801(例如,从用户或从数据存储区)接收待仿真的DUT的描述。在一个实施例中,DUT描述呈硬件描述语言(HDL),例如寄存器传送语言(RTL)的形式。在另一实施例中,DUT描述呈网表级文件,或网表级文件及HDL文件的混合的形式。如果DUT描述的部分或整个DUT描述呈HDL形式,那么主机系统801合成DUT描述以基于DUT描述来创建门级网表。主机系统801可使用DUT的网表来将DUT划分成多个分区,其中一些这些分区包含跟踪及注入逻辑。跟踪及注入逻辑跟踪经由FPGA的接口交换的接口信号。另外,跟踪及注入逻辑可用于将被跟踪接口信号注入到FPGA的逻辑中。主机系统801将每一分区映射到仿真器802的FPGA。对于一些仿真器,跟踪及注入逻辑仅包含在FPGA的群组的选择分区中。跟踪及注入逻辑可经内置到仿真器802的FPGA中的一或多者中。主机系统801可合成多路复用器以映射到FPGA中。跟踪及注入逻辑可使用多路复用器来将接口信号注入到DUT逻辑中。
主机系统801创建描述DUT的每一分区及分区到FPGA的映射的位文件。针对其中并入跟踪及注入逻辑的分区,位文件还描述逻辑的并入。位文件还可包含放置及路由信息与设计约束。主机系统801存储位文件且还存储描述哪些FPGA将仿真DUT的每一组件(每一组件经映射到哪些FPGA)的DUT信息的组件。
根据请求,主机系统801将位文件传输到仿真器802。主机系统801指示仿真器802仿真DUT。在DUT的仿真期间或在仿真结束时,主机系统801通过仿真连接808从仿真器802接收仿真结果。仿真结果是由仿真器802基于DUT的仿真生成的数据及信息。仿真结果包含由每一FPGA的跟踪及注入逻辑跟踪的接口信号(接口信号的状态)。主机系统801可存储仿真结果,或将所述仿真结果传输到另一处理系统。
在DUT的仿真之后,用户可请求调试DUT的组件。如果提出此请求,那么用户可提供仿真的时间段以进行调试。主机系统801基于经存储信息来识别哪些FPGA经配置以仿真所述组件。主机系统801检索与时间段相关联且由每一经识别FPGA的跟踪及注入逻辑跟踪的经存储接口信号。主机系统801指示仿真器802逐个地、一次多个地或全部一起重新仿真经识别FPGA。主机系统801将经检索接口信号传输到仿真器802以便在所述时间段内重新仿真所述组件。每一经识别FPGA的跟踪及注入逻辑将其从主机系统801接收到的相应接口信号注入到映射到FPGA的DUT的逻辑中。在FPGA的多次重新仿真的情况下,可将结果全部合并在一起以获得完整的调试视图。
在所述组件的重新仿真期间,主机系统801从仿真器接收由经识别FPGA的逻辑跟踪的信号。主机系统801存储从仿真器802接收到的信号。在重新仿真期间跟踪的信号可具有比初始仿真期间更高的采样速率。例如,在初始运行中,被跟踪信号可由每X毫秒保存的硬件状态组成。然而,在重新仿真中,被跟踪信号可由每Y毫秒保存的硬件状态组成,其中Y小于X。如果用户请求查看在重新仿真期间跟踪的信号的波形,那么主机系统801可检索经存储信号且显示信号的标绘图(生成信号的波形)。此后,用户可例如请求重新仿真同一组件但是是在不同时间段内重新仿真或重新仿真另一组件。
主机系统801通常包括至少七个子系统:设计合成器、映射模块、运行时间模块、结果模块、调试模块、波形模块及存储模块。这些子系统中的每一者可被体现为硬件、软件、固件或其组合。这些组件一起配置仿真器802,且监视仿真结果。
设计合成器将DUT的HDL转换成门级逻辑。针对待仿真的DUT,设计合成器接收DUT的描述。如果DUT的描述全部或部分呈HDL(例如,RTL或其它抽象级)的形式,那么设计合成器210合成DUT的HDL以创建具有在门级逻辑方面的对DUT的描述的门级网表。
映射模块划分DUT且将分区映射到仿真器FPGA。映射模块使用DUT的网表以将门级的DUT划分成数个分区。针对每一分区,映射模块检索跟踪及注入逻辑的门级描述且将所述逻辑并入到分区中。如上文所描述,包含在分区中的跟踪及注入逻辑经配置以跟踪经由分区所映射到的FPGA的接口交换的信号(跟踪接口信号)。跟踪及注入逻辑可在划分之前并入到DUT中。例如,跟踪及注入逻辑可在合成DUT的HDL之前或之后由设计合成器并入。因此,跟踪及注入逻辑可能不匹配分区,其可能是子集、超集或甚至与分区不同。
除包含跟踪及注入逻辑之外,映射模块还可在分区中包含额外跟踪逻辑以便跟踪未被跟踪及注入逻辑跟踪的某些DUT组件的状态(以跟踪不同于由跟踪及注入逻辑跟踪的接口信号的信号)。映射模块可在划分之前在DUT中或在划分之后在分区中包含额外跟踪逻辑。设计合成器可在合成描述之前在DUT的HDL描述中包含额外跟踪逻辑。
映射模块将DUT的每一分区映射到仿真器802的FPGA。映射模块使用设计规则、设计约束(例如,时序或逻辑约束)及有关仿真器802的信息来执行划分及映射。针对DUT的组件,映射模块将描述哪些FPGA将仿真每一组件的信息存储在存储模块中。
基于划分及映射,映射模块生成描述经创建分区及逻辑到仿真器802的每一FPGA的映射的一或多个位文件。位文件可包含额外信息,例如DUT的约束,及FPGA之间的连接及每一FPGA内的连接的路由信息。映射模块可生成DUT的每一分区的位文件,所述位文件可经存储在存储模块中。根据用户的请求,映射模块将位文件传输到仿真器802,仿真器802使用所述位文件来配置FPGA以仿真DUT。
如果仿真器802包含内含跟踪及注入逻辑的专用ASIC,那么映射模块可生成允许将其连接到DUT的特定配置或仅保存被跟踪/经注入信号是什么的信息及所述信息存储在专用ASIC上何处的信息。
运行时间模块控制在仿真器802上执行的仿真。运行时间模块可引起仿真器802开始或停止执行仿真。另外,运行时间模块可将输入信号/数据提供到仿真器802。输入信号可通过连接直接地或通过其它输入信号装置间接地提供到仿真器802。例如,具有运行时间模块的主机系统801可控制输入信号装置以将输入信号提供到仿真器802。输入信号装置可为例如测试板(直接地或通过电缆)、信号生成器、另一仿真器(未展示)或另一主机系统(未展示)。
结果模块处理由仿真器802生成的仿真结果。在仿真期间及/或在完成仿真之后,结果模块从仿真器802接收在仿真期间生成的仿真结果。仿真结果包含在仿真期间跟踪的信号。具体来说,仿真结果包含由每一FPGA仿真的跟踪及注入逻辑跟踪的接口信号。仿真结果还可包含由包含在DUT中的额外逻辑跟踪的信号。每一被跟踪信号可跨越多个仿真循环。被跟踪信号由多个硬件状态组成且每一硬件状态与仿真时间相关联。结果模块将经接收的跟踪信号存储在存储模块中。针对每一经存储信号,结果模块可存储指示哪个FPGA生成被跟踪信号的信息。
调试模块允许用户调试DUT组件。在仿真器802已仿真DUT且结果模块已在仿真期间接收由跟踪及注入逻辑跟踪的接口信号之后,用户可通过在特时序间段内重新仿真DUT的组件来请求调试所述组件。在调试组件的请求中,用户识别组件且指示仿真的时间段以进行调试。用户的请求还可包含指示跟踪信号的逻辑应保存硬件状态的频率的采样速率。
调试模块识别仿真器802的一或多个FPGA,所述FPGA经配置以基于由映射模块在存储模块中存储的信息来仿真组件。针对每一经识别FPGA,调试模块从存储模块检索由FPGA的跟踪及注入逻辑在用户指示的时间段内跟踪的接口信号(即,检索由跟踪及注入逻辑跟踪的与时间段相关联的硬件状态)。
调试模块将经检索的接口信号传输到仿真器802。调试模块指示调试模块运行经识别FPGA,且使每一经识别FPGA的跟踪及注入逻辑将其相应被跟踪信号注入到FPGA的逻辑中以便在经请求时间段内重新仿真组件。调试模块还可将由用户提供的采样速率传输到仿真器802使得跟踪逻辑以适当间隔跟踪硬件状态。为了调试组件,仿真器802仅必须运行组件已映射到的FPGA。另外,组件的重新仿真不必从头开始,而是可在用户期望的任何点开始。
针对经识别FPGA,调试模块可将指令传输到仿真器802以使多个仿真器FPGA加载有经识别FPGA的相同配置。调试模块另外指示仿真器802并行运行多个FPGA。来自多个FPGA的每一FPGA以接口信号的不同时间窗口运行以便在更短的时间量内生成更大的时间窗口。例如,为了使经识别FPGA运行一定数量的循环,可能需要一小时。然而,如果多个FPGA加载有经识别FPGA的配置且所述FPGA中的每一者运行所述循环的子集,那么FPGA可能仅需要几分钟就可共同运行所有循环。
用户可识别待重新仿真的DUT信号的阶层或列表。为了实现这一点,调试模块确定仿真信号的阶层或列表所需的FPGA,检索必要的接口信号且将经检索接口信号传输到仿真器802以进行重新仿真。因此,用户可识别DUT的任何元件(例如,组件或信号)以进行调试/重新仿真。
波形模块基于被跟踪信号来生成波形。如果用户请求查看在仿真运行期间跟踪的信号的波形,那么主机系统801从存储模块检索信号。波形模块向用户显示信号的标绘图。针对一或多个信号,当从仿真器802接收信号时,波形模块可自动地生成信号的标绘图。
尽管上文关于实施例及实施方案的各种实例描述所公开方法及设备,但应理解,一或多个个别实施例中所描述的特定特征、方面及功能在其适用性方面不限于描述其的特定实施例。因此,所主张发明的广度及范围不应受在描述上文所公开的实施例中提供的任何实例限制。
本文献中所使用的术语及短语与其变动,除非另有明确地陈述,否则应被解释为开放式而非限制性的。作为前述内容的实例:术语“包含”应被解读为表示“包含但不限于”等;术语“实例”用于提供所论述项目的例子的实例,而非其详尽性或限制性列表;术语“一”或“一个”应被解读为表示“至少一个”、“一或多个”等;且例如“常规”、“传统”、“正常”、“标准”、“已知”及类似含义的术语的形容词不应被解释为将所描述项目限于给定时间段或自给定时间起可用的项目,而是应被解读为涵盖现在或将来任何时间可用或已知的常规、传统、正常或标准技术。同样,在本文献涉及所属领域的一般技术人员将明白或已知的技术的情况下,此类技术涵盖所属领域的技术人员现在或将来任何时间明白或已知的技术。
与连词“及”有关的项目的群组不应被解读为要求那些项目中的每者存在于所述分组中,而是应被解读为“及/或”,除非另有明确地陈述。类似地,与连词“或”有关的项目的群组不应被解读为要求那个群组当中的互斥性,而是应被解读为“及/或”,除非另有明确地陈述。此外,尽管所公开方法及设备的项目、元件或组件可以单数形式进行描述或主张,但预期复数形式在其范围内,除非明确地陈述限于单数形式。
在一些例子中,例如“一或多个”、“至少”、“但不限于”或其它类似短语的扩展词及短语的存在不应被解读为表示在其中可能缺少此类扩展短语的例子中意图或需要更窄情况。术语“模块”的使用并不意味着作为模块的部分所描述或主张的组件或功能全部配置在共同封包中。实际上,模块的任何或所有各种组件,无论是控制逻辑还是其它组件,可经组合在单个封包中或单独地维护且可进一步分布在多个分组或封包中或跨多个位置分布。
另外,本文中所阐述的各种实施例是在框图、流程图及其它插图的辅助下进行描述。在阅读这个文献之后对于所属领域的一般技术人员将变得显而易见的是,可在不限于中所说明实例的情况下实施所说明实施例及其各种替代物。例如,框图及其随附描述不应被解释为委任特定架构或配置。
Claims (11)
1.一种用于计算具有多个时序弧及端点、所述时序弧的多个子集的集成电路(IC)的时序良率的方法,每一子集与端点相关联,所述方法包括:
a)生成与第一IC样本的每一时序弧相关联的速度指数,其中相同速度指数用于共同时序弧;
b)基于所述相关联速度指数、所述时序弧的延迟分布及路径上下文来生成所述第一IC样本的每一时序弧的第一延迟样本;
c)确定所述第一IC样本的每一端点的松弛度;
d)确定针对所述第一IC样本确定的所述松弛度当中的最差松弛度;
e)针对多个IC样本重复a)到d);及
f)基于具有非负值的经确定的最差松弛度的数目的相对于IC样本的总数目的比率确定所述IC的时序良率。
2.根据权利要求1所述的方法,其中每一时序弧的所述延迟分布基于变动感知时序分析来确定。
3.根据权利要求1所述的方法,其中时序弧的所述子集包括通过模拟单元的信号路径。
4.根据权利要求1所述的方法,其中所述速度指数样本由蒙特卡罗值生成器生成。
5.根据权利要求1所述的方法,其中确定时序弧的每一子集的所述松弛度包含对所述子集的每一时序弧的所述延迟样本求和。
6.根据权利要求3所述的方法,其中所述共同时序弧包括第一信号路径及第二信号路径上的时序弧,其中所述第一信号路径上的所述时序弧的所述延迟与所述第二信号路径上的所述时序弧的所述延迟不同。
7.根据权利要求6所述的方法,其进一步包括生成具有包含所有时序弧的所述延迟样本的元素的延迟矩阵,每一延迟矩阵表示模拟样本单元。
8.一种用于在具有多个单元的集成电路(IC)中确定时序瓶颈单元的方法,每一单元具有多个时序弧,所述方法包括:
a)生成多个IC样本的延迟矩阵;
b)确定所述多个IC样本中的每一者的设计松弛度及所述多个IC样本的设计松弛度分布;
c)确定所述多个IC样本上的第一时序弧的延迟分布;
d)计算以下项的交叉矩的值:
i.所述设计松弛度分布;与
ii.所述第一时序弧的延迟的所述延迟分布;及
e)针对所述IC的每一时序弧重复c)及d);及
f)确定哪些单元具有导致具高于预定阈值的值的交叉矩的时序弧且将那些单元确定为时序瓶颈。
9.一种计算机系统,其包括:
a)存储子系统,其包含电子设计自动化(EDA)模块;
b)处理器,其经耦合到所述存储子系统以从所述存储子系统接收指令以引导所述处理器:
i.生成与第一IC样本的每一时序弧相关联的速度指数,其中相同速度指数用于共同时序弧;
ii.基于所述相关联速度指数、所述时序弧的延迟分布及路径上下文来生成所述第一IC样本的每一时序弧的第一延迟样本;
iii.确定所述第一IC样本的每一端点的松弛度;
iv.确定针对所述第一IC样本确定的所述松弛度当中的最差松弛度;
v.针对多个IC样本重复i.到iv.;及
vi.基于具有非负值的经确定的最差松弛度的数目相对于IC样本的总数目的比率确定所述IC的时序良率。
10.根据权利要求9所述的计算机系统,其中从所述存储子系统接收的所述指令引导所述处理器识别特定单元的在所述特定单元的最大数目个样本中具有负松弛度的那些路径且调整所述特定单元的设计以降低所述经识别路径中的负松弛度的可能性。
11.根据权利要求9所述的计算机系统,其中从所述存储子系统接收的所述指令引导所述处理器:
a)生成多个IC样本的延迟矩阵;
b)确定所述多个IC样本中的每一者的设计松弛度及所述多个IC样本的设计松弛度分布;
c)确定所述多个IC样本上的第一时序弧的延迟分布;
d)计算以下项的交叉矩的值:
i.所述设计松弛度分布;与
ii.所述第一时序弧的延迟的所述延迟分布;及
e)针对所述IC的每一时序弧重复c)及d);及
f)确定哪些单元具有导致具高于预定阈值的值的交叉矩的时序弧且将那些单元确定为时序瓶颈。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962810504P | 2019-02-26 | 2019-02-26 | |
US62/810,504 | 2019-02-26 | ||
PCT/US2020/019994 WO2020176684A1 (en) | 2019-02-26 | 2020-02-26 | Novel method to compute timing yield and yield bottleneck using correlated sample generation and efficient statistical simulation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113474780A true CN113474780A (zh) | 2021-10-01 |
Family
ID=69941513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080015783.4A Pending CN113474780A (zh) | 2019-02-26 | 2020-02-26 | 用于使用相关样本生成及高效统计模拟来计算时序良率及良率瓶颈的新颖方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220129611A1 (zh) |
EP (1) | EP3931738A1 (zh) |
KR (1) | KR20210129071A (zh) |
CN (1) | CN113474780A (zh) |
WO (1) | WO2020176684A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117371386A (zh) * | 2023-12-08 | 2024-01-09 | 奇捷科技(深圳)有限公司 | 电路布局更新方法、装置、设备及存储介质 |
TWI835197B (zh) * | 2021-11-18 | 2024-03-11 | 國立成功大學 | 製造程序之最佳良率路徑之搜尋方法及其系統 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8095906B2 (en) * | 2008-12-29 | 2012-01-10 | Altera Corporation | Method and apparatus for performing parallel routing using a multi-threaded routing procedure |
CN112597716B (zh) * | 2020-12-14 | 2023-09-15 | 南京华大九天科技有限公司 | 一种基于sta与spice模型仿真筛选瓶颈单元的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5365463A (en) * | 1990-12-21 | 1994-11-15 | International Business Machines Corporation | Method for evaluating the timing of digital machines with statistical variability in their delays |
US8239798B1 (en) * | 2007-08-03 | 2012-08-07 | Cadence Design Systems, Inc. | Methods, systems, and apparatus for variation aware extracted timing models |
JP5076832B2 (ja) * | 2007-11-22 | 2012-11-21 | 富士通株式会社 | 遅延解析支援プログラム、該プログラムを記録した記録媒体、遅延解析支援装置、および遅延解析支援方法 |
US7886247B2 (en) * | 2008-04-29 | 2011-02-08 | International Business Machines Corporation | Method and apparatus for statistical path selection for at-speed testing |
-
2020
- 2020-02-26 KR KR1020217026952A patent/KR20210129071A/ko unknown
- 2020-02-26 CN CN202080015783.4A patent/CN113474780A/zh active Pending
- 2020-02-26 WO PCT/US2020/019994 patent/WO2020176684A1/en unknown
- 2020-02-26 US US17/433,595 patent/US20220129611A1/en active Pending
- 2020-02-26 EP EP20713484.2A patent/EP3931738A1/en active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI835197B (zh) * | 2021-11-18 | 2024-03-11 | 國立成功大學 | 製造程序之最佳良率路徑之搜尋方法及其系統 |
CN117371386A (zh) * | 2023-12-08 | 2024-01-09 | 奇捷科技(深圳)有限公司 | 电路布局更新方法、装置、设备及存储介质 |
CN117371386B (zh) * | 2023-12-08 | 2024-04-02 | 奇捷科技(深圳)有限公司 | 电路布局更新方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20220129611A1 (en) | 2022-04-28 |
KR20210129071A (ko) | 2021-10-27 |
EP3931738A1 (en) | 2022-01-05 |
WO2020176684A1 (en) | 2020-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719644B2 (en) | Method and framework to dynamically split a testbench into concurrent simulatable multi-processes and attachment to parallel processes of an accelerated platform | |
US10949591B1 (en) | Hardware based state signature generation and check for test and debug of semiconductor circuit functionality | |
US10867091B1 (en) | Machine learning based power optimization using parallel training and localized data generation | |
US20220129611A1 (en) | Method to Compute Timing Yield and Yield Bottleneck using Correlated Sample Generation and Efficient Statistical Simulation | |
US10846455B2 (en) | Automatic definition and extraction of functional coverage metric for emulation-based verification | |
CN110785761B (zh) | 存在时钟动态重编程时仿真时间线的压缩方法 | |
US10878153B1 (en) | Apparatuses and methods for accurate and efficient clock domain and reset domain verification with register transfer level memory inference | |
US11763053B2 (en) | Coherent observability and controllability of overlaid clock and data propagation in emulation and prototyping | |
US10796048B1 (en) | Adding delay elements to enable mapping a time division multiplexing circuit on an FPGA of a hardware emulator | |
US11003819B1 (en) | Method to enable multiple users of embedded-software debug to share a single hardware resource | |
US11327790B1 (en) | Event-level parallel simulation using dynamic synchronization | |
US11275877B2 (en) | Hardware simulation systems and methods for reducing signal dumping time and size by fast dynamical partial aliasing of signals having similar waveform | |
CN112673376B (zh) | 用于标识状态保持回路和振荡回路的硬件仿真系统和方法 | |
US11022634B1 (en) | Rail block context generation for block-level rail voltage drop analysis | |
US11475293B1 (en) | Learning-based toggle estimation | |
US10579760B2 (en) | Force/release support in emulation and formal verification | |
US11176293B1 (en) | Method and system for emulation clock tree reduction | |
US11402742B1 (en) | Undercut EUV absorber reflective contrast enhancement | |
US11343110B2 (en) | Phantom object reporting in a power-and-ground router | |
CN112818627A (zh) | 电路设计、测试和/或制造的更有效/有用的电子结构 | |
CN112883679A (zh) | 在多电压设计中加油站的自动生成 | |
CN118363425A (zh) | 减少仿真或原型设计中时钟控制和触发器操作的性能开销 | |
Markulik | Accelerated simulation and testing of integrated circuits using high performance computing machines |
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 |