用于最大瞬时峰值功率的矢量生成

文档序号:136526 发布日期:2021-10-22 浏览:25次 >En<

阅读说明:本技术 用于最大瞬时峰值功率的矢量生成 (Vector generation for maximum instantaneous peak power ) 是由 高又新 苏清 M·巴布纳 于 2021-04-19 设计创作,主要内容包括:本公开涉及用于最大瞬时峰值功率的矢量生成。公开了一种用于执行集成电路(IC)设计的操作状态分析的系统和方法。该方法包括:使用与一个或多个用户指定的约束相对应的多个矢量,来仿真IC设计的一个或多个单元从第一操作状态到第二操作状态的切换操作。该方法包括:针对一个或多个单元中的每个单元将操作状态从第一操作状态改变为第二操作状态,生成基于时间的波形;并且基于所生成的基于时间的波形,标识一个或多个操作状态改变,该改变对应于操作状态分析以及关联的时序窗口和单元信息。该方法包括:由IC设计的一个或多个单元中的每个单元验证一个或多个操作状态改变满足一个或多个用户指定的约束以用于生成分析报告。(The present disclosure relates to vector generation for maximum instantaneous peak power. A system and method for performing an operational state analysis of an Integrated Circuit (IC) design is disclosed. The method comprises the following steps: switching operation of one or more cells of the IC design from a first operating state to a second operating state is simulated using a plurality of vectors corresponding to one or more user-specified constraints. The method comprises the following steps: generating a time-based waveform for each of the one or more cells to change an operating state from a first operating state to a second operating state; and identifying one or more operating state changes based on the generated time-based waveform, the changes corresponding to the operating state analysis and associated timing windows and cell information. The method comprises the following steps: verifying, by each of the one or more units of the IC design, that the one or more operational state changes satisfy the one or more user-specified constraints for generating the analysis report.)

用于最大瞬时峰值功率的矢量生成

相关申请

本申请要求于2020年4月17日提交的美国临时专利申请号63/011,565的优先权,出于所有目的通过引用将其全部内容并入本文。

技术领域

本公开一般涉及集成电路设计分析和验证。特别地,本公开涉及使用矢量的集成电路的功率和电压使用。

背景技术

在集成电路(IC)设计中,功率完整性的两个关键因素是最坏情况下的功率消耗分析和电压降分析。集成电路设计人员因此需要借助于最坏情况的功率消耗分析和最坏情况的电压降分析来找出IC设计中的任何弱点。然而,确定IC设计的最坏情况的功率消耗和/或最坏情况的电压降非常困难。当前被用于协助IC设计人员标识IC设计中的弱点以找出电路弱点的方法之一是从真实场景仿真中捕获真实电路行为。此类仿真的输出可以包括有关IC设计的各个单元如何切换数十亿个时钟周期的数据。当前被用于协助IC设计人员标识IC设计中的弱点的另一种方法是基于逻辑仿真。基于给定的主要输入,将枚举尽可能多的输入条件,然后沿着IC设计组件向下传播。与第一种方法类似,在基于逻辑仿真的方法中,所生成的数据可能对应于数百万个时钟周期结果。在第三种方法中,基于仿真数据在数百万或数十亿个时钟周期内随时间生成长矢量。所生成的长矢量被馈送到功率或电压降分析工具中。第三种方法通常被使用在门级分析工具中,其中使用某种算法基于切换活动生成切换矢量,然后进行本机功率和电压降分析。在这种方法中,使用随机数生成器确定单元是否进行切换来确定切换活动。切换条件是在寄存器的主要输入或输出处进行确定,然后接着是向下逻辑传播。最后,几乎所有单元状态都可以被确定。对于具有不同随机种子的多个时钟周期,可以重复相同的过程。就时间和金钱而言,使用上面提及的当前的方法执行功率和/或电压降分析是非常昂贵的。

发明内容

在一个实施例中,公开了一种方法。该方法由一个或多个处理器执行。该方法包括:使用与一个或多个用户指定的约束相对应的多个矢量,来仿真针对IC设计的一个或多个单元从第一操作状态到第二操作状态的切换操作。该方法包括:针对IC设计的一个或多个单元中的每个单元在切换操作期间将操作状态从第一操作状态改变为第二操作状态,生成基于时间的波形。该方法包括:基于所生成的基于时间的波形,由IC设计的一个或多个单元中的每个单元标识一个或多个操作状态改变,该一个或多个操作状态改变对应于操作状态分析以及关联的时序窗口和单元信息。该方法包括:由IC设计的一个或多个单元中的每个单元验证一个或多个操作状态改变满足一个或多个用户指定的约束;以及生成分析报告,该分析报告包括多个矢量的子集,该多个矢量的子集与由IC设计的一个或多个单元中的每个单元已验证的一个或多个操作状态改变相对应。

在另一个实施例中,公开了一种用于执行集成电路(IC)设计的操作状态分析的系统。该系统包括:被配置为存储操作的存储器;被配置为执行所述操作的一个或多个处理器,所述操作包括:使用与一个或多个用户指定的约束相对应的多个矢量来仿真针对该IC设计的一个或多个单元从第一操作状态到第二操作状态的切换操作。该操作包括:针对IC设计的一个或多个单元中的每个单元在切换操作期间将操作状态从第一操作状态改变为第二操作状态,生成基于时间的波形。操作包括:基于所生成的基于时间的波形,由IC设计的一个或多个单元中的每个单元标识一个或多个操作状态改变,该改变对应于操作状态分析以及关联的时序窗口和单元信息。操作包括:由IC设计的一个或多个单元中的每个单元验证一个或多个操作状态改变满足一个或多个用户指定的约束条件;以及生成分析报告,该分析报告包括多个矢量的子集,该多个矢量的子集与由IC设计的一个或多个单元中的每个单元已验证的一个或多个操作状态改变相对应。

在又一个实施例中,公开了一种在其上存储有指令的非暂态有形计算机可读设备。该指令在由至少一个计算设备执行时使该至少一个计算设备执行用于集成电路(IC)设计的操作状态分析的操作。操作包括:使用与一个或多个用户指定的约束相对应的多个矢量来仿真针对该IC设计的一个或多个单元从第一操作状态到第二操作状态的切换操作。该操作包括:针对IC设计的一个或多个单元中的每个单元在切换操作期间将操作状态从第一操作状态改变为第二操作状态,生成基于时间的波形。操作包括:基于所生成的基于时间的波形,由IC设计的一个或多个单元中的每个单元标识一个或多个操作状态改变,该改变对应于操作状态分析以及关联的时序窗口和单元信息。操作包括:由IC设计的一个或多个单元中的每个单元验证一个或多个操作状态改变满足一个或多个用户指定的约束条件;以及生成分析报告,该分析报告包括多个矢量的子集,该多个矢量的子集与由IC设计的一个或多个单元中的每个单元已验证的一个或多个操作状态改变相对应。

附图说明

通过下面给出的详细描述和本公开的实施例的附图,将更充分地理解本公开。附图被用来提供本公开的实施例的知识和对本公开的实施例的理解,并且不将本公开的范围局限于这些特定实施例。此外,附图不一定按比例绘制。

图1图示出了根据一些实施例的用于功率或电压降分析的矢量生成的高级流程图。

图2图示出了根据一些实施例的图1的流程图的实施例的流程图。

图3图示出了根据一些实施例的图1的流程图的另一实施例的流程图。

图4图示出了根据一些实施例的使用顺应(compliant)矢量的集成电路(IC)设计的仿真。

图5图示出了根据一些实施例的用于IC设计上的多个单元的基于时间的功率消耗波形。

图6图示出了根据一些实施例计算出的随时间的峰值功率消耗。

图7图示出了根据一些实施例的用于矢量生成的用户约束的应用。

图8A图示出了根据一些实施例的用于最大瞬时峰值功率确定的逻辑相关性和事件传播。

图8B图示出了根据一些实施例的示出随时间的多个时钟周期的功率消耗的曲线图。

图9图示出了根据一些实施例的在多个时钟路径上的活动传播。

图10图示出了根据一些实施例的用于矢量生成的冲突解决方案。

图11图示出了根据一些实施例的时钟网络功率的最大化。

图12图示出了根据一些实施例的具有低有效预设和清除的D触发器。

图13图示出了根据一些实施例的高扇出网(HFN)的处理。

图14图示出了根据一些实施例的在集成电路的设计和制造期间使用的各种过程的流程图。

图15示出了在其中可以操作本公开的实施例的示例计算机系统的图。

为了容易地标识对任何特定元件或动作的讨论,参考标号中的一个或多个最高有效数字指的是该元件被首次引入的图号。

具体实施方式

由于集成电路(IC)的复杂性和尺寸,所以不可能枚举使用本公开中上面提及的当前已知方法生成以标识功率消耗和电压降分析的最坏情况的用于功率和电压降分析的所有可能矢量。然而,本文所描述的用于生成用于功率和电压降分析的矢量集合的系统和方法可以被用来标识最坏情况的功率和电压降分析。

图1图示出了根据一些实施例的用于功率或电压降分析的矢量生成的高级流程图。集成电路可以包括多个单元。多个单元中的每个单元在时钟周期期间可以不切换。此外,每个单元在不同的时钟周期内随时间具有不同的单元状态。以最大化瞬时峰值功率和/或电压降为例,本文所述的方法可以从IC设计中的所有单元开始。因此,对于功率和电压降分析,如110所示,IC设计可以被仿真,并且仅考虑所生成的满足用户指定的约束的矢量用于进行功率和电压降分析。作为非限制性示例,用户指定的约束可以包括关于具有恒定逻辑零或一值的网(即不切换的网)的信息。用户指定的约束还可以包括描述时钟频率、时钟的上升沿和/或下降沿的时钟定义。用户指定的约束还可以包括单元基于时钟门控多久切换一次。作为非限制性示例,用户指定的约束可以被应用于多个单元的子集。因此,在矢量生成之前,用户指定的约束可以被应用于整个IC设计,以使得处于用户指定的约束之下的IC设计的所有单元根据那些约束来进行处理。因此,针对IC设计的电路操作根据用户指定的约束条件而被仿真。

在120处,可以针对IC设计的多个单元中的每个状态改变生成基于时间的功率和/或电流波形。基于时间的功率和/或电流波形可以基于上面的110的仿真结果来生成。对于基于时间的功率和/或电流波形,可以针对该单元的时钟的每个时序窗口确定针对该单元的每个状态而流过每个单元的已消耗的功率和/或电流。针对每个单元的所有切换条件可以由用户枚举。然后可以计算针对每个切换条件的功率值。单元中的每个切换条件被称为单元状态。然后,功率数字与引脚从其中开始上升或下降的时序窗口相关联。时序窗口包括最小和最大到达时间。最后,每个单元状态由一个矩形框表示,其中宽度表示时序窗口,而高度表示功率。时序窗口表示时间间隔,在该时间间隔中可以发生切换条件上升或下降。当其发生时,功率值表示它将消耗多少功率。最后,可以根据矩形框所表示的所有单元状态来计算累积的基于时间的功率。

在130处,基于针对IC设计的多个单元中的每个状态改变所生成的功率和/或电流波形,可以标识峰值功率和/或电流使用以及对应的时序窗口。另外,基于所生成的功率和/或电流波形,还可以确定对峰值功率和/或电流使用有贡献的一个或多个单元。可以基于在给定时序窗口期间针对每个单元的功率和/或电流使用来确定针对时序窗口的峰值功率和/或电流使用。因此,可以确定在峰值功率和/或电流使用期间的单元和对应的单元状态。因此,根据基于时间的功率波形,可以计算发生峰值功率消耗的随时间的一个或多个峰值。对于每个峰值和峰值时间,可以对所有单元状态进行分析或扫描,以使得仅其时序窗口与峰值时间重叠的那些单元状态被保留以形成单元状态列表。然后可以按照功率值从最高功率到最低功率对列表进行排序。

在140处,可以验证在发生峰值功率和/或电流使用的时序窗口期间的每个单元的功率和/或电流使用在用户指定的约束内。如果在发生峰值功率和/或电流使用的时序窗口期间的任何单元的功率和/或电流使用都不在用户指定的约束内,那么单元和对应的单元状态也可以被标识以用于通知用户。作为非限制性示例,可以使用值改变转储(VCD)文件中的记号来通知用户。

根据一些实施例,用于矢量生成的单元状态可以被确定。在此步骤中,用户指定的约束可以被用于矢量生成。作为非限制性示例,用户指定的约束还可以包括将永远不会切换的一个或多个网(因此它们具有恒定的逻辑零或一值)、就周期而言的时钟定义、和上升/下降沿、以及时钟门控单元应多久切换一次。在矢量生成之前,遵循用户指定的约束并将其首先传播到整个设计,以使得处于用户指定的约束之下的所有单元都被正确地处理。从单元状态列表中,还可以标识从最高功率使用到最小功率使用的单元状态。对照用户约束和到目前为止传播的当前引脚条件来检查单元状态,并确定这种单元状态可以被保留还是被滤除。如果单元状态要被保留,则其引脚状态将向前和/或向后传播。在传播之后,如果未发现逻辑冲突,则单元状态最终被保留。否则,单元状态将被滤除。针对列表中的每个单元状态重复进行这种过滤过程,直到没有剩余状态为止。

在150处,可以生成包括与IC设计的多个单元的每个单元状态相对应的矢量的分析报告。生成与所有单元状态相对应的矢量。单元状态的最终列表将满足用户指定的约束和逻辑一致性二者。不满足用户指定的约束和/或逻辑一致性的单元状态可以从分析报告中被排除。分析报告可以是VCD文件格式。作为非限制性示例,还可以使用快速信号数据库(FSDB)文件格式来生成分析报告。然后,该分析报告可以被IC设计人员用来确定IC设计的最大瞬时峰值功率。分析报告中的单元状态可以按照从最短到最长的最大到达时间来进行排序。分析报告中的矢量可以按照单元的到达时间的顺序来进行排序。单元的到达时间可以在分析报告中被称为事件时间。

如上所述,基于图1中所示的高级流程图,该方法开始于针对IC设计的每个单元计算所有枚举的个体单元状态的功率。由于在整个设计中来自单元的个体状态的数量较少,因此最差的功率使用也可以与所枚举的那些单元状态和单元相对应。因此,与目前已知的用于功率和电压降分析的方法相比,如本文中使用图1描述的矢量的生成更快更准确。基于使用图1使用本文所描述的方法所生成的矢量的功率和电压降分析的准确性,是因为所公开的方法不使用随机数来确定矢量。因此,与使用随机数的其他方法相比,使用图1使用本文所描述的方法的功率和电压降分析可能更接近最坏情况。

通过比较,当前已知的基于无矢量的解决方案是基于切换活动的,并且使用随机数生成器来确定是否进行网切换。因此,具有高切换活动的网被切换的可能性更高,并且生成用于矢量生成的事件。但是,功率和/或电压降分析需要可以生成最坏情况的功率或电压降的矢量。因此,只要网同时进行切换,无论切换活动如何,都可能发生高瞬时功率或电压降。根据一些实施例的本文所描述的方法不使用随机数来确定是否进行网交换。单元是否切换取决于其功率是否对总累积瞬时功率有贡献。因此,根据一些实施例的本文所描述的方法自然地遵循用户指定的约束。由于所有逻辑冲突单元状态都在该方法中进行了过滤,因此它还留存了逻辑一致性。

图2图示出了图1的流程图的实施例的流程图。特别地,图2中描述的实施例与最坏情况或最大功率使用分析相关。如图2中所示,在210处,针对一个或多个网的逻辑常数的用户指定的约束可以被映射到被测IC设计的一个或多个单元的一个或多个引脚条件。如前所述,在仿真期间,首先要考虑用户指定的约束,并将其应用于整个IC设计。作为非限制性示例,可以将整个IC设计拆分成两个或更多部分;例如,每个部分都可以被称为栅格。因此,整个IC设计可以被划分成多个栅格。因此,用户指定的约束可以被应用于整个IC设计的一个或多个栅格。在220处,如上所述,针对一个或多个时钟波形的用户指定的约束可以被应用于整个IC设计和/或被应用于IC设计的一个或多个栅格。一个或多个时钟波形的上升沿和/或下降沿可引起一个或多个单元的切换和一个或多个单元的功率消耗。因此,在230处,可以计算在所应用的一个或多个时钟波形的时序窗口期间由一个或多个单元消耗的功率。因此,由一个或多个单元针对该单元的每个状态所消耗的功率可以被确定并与时序窗口相关联。

在240处,可以生成基于时间的功率波形。基于时间的功率波形表示由IC设计的一个或多个单元或栅格使用的功率总量。在250处,根据基于时间的功率波形,还可以确定峰值功率和对应的时间。此外,在260处还可以标识对峰值功率有贡献的一个或多个单元。由于峰值功率是IC设计的一个或多个单元的累积功率使用的结果,因此对峰值功率使用有贡献的一个或多个单元的单元状态列表也可以使用基于时间的功率波形来确定。

在270处,可以基于用户指定的约束对照一个或多个单元的一个或多个引脚的当前引脚条件来检查单元状态列表。如果来自单元状态列表的单元状态符合用户指定的约束,那么可以在向前和/或向后方向上传播该单元状态。此外,如果单元状态的传播不引起任何逻辑冲突,那么可以接受该单元状态以用于生成矢量。否则,该单元状态可以从生成矢量中被排除。

在280处,可以生成分析报告,该分析报告包括与所接受的单元状态相对应的所生成的矢量。如上所述,分析报告可以是VCD或FSDB文件格式。

图3图示出了图1的流程图的另一实施例的流程图。特别地,在图3中描述的实施例与最坏情况或最大电压降分析相关。如图3中所示,在310处,针对一个或多个网的逻辑常数的用户指定的约束可以被映射到被测IC设计的一个或多个单元的一个或多个引脚条件。如前所述,在仿真期间,首先要考虑用户指定的约束,并将其应用于整个IC设计。作为非限制性示例,在330处,整个IC设计可以被拆分成两个或更多部分;例如,每个部分都可以被称为栅格。因此,整个IC设计可以被划分成多个栅格。因此,用户指定的约束可以被应用于整个IC设计的一个或多个栅格。因此,如上所述,当针对一个或多个时钟波形的用户指定的约束可以被应用于整个IC设计和/或被应用于IC设计的一个或多个栅格时,一个或多个时钟波形的上升沿和/或下降沿可引起一个或多个单元的切换,并且引起电流流过一个或多个单元。因此,在340处,可以计算在所应用的一个或多个时钟波形的时序窗口期间流过一个或多个单元的电流。因此,针对单元的每个状态通过一个或多个单元的峰值电流可以被确定并与时序窗口相关联。

在350处,可以针对一个或多个栅格或整个IC设计生成基于时间的电流波形。基于时间的电流波形表示流过IC设计的一个或多个单元或栅格的电流总量。根据基于时间的电流波形,还可以确定峰值电流和对应的时间。此外,在350处还可以标识对所汲取的峰值电流有贡献的一个或多个单元或栅格。由于峰值电流是由IC设计的一个或多个单元或栅格所汲取的累积电流的结果,因此对峰值电流有贡献的一个或多个单元的单元状态列表也可以使用基于时间的电流波形来确定。

在360处,可以基于用户指定的约束对照一个或多个单元的一个或多个引脚的当前引脚条件来检查单元状态列表。如果来自单元状态列表的单元状态符合用户指定的约束,那么可以在向前和/或向后方向上传播该单元状态。此外,如果单元状态的传播不引起任何逻辑冲突,那么可以接受该单元状态以用于生成矢量。否则,该单元状态可以从生成矢量中被排除。

在370处,可以生成分析报告,该分析报告包括与所接受的单元状态相对应的所生成的矢量。如上所述,分析报告可以是VCD或FSDB文件格式。因此,分析报告帮助IC设计人员标识IC设计的最大电压降以及一个或多个IC设计单元的对应单元状态。可以存在所生成的多个VCD或FSDB文件,并且每个VCD或FSDB文件可以对应单个时钟周期。

根据一些实施例,用于最大电压降分析的矢量生成与用于最大功率使用的矢量生成在两个方面不同。首先,代替计算针对设计中的每个单元状态的功率,可以针对每个单元状态计算电流波形。其次,可以从相同邻域中的一组单元而不是所有IC设计单元中生成基于时间的电流波形。如上所述,为了实现这一点,可以将整个IC设计划分成多个栅格,然后基于它们在IC上的物理位置而将单元分组为不同的栅格。作为非限制性示例,可以在每个栅格处或从多个栅格一起执行矢量生成。

根据一些实施例,作为非限制性示例,以上使用图2和/或图3描述的步骤可以也可以被应用来生成矢量,以在时序路径上达到最大电压降反馈,从而使得其延迟影响最差。在本公开中,当针对最大功率使用生成矢量时,成本函数因此是功率。类似地,当针对最大电压降生成矢量时,成本函数因此是峰值电流,而当针对最大电压降反馈生成矢量时,那么成本函数是电压降引起的延迟。可以沿着时序路径针对IC上相同邻域或附近的一组单元生成针对最大电压降反馈的矢量。

图4图示出了根据一些实施例的使用顺应矢量的集成电路(IC)设计的仿真。如上所述和如图4中所示,使用硬件描述语言(例如Verilog等)描述的IC设计416可以包括多个单元412。多个单元412可以经由多个信号路径414连接。根据用户指定的约束,当时钟波形被应用于多个单元412中的一个或多个单元,它可能引起多个单元412中的一个或多个单元的网的切换。网的切换可能引起功率使用和/或电流流过一个或多个单元。此外,如上所述,各个单元可以被分组为一个或多个被称为栅格的部分。各单元可以基于它们在IC设计上的位置而被分组为栅格。

基于单元切换,单元可以例如在时间和/或空间关系上耦合到时序关键的路径。所有单元可引起某些电压降并且其IR灵敏度当单元在时钟的上升和/或下降沿期间切换时可以被计算出。此外,还可以确定关键时序路径的延迟。因此,作为非限制性示例,除了最大功率使用矢量之外,还可以确定切换矢量。切换矢量可以描述针对每个切换事件的时序退化。如上所述,不符合用户指定的约束的矢量可能会被排除,并且可能也不被包括在分析报告中。作为非限制性示例,用户指定的约束可以与扇出、复位逻辑、集成时钟门控(ICG)效率、扫描模式等等相关。

图5图示出了根据一些实施例的用于IC设计上的多个单元的基于时间的功率消耗波形。如上所述和如图5中所示,基于定时器的功率消耗波形512、514和516被示出。功率消耗波形512、514和516例如与单元C1、C2和C10相关联。对于每个单元C1、C2和C10,功率消耗波形示出了在多个时钟周期内随时间使用的功率。当单元状态在应用的时钟波形的上升和/或下降期间进行切换时,功率可以被单元使用。然后可以将所使用的功率表示为矩形,其中矩形的高度表示所使用的功率量,而宽度表示时序窗口。

图6图示出了根据一些实施例计算出的随时间的峰值功率消耗。针对多个单元的图5中所示的基于时间的功率波形在图6中沿着X轴604随时间被示出。由于针对多个单元的基于时间的功率波形沿着X轴随时间彼此堆叠,因此可以针对整个IC设计和/或多个单元生成功率消耗波形602,其示出了在给定时间所消耗的总功率。如图6中所示,功率消耗波形602因此可以被用来标识峰值功率,对峰值功率有贡献的单元,并且还可以标识当发生峰值功率使用时的单元状态和对应的时间。

图7图示出了根据一些实施例的用于矢量生成的用户约束的应用。用于矢量生成的用户约束的示例可以是50%或更低的ICG效率。在没有ICG效率约束的情况下,所有反相器都可以以对最大瞬时峰值功率使用有贡献的方式进行切换。如图7中所示,反相器i1708、i2 710和i4 706由ICG1 702触发,而反相器i3 712和i5 714由ICG2 704触发。因此,反相器i1 708、i2 710和i4 706可能根据ICG1 702处的使能信号和时钟信号CLK的上升沿和/或下降沿而引起功率消耗。类似地,反相器i3 712和i5 714可能根据ICG2 704处的使能信号和时钟信号CLK而引起功率消耗。如图7中所示,在没有用户指定的约束描述最大瞬时峰值功率的情况下,所有反相器可以同时切换,从而引起最大同时峰值功率,如716所示。作为非限制性示例,用户指定的约束可以将最大同时峰值功率使用限制到50%以下。由于与ICG1 702触发的矢量i1 708、i2 710和i4 706相比,ICG2 704触发的矢量i3 712和i5 714消耗的瞬时峰值功率更少,因此可以将ICG2 704触发矢量排除而不予考虑。因此,可以基于反相器i1 708、i2 710和i4 706的同时功率使用来生成矢量,如718所示。

图8A图示出了根据一些实施例的用于最大瞬时峰值功率确定的逻辑相关性和事件传播。作为非限制性示例,用户指定的约束可以要求反相器i1处的输入信号是上升信号。因此,当事件R 802在反相器i1处是上升时,该事件被向前传播到其他触发器。如图8A中所示,一些引脚可以具有恒定逻辑。因此,在具有恒定逻辑的那些ping处的电压电平可以保持为1或0。在事件传播之后,针对图8A中所示的电路的结果矢量可以在反相器i1、触发器ff1、或门or1、触发器ff2、触发器ff3、异或门XOR1、触发器ff4和ff5以及反相器i3处针对事件R具有逻辑相关性。因此,可以生成满足逻辑相关性的矢量,并且仅针对逻辑相关性满足用户指定的约束的那些事件可以在前向和/或反向方向上传播。

图8B图示出了根据一些实施例的示出随时间的多个时钟周期的功率消耗的曲线图。作为非限制性示例,假设所有单元都是时钟单元,并且在IC设计中不存在针对多个时钟周期的功率消耗的数据单元,如图8B中所示。假设单元切换发生在时钟的上升沿处,如图8B中所示,则在周期1 808、周期2 810和周期3 812期间可能发生最坏或最大同时功率消耗。因此,根据用户指定的约束,在矢量生成期间,对于所有时钟,可能仅考虑时钟周期808、810和812。由于所有其他时钟周期均不符合用户指定的约束,因此可以忽略它们。但是,当针对周期808、810和812为矢量生成分析报告时,输出VCD文件可能看起来不相干。作为非限制性示例,为了生成包括示出相干逻辑的矢量的分析报告,可以生成虚设的额外时钟周期。结果,可以生成单个VCD或FSDB文件。

图9图示出了根据一些实施例的在多个时钟路径上的活动传播。作为非限制性示例,用户指定的约束可以包括在多个时钟路径上的事件的传播。在这种情况下,用户指定的约束可以指定事件传播应如何延迟。如图9中所示,时钟902是1GHz时钟,而另一个时钟904是500MHz时钟。当一个选项(例如“set_power_analysis_options-through_mode”)被启用时,那么事件将沿多个时钟路径进行传播。可以为沿时钟路径的组件指定降额因数,以在目的地实现最大时钟转变。

图10图示出了根据一些实施例的用于矢量生成的冲突解决方案。作为非限制性示例,用户指定的约束可以包括与针对多个实例的最坏情况的内部能量消耗相对应的一个或多个条件。用户指定的约束1002可以要求所传播的时钟转变和到网的信号值被忽略,这是与最坏情况的内部能量消耗相对应的一个或多个条件的一部分。

图11图示出了根据一些实施例的时钟网络功率的最大化。作为非限制性示例,用户指定的约束可以包括IC设计、IC设计的一个或多个单元或一个或多个栅格的最坏情况的时钟网络功率和用户指定的目标功率消耗。图11中所示的IC设计例如可以包括时钟CLK1102、ICG1 1104、ICG2 1106、ICG3 1108以及触发器1110、1112、1114和1116。用于该用户指定的约束的成本函数或参数可以是多个端点的内部能量。如图11中所示,可以用值1的SP来启用馈送另一ICG的ICG。

图12图示出了根据一些实施例的具有低有效预设和清除的D触发器。作为非限制性示例,用户指定的约束可以包括如何可以设置控制引脚以使得数据能够传播输出。在图12中,示出了时钟引脚1204、数据引脚1202和1206以及控制引脚1208和1210。可以基于硬件描述语言来处理控制引脚,该硬件描述语言指定启用信号的预设和清除。数据引脚可以通过用户注释或规则传播和记号来获得TR和SP。时钟引脚可以通过节点时钟活动传播来获得TR和SP。

图13图示出了根据一些实施例的高扇出网的处理。作为非限制性示例,用户指定的约束可以包括高扇出网(HFN)处理。在IC设计中,未缓冲的网可能会引起大量功率消耗,这可能掩盖了时钟树合成(CTS)或缓冲之前的早期设计阶段期间的实际功率问题。用户指定的约束可以定义用于HFN的限制。例如,HFN可以被设置为10。因此,所有具有10个或更多引脚的网都可以被定义为HFN。对于驱动器1302和接收器1304、1306和1308,功率的计算可以仅基于泄漏。可以根据用户指定的约束来禁用被标识为具有HFN的网的回转(slew)和负载计算。

图14图示出了在诸如集成电路之类的制品的设计、验证和制造期间使用的一组示例过程1400,以转换和验证表示集成电路的设计数据和指令。这些过程中的每一个都可以被结构化并被启用为多个模块或操作。术语“EDA”是指术语“电子设计自动化”。这些过程始于用设计师提供的信息创建产品构思1410,该信息被转换以创建使用一组EDA过程1412的制品。在完成设计之后,将设计流片(tape-out)1434,也就是当集成电路的艺术品(例如,几何图案)被发送到制造工厂以制造掩模组时,其随后被用来制造集成电路。在流片之后,制造半导体裸片1436,并且执行封装和组装过程1438以产生完成的集成电路1440。

电路或电子结构的规范范围可以从低级晶体管材料布局到高级描述语言。使用诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera之类的硬件描述语言('HDL'),高级表示可以被用来设计电路和系统。HDL描述可以被转换为逻辑级寄存器传输级('RTL')描述、门级描述、布局级描述或掩码级描述。作为更详细描述的每个较低级别的表示,都会在设计描述中添加更多有用的细节,例如,包括描述的针对模块的更多细节。作为更详细描述的较低级别的表示可以由计算机生成,从设计库中导出或由另一个设计自动化过程创建。用于指定更详细描述的较低级别的表示语言的规范语言示例是SPICE,它被用于对具有许多模拟组件的电路进行详细描述。在每个表示级别处的描述启用以供针对该层的对应工具(例如正式验证工具)使用。设计过程可以使用图14中描绘的序列。过程由EDA产品(或工具)描述或支持。

在系统设计1414期间,要被制造的集成电路的功能性被指定。可以针对所期望的特性(诸如功率消耗、性能、面积(物理和/或代码行)和成本降低等)对设计进行优化。在此阶段,可以将设计分为不同类型的模块或组件。

在逻辑设计和功能验证1416期间,以一种或多种描述语言来指定电路中的模块或组件,并检查该规范的功能准确性。例如,可以验证电路的组件以生成与所设计的电路或系统的规范要求相匹配的输出。功能验证可以使用仿真器和其他程序,诸如测试台生成器、静态HDL检查器和形式验证器。在一些实施例中,被称为“仿真器”或“原型系统”的组件的特殊系统被用来加速功能验证。

在测试的合成和设计1418期间,HDL代码被转换为网表。在一些实施例中,网表可以是图结构,其中图结构的边缘表示电路的组件,而图结构的节点表示组件之间的互连方式。HDL代码和网表都是制造的分层产品,其可以被EDA产品使用来验证集成电路在被制造时是否按照指定的设计来执行。可以针对目标半导体制造技术对网表进行优化。附加地,可以对完成的集成电路进行测试,以验证集成电路满足规范的要求。

在网表验证1420期间,检查网表是否符合时序约束以及是否与HDL代码相对应。在设计规划1422期间,构造并分析集成电路的总体平面图,以进行时序和顶级布线。

在布局或物理实现1424期间,发生物理放置(诸如晶体管或电容器之类的电路组件的定位)和布线(电路组件通过多个导体的连接),并且从库中选择单元以使得特定的逻辑功能可以被执行。如本文中所使用的,术语“单元”可以指定一组提供布尔逻辑功能(例如,AND、OR、NOT、XOR)或存储功能(例如,触发器或锁存器)的晶体管、其他组件和互连。如本文中所使用的,电路“块”可以指的是两个或更多单元。单元和电路块都可以被称为模块或组件,并且可以同时被启用为物理结构并在仿真中被启用。(基于“标准单元”)为所选择的单元指定诸如大小之类的参数,并使其在数据库中可访问以供EDA产品使用。

在分析和提取1426期间,在布局级别验证电路功能,这允许对布局设计进行改进。在物理验证1428期间,检查布局设计以确保诸如DRC约束、电气约束、光刻约束之类的制造约束是正确的并且电路系统功能与HDL设计规范相匹配。在分辨率增强1430期间,转换布局的几何形状以改善电路设计的制造方式。

在流片期间,创建数据以用于光刻掩模的生产(如果合适,则在应用光刻增强之后)。在掩模数据准备1432期间,“流片”数据被用来产生光刻掩模,该光刻掩模用于产生完成的集成电路。

计算机系统(诸如图15的计算机系统1500)的存储子系统可以被用来存储程序和数据结构,这些程序和数据结构被本文所描述的一些或所有EDA产品以及被用于针对开发针对库的单元和使用该库的物理和逻辑设计的产品所使用。

图15图示出了计算机系统1500的示例机器,在其中可以执行用于使该机器执行本文所讨论的方法中的任何一个或多个的一组指令。在备选实现中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或互联网中的其他机器。该机器可以在客户端-服务器网络环境中以服务器或客户端机器的容量来操作,作为对等(或分布式)网络环境中的对等机器来操作,也可以作为云计算基础架构或环境中的服务器或客户端机器来操作。

机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥、或(顺序地或以其他方式)能够执行一组指令的机器,这些指令指定该机器要采取的动作。此外,虽然图示出了单个机器,但是术语“机器”也应被认为包括机器的任何集合,这些机器单独地或共同地执行一组(或多组)指令以执行本文所讨论的方法中的任何一个或多个。

示例计算机系统1500包括处理设备1502、主存储器1504(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)之类的动态随机存取存储器(DRAM)、静态存储器1506(例如闪存、静态随机存取存储器(SRAM)等)和数据存储设备1518,它们经由总线1530彼此通信。

处理设备1502表示一个或多个处理器,诸如微处理器、中央处理器等。更具体地说,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或者是实现其他指令集的处理器、或者是实现指令集的组合的处理器。处理设备1002还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备1502可以被配置为执行指令1526以用于执行本文所描述的操作和步骤。

计算机系统1500还可以包括网络接口设备,以通过网络1520进行通信。计算机系统1500还可以包括视频显示单元1510(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1512(例如键盘)、光标控制设备1514(例如鼠标)、图形处理单元1522、信号生成设备1516(例如扬声器)、图形处理单元1522、视频处理单元1528和音频处理单元1532。

数据存储设备1518可以包括机器可读存储介质1524(也被称为非暂态计算机可读介质),在其上存储有体现本文所描述的方法或功能中的任何一个或多个的一组或多组指令1526或软件。在计算机系统1500、主存储器1504和同样构成机器可读存储介质的处理设备1502执行指令期间,指令1526还可以全部或至少部分地驻留在主存储器1404内和/或处理设备1502内。

在一些实现中,指令1526包括用于实现与本公开相对应的功能性的指令。尽管在示例实现中将机器可读存储介质1524示为单个介质,但是术语“机器可读存储介质”应被认为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或关联的缓存和服务器)。术语“机器可读存储介质”也应被认为包括能够存储或编码一组指令以由机器执行并且使机器和处理设备1502执行本公开的方法中的任何一个或多个的任何介质。因此,术语“机器可读存储介质”应被认为包括但不限于固态存储器、光介质和磁介质。

已经根据对计算机存储器内的数据位的操作的算法和符号表示来呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域中的技术人员用来最有效地向本领域其他技术人员传达其工作实质的方式。算法可以是导致所需结果的一系列操作。这些操作是需要对物理量进行物理操纵的那些操作。这样的量可以采取能够被存储、组合、比较以及以其他方式操纵的电或磁信号的形式。这样的信号可以被称为比特、值、元素、符号、字符、项、数字等。

然而,应当牢记,所有这些和类似术语均应与适当的物理量相关联,并且仅仅是被应用于这些量的方便标签。除非从本公开中显而易见另外明确指出,否则应该意识到,在整个说明书中,某些术语指代计算机系统或类似电子计算设备的操作和过程,该计算机系统或类似电子计算设备操纵计算机系统的寄存器和存储器内被表示为物理量(电子量)的数据并将其转换成被类似地表示为计算机系统存储器或寄存器或其他此类信息存储设备内的物理量的其他数据。

本公开还涉及用于执行本文中的操作的装置。该装置可以针对预期目的而被专门构造,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这样的计算机程序可以被存储在计算机可读存储介质中,诸如但不限于任何类型的磁盘,包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或者适用于存储电子指令的任何类型的介质,其每一个都耦合到计算机系统总线。

本文所呈现的算法和显示与任何特定的计算机或其他设备不是固有地相关。各种其他系统可以与根据本文的教导的程序一起使用,或者可以证明构造更专门的装置来执行该方法是方便的。另外,没有参考任何特定的编程语言来描述本公开。应当意识到,可以使用多种编程语言来实现如本文所描述的本公开的教导。

本公开可以被提供为计算机程序产品或软件,其可以包括在其上存储有指令的机器可读介质,该指令可以被用来对计算机系统(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等。

在前述公开中,已经参考本公开的特定示例实现描述了本公开的实现。显而易见的是,在不脱离如所附权利要求书中阐述的本公开的更广泛的实现范围的情况下,可以对其进行各种修改。本公开以单数形式来指代一些元件,在附图中可以描绘一个以上的元件,并且相似的元件用相似的数字来标记。因此,本公开和附图应被认为是说明性的而不是限制性的。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器器件及制造半导体器件的方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类