毛刺功率分析和优化引擎的制作方法

文档序号:24397622发布日期:2021-03-26 22:39阅读:178来源:国知局
毛刺功率分析和优化引擎相关申请的交叉引用1.本申请要求于2020年6月3日提交的题为glitchpoweranalysisandoptimizationengine的美国临时专利申请第63/034,189号(代理人案卷号第avatp007+)的优先权,所述美国临时专利申请出于所有目的通过引用并入本文。
技术领域
:本申请涉及数字芯片设计中的毛刺功率分析和优化引擎。
背景技术
::2.finfet(鳍式场效应晶体管)技术的出现作为改进极大地降低了电路泄漏功率。因此,电路总功率消耗更多地由“动态功率”驱动,其中动态功率在本文中被称为当类似逻辑门的电路部件处于激活状态时(例如在上升或者下降翻转期间)消耗的功率。在电路设计和实现期间,将分析和优化的重点放在降低动态功率,将有利于提高电池寿命、减少热量和/或热噪声、提高功率效率、降低功率需求以及减小与所述电路相关联的产品的重量/尺寸。技术实现要素:本发明的一个方面提供了一种用于毛刺功率分析和优化的双毛刺功率分析引擎。所述用于毛刺功率分析和优化引擎的方法包括:访问半导体电路的仿真开关行为的报告;确定在所述半导体电路中与多个引脚对应的多个毛刺瓶颈比率,所述确定包括通过下述进行:在末端输出引脚上设置初始瓶颈比率;以及反向遍历所述半导体电路,以确定在所述末端输出引脚的扇入锥中的引脚的多个毛刺瓶颈比率;确定与所述多个引脚相关联的多个总毛刺功率,所述多个总毛刺功率中的总毛刺功率基于毛刺瓶颈比率和对应引脚的毛刺功率来确定;基于所述多个总毛刺功率来在所述多个引脚中识别一个或更多个关键瓶颈引脚;以及调整与所述一个或更多个关键瓶颈引脚相关联的一个或更多个逻辑门,以降低所述一个或更多个逻辑门的对应的一个或更多个总毛刺功率。所述多个总毛刺功率中的总毛刺功率可以至少部分地基于所述毛刺瓶颈比率乘以所述对应引脚的毛刺功率的函数。所述对应引脚的毛刺功率可以至少部分地基于针对所述对应引脚的生成的毛刺功率、或针对所述对应引脚的传播的毛刺功率;或者至少部分地基于针对所述对应引脚的生成的毛刺功率和针对所述对应引脚的传播的毛刺功率两者。所述开关行为报告可以包括值更改转储文件。所述方法还可以包括基于所述开关行为报告确定准确的毛刺翻转信息。所述准确的毛刺翻转信息可以至少部分地基于所述开关行为报告的注释引擎分析。所述方法还可以包括使用边界引脚翻转信息来确定统计毛刺翻转信息。所述统计毛刺翻转信息可以至少部分地基于统计引擎估计。可以考虑到边输入干扰来确定所述统计毛刺翻转信息。可以使用机器学习确定与所述边输入干扰相关联的参数。可以使用一阶近似说明所述边输入干扰。可以使用非翻转边输入的相关性说明所述边输入干扰。所述方法还可以包括:基于所述开关行为报告确定准确的毛刺翻转信息;使用边界引脚翻转信息来确定统计毛刺翻转信息;以及确定校准比率。所述方法还可以包括将校准比率应用于统计毛刺翻转值。所述方法还可以包括从所述开关行为报告中提取与多个逻辑门输出引脚对应的多个毛刺计数,并且基于所述多个毛刺计数确定多个准确的毛刺功率。所述方法还可以包括确定与所述多个引脚对应的多个毛刺功率。对所述一个或更多个逻辑门的调整可以包括下述中的一个或更多个:平衡在逻辑门输入时的信号翻转时间;更改逻辑门时延;使逻辑门时延更大;应用毛刺过滤;以及更改时钟树的时钟延迟。所述方法还可以包括基于所述调整以增量方式确定更新的统计毛刺翻转信息,将校准比率应用于所述更新的统计毛刺翻转信息。本发明的另一方面提供了一种用于毛刺功率分析和优化引擎的系统,包括:处理器,被配置成:访问半导体电路的仿真开关行为的报告;确定在所述半导体电路中与多个引脚对应的多个毛刺瓶颈比率,所述确定包括通过下述进行:在末端输出引脚上设置初始瓶颈比率;反向遍历所述半导体电路,以确定在所述末端输出引脚的扇入锥中的引脚的多个毛刺瓶颈比率;确定与所述多个引脚相关联的多个总毛刺功率,所述多个总毛刺功率中的总毛刺功率基于毛刺瓶颈比率和对应引脚的毛刺功率来确定;基于所述多个总毛刺功率来在所述多个引脚中识别一个或更多个关键瓶颈引脚;以及调整与所述一个或更多个关键瓶颈引脚相关联的一个或更多个逻辑门,以降低所述一个或更多个逻辑门的对应的一个或更多个总毛刺功率;以及存储器,所述存储器被耦接至所述处理器,并且被配置成向所述处理器提供指令。本发明的另一方面提供了一种非暂态计算机可读存储介质,包括计算机程序产品,所述计算机程序产品包括用于进行下述操作的计算机指令:访问半导体电路的仿真开关行为报告;确定在所述半导体电路中与多个引脚对应的多个毛刺瓶颈比率,所述确定包括通过下述进行:在末端输出引脚上设置初始瓶颈比率;反向遍历所述半导体电路,以确定在所述末端输出引脚的扇入锥中的引脚的多个毛刺瓶颈比率;确定与所述多个引脚相关联的多个总毛刺功率,所述多个总毛刺功率中的总毛刺功率基于毛刺瓶颈比率和对应引脚的毛刺功率来确定;基于所述多个总毛刺功率来在所述多个引脚中识别一个或更多个关键瓶颈引脚;以及调整与所述一个或更多个关键瓶颈引脚相关联的一个或更多个逻辑门,以降低所述一个或更多个逻辑门的对应的一个或更多个总毛刺功率。这两个引擎的一个引擎是注释引擎,该注释引擎从动态仿真产生的vcd文件中提取准确的毛刺翻转信息。从而计算出精确的动态功耗,包括毛刺功耗。这两个引擎中的另一个引擎是统计引擎,统计引擎的功能是用快速统计毛刺功率分析的方法针对每个逻辑门实例估计统计毛刺的数目,和统计毛刺功率。在电路优化过程中,统计引擎可以快速递增式更新统计毛刺功率,并相应地调整注释毛刺功率的数值。为了增加统计毛刺功率分析方法的精确度,边输入干扰对传输毛刺翻转的影响也被包含在本申请的统计引擎中。同时本申请还对电路中每一个引脚定义了毛刺瓶颈比率的概念。毛刺瓶颈比率是该引脚在它的扇出锥中所有引脚上引起的总传输毛刺比率。本申请通过一次反向遍历电路,就可以快速计算出电路中所有引脚毛刺瓶颈比率的算法。每个引脚所引起的传输毛刺功耗可近似由该引脚的毛刺瓶颈比率和毛刺功率来确定。每个引脚所引起的总毛刺功率可以用来在所述多个引脚中识别一个或更多个关键瓶颈引脚;调整与所述一个或更多个关键瓶颈引脚相关联的一个或更多个逻辑门,可以有效降低所述一个或更多个逻辑门的对应的一个或更多个总毛刺功率。从而达到有效降低电路毛刺功耗的目的。附图说明3.在下面的详细描述和附图中公开了本发明的各种实施方式。4.图1是示出根据一些实施方式的针对毛刺功率(glitchpower)分析和/或优化的经编程的计算机/服务器系统的功能图。5.图2是生成的毛刺示例的图示。6.图3是毛刺瓶颈示例的图示。7.图4是使用统计毛刺功率分析的毛刺功率瓶颈计算的图示。8.图5是示出用于动态功率分析的方法的实施方式的流程图。9.图6是用于确定生成的毛刺比率的均匀分布模型的图示。10.图7是均匀分布模型表面整合分析的图示。11.图8是示出用于毛刺功率优化的方法的实施方式的流程图。12.图9是用于降低生成的毛刺功率的优化技术的图示。13.图10a是示出用于毛刺功率分析的方法的实施方式的流程图。14.图10b是示出用于确定对应于引脚的毛刺瓶颈比率的方法的实施方式的流程图。具体实施方式15.本发明可以多种方式实现,包括如进程;装置;系统;物质的组成;包括在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如被配置成执行存储在和/或由耦和的存储器提供的指令的处理器。在本说明书中,这些实现方式或本发明可以采取的任何其他形式可以被称为技术。通常,在本发明的范围内,所公开的处理的步骤的顺序可以更改。除非另有说明,否则被描述为被配置成执行任务的诸如处理器或存储器的部件可以被实现为下述部件:临时被配置成在给定时间执行任务的通用部件;或者被制造成执行任务的特定部件。如本文所使用的,术语“处理器”是指被配置成处理诸如计算机程序指令的数据的一个或更多个装置、电路和/或处理核。16.下面提供了本发明的一个或更多个实施方式的详细描述以及示出本发明的原理的附图。结合这样的实施方式描述了本发明,但是本发明不限于任何实施方式。本发明的范围仅由权利要求书限制,并且本发明涵盖许多替选、修改和等效内容。为了提供对本发明的透彻理解,在下面的描述中阐述了许多具体细节。提供这些细节的目的是出于示例,在没有其中一些或全部具体细节的情况下,本发明仍然可以根据权利要求进行实践。为了清楚的目的,本文未详细描述在本
技术领域
:中已知的与本发明有关的技术材料,防止本发明的重点被不必要地模糊。17.为了实现低功率设计,诸如布局和布线(p&r)工具的设计和实现方式工具需要在其优化流程期间考虑动态功率。由于逻辑门和互连线具有非零时延,因此逻辑门在每个时钟周期内在逻辑门达到稳定逻辑状态之前可能具有多次翻转。由这些非功能性翻转触发的动态功率在本文中被称为“毛刺功率”。本文揭示了利用对毛刺功率进行分析以优化和实现电路设计的方法。18.电路毛刺功率随输入模式而变化。为了获得电路中的针对所有逻辑门的准确翻转信息,通常需要使用不同的输入模式的数百万个仿真周期,利用动态仿真进行分析,并且将结果保存至诸如vcd(值更改转储)格式的文件。vcd是由设计工具生成的用于转储文件的基于ascii、并且在ieee标准1364-1995和ieee标准1364-2001中被定义的格式。在替选实施方式中,用户可以不受限制地使用fsdb文件(快速信号数据库)、wlf文件(波形日志文件)、shm文件(激励文件)、vpd文件(二进制值转储)、saif(开关行为接口格式)文件或者任何记录信号/开关行为的报告。签核(signoff)功率分析工具可以读取vcd文件或者其他文件以进行毛刺功率分析。19.由于这样的仿真时间较长,这种类型的传统的毛刺功率分析是非常耗时的。此外,这种传统方法不具备增量更新的功能;也就是说,如果设计师更改了设计的任何部分,那他们必须重复整个过程以找到设计的新的毛刺功率值。由于电路在类似p&r的实现方式流程中被不断更改,传统毛刺功率分析的方法无法应用在这样的设计流程中。因此由这样的工具设计的传统电路的动态功率也不是最优化的。签核毛刺功率分析流程可以包括:·利用动态门级仿真,例如vcs或ncsim,生成零时延和非零时延的saif文件;·使用单个非零时延vcd文件也足以提取每实例/逻辑门的毛刺翻转比率;以及/或者·功率分析工具读取vcd文件、saif文件或者其他信号/开关报告以执行动态的、功能性的和/或毛刺功率分析。20.另一传统方法是用于快速毛刺功率分析的统计方法。尽管这一传统方法不需要耗时的动态仿真,但是这种统计方法没有考虑电路中的逻辑相关性,因此结果可能与实际毛刺功率值不同。在实现方式/p&r流程中直接使用这样的模型,尽管在速度上是可行的,但在最终设计中可能产生优化不佳或者甚至可能适得其反的随机和/或不可预测的毛刺功率。用统计方法估计毛刺功率可能不太准确,但这种方法速度快,而且揭示有关降低毛刺功率技术的物理信息,并且更易于应用在实现方式/p&r流程中。21.图1是示出根据一些实施方式的针对毛刺功率分析和/或优化的经编程的计算机/服务器系统的功能图。如所示出的,图1提供了根据一些实施方式的经编程以提供毛刺功率分析和/或优化的通用目的计算机系统的功能图。明显地是,其他的计算机系统架构和配置也可以用于进行毛刺功率分析和/或优化。22.包括如下所述的各种子系统的计算机系统100包括至少一个微处理器子系统,所述至少一个微处理器子系统也被称为处理器或中央处理单元(“cpu”)(102)。例如,处理器(102)可以由单芯片处理器或者由多个核和/或处理器实现。在一些实施方式中,处理器(102)是控制计算机系统100的操作的通用目的数字处理器。使用从存储器(110)检索到的指令,处理器(102)控制输入数据的接收和操纵以及控制在输出装置(例如显示和图形处理单元(gpu)(118))上的数据的输出和显示。23.处理器(102)与存储器(110)双向耦接,存储器(110)可以包括:第一主存储装置,通常为随机存取存储器(“ram”);以及第二主存储区域,通常为只读存储器(“rom”)。如本领域所公知的,主存储装置可以用作通用存储区域以及用作暂时存储器,并且主存储装置还可以用于存储输入数据和经处理的数据。除了用于在处理器(102)上操作的进程的其他数据和指令之外,主存储装置还可以以数据对象和文本对象的形式存储编程指令和数据。另外,如本领域所公知的,主存储装置通常包括基本操作指令、程序代码、数据和由处理器(102)用来执行其功能的对象(例如编程指令)。例如,存储器(110)可以包括以下描述的任何合适的计算机可读存储介质,这取决于数据访问需要是双向的或是单向的。例如,处理器(102)还可以直接且非常快速地检索经常需要的数据并且将经常需要的数据存储在缓存存储器(未示出)中。处理器(102)还可以包括协处理器(未示出)作为辅助处理部件,以辅助处理器和/或存储器(110)。24.可移动大容量存储装置(112)提供用于计算机系统100的附加的数据存储容量,并且可移动大容量存储装置(112)双向(读/写)或单向(只读)耦接至处理器(102)。例如,存储装置(112)还可以包括计算机可读介质,诸如闪存、便携式大容量存储装置、全息存储装置、磁性装置、磁光装置、光学装置和其他存储装置。例如,固定的大容量存储装置(120)还可以提供附加的数据存储容量。大容量存储装置(120)的一个示例是emmc或microsd装置。在一个实施方式中,大容量存储装置(120)是通过总线(114)连接的固态驱动器。大容量存储装置(112)、(120)通常存储通常不被处理器(102)活跃使用的附加的编程指令、数据等。应当理解,如有需要,可以将保留在大容量存储装置(112)、(120)中的信息以标准方式并入为作为虚拟存储器的主存储装置(110)(例如ram)的一部分。25.除了提供处理器(102)对存储子系统的访问之外,还可以使用总线(114)用于提供对其他子系统和装置的访问。如所示出的,这些装置可以包括显示监测器(118)、通信接口(116)、触摸(或物理)键盘(104)以及一个或更多个辅助输入/输出装置(106),所述一个或更多个辅助输入/输出装置(106)包括音频接口、声卡、麦克风、音频端口、音频记录装置、音频卡、扬声器、触摸(或指向)装置和/或根据需要的其他子系统。除了触摸屏和/或电容式触摸接口外,辅助装置(106)可以为鼠标、触控笔、轨迹球或平板电脑,并且辅助装置(106)对于与图形用户接口进行交互是有用的。26.通信接口(116)使得处理器(102)能够使用如所示出的网络连接耦接至另外的计算机、计算机网络或电信网络。例如,处理器(102)可以在执行方法/处理步骤的过程中通过通信接口(116)从另外的网络接收信息(例如,数据对象或程序指令)或者向另外的网络输出信息。通常表示为要在处理器上执行的一系列指令的信息可以从另外的网络接收以及向另外的网络输出。可以使用接口卡或类似装置以及由处理器(102)实现(例如,在处理器(102)上执行/进行)的适当软件用于将计算机系统100连接至外部网络以及根据标准协议来传送数据。例如,在本文中公开的各种过程实施方式可以在处理器(102)上执行,或者可以与共享处理的一部分的远程处理器一起在诸如因特网、内联网或局域网的网络上执行。在整个说明书中,“网络”是指计算机部件之间的任何互连,包括因特网、蓝牙、wifi、3g、4g、4glte、gsm、以太网、tcp/ip、内部网、局域网(“lan”)、家庭区域网络(“han”)、串行连接、并行连接、广域网(“wan”)、光纤通道、pci/pci-x、agp、vl总线、pci插槽、扩展插槽、无限带宽、access总线、无线lan、家庭电话线联网联盟(homepna)、光纤、有线通信、红外网络、卫星网络、微波网络、蜂窝网络、虚拟专用网(“vpn”)、通用串行总线(“usb”)、火线线路、串行ata、1-线路、uni/o,或者将同构、异构系统和/或系统组连接在一起的任何形式。附加的大容量存储装置(未示出)还可以通过通信接口(116)连接至处理器(102)。27.辅助i/o装置接口(未示出)可以与计算机系统100一起使用。辅助i/o装置接口可以包括使得处理器(102)能够发送以及更典型地从诸如麦克风、触敏显示器、换能器卡读取器、磁带读取器、语音或手写识别器、生物特征识别读取器、摄像装置、便携式大容量存储装置以及其他计算机的其他装置接收数据的通用接口和定制接口。28.另外,在本文中公开的各种实施方式还涉及具有计算机可读介质的计算机存储产品,该计算机可读介质的计算机存储产品包括用于执行各种计算机实现的操作的程序代码。计算机可读介质是可以存储其后可以由计算机系统读取的数据的任何数据存储装置。计算机可读介质的示例包括但不限于上面提及的所有介质:闪存介质,例如,nand闪存、emmc、sd、紧凑型闪存;磁性介质,例如,硬盘、软盘和磁带;光学介质,例如,cd-rom磁盘;磁光介质,例如,光盘;以及特殊配置的硬件装置,例如,应用专用集成电路(“asic”)、可编程逻辑器件(“pld”)、以及rom装置和ram装置。程序代码的示例包括例如由编译器生成的机器代码或者包含可以使用解释器执行的高级代码(例如脚本)的文件两者。29.图1中所示的计算机/服务器系统只是适合于与在本文中公开的各种实施方式一起使用的计算机系统的示例。适合于这种用途的其他计算机系统可以包括附加的或更少的子系统。另外,总线(114)示出了用于链接子系统的任何互连方案。也可以利用具有不同配置的子系统的其他计算机架构。30.图2是生成的毛刺示例的图示。逻辑门(202)在此作为说明性示例被示出为具有输入a和输入b、输出y以及具有从输入引脚a至输出引脚y的信元时延值为τ(203)的双输入与门。对于输入模式ω1(204),针对引脚a的输入被示出为电压v(a)(206),所述电压v(a)(206)作为具有上升沿的时间的函数;针对引脚b的输入被示出为电压v(b)(208),所述电压v(b)(208)作为具有下降沿的时间的函数;并且在两个沿之间的间隔时间为ζ(210)。31.在本文中被称为“生成的毛刺”是由功能性翻转生成的毛刺。与生成的毛刺相关的两个条件包括:首先,输入模式是在输出处可能引起毛刺的模式ωk;其次,在不同输入处的连续过渡之间的间隔时间ζ大于信元时延τ。32.如图2所示,如果ζ<τ(222),则在输出v(y)时不出现毛刺。相反,如果ζ≥τ(224),则在v(y)的输出时出现宽度为ζ的毛刺。因此,如图2所示,可以通过减少间隔时间ζ和/或通过减慢信元而增加信元时延τ来设法减少生成的毛刺。33.双毛刺功率分析引擎。本文揭示了双毛刺功率分析引擎。双毛刺功率分析引擎可以计算准确的毛刺功率值,并且能够在电路实现/p&r流程期间以增量方式更新设计毛刺功率。34.在一个实施方式中,双毛刺功率分析引擎包括同时运行并且将vcd文件作为输入的两个引擎。这两个引擎的一个引擎是注释引擎,该注释引擎从vcd文件中提取信息并且从产生vcd文件的动态仿真中注释准确的毛刺翻转信息。这两个引擎中的另一个引擎是统计引擎,该统计引擎使用边界引脚翻转信息。边界引脚的定义是寄存器的输入引脚和输出引脚,通常只占电路设计的少部分。35.注释引擎的功能是从vcd文件中提取每个逻辑门实例经注释的毛刺数目:tganno,然后计算电路准确的毛刺功率。统计引擎的功能是用快速统计毛刺功率分析的方法针对每个逻辑门实例估计统计毛刺的数目:tgstat,然后计算电路的毛刺功率。本文会介绍一个实施方案,可以进一步的提高了统计引擎的准确性。36.设计中,每个实例和/或逻辑门经注释的毛刺翻转计数与统计毛刺翻转计数之间的初始校准比率:在应用该校准比率之后,来自两个引擎的初始毛刺功率相似。37.在电路实现/p&r毛刺功率优化流程期间,使用统计毛刺分析引擎可以快速地更新针对每个逻辑门实例的毛刺翻转的数目。在更新之后,应用tg_adjratio来确定设计中的修订后的毛刺数目和毛刺功率。38.图3是毛刺瓶颈示例的图示。毛刺瓶颈比率的大小被用来识别毛刺瓶颈引脚。有效地优化毛刺功率,必须先识别毛刺瓶颈引脚。在识别毛刺瓶颈引脚之前,需要计算电路中每个引脚的瓶颈比率。39.例如,在门u4(304)的输出处的电路末端引脚(302)的瓶颈比率被设置为1。如下面更详细的描述,利用反向遍历电路来计算扇入锥中的其他引脚的瓶颈比率,如图3所示,所述其他引脚包括与门u2(306)和u1(308)相关联的引脚。在一个实施方式中,在分析引擎中,电路被抽象为有向图。在该图中,逻辑门输入/输出引脚被表示为顶点。在该图中,从同一逻辑门中的输入引脚到输出引脚的时序弧或者从一个逻辑门输出端到另一逻辑门输入端的连接被表示为沿。为了遍历该图,可以限定起始顶点和终止顶点。典型的起始顶点包括:主输入端口和/或时序逻辑门输出引脚(例如,触发器q引脚)。典型的终止顶点包括:主输出端口和/或时序逻辑门输入端(例如,触发器d引脚)。如本文所述,反向遍历是将该有向图从终止顶点遍历至输入顶点。40.比率bn(i)被限定为引脚i上的瓶颈比率。输入引脚a的瓶颈比率表示为:其中,f是信元的输出函数,是布尔差分的概率,以及bn(o)是输出引脚的瓶颈比率。布尔差分的值反映了函数f的变化和其输入变量中的一个a的变化相关的事实;如果发生了这种变化,则布尔差分等于1,并且如果没有发生这种变化,则布尔差分等于0。41.输出引脚的瓶颈比率是1加上其灌方引脚(sinkpins)上的总瓶颈比率。在图3的示例中,针对门u4(304)和u5(310)的输出引脚u4_o和u5_o的瓶颈比率分别为1,因为在此简单示例中它们是末端引脚(leafpins):bn(u4_o)=1bn(u5_o)=1并且针对门u1(308)、u2(306)和u3(312)的输出引脚u1_o、u2_o和u3_o的瓶颈比率分别为:bn(u1_o)=1+bn(u2_a)+bn(u3_a)bn(u2_o)=1+bn(u4_a)bn(u3_o)=1+bn(u5_a)42.如下文更详细描述的,在计算所有引脚的瓶颈比率之后,可以通过将针对给定引脚的瓶颈比率乘以其生成的毛刺功率或者传播的毛刺功率找到关键瓶颈引脚。传播至其扇出的总毛刺功率ptotal可以表示如下。ptotal(o)=bn(o)*pglitch(o)其中pglitch(o)是引脚o上的毛刺功率,以及bn(o)是引脚o上的瓶颈比率。可以通过对电路中所有引脚的ptotal进行排序,来找到最关键的瓶颈引脚。43.在以上实例中,针对每个电路门实例输出引脚,我们揭示了如何计算每个引脚的毛刺瓶颈比率。由此可以推导由此引脚在其扇出锥中所引起的总毛刺翻转。利用之前描述的双重毛刺功率分析,电路实现/p&r优化可以集中在高毛刺瓶颈比率引脚,这样可以更有效地降低电路设计中的毛刺功率。44.图4是使用统计毛刺功率分析来进行毛刺功率瓶颈计算的图示。如上所述,引脚的引脚毛刺功率瓶颈比率可以表示为在传播至其扇出锥中的所有引脚的总毛刺翻转比率。因此,近似的毛刺功率瓶颈是瓶颈比率乘以引脚毛刺功率。整个设计所有引脚的瓶颈比率可以使用一次向前的深度优先遍历来计算。45.例如,如果wi是在统计毛刺功率分析期间计算出的毛刺翻转传播比率,则参照图4针对门(408)的输入引脚i1(402)的瓶颈比率为bn(i1)=bn(o1)×w1其中o1是门(408)的输出引脚(404),以及w1是在统计毛刺功率分析期间计算出的针对弧i1至o1(406)的毛刺翻转传播比率。类似地:bn(i2)=bn(o2)×w2bn(i3)=bn(o3)×w3bn(i4)=bn(o4)×w4如前所述,针对输出引脚o3(422)的瓶颈比率等于1加针对输入引脚i1(402)和i2(424)的瓶颈比率:bn(o3)=1+bn(i1)+bn(i2)。通常地,wi简单模型可以表示为,这里项是输出节点y与其第i个变量xi相关的布尔函数的布尔差分。项表示布尔差分具有值1的概率。46.图5是示出针对动态功率分析的方法的实施方式的流程图。在一个实施方式中,由图1的系统执行图5的方法。47.在步骤(502)中,生成电路中每个逻辑门的毛刺模式。也就是说,特征化设计中每个逻辑门输出可能产生毛刺时对应的输入模式。例如,针对这种输入模式的类可以定义为:其中逻辑门毛刺输入模式特征化执行伪代码:48.例如在步骤(512)中,可以应用生成的逻辑门毛刺模式作为确定生成的毛刺功率的一部分。49.在步骤(504)中,我们获取了信号/开关行为报告。在一个实施方式中,从vcd文件导入信号/开关行为报告。在其他实施方式中,可以使用其他数据格式和访问。在步骤(506)中,从导入的vcd文件中提取针对每个实例/门的总翻转计数(tc)和毛刺沿(tganno)的数目:tc=tcfunc+tganno其中tcfunc是在每个逻辑门实例下的功能翻转计数。在功率优化流程期间,该数字可能是常量。50.在步骤(508)中,基于信号/开关行为报告的信息例如vcd文件可以用来计算开关行为和信号概率。在一个实施方式中,如果存在任一逻辑门实例在vcd中没有定义翻转信息,则工具可以通过在电路中传播开关行为和信号概率以填充丢失的信息。针对每个引脚,其开关行为定义是:单位时间内该引脚的总翻转计数。单位时间内逻辑为1的概率为其信号概率。51.用函数表示,信号概率p(x)是节点x的稳定状态值为逻辑高占时钟周期的平均分数:52.如果逻辑信号x(t)在长度为t的时间间隔内发生nx(t)翻转,则x(t)的开关行为d(x)为:53.就开关行为传播而言,如果对布尔模块的所有输入xi在空间上是独立的,则其输出y的开关行为由下式给出:54.在步骤(510)中,分析动态功率。就信号概率以及开关行为注释和传播而言,动态功率是开关功率与内部功率的和。55.为了使开关功率和内部功率与签核结果相拟合,可以从步骤(504)的vcd文件中注释信号概率和开关行为。例如可以通过使用命令来提取翻转行为。如上所述,对于在注释之后仍然信号概率和开关行为仍然缺失的网络,ag(计算引擎)可以使用式(1)中的函数来进行信号概率和开关行为传播。56.在替选实施方式中,我们可以使用考虑到输入引脚同时开关的更复杂的传播模型:其中a(y)是输出引脚y上的开关行为以及和是考虑到同时开关输入xi和xj两者的二阶布尔差分。用于和的计算的布尔表达式为:的计算的布尔表达式为:p(x)表示二阶布尔差分具有值1的概率。57.由于动态功率基于开关功率和内部功率的和,因此基于以下确定一个门i的开关功率其中cload是门输出负载电容;v是门供应电压;以及swa是门输出开关行为。58.基于以下公式可以计算一个门i的内部功率其中pwtable(j)是与从输入j到门i的输出的时序弧相关联的内部功率表;以及swaij是基于式(1)分配给每个输入的门输出开关行为的一部分。在同一输入具有多个条件弧的情况下,在该内部功率估计期间也可以将信号概率分配给同一输入的不同条件弧上。59.在步骤(512)中,用统计分析引擎来计算的生成的毛刺功率。在一个实施方式中,从如触发器输出、主输入(端口)、和/或门控时钟输出组成的的设计边界开始,统计引擎计算在所有逻辑门实例输出时的生成的毛刺翻转。在逻辑门实例输出引脚的生成的毛刺是由在其输入引脚的功能翻转引起的。输出生成的毛刺值取决于:·在毛刺模式中输入引脚:前沿引脚和后沿引脚处的tcfunc;·从前沿输入引脚至输出引脚的信元时延;·在毛刺模式中输入引脚:前沿引脚和后沿引脚处的到达时间,和/或·逻辑门的布尔函数。60.在本文中模式概率被称为输入毛刺生成模式ωk发生的概率。p′patt(ωk)是两个输入引脚一起翻转的概率,依据传统,考虑两个输入引脚翻转已经足够准确了。p(ωi,bias)是非翻转输入被偏置使得毛刺可以通过逻辑门的概率:ppatt(ωk)=p′patt(ωk)·p(ωi,bias)61.假设毛刺输入模式包括两个输入:a和b,则如上所述,其中d(x)是x的开关行为。62.p(ωi,bias)的计算可以通过在输出引脚y与毛刺模式中的两个输入引脚a、b之间应用布尔差分运算解决63.以3-输入与非(nand)门为例,其中y=a·b·c,c,c,64.以3-输入或非(nor)门为例,其中y=a+b+c,65.以3-输入异或(xor)门为例,其中输入异或(xor)门为例,其中令p(ωi,bias)=166.返回第二条件,在不同输入引脚的翻转之间的间隔时间ζ大于信元弧时延。67.如上所述,在不同输入引脚的翻转之间的间隔时间ζ大于信元时延τ的条件下,可能由输入功能性翻转造成的输出引脚生成的毛刺。在本文中,生成概率pgen(ωk)被称为输入毛刺生成模式ωk满足该条件的概率,其中α和β是ωk中各个信号/输入的到达时间,f是表示翻转的数目作为到达时间的函数的分布函数,以及ak是满足下述条件的区域,所述条件为在不同输入处的连续翻转之间的间隔时间ζ大于信元时延τ。68.然后,根据分析,生成的毛刺比率rgen(i)被导出为其中fclk是时钟频率。69.图6是针对确定生成的毛刺比率的均匀分布模型的图示。假设均匀分布函数,在所述均匀分布函数中可以随着到达窗均匀地发生翻转其中αmax是翻转最迟到达时间,以及αmin是最早到达时间(不考虑ocv或芯片上差异),并且u是阶跃函数/均匀分布函数。如图6所示,区域“a1”表示当引脚a为前沿时的毛刺模式,以及区域“a2”表示当引脚b为前沿时的毛刺模式。70.图7是均匀分布模型表面积分分析的图示。如图7所示,在各种情况下,对于区域a1:·如果βmax≤αmin+τa,则pgen=0;·如果βmin≤αmin+τa,则·如果βmax≤αmax+τa,则以及·如果βmin≤αmax+τa,则如图7所示,在各种情况下,对于区域a2:如果βmax≤αmin+τa,则pgen=0;如果βmax≤αmax+τa,则如果βmin≤αmin+τa,则以及如果βmin≤αmax+τa,则71.因此,为了减小生成的毛刺比率rgen(i),以上分析揭示了两种主要技术:减小门的尺寸以增加τa,以及调节输入到达时间以减小生成概率pgen。总之,使用图6和图7中描述的均匀分布模型的分析和假设,可以如上所述统计学算法计算生成的毛刺功率。72.返回图5,在步骤(514)中,我们需要用统计学算法计算传播毛刺功率的值。在逻辑门输出处的传播毛刺是由其输入引脚处的毛刺翻转引起的。一种简化模型假设门的输入彼此没有关联;和/或在输入过渡之间存在足够的时间间隔以计算更简单的输出传播毛刺比率如下:其中xi是门的第i个输入,y是输出以及n是输入的总数目。73.一个更复杂的模型认为r(xi)是在输入xi处的总毛刺翻转比率,r(xi)=rgen(xi)+rprop(xi),但是这公式并没有考虑到其它输入翻转对输出处的传播毛刺值的影响,这可能导致输出端传播毛刺被高估了。如本文所述,“边输入”是给定门的相关输入,使得门的输入是确定性和/或统计上相关的。如果考虑了当多个边输入同时开关时的边输入翻转影响,可以开发出更精确的算法来计算毛刺传播比率。上面的公式开发出更精确的算法来计算毛刺传播比率。上面的公式没有考虑边输入翻转影响、往往会高估传播毛刺。74.在本文中我们通过如下公式,计算输出y上的传播毛刺比率rprop,来防止传播毛刺被高估:其中是关于第i个输入xi的输出y的布尔差分,以及是布尔差分的信号概率。r(xi)是门的第i个输入xi的毛刺比率,r(xi)=rgen(xi)+rprop(xi)。75.更多的边输入同时开关,可能导致传播毛刺比率的降低。在本文中该效应被描述为“边输入干扰(sid)”。如下所示,beta(y,xj)使用边输入相关关系来近似sid,并且对于确定布尔函数的所有边输入节点上的信号行为是有用的。76.对于使用多变量布尔差值概率的精确方法的计算资源需求可以随着独立边输入的数目成指数增长,因此我们使用beta替代多级相关的高成本的计算,在不牺牲明显的准确度的情况下提高计算速度/减少计算量:77.在一个实施方式中,首先,将加权系数β1,、β2和β3设置为1.0。使用beta(y,x1)函数计算单一sid的值,并且所有下标j为从1至n,包括(j=i=1)变量。sid的值应用于布尔函数的所有弧(从输入xi到输出y的逻辑弧)作为简化近似来计算rprop(y)。如果不需要进一步的加权系数微调,则处理在此处停止。可以通过将计算出的rprop(y)与黄金数进行比较来确定停止标准,所述黄金数从例如vcd输入导出或者使用来自许多数字门的多变量布尔差概率的精确方法计算出。78.如果结果不满足标准(例如,准确度阈值),那么可以应用自调整的机器学习机制来导出加权系数{β1,β3,β3}。在一个实施方式中,应用梯度下降、k-均值聚类或简化的卷积神经网络(cnn)方法找到具有改进的rprop准确度的针对不同逻辑门组的最佳拟合加权系数。结果中的一些被用作测试集。在运行中执行派生和测试的重复的训练,并且一旦可以满足停止标准就停止。找到的加权系数被应用于设计的其余部分。它们可以存储在数据库中以被重复使用,并且作为起点来训练其他设计。79.因为不存在对边输入的干扰,因此单个输入门(反相器、缓冲器)的beta(y,xj)的值为1。两输入门(2-输入nor、nand、xor)的beta(y,xj)可以简化至(1-r(xj)),其中xj是边输入。三输入门(3-输入nor、nand、xor)的beta(y,xj)可以简化为至(1–0.5*(r(x2)+r(x3))),其中x2,x3是边输入而x1是基于计算的输入。80.上面的beta(y,xi)的式中的第一项表示sid的第一级近似。当边输入引脚的翻转比率接近1时,这项数值接近0,这表明没有毛刺可以传播通过逻辑门。当没有边输入翻转时(r(xj)=0),sid变为一。81.上面的beta(y,xi)的式中的第二项表示非翻转边输入1-(1-r(xj))与其邻阈(1-r(xk))的相关性,一次考虑一个。总和被归一化。82.上面的beta(y,xi)的式中的第三项表示非翻转边输入1-(1-r(xj))与其邻阈(1-r(xk))的相关性,一次全部考虑。总和被归一化。83.上面的beta(y,xi)的式中的第四项补偿非翻转边输入的乘法的双重计数。总和被归一化。这可以防止rprop在全局级别上过于悲观,但是可能有在具有许多输入的门上使结果偏向于乐观的倾向。84.在步骤(516)中,确定毛刺瓶颈比率。在一个实施方式中,使用在本文中描述的与图3相关的技术来确定毛刺瓶颈比率。85.在一个实施方式中,使用增量的tc计算和tg计算。如果tcanno是总翻转计数以及tganno是ag中的总毛刺沿,则tcanno和tganno是在导入如vcd文件的文件之后计算的。基于来自统计的引擎tgstat的变化,我们可以以增量式时序更新的方法对tcanno和tganno进行更新:其中是新的统计毛刺计数,以及是增量优化变化之前的统计的毛刺计数:86.图8是示出用于毛刺功率优化的方法的实施方式的流程图。在一个实施方式中,由图1的系统执行图8的方法。优化是图5的动态功率分析的一个应用。通过基于mcmm(多角多模)的瓶颈毛刺功率分析调用,从确定瓶颈逻辑门开始,优化降低毛刺功率消耗。对于每个选定的逻辑门,采用包括逻辑门缩放和缓冲门移除的优化技术以降低毛刺功率,同时检测时序和其他设计qor(结果质量)指标。87.在步骤(802)中,时序分析引擎执行mcmm时序更新并且计算电路设计的毛刺功率。在步骤(804)中,优化引擎通过时序引擎的毛刺功率分析功能查询生成的毛刺功率瓶颈驱动引脚。在步骤(806)中,优化引擎选择功率消耗的上限大于预定阈值的逻辑门。优化引擎选择可优化的候选逻辑门放入门列表中,并且根据时序关键性对逻辑门列表进行排序。88.在步骤(808)期间,针对每个选定的候选门,优化引擎使用危险过滤和到平衡达时间的技术来降低通过逻辑门的生成的毛刺功率。在危险过滤中,调整门传播时延以滤除通过门的毛刺。利用逻辑上等效但大小不同的单元替换门,使得门的时延更改。优化引擎使用门的放大和缩小技术来平衡通过逻辑门的到达时间。89.在步骤(810)中,在针对降低生成的毛刺功率的优化之后,时序引擎执行基于瓶颈的传播毛刺功率分析。在步骤(812)中,优化引擎从具有传播毛刺功率的基于瓶颈的逻辑门中选择缓冲门,并且以时序关键性对其进行排序。将这些候选门放入门列表中以降低传播毛刺功率。在步骤(814)中,通过应用缓冲器去除和/或反相器对合并/去除来部分地降低传播毛刺功率。90.在步骤(816)中,在毛刺功率降低满足目标或者进程达到最大/阈值循环数目的情况下,控制结束;在毛刺功率降低不满足目标或者进程未达到最大/阈值循环数目的情况下,将控制转移返回至步骤(804)以进行另一循环。91.图9是降低生成的毛刺功率的优化技术的图示。在图9的示例中,候选门是u3(902)。为了降低生成的毛刺功率,使用危险滤波技术使门u3(902)的时延增加至这样的程度:使得u3的生成的毛刺被消除,因此达到消除门u3(902)上的生成的毛刺功率的目的。92.使用相同的技术降低生成的毛刺功率,并且使用到达时序平衡技术解决不同的路径时延;利用较慢的路径时延增大门u1(904)或者利用较快的路径时延减小门u2(906)可以减少毛刺翻转,使得生成的毛刺功率降低。93.如果门u3(902)是缓冲器类型,那么如果不会造成qor的恶化,则可以将门u3(902)移除以消除其传播毛刺功率。如果门u3(902)是逆变器类型并且门u4(908)也是逆变器类型,那么可以将门u3(902)和门u4(908)合并或者去除以降低生成的毛刺功率。94.图10a是示出用于毛刺功率分析的方法的实施方式的流程图。在一个实施方式中,由图1的系统执行图10a的方法。95.在步骤(1002)中,访问半导体电路的仿真开关行为报告。例如,开关行为报告可以是和/或包括vcd文件。在一个实施方式中,至少部分地基于开关行为报告来确定准确的毛刺翻转信息。准确的毛刺翻转信息可以至少部分地基于开关行为报告的注释引擎分析。96.在一个实施方式中,使用边界引脚翻转信息确定统计毛刺翻转信息。如本文所述的边界引脚是寄存器的输入引脚和输出引脚。在一个实施方式中,统计毛刺翻转信息至少部分地基于诸如上述tgstat的统计引擎估计。在一个实施方式中,使用机器学习确定与边输入干扰相关联的参数。在一个实施方式中,例如如上所述,使用一阶近似描述边输入干扰。在一个实施方式中,例如如上所述,使用非翻转边输入的相关性描述边输入干扰。在一个实施方式中,基于开关行为报告来确定准确的毛刺翻转信息,使用边界引脚翻转信息来确定统计毛刺翻转信息,并且确定校准比率。在一个实施方式中,将校准比率应用于统计毛刺翻转值,例如如上所述,97.在一个实施方式中,从开关行为报告中提取与多个门输出引脚对应的多个毛刺计数,并且基于多个毛刺计数确定多个准确的毛刺功率。在一个实施方式中,确定与多个引脚对应的多个毛刺功率。98.在一个实施方式中,基于该调整以增量方式确定更新的统计毛刺翻转信息,将校准比率应用于更新的统计毛刺翻转信息。99.在步骤(1004)中,确定在半导体电路中与多个引脚对应的多个毛刺瓶颈比率,如下面在图10b中更详细地描述。100.在步骤(1006)中,确定与多个引脚相关联的多个总毛刺功率,其中,基于毛刺瓶颈比率和对应引脚的毛刺功率来确定多个总毛刺功率中的每个总毛刺功率。在一个实施方式中,总毛刺功率至少部分地基于毛刺瓶颈比率乘以对应引脚的毛刺功率的函数。在一个实施方式中,对应引脚的毛刺功率至少部分地基于以下中的一个:针对对应引脚的生成的毛刺功率以及针对对应引脚的传播的毛刺功率。101.在步骤(1008)中,基于多个总毛刺功率来识别多个引脚中的一个或者更多个关键瓶颈引脚。在可选步骤(1010)中,调整与一个或更多个关键瓶颈引脚相关联的一个或更多个门,以降低一个或更多个门的对应的一个或更多个总毛刺功率。在一个实施方式中,对一个或更多个门的调整包括以下中的一个或更多个:平衡门输入时的信号翻转时间、更改门时延、使门时延更大、应用毛刺过滤和/或更改时钟树的时钟延迟。使用通过鸿芯微纳(gigadesignautomation)的诸如agudatm的优化引擎执行步骤(1008)和/或步骤(1010)。102.图10b是示出用于确定与引脚对应的毛刺瓶颈比率的方法的实施方式的流程图。在一个实施方式中,图10b的处理是图10a中的步骤(1004)的部分并且由图1的系统执行。103.在步骤(1050)中,在末端输出引脚上设置初始瓶颈比率,例如图3中的门u4(304)的输出处的引脚(302)。在步骤(1052)中,反向遍历半导体电路,以确定在末端输出引脚的扇入锥中的引脚的多个毛刺瓶颈比率,例如在图3中,引脚(302)的扇入锥包括与门u2(306)和u1(308)相关联的引脚。104.已经公开了双毛刺功率分析引擎。双毛刺功率分析引擎例如在实现过程/p&r流程期间计算准确的毛刺功率值并且以增量方式更新设计毛刺功率。两个引擎中的一个是注释引擎,该注释引擎从例如vcd文件中提取信息并且根据产生该文件的动态仿真注释准确的毛刺翻转信息。两个引擎中的另一个是统计引擎,该统计引擎使用边界引脚翻转信息。这种实用的双毛刺功率分析引擎的一个好处是改进了对于电路设计和实现方式期间降低动态功率的分析和优化。对于目标设计,这可以延长电池寿命、减少热量和/或热噪声、提高电源效率、降低功率需求并且减少与目标设计相关联的产品的重量/尺寸。105.尽管出于理解的清楚的目的已经稍微详细地描述了前述实施方式,但是本发明不限于所提供的细节。存在实现本发明的许多替选方式。所公开的实施方式是说明性的而非限制性的。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1