使用量化预测函数的机器学习电路优化的制作方法

文档序号:22845111发布日期:2020-11-06 16:49阅读:154来源:国知局
使用量化预测函数的机器学习电路优化的制作方法

相关申请

本申请要求于2019年1月15日提交的题为“machine-learningcircuitoptimizationusingquantizedpredictionfunctions(使用量化预测函数的机器学习电路优化)”的美国专利申请第16/248,029号的优先权,该申请要求于2018年1月19日提交的题为“circuitpoweroptimizationusingactivemachinelearningandquantizedfunctions(使用主动机器学习和量化函数的电路功率优化)”的美国临时专利申请第62/619,143号的优先权,并且该申请通过引用并入本文。

本发明涉及用于在基于集成电路(ic)设计制造ic器件之前开发ic设计的电子设计自动化(eda)软件工具。更具体地,本发明涉及在开发期间通过eda软件工具使用优化工具来优化ic设计的性能特性(例如,最大操作速度、最低功耗)。

发明的背景

由于新ic器件的复杂性不断增加,现在认为电子设计自动化(eda)软件工具在使用一个或多个ic“芯片”将每个新的电子系统构想转换成相应的集成电路(ic)器件的过程中是必要的。即,ic设计者利用eda工具来开发他们认为能够实现新的电子系统构想的初始ic设计(即,ic器件的软件描述),分析和修改该初始ic设计以便验证最终ic设计执行针对该电子系统构想的操作目标集,并且随后生成并检查定义能够实现最终ic设计的物理ic芯片的一系列ic布局(也称为掩模设计或掩模布局)。因为现代ic器件(诸如片上系统(soc)器件之类)可以包含数十亿个单独的电路组件,所以在不使用eda工具的情况下,不存在开发和生产现代ic器件的实用方式。

近期移动电子设备(例如,智能电话、平板和智能手表)的流行度的增加已经使得eda工具的功率优化功能极其重要。移动电子设备依赖于电池电力的有限供应,因此选择由移动电子设备使用的(多个)ic芯片来为消费者/用户提供相当长的电池寿命。然而,当今的移动电子设备被设计成执行越来越多的计算密集的软件程序,如果使用与在较早期产品中使用的相同的ic制造技术来实现,则这些软件将显著地降低电池寿命(即,使用较老的设备技术来执行新的软件程序将以比执行较老的软件所需要的速率显著较高的速率消耗电池电力,导致所需的电池再充电之间的不期望的短周期)。因为给定移动设备的商业成功可能受到电池寿命的显著影响,所以移动设备生产者很有动力使用更高效的ic制造技术和功率优化技术来抵消较新的计算密集的程序的较高功率需求。

对于低功耗ic芯片的增加的需求已经创建了对于能够在合理的时间量内高效且可靠地优化新的ic设计的功耗的eda软件工具的需求。ic芯片开发过程的功率优化部分通常在ic设计者已经利用所选择的eda软件工具的开发工具生成能够执行所期望的功能(即,如果使用所选择的ic制造工艺原样转换成物理ic芯片)并满足所建立的约束(例如,最大芯片尺寸和/或最小操作速度)的初始ic设计之后执行。随后利用所选择的eda软件工具的功率优化工具来优化初始ic设计的功耗,并且随后基于最终“经优化的”ic设计制造ic芯片。在各种可购得的eda软件工具中实现的常规优化工具利用类似的方法,其中当使用较低功耗的电路部分替换较高功耗的电路部分不在最终(经优化的)ic设计中导致约束违反时,使用较低功耗的电路部分替换较高功耗的电路部分。例如,图11描绘了包括十二个高功率单元的简化的初始ic设计50-i,该十二个高功率单元被布置为如所示地形成三个信号路径:路径(path)1、路径2和路径3,并且图12描绘了存储可以在不改变由初始ic设计50-i执行的功能的情况下替代地实现在初始ic设计50-i的栅极位置中的替代单元h、m和l的单元库55。注意,单元h的特征在于相对的高功耗值(任意地由整数“3”指定)和低信号延迟(高速)值(即,1),而单元m具有中等范围功耗值(2)和中等范围信号延迟值(2),并且单元l具有低功耗值(1)和高信号延迟值(3)。再次参考图11,基于任意选择的定时约束和较高功耗单元h在初始ic设计50-i中的使用,路径1具有的定时余量为4,路径2具有的定时余量为6,并且路径3具有的定时余量为5。即,因为初始ic设计50-i完全使用较高速单元h形成,所以它超过了建立的定时约束,但是以较高功耗(即,将十二个h单元乘以其高功耗值(3)得到的针对ic设计50-i的总功率(totalpower)消耗值等于36)为代价。在施加到初始ic设计50-i的示例性优化过程期间,常规优化工具识别每个可以使用较低功耗电路部分(例如,单元m或l)实现的较高功耗单元电路部分(例如,单元h),并且在不违反所建立的定时约束的情况下选择最小化(优化)功耗的较低功耗电路部分。图13描绘了包括优化解决方案的示例性最终(经优化的)ic设计50-f,其中路径1中的四个单元被替换为单元m,路径2中的两个单元被替换为单元l,并且路径3中的四个单元被替换为三个单元m和一个单元l,由此在不违反施加到三个信号路径的时间约束的情况下,将最终ic设计50-f的功耗降低到23。本领域技术人员将意识到,为简洁起见,参考图11、12和13描绘的示例被极大地简化,但是所描绘的优化过程准确地表示了使用通过可购得的eda软件工具实现的常规优化工具/方法来执行的通用优化过程。

在上述上下文中,移动设备生产者通常基于两个主要标准来选择eda软件工具:与其他可用的eda软件工具相比,给定eda软件工具降低移动设备ic设计中的功耗的能力,以及执行优化过程所需的时间量。虽然由可购得的eda软件工具使用的所有常规优化方法在优化ic设计方面可以说是基本上同样高效的,但是在每个情况下,由于还需要执行所需的运行时密集的功率和定时分析(例如,基于路径的分析(pathbasedanalysis)(pba)),执行功率降低/优化过程所需的时间量是很大的。例如,具有最新节点技术的两百万实例中央处理单元(cpu)芯片花费10小时计算时间来实现1%动态功率降低,其中“实例”是指在cpu芯片的网表描述中引用的每个电路部分(例如,像晶体管、电阻器、或电容器一样简单的任何东西、或像ic芯片一样复杂的任何东西)。

除了降低优化过程时间之外,还存在对于允许电路设计者保护专有功率节省方案和/或优化解决方案的eda软件工具的需要。即,如上所述的,移动电子设备的商业成功或失败可以由电池寿命中的小差异来确定,因此移动电子设备生产者通常花费大量的时间和资源开发专有功率节省方案和相关联的定制优化解决方案,这些方案赋予他们的移动电子设备优于其竞争对手的那些移动电子设备的竞争优势。因此,为了回收相关联的开发成本和防止竞争对手从他们的开发努力中不公平地获益两者,这些移动电子设备生产者在(例如,通过商业秘密的方式)维持他们的专有功率节省方案方面具有很强的兴趣。

需要的是能够在比使用常规优化方法所需的时间显著更少的时间内高效地优化ic设计的eda软件工具。还需要的是允许设备生产者安全地开发并高效地利用专有优化技术的eda软件工具。



技术实现要素:

本发明涉及利用由主动机器学习生成的预测函数来在与使用常规优化方法所需的时间相比显著更少的时间内优化ic设计的所选择的操作特性(例如,更低功耗)的增强的eda软件工具和相关联的优化方法,。根据本发明的一个方面,预测函数由机器学习优化工具使用在正在进行的优化过程会话期间收集并存储在库中的量化训练数据条目来生成。具体而言,每个量化训练数据条目包括输入矢量和相关联的输出矢量,其中该输入矢量配置为可操作地表征在相关联的优化过程期间在未经修改的(非经优化的)ic设计版本中被识别为可改进的的非最优的(初始)电路部分,并且该输出矢量配置为可操作地表征被选择用于替换经优化的电路设计中的非最优的(初始)电路部分的相关联的最终(替换)电路部分。机器学习优化工具利用这些训练数据条目来生成将各种输入矢量值与它们对应的输出矢量值相关联的预测函数,并且接着在随后执行的优化过程期间利用该预测函数为针对目标ic设计的每个新非最优的/初始电路部分生成的每个新输入矢量提供预测的(估计的)输出矢量值。随后由机器学习优化工具利用预测的输出矢量通过从一组替代方案中识别具有最接近地匹配预测的输出矢量的相应的输出矢量值(或其他描述符)的最佳拟合替换电路部分的方式来生成优化解决方案。因为使用预测函数生成优化解决方案与使用常规优化工具生成相当的优化解决方案相比需要显著更少的处理时间,所以与仅使用常规优化工具执行ic设计的优化所需的时间相比,本发明的增强的eda软件工具和优化方法在显著(即,80%或更高)更少的时间内执行相同ic设计的优化。

在当前优选实施例中,机器学习优化工具配置成通过利用训练数据条目的方式来优化(最小化)目标ic设计的功耗,所述训练数据条目具有可操作地表征相应的先前生成的优化解决方案的初始(非最优的)电路部分的功耗的输入矢量值、以及可操作地表征相关联的先前生成的优化解决方案的替换(优化)电路部分的最终功耗的输出矢量值。为了维持符合其他建立的约束(例如,最小操作速度和/或芯片尺寸/区域),输入矢量还包括表征初始电路部分的定时相关的操作特性的定时相关的值(例如,转换和延迟),并且输出矢量包括可操作地表征先前生成的优化解决方案的最终定时特征的定时变化值(例如,转换和/或延迟的变化)。通过利用多个训练数据条目中提供的功率和定时分量矢量值来生成相应的预测函数,机器学习优化工具能够在比使用常规方法执行功率优化所需的时间显著更少的时间内生成针对新的ic设计的功率优化解决方案。

在当前优选的实施例中,通过以下方式来简化预测函数的生成:使用包括将大量的训练数据条目组织和合并成较少数量的训练数据组的训练数据合并/分组过程,随后通过对在每个训练数据组中的训练数据条目的输入和输出矢量值求平均来计算训练数据组值,并且随后仅使用该训练数据组值来生成预测函数。如上所述,针对每个优化解决方案的训练数据条目被存储在训练数据库中。即使训练数据库被限制为唯一的训练数据条目(即,通过省略重复的条目),在训练数据库中的训练数据条目的数量也可能随时间变得难以处理地大(即,数千)。因为机器学习优化工具必须使用训练数据来计算每个预测函数,当需要预测函数计算公式处理难以处理地大量的训练数据条目时,预测函数生成可能花费不切实际长的时间。因此,当训练数据库存储大量训练数据条目时,通过用相对少量的训练数据组值提供预测函数计算公式的方式,训练数据合并/分组过程极大地降低了预测函数生成所需的时间。

在优选的实施例中,通过在相邻训练数据组值之间生成毗连的分段多维平面公式来进一步简化预测函数的生成,其中所述毗连的分段多维平面公式共同定义(形成)预测函数。每个分段多维平面公式定义相关联的线性/平面方程,该线性/平面方程针对落在由该预测函数的部分定义的相关联的有效的输入矢量值范围内的输入矢量值生成预测的输出矢量。由足够大量的分段多维平面公式定义的预测函数的使用提供了执行优化过程所需的处理时间量上的显著降低,而不导致准确性上的显著损失(即,与由更复杂的(例如,曲线拟合)公式定义的预测函数相比)。在简化的示例性实施例中,通过对由具有类似输入和输出矢量值表征的相关联的训练数据条目组进行数字化和合并(求平均)并且随后生成毗连的分段一维线性公式来生成2d分段线性预测函数,该毗连的分段一维线性公式可以表示为具有通过两个端点之间的坐标改变确定的相应线性方程(斜率值)的线段,其中所述端点由相应的经合并/经求平均的训练数据位置定义。在另一示例性实施例中,每个训练数据条目包括具有两个分量值的输入矢量,并且使用该训练数据生成的预测函数由配置成针对与每个新输入矢量相关联的每个两个输入矢量值组生成预测的输出矢量的分段三维平面公式来形成。在该情况下,通过以下方式来生成预测函数:对具有类似输入矢量值的量化训练数据条目组进行合并和求平均,并且随后利用经合并/经求平均的多维组位置生成相应的分段平面公式/区段,该分段平面公式/区段通过将新输入矢量的两个分量值投影到多维平面预测函数的相关部分上的方式生成预测的输出矢量。通过对多个训练数据条目进行合并/求平均以形成相对少量的训练数据位置,并且通过利用这些训练数据位置生成包括(即,与如果使用了每个训练数据条目所将需要的区段/部分的数量相比)相对少量的毗连区段/部分的相关联的分段多维平面预测函数,机器学习优化工具有助于使用比实现更复杂的预测函数所将需要的计算机处理时间显著更少的计算机处理时间来进行足够准确的优化解决方案的生成。

在一些实施例中,将与由机器学习优化工具生成的优化解决方案相关联的输入矢量值和输出矢量值用于随时间逐渐改进预测函数的准确性。如上文所解释的,当前的预测函数是在每个优化过程事件的开始时使用当前存储在训练数据库中的训练数据条目生成的,随后利用当前的预测函数生成针对新提交的输入矢量的预测的输出矢量,并且随后利用预测的输出矢量确定由相关联的输出矢量值表征的替换电路部分。在生成相应的优化解决方案时,随后将由该新提交的输入矢量和与所选择的替换电路部分相关联的该输出矢量组成的新训练数据条目添加到训练数据库。在随后的优化过程期间,使用存储在更新的数据库中的所有数据(即,所有先前存储的训练数据条目和新训练数据条目)以经更新的形式生成预测函数。因此,本发明以通过从每个生成的优化解决方案学习的方式来随时间持续演化和改进的方式促进ic设计的优化。

在一个实施例中,增强的eda工具配置成实现在用户的安全计算系统(例如,由ic器件开发者控制的专用网络)中,由此,可由用户控制预测函数的开发以根据用户的优选和/或专有(例如,商业秘密)优化策略来优化新的ic设计。在该情况下,增强的eda工具包括常规优化工具和机器学习优化工具两者。每当机器学习优化工具确定预测函数不能够提供足够准确的优化解决方案时(例如,当最初利用增强的eda工具并且训练数据库是相对空的时,或每当新输入矢量落在当前存在的预测函数的有效范围的足够外侧时),利用常规优化工具生成优化解决方案,并且还可以使用已知的技术来利用常规优化工具实现用户指定的优选/专有优化解决方案。由常规优化工具生成的优选的/专有的优化解决方案以如上所述的方式被转换并存储为相应的训练数据条目。因此,随后由机器学习优化工具生成的预测函数由优选的/专有的优化解决方案唯一地表征(即,高效地“教导”),使得针对随后提交的输入矢量生成的预测的输出矢量偏向于与用户的优选/专有优化策略一致的替换电路部分。除了上面提到的源于显著更短的优化过程时间的商业优势之外,因为每个唯一地表征的预测函数的开发完全在用户的安全计算机系统/网络内执行,所以用户还能够防止竞争对手不正当地从由用户在开发用户的专有优化策略上花费的时间和资源投资中收益。

附图说明

参考以下描述、所附权利要求书以及附图将能更好地理解本发明的这些和其他特征、方面以及优点,其中:

图1是根据本发明的实施例的示出包括机器学习优化工具的eda软件工具的简化框图;

图2是根据示例性实施例的描绘在训练数据的生成期间由常规优化工具进行的优化解决方案的生成的简化框图;

图3是根据示例性实施例的描绘使用图2中描绘的优化解决方案进行的训练数据条目的生成的简化框图;

图4a和4b是分别描绘初始电路部分和相关联的输入矢量、以及相关联的替换电路部分和相关联的输出矢量的图形,其中初始和替换电路部分对应于示例性功率优化解决方案和由此生成的相关联的训练数据条目;

图5a、5b、5c、5d和5e是根据简化的示例性实施例的描绘包括毗连的分段线性公式的预测函数的形成的图形;

图6a、6b、6c和6d是根据另一示例性实施例的示出分段平面预测函数的生成的简化透视图;

图7是根据另一示例性实施例的描绘由图1的机器学习优化工具进行的替换电路部分的选择的流程图;

图8是根据本发明的另一实施例的示出包括机器学习优化工具和常规优化工具两者的eda软件工具的简化框图;

图9是根据本公开的实施例的示出在集成电路的设计和制造中的各种操作的流程图;

图10a、10b和10c是适于与技术的实施例、以及技术的电路设计和电路实施例一起使用的计算机系统的简化框图;

图11是描绘优化之前的简化的常规ic设计的图;

图12是描绘可以任选地用于优化图11的ic设计的替代电路部分的图形;以及

图13是描绘图11的ic设计的经优化版本的图形。

附图详细说明

本发明涉及用于在随后在基于电路设计的物理ic器件(芯片)的制造中使用的ic(电路)设计的开发期间使用的改进的eda软件工具和相关联的方法。附图和以下详细说明仅通过说明的方式表示创新、实施例和/或示例,其中在单个实施例中将各种特征、结构或特性一起描述以精简本公开。由此类示例性创新、实施例和/或示例公开的元件、过程、机器、系统、制造商或组合物中的任一者的变型将被容易地认识到并且可以在商业中使用,而不脱离所要求保护的原理。附图和详细描述还可以隐式或显式地表示本文所描述的示例性实施例的子集的优点和改进。在附图和详细描述中,可以描述众多具体细节以提供对示例性实施例中的一个或多个的透彻理解。为了不模糊要求保护的发明的实施例的呈现的目的,在以下详细描述中,出于呈现和说明的目的,本领域中已知的一些处理步骤或操作可能已经被组合在一起,而在一些实例中可能未被详细描述。然而,本领域技术人员将认识到,这些实施例可以在商业中使用,而不需要这些具体细节或其等同物。在其他实例中,未详细描述众所周知的过程和设备,以免不必要地模糊这些实施例的各方面。在其他实例中,可以完全不描述在本领域中已知的一些处理步骤或操作。相反,以下描述集中在所要求保护的发明的各种实施例的独特的特征或要素上。此外,虽然本说明书可能以单数时态指结构的一些组件,但是贯穿附图可能描绘了多于一个部件并且相同的组件用相同的数字标记。

图1示出了极大地简化的eda软件工具100,eda软件工具100包括根据本发明的通用实施例配置的用于优化ic设计的机器学习优化工具105。以流程图格式描绘了机器学习优化工具105以强调当由计算机的处理器(未示出)执行时由eda软件工具100执行的新颖的优化方法。如本文中所使用的,短语“机器学习优化工具”指由eda工具使用以执行ic设计的优化的优化软件工具集,并且通过实现任何已知的机器学习算法(例如,线性回归、决策树或人工神经网络)的方式来与常规优化工具相区分。注意,为了清楚起见,图1中省略了eda软件工具100的其他部分,诸如与以下参考图9描述的与电路开发过程相关联的工具。还应注意,短语“ic设计”和对ic设计的电路部分的引用是指可以(例如,使用以下参考图9描述的制造过程流)转换成相应的物理器件的电子地存储的电路设计。

参考图1的上部,eda工具100包括训练数据库108,训练数据库108配置成接收和存储量化训练数据条目,量化训练数据条目由机器学习优化工具105按下文描述的方式使用。在图1中,为简洁起见,将训练数据库108描绘为存储四个量化训练数据条目tde1到tde4;即,任何数量的训练数据条目可以被存储在训练数据库108中并且由机器学习优化工具105使用来生成预测函数。

根据本发明的一个方面,量化训练数据条目tde1到tde4分别包括可操作地描述先前生成的优化解决方案的数据,所述优化解决方案包括用在ic设计的经修改的(经优化的)版本中的替换电路部分来替换在未经修改的(非最优的)ic设计中的初始电路部分。在一个实施例中,量化训练数据条目tde1到tde4利用输入矢量iv1到iv4来可操作地表征相关联的先前生成的优化解决方案的初始电路部分,并且利用输出矢量ov1到ov4来可操作地表征相关联的先前生成的优化解决方案的相应的替换电路部分。如以下所解释的,这些输入和输出矢量的使用有助于利用先前生成的优化解决方案生成能够在涉及新形成的ic设计的后续优化过程中准确预测替换电路部分的预测函数。

现在将参考图2和3通过提供示出在ic设计a的开发期间执行的先前执行的优化过程期间的训练数据条目tde1的生成的简化示例的方式来描述被存储在训练数据库108(图1)中的训练数据条目tde1到tde4的内容。如上所述,训练数据条目tde1是使用描述先前执行的优化过程的单个优化解决方案的数据生成的,在该先前执行的优化过程中,由常规优化工具103用在经修改的(经优化的)ic设计a1(图3)中的替换电路部分rcp1替换未经修改的(非最优的)ic设计a0(图2)的初始电路部分icp1,其中“a0”和“a1”表示ic设计a的稍微不同的版本。参考图2,未经修改的(非最优的)ic设计a0包括为简洁起见由电路部分ca1、ca2和ca3表示的许多电路部分,其中电路部分ca2被常规优化工具103(即,使用已知技术)识别为非最优的,并且因此被指定为初始电路部分icp1(即,要被替换的电路部分)。同样,如图2所指示的,初始电路部分icp1的替换通常包括由常规优化工具103从数个替代电路部分(例如,替代电路部分acp1到acp4)中选择的一个替代电路部分,该数个替代电路部分通常被存储在标准单元或其他单元库90中。如图3所示,出于描述的目的,假设常规优化工具103使用已知技术选择替代电路部分acp2用作经优化的ic设计a1中的替换电路部分rcp1,由此初始电路部分icp1被有效地移除并且由替代电路部分acp2替换。注意,其他电路部分(例如,部分ca1到ca3)从未经修改的ic设计a0到经优化的ic设计a1保持不变)。应当理解,通过使用替换电路部分rcp1替换初始电路部分icp1而生成的优化解决方案生成了经优化的ic设计a1相对于未经修改的ic设计a0的改进的操作特性(例如,更低功耗),并且由常规优化工具103进行的对初始电路部分icp1和替换电路部分rcp1的选择是使用本领域已知的技术执行的。参考图3的下部,训练数据条目tde1包括输入矢量iv1和输出矢量ov1,输入矢量iv1包括可操作地表征先前生成的优化解决方案的初始电路部分icp1的(第一)输入矢量值,输出矢量ov1包括可操作地表征先前生成的优化解决方案的相应的替换电路部分rcp1的一个或多个(第一)输出矢量值。再次参考图1顶部,根据在一个或多个优化过程期间生成的相应的先前执行的优化解决方案,以与生成训练数据条目tde1相同的方式生成训练数据条目tde2、tde3和tde4。

再次参考图1,机器学习优化工具105包括被配置成使用量化训练数据条目tde1到tde4生成预测函数115的预测函数生成器110,并且随后利用预测函数115通过将描述新识别的初始电路部分的输入矢量施加到预测函数115的方式来生成用于新识别的初始电路部分的预测的输出矢量。通过预测函数115进行的预测的输出矢量的生成通常参考由机器学习优化工具105执行的当前的优化过程来描述,并且涉及在图1的左下部中描绘的目标(新的且未经修改的)ic设计d0。以上面参考训练数据条目tde1的生成(图1)描述的方式,使用已知的优化技术识别ic设计d0的初始电路部分icp5用于替换,并且将可操作地表征初始电路部分icp5的输入矢量iv5施加到预测函数115。在替代实施例中,输入矢量iv5由机器学习优化工具105生成,或者输入矢量iv5与初始电路部分icp5的描述一起被包括并传输到机器学习优化工具105(例如,如由箭头112所指示的)。在任一情况下,如由箭头114所指示的,输入矢量iv5被施加到(即,输入到)预测函数115,并且预测函数115生成预测的输出矢量pov(例如,由箭头120所指示的),预测的输出矢量pov具有由输入矢量iv5的量化输入值确定的输出矢量值。预测的输出矢量pov随后被用于通过将预测的输出矢量pov与分别可操作地描述可能的替换电路部分的输出矢量进行比较,并识别最接近地匹配预测的输出矢量pov的输出矢量的方式来选择针对初始电路部分icp5的替换电路部分rcp5。在图1的底部描绘的示例中,机器学习优化工具105利用最佳拟合解决方案生成器124将预测的输出矢量pov与可操作地描述替代电路部分acp1到acp4的输出矢量(未示出)进行比较(如由箭头125所指示的),如上所述的,替代电路部分acp1到acp4被存储在单元库90中。在此示例中,与替代电路部分acp3相关联的输出矢量被识别为与预测的输出矢量pov最接近地匹配,由此,如由箭头140所指示的,通过利用替代电路部分acp3替换初始电路部分icp5(即,替代电路部分acp3被用作经修改的/经优化的ic设计d1中的替换电路部分rcp5)来更新目标/经优化的ic设计d1。

返回参考图1,由机器学习优化工具105执行的方法还包括更新训练数据库108以包括新的(第二)训练数据条目,该训练数据条目至少部分地由可操作地表征初始电路部分icp5的输入矢量和由可操作地表征替换电路部分rcp5的输出矢量形成。在一个实施例中,通过以下步骤来形成该新训练数据条目:向训练数据库108传送输入矢量iv5(例如,如由虚线箭头160-1所指示的),并且通过配置最佳拟合优化解决方案生成器124来生成描述替代电路部分acp3的输出矢量(如由箭头150所指示的),并且随后将输出矢量ov5传送到训练数据库108(例如,如由虚线箭头160-2所指示的)。使用由机器学习优化工具105生成的每个新优化解决方案来更新训练数据库108有助于通过进一步增强所得到的周期性更新的预测函数准确地识别针对每个新初始电路部分的最优替换的能力来将处理时间潜在地进一步降低。

图4a和4b是根据本发明的具体功率优化实施例的分别描绘示例性输入矢量和相关联的输出矢量的生成的图形。具体而言,图4a描绘了初始电路元件(例如,缓冲器或栅极)icpa以及由可操作地表征初始电路元件icpa的功耗和定时操作特性的输入矢量值组成的相关联的输入矢量iva,并且图4b描绘了替换电路元件rcpa以及由可操作地表征与替换电路元件rcpa的使用相关联的功耗和定时操作特性的相关联的输出矢量ova。参考图4a,输入矢量iva的(第一)输入矢量值包括可操作地表征初始电路部分icpa的功耗的初始功耗值power(功耗),并且还包括各种定时相关值,定时相关值包括量化(可操作地表征)初始电路部分icpa的转换速率的转换值slew(转换)、以及量化由使信号通过初始电路部分icpa导致的信号延迟时间的单元延迟值celldelay(单元延迟)。输入矢量iva还可以包括与放置初始电路部分icpa的电路环境相关的附加的定时值(诸如总扇入余量(totalfan-inslack)值和输出余量值),附加的定时值由所选择的优化解决方案必须满足的用户定义的定时限制来确定。参考图4b,输出矢量ova的(第一)输出矢量值包括指示通过在目标电路设计中使用替换电路部分rcpa替换初始电路部分icpa来实现的功率改进的功率变化值(power_change)(例如,以替换功耗与初始功耗的比的形式),由此,功率变化值可操作地表征rcpa的(最终)功耗。在一个实施例中,输出矢量ova还包括可操作地表征通过在目标电路设计中使用替换电路部分rcpa替换初始电路部分icpa实现的最终定时特性的附加的定时相关的输出矢量值,诸如作为替换/初始转换/延迟比计算的转换变化值(slew_change)和延迟变化值(delay_change)。注意,输入矢量iva和输出矢量ova旨在作为不旨在限制的极大简化的示例,并且本领域技术人员将认识到实际的输入和输出矢量可以包括任意数量的矢量值。

根据实施例,当训练数据库包含大量训练数据条目时,将训练数据条目组织成组并合并以简化预测函数生成过程。具体而言,该训练数据合并/分组过程包括将大量的训练数据条目组织成较少数量的训练数据组、针对每个训练数据组使用在每个组中的训练数据条目的输入/输出矢量值来计算平均输入和输出矢量值、并且随后使用训练数据组的平均输入/输出矢量值计算预测函数。以下参考图5a到5e中描绘的第一简化示例性实施例并参考图6a到6d中描绘的第二简化示例性实施例更详细地解释了该训练数据合并/分组过程和相关联的预测函数的简化的生成。第一简化示例性实施例涉及分段线性预测函数的生成和使用,其涉及合并/分组具有一维输入矢量值和一维输出矢量值的训练数据条目。第二简化示例性实施例涉及以合并/分组具有二维输入矢量值和一维输出矢量值的训练数据条目的方式形成的分段平面预测函数的生成和使用。通过参考分段线性和平面示例所描述的方法的逻辑扩展,本领域技术人员将理解可以利用训练数据合并/分组过程来生成由分段n维平面公式(即,其中n表示任何大于1的整数)组成的预测函数,其中每个分段n维平面公式形成预测函数的相应的部分并且具有由相关联的训练数据组值定义的端点/边界。在其他实施例中,可以利用训练数据合并/分组过程来简化由更复杂的(例如,曲线拟合)公式定义的预测函数的生成。

图5a到5e描绘了根据第一示例性实施例的分段线性预测函数115a的生成。图5a是描绘数字化的训练数据条目tdex的图形,其中每个训练数据条目tdex在该图形中的位置由相对于水平的输入矢量轴iv绘制的相关联的一维输入矢量值和相对于垂直的输出矢量轴ov绘制的相关联的一维输出矢量值来确定。例如,数字化的训练数据条目tde1的位置由其相关联的输入矢量值iv1和其相关联的输出矢量值ov1确定,输入矢量值iv1被指示在输入矢量轴iv上,输出矢量值ov1被指示在输出矢量值ov上。如上所述,每个训练数据条目tdex的输入矢量值量化在给定的先前生成的优化解决方案中被替换的相关联的初始电路部分,并且每个训练数据条目tdex的输出矢量值量化用于替换该给定的先前生成的优化解决方案的相关联的初始电路部分的替换电路部分。

图5b描绘了将训练数据值tdex组织成五个组g1到g5,使得每个组包括具有类似输入矢量值的多个训练数据值。例如,组g1包括具有在值iv0和值iv2之间的范围内的输入矢量值的大约十个训练数据值tdex。注意,组的数量(即,五个)和包括在图5b的每个组g1到g5中的输入矢量值的范围是出于说明目的任意选择的。

图5c描绘了训练数据组值a1到a5的形成,其中通过分别对每个组g1到g5中的训练数据条目的输入和输出矢量值求平均来确定每个训练数据组值a1到a5的位置。例如,通过平均输入矢量组值iva1来确定训练数据组值a1的水平位置,并且通过平均输出数据组值ova1来确定训练数据组值a1的垂直位置。通过对组g1中的由位于值iv0和值iv2之间的点指示的每个训练数据条目的输入矢量值求和、并且随后将该和除以组g1中的训练数据条目的数量来计算平均输入矢量组值iva1。类似地,通过对组g1中的每个训练数据值的输出矢量值求和并除以组g1中的训练数据条目的数量来计算平均输出矢量组值ova1训练数据组值a2到a5分别由位于与位于组g2到g5的边界内的所有训练数据条目的水平/垂直位置的平均值对应的水平/垂直位置的相应的椭圆指示。

图5d描绘了由毗连的分段(二维)线性公式(即,预测函数部分)组成的分段线性预测函数115a的形成,所述毗连的分段线性公式由毗连的线段s1到s4在图5d中图形地描绘。线性公式f(s1)到f(s4)(即,分别由线段s1到s4表示的函数)具有由对应于相关联的训练数据组值a1到a5对的端点定义的相关联的有效范围。即,由相关联的线段s1到s4表示的每个公式生成针对落在由该区段的相应的端点定义的相关联的范围内的施加的输入矢量值的预测的输出矢量值。例如,区段s1描绘了具有在训练数据组值(端点)a1和a2之间延伸的有效范围的线性公式f(s1),由此,线性公式f(s1)提供了针对落在输入矢量值iva1和输入矢量值iva2之间的范围内的输入矢量值的预测的输出矢量,其中输入矢量值iva1和iva2分别是训练数据组值a1和a2的分量输入矢量值。类似地,区段s2表示第二线性公式f(s2),其生成针对落在训练数据组值a2和a3的分量输入矢量值之间的范围内的每个输入矢量值的预测的输出矢量,区段s3表示第三线性公式f(s3),其生成针对落在训练数据组值a3和a4的分量输入矢量值的范围内的输入矢量值的预测的输出矢量,并且区段s4表示第四线性公式f(s4),其生成针对落在训练数据组值a4和a5的分量输入矢量值的范围内的输入矢量值的预测的输出矢量在一个实施例中,每个线性公式f(s1)到f(s4)包括由两个端点的相关联的分量输出矢量值之间的差除以相关联的分量输入矢量值之间的差来定义的相关联的斜率。例如,如图5d所指示的,线性公式f(s1)包括使用分量输出矢量值差dovs1除以分量输入矢量值差divs1来计算的斜率m(s1),其中分量输出矢量值差dovs1等于在端点a2处定义的输出矢量分量值ova2减去在输出矢量组值(端点)a1处定义的输出矢量分量值ova1,并且分量输入矢量值差divs1等于在端点a2处定义的输入矢量分量值iva2减去在端点a1处定义的输入矢量分量值iva1分段线性公式f(s2)到f(s4)具有使用由相关联的端点a2到a5定义的分量输入/输出矢量值以类似方式确定的相应的斜率。如下所述,当机器学习优化工具利用分段线性预测函数115a生成针对新输入矢量值的预测的输出矢量时,该工具识别相关的分段线性公式f(s1)到f(s4)(即,具有包含新输入矢量值的有效范围的公式),并且随后仅向该线性公式施加该新输入矢量值以生成所期望的预测的输出矢量值。

在一个实施例中,分段线性预测函数115d被进一步增强以包括附加的“边界”线性公式/函数f(s0)和f(s5),所述“边界”线性公式/函数f(s0)和f(s5)在图5d中被描绘为区段s0和s5。即,可以使用本领域已知的外推技术来将位于训练数据组位置a1到a5的外边界外部(即,图5d中位置a1的左侧和位置a5的右侧)的训练数据值用于扩展分段线性预测函数115a的范围,但应当理解,所得的边界线性公式f(s0)和f(s5)可能不像分段线性公式f(s1)到f(s4)一样精确。因此,在一个实施例中,实现类似于预测函数115a的分段线性预测函数的机器学习优化工具可以配置成每当新输入矢量值落在与边界线性公式相关联的范围内时通知用户。

图5e描绘了分段线性预测函数115a的示例性使用以生成针对落在分量输入矢量值iva4和iva5之间的示例性输入矢量值iv5a的预测的输出矢量值pova,分量输入矢量值iva4和iva5进而由端点a4和a5定义。因为矢量值iv5a在端点iva4和iva5之间,所以机器学习优化工具利用分段线性公式f(s4)的斜率和端点(例如,使用与图5e中描绘的图形表示一致的计算技术)来计算预测的输出矢量值pova。具体而言,输入矢量值iv5a从在输入矢量值轴iv上的相关联的位置垂直向上(例如,沿箭头114a)投影到由线段s4定义的相应的交叉点122a,并且随后从交叉点122a水平地(例如,沿箭头120a)投影到在输出矢量轴ov上的相应的位置。通过对多个训练数据条目进行合并/求平均来形成训练数据位置a1到a5,以及通过利用训练数据位置a1到a5来生成包括相对少量的毗连的区段(线性公式)的相关联的分段线性预测函数115a,本发明有助于使用比实现更复杂的预测函数所将需要的计算机处理时间显著更少的计算机处理时间来生成足够准确的优化解决方案。

图6a到6d描绘了根据本发明的另一示例性实施例的简化的分段平面预测函数115b的生成。用于生成分段平面预测函数115b的过程类似于以上参考图5a到5e描述的分段线性预测函数115a的生成,因为生成分段平面预测函数115b的过程涉及如图6a描绘的将具有类似的输入矢量值的训练数据条目组合成训练数据组、如图6b描绘的使用在每个训练数据组中的训练数据值来计算平均组矢量值、并且随后如图6c描绘的在平均组矢量值之间生成一个或多个多维平面公式/区段。虽然为了清楚和简洁起见,以下参考单个平面公式/区段描述分段平面预测函数115b,但是本领域技术人员将认识到以下所描述的技术可以被扩展以为预测函数115b提供附加的毗连的分段平面公式/部分(例如,类似于如以上所描述的并由图5d的部分s1到s4表示的多个分段线性公式)。此外,虽然为简洁和清楚起见,以下参考三维平面公式描述分段多维平面预测函数,但是本领域技术人员将认识到参考以下提供的示例所描述的技术可以被扩展到附加的维度而不减损本发明的精神和范围。因此,应当理解,除非特别指定,否则参考图6a到6d描述的简化的示例性实施例不限于所附权利要求

图6a示出了三维图形,其中训练数据条目tde11到tde34的位置由二维输入矢量值(即,输入矢量值具有相对于输入矢量分量值轴ivcv1和ivcv2确定每个训练数据条目的水平取向位置的两个分量值)和相对于输出矢量值轴ovv确定每个训练数据条目的垂直取向位置的单一维度输出矢量值来确定。例如,训练数据条目tde11被定位成使得其输入矢量在输入矢量平面ivp上在沿输入矢量分量值轴ivcv1的位置ivcv111处和沿输入矢量分量值轴ivcv2的位置ivcv211处形成投影iv11,并且使得其输出矢量与输出矢量值轴ovv相交于点ovv11处。剩余的训练数据条目tde12到tde14、tde21到tde24以及tde31到tde34被类似地定位成使得它们的输入矢量在输入矢量平面ivp上形成相应的投影,并且使得它们的输出矢量与输出矢量值轴ovv相交于相应的垂直位置ovv12到ovv14、ovv21到ovv24以及ovv31到ovv34。

还如图6a所指示的,具有类似的输入矢量值的训练数据条目被收集到训练数据组g7到g9中,其中每个组包括具有在两个维度上类似的输入矢量值的训练数据条目。具体而言,组g7包括训练数据条目tde11到tde14,训练数据条目tde11到tde14具有以驻留在输入矢量平面ivp的相对小的区域ivg7内的方式类似的相应输入矢量值。类似地,组g8包括训练数据条目tde21到tde24,训练数据条目tde21到tde24具有投影到输入矢量平面ivp的区域ivg8中的相应输入矢量值,并且组g9包括训练数据条目tde31到tde34,训练数据条目tde31到tde34具有投影到输入矢量平面ivp的区域ivg9中的相应输入矢量值。

图6b描绘了以使用与以上参考训练数据位置a1到a5的生成所描述的那些技术类似的技术将训练数据值合并在各个组g7到g9中的方式来生成(计算)训练数据组值b1到b3。具体而言,将组g7的训练数据值合并以形成训练数据组值b1,将组g8的训练数据值合并以形成训练数据组值b2,并且将组g9的训练数据值合并以形成训练数据组值b3。注意,使用垂直投影ivb1、ivb2和ivb3在输入矢量平面ivp上指示确定训练数据组值b1到b3的平均位置的二维输入矢量分量值,并且由到输出矢量值轴ovv上的对应的水平投影指示每个训练数据组值b1到b3的输出矢量值。例如,垂直投影ivb1指示训练数据组值b1位于沿输入矢量分量值轴ivcv1和ivcv2的输入矢量分量值ivcv1b1和ivcv2b1处,并且来自训练数据组值b1的水平投影指示输出矢量值ovvb1。以类似的方式,训练数据组值b2位于输入矢量分量值ivcv1b2和ivcv2b2处(如由投影ivb2所指示的)和输出矢量值ovvb2处,并且训练数据组值b3位于输入矢量分量值ivcv1b3和ivcv2b3处(如由投影ivb3所指示的)和输出矢量值ovvb3处。

图6c描绘了利用训练数据组值b1到b3生成分段平面预测函数115b的单个平面公式/部分,其中通过由训练数据组值b1、b2和b3穿过并界定的三角形平面部分p1来描绘单个平面公式。即,平面部分p1图形地表示可操作地配置成针对落在多维范围iv(p1)内的新输入矢量值生成预测的输出矢量值的三维平面公式f(p1),在此示例中,多维范围iv是由如上所述的由训练数据组值b1、b2、b3定义的输入矢量投影值ivb1、ivb2和ivb3界定的三角形区域。例如,图6d描绘了平面公式f(p1)的使用以通过施加由如图6d所指示的落在多维范围iv(p1)内的输入矢量分量值ivcv15b和ivcv25b定义的(第二)输入矢量值iv5b的方式来生成预测的输出矢量值povb。具体而言,通过以下方式来从施加的输入矢量值iv5b生成预测的输出矢量值povb:从在输入矢量平面ivp上的输入矢量值iv5b的相关联的位置垂直向上(例如,沿箭头114b)投影到由平面部分p1定义的相应的交叉点122b,并且随后从交叉点122b水平地(例如,沿箭头120b)投影到输出矢量值轴ovv上的相应的位置。通过对多个训练数据条目进行合并/求平均来形成训练数据值/位置b1到b3,以及通过利用训练数据值/位置b1到b3来生成相关联的分段平面预测函数115b,本发明有助于使用比实现更复杂的预测函数所将需要的计算机处理时间显著更少的计算机处理时间来生成足够准确的优化解决方案。

图7是根据另一示例性实施例的描绘本发明的机器学习优化方法的流程图,并且具体地示出了如何利用由机器学习优化工具105c生成的优化解决方案来生成新的训练数据。参考图7的顶部,新输入矢量iv5c被施加到早期(第一)版本预测函数115c(如由箭头114c所指示的)。在该情况下,输入矢量iv5c被任意表征为包括类似于以上参考图4a描述的那些矢量值(即,slew=10,celldelay=100,slack(余量)=20,fan-inslack(扇入余量)=300)的多个矢量值。注意,(例如,使用以上所述的任何方法)利用训练数据库108c的初始内容(即训练数据条目tde1、tde2、tde3和tde4)来生成早期版本预测函数115c。使用以上所述的过程,早期版本预测函数115c生成预测的输出矢量povc,在此示例中,预测的输出矢量povc包括类似于以上参考图4b描述的那些输出矢量值(即,slew_change=2.0,delay_change=1.2,power_change=0.67)的输出矢量值。然后,将预测的输出矢量povc提交给最佳拟合优化解决方案生成器124c,最佳拟合优化解决方案生成器124c将预测的输出矢量povc的输出矢量值与如上所述的存储在单元库90中的替代电路部分acp1到acp4的输出矢量值ov-acp1到ov-acp2进行比较。最佳拟合优化解决方案生成器124c随后利用预测的输出矢量povc将替代电路部分apc3识别为具有最接近地匹配预测的输出矢量povc的相关联的输出矢量ov-apc3,由此替代电路部分apc3被用作在目标电路设计d1中的替换电路部分rcp5c,如由图7的箭头140c所指示的。此外,如箭头150c所指示的,机器学习优化工具105c生成具有与输出矢量ov-apc3的输出矢量值(即,slew_change=2.0,delay_change=1.2,power_change=0.65)相同的输出矢量值的输出矢量ov5c。然后,更新训练数据库108c以包括由可操作地表征初始电路部分ipc5c的(第二)输入矢量iv5c(即,如由箭头160-1c所指示的)以及可操作地表征(第二)替换电路部分rcp5的相关联的输出矢量ov5c(即,如由箭头160-1c所指示的)组成的(第二)训练数据条目tde5c。最后,如由在图7底部的框170c所指示的,随后使用经更新的训练数据库108c的内容(即,包括(第一)训练数据条目tde1到tde4的原始内容,以及新输入的(第二)训练数据条目tde5c)来修改(更新)预测函数115c以供在随后的优化处理事件中使用。

图8是根据本发明的另一实施例的示出利用机器学习优化工具105d和常规优化工具103d两者的eda软件工具100d的简化框图。如下所述,每当机器学习优化工具105d确定预测函数115d不能提供足够准确的优化解决方案时(例如,当增强的eda工具100d最初在安全计算系统上实现并且训练数据库(未示出)是相对空的时,或每当新输入矢量落在预测函数115d的有效范围的足够外侧使得不能利用边界函数生成可靠地准确的预测的输出矢量时),利用常规优化工具103d生成优化解决方案。

如在图8顶部所指示的,随时间利用eda软件工具100d执行涉及不同电路设计a到d的一系列优化过程。在此示例中,电路设计a、b和c的优化已经完成(由围绕这些设计的虚线框所指示),并且在电路设计d上执行当前优化过程。注意,在先前的优化过程(例如,在电路设计a、b和c上执行的那些优化过程)期间生成的优化解决方案已经被存储在训练数据库(未示出)中,并且机器学习优化工具105d已经利用存储的训练数据条目以上文所述的方式生成当前的预测函数115d。

参考图8的上部,执行当前优化过程直到完成电路设计d的所期望的(例如,功率)优化。在优化没有完成(来自判定框101的否分支)时,电路设计d的新初始电路部分(即,类似于上述初始电路部分iv5)被选择用于替换,并且使用上述技术生成针对所选择的初始电路部分的输入矢量(即,类似于上述输入矢量iv5)(框112)。控制随后传递到判定框113。

判定框113表示利用新输入矢量(例如,iv5)来确定预测函数115d是否可以足够准确地识别针对目标ic设计d的相应的所选择的第一初始电路部分的相应的替换电路部分的过程。例如,通过验证输入矢量具有落在预测函数115d的有效范围(例如,在图5d中的位置a1和a5之间,或在图6c中的区域iv(p1)内)内的输入矢量值来执行该确定。如果该新输入矢量值落在预测函数115d的范围的足够外侧,则机器学习优化工具105d确定预测函数115d将不会足够准确地生成针对新输入矢量的可靠的预测的输出矢量(来自框113的否分支),并且控制传递到常规优化工具103d,常规优化工具103d使用常规技术生成优化解决方案(框130d)。当新输入矢量充分地在预测函数115d的范围内时,则机器学习优化工具105d确定预测函数115d将足够准确地生成针对新输入矢量的可靠的预测的输出矢量(即,识别相应的替换电路部分),并且控制沿来自框113的是分支传递到框120d。在框120d中,如上所述的,利用预测函数115d基于新输入矢量(例如,iv5)生成预测的输出矢量(pov),并且随后,例如使用上述最佳拟合技术来使用预测的输出矢量生成优化解决方案(框125)。

参考在图8下部的框140d,随后更新目标ic设计d以将相应的所选择的初始电路部分(例如,以上提供的示例中的部分icp5)替换为相应的替换电路部分(例如,以上提供的示例中的部分rcp5)。注意,使用由机器语言优化工具105d生成的优化解决方案或由常规优化工具103d生成的优化解决方案来执行电路设计更新过程。

现在参考位于图8的中心附近的框150d到170d,利用无论是由机器语言优化工具105d还是由常规优化工具103d生成的针对新输入矢量的优化解决方案以作为可操作地表征所选择的初始电路部分和与刚执行的优化过程事件相关联的相应的替换电路部分两者的新(第二)训练数据条目来利用的方式更新预测函数115d。具体而言,利用优化解决方案以生成可操作地表征替换电路部分的新输出矢量(框150d);更新训练数据库(例如,图1,库108)以包括新训练数据条目,该新训练数据条目包括新的输入和输出矢量(框160d);并且随后利用经更新的训练数据库以生成预测函数115d的经更新的(修改的)版本(框170d)。

如由上述示例所阐述的,在本发明的主动机器学习中存在三个步骤:1)主动学习:在该步骤中,基于机器学习的优化软件学习该软件之前未见过的诸如设计栅极尺寸、移动单元和缓冲器插入之类的优化行动(优化解决方案);2)训练数据生成:在该步骤中,软件将训练数据写入到文件(例如,库);以及3)使用训练数据优化:在该步骤中,软件读取先前生成的训练数据,训练自身,并且使用新机器学习技术来用快得多的运行时间优化功率。

技术专用eda系统/工作流解释

图9示出了使用eda软件工具与计算机一起在ic器件的设计和制造中执行以转换表示相关联的ic器件的数据和指令的各种过程。这些过程开始于具有由一个或多个电路设计者提供的信息的产品构想(1100)的生成。产品构想是在由(多个)电路设计者使用eda软件工具(1110)执行的电路设计过程期间作为演化的电路设计来实现的。由eda软件工具(1110)执行的eda软件设计过程的一个或多个步骤是使用由计算机1111b读取的计算机可读介质1111a来实现的。在本文中还可以使用单数的“eda软件工具”将eda软件工具表示为eda软件或设计工具。当电路设计完成时,其通常被流片(1134),并且随后使用所选择的科技节点在半导体晶片上制造(160)多个ic,每个所述ic是最终电路设计的物理实现。半导体晶片随后被切割成单独的芯片,其中每个芯片包括所述ic中的一个,并且随后使用相应的过程封装和组装所述芯片(1138),从而得到完成的ic器件1140。

注意,使用eda软件工具(1110)的设计过程包括以下所述的操作1114-1132。该设计流描述仅用于说明目的并且不意味着限制本公开。例如,实际电路设计可能需要电路设计者以与本文所述的序列不同的序列来执行设计操作。

在系统设计(1114)期间,电路设计者描述要由所制造的ic器件执行的功能。设计者还可以执行假设情景(what-if)规划以细化功能并检查成本。注意,硬件-软件架构划分可以在该阶段发生。可以在该阶段使用的来自加利福尼亚州山景城(mountainview)的synopsys公司的示例性eda软件产品包括:modelarchitect、saber、systemstudio、和designware产品。包括涉及本发明的两部分usbphy配置的所有相关信息的单元或其他描述通常从可通过eda软件工具访问的库中复制,并且在系统设计过程期间插入到电路设计中。

随后,在逻辑设计和功能验证(1116)期间,编写用于电路中模块的vhdl或verilog代码并检查该设计的功能准确度。更具体地,检查该设计以确保其产生正确的输出。所述vhdl或verilog代码是包括适于逻辑设计的有效描述的经优化的可读程序指令的软件。可以在该阶段使用的来自加利福尼亚州山景城的synopsys公司的示例性eda软件产品包括:vcs、vera、designware、magellan、formality、esp和leda产品。

接下来,在测试的合成和设计(1118)期间,vhdl/verilog代码被转译成网表。可针对目标技术对该网表进行优化。此外,可以设计和实现测试以检查完成的集成电路。可以在该阶段使用的来自加利福尼亚州山景城的synopsys公司的示例性eda软件产品包括:designcompiler、physicalcompiler、testcompiler、powercompiler、fpgacompiler、tetramax和designware产品。

此外,在网表验证(1120)期间,检查网表对定时约束的顺应性以及与vhdl/verilog代码的对应性。可以在该阶段使用的来自加利福尼亚州山景城的synopsys公司的示例性eda软件产品包括:formality、primetime和vcs产品。在一个实施例中,可以在网表验证期间利用本文所述的机器学习优化工具/方法。

此外,在设计规划(1122)期间,构造针对集成电路的整体平面图并针对定时和顶层布线分析该整体平面图。可以在该阶段使用的来自加利福尼亚州山景城的synopsys公司的示例性eda软件产品包括:astro和iccompiler产品。

此外,在物理实现(1124)期间,发生放置(诸如晶体管或电容器之类的电路元件的定位)和布线(由多个导体连接这些电路元件)。可以在该阶段使用的来自加利福尼亚州山景城的synopsys公司的示例性eda软件产品包括:astro和iccompiler产品。

随后,在分析和提取(1126)期间,在晶体管级别验证电路功能,这允许了对逻辑设计的细化。可以在该阶段使用的来自加利福尼亚州山景城的synopsys公司的示例性eda软件产品包括:astrorail、primerail、primetime和starrc/xt产品。在一个实施例中,可以在分析和提取期间利用本文所述的机器学习优化工具/方法。

接下来,在物理验证(1128)期间,检查该设计以确保制造问题、电气问题、光刻问题以及电路系统的正确性。可以在该阶段使用的来自加利福尼亚州山景城的synopsys公司的示例性eda软件产品包括hercules产品。

此外,在分辨率增强(1130)期间,执行对布局的几何操纵以改进该设计的可制造性。可以在该阶段使用的来自加利福尼亚州山景城的synopsys公司的示例性eda软件产品包括:proteus、proteus和psmged产品。

此外,在掩模数据准备(1132)期间,提供用于掩模的生产的“流片(tape-out)”数据以生产完成的集成电路。可以在该阶段使用的来自加利福尼亚州山景城的synopsys公司的示例性eda软件产品包括cats.产品系。

对于所有的上述集成电路设计工具,可以使用来自其他eda供应商(诸如cadence和mentorgraphics)的类似工具作为替代。此外,可以使用可从大学获得的类似的非商业工具。

可以在上述阶段中的一个或多个期间使用本公开的实施例。具体而言,可以在eda软件1110中使用本公开的一些实施例。

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

硬件/软件等价性

本文所述的某些创新、实施例和/或示例包括和/或使用处理器。如本文所使用的,术语“处理器”表示物理地变换信息(例如,数据)的有形信息处理设备。如本文所定义的,“数据”表示可以是以能够被存储、访问、传送、组合、比较、或以其他方式被信息处理设备操纵的电、磁或光信号形式的信息。

处理器可以是电子的(例如,包括数字逻辑电路(例如,二进制逻辑))、或模拟的(例如,运算放大器)。处理器还可以是非电子的,例如,如在基于光信号处理、dna转化或量子力学、或技术的组合的处理器中看到的,诸如光电处理器之类。对于以二进制形式构建的信息,可以使用与、或和非逻辑运算(以及它们的派生物,诸如与非、或非和异或运算之类)来变换信息的任何处理器都可以使用布尔逻辑的任何函数来变换信息。诸如神经网络处理器之类的处理器还可以非数字地变换信息。不存在这些处理器中的任一者以等价于人脑的生物电电路的任何方式或形式来处理、存储和接收信息的科学证据。

如本文所使用的,术语“模块”表示通常在尺寸和/或复杂性上受限的有形信息处理设备。例如,计算机程序中的一个或多个方法或过程可以被称为模块。模块还可以指数字逻辑器件的小网络,其中逻辑器件通常可以互连以形成网络。在许多情况下,以专用语言(诸如系统c(systemc)之类)编写计算机程序中的方法和过程可用于生成数字逻辑器件的网络,该数字逻辑器件的网络以与从所述方法和过程中获得的结果完全相同的结果来处理信息。

模块可以被永久地配置(例如,硬接线以形成硬件)、临时地配置(例如,用软件编程)、或两种配置的组合(例如,结构化asic)。例如,可以使用诸如算术逻辑单元(alu)、可编程逻辑阵列(pla)、或只读存储器(rom)之类的专用集成电路(asic)来制造永久地配置的模块,所有这些通常在制造期间被配置。例如,可以使用现场可编程门阵列(fpga——例如,由xilinx或altera销售的)、随机存取存储器(ram)或微处理器来制造临时地配置的模块。通常,模块被配置成使用一系列操作变换信息来处理信息(或在rom和ram的情况下,通过使用输入信息作为存储输出信息的存储器地址来变换信息)以执行本发明的本创新、实施例和/或示例的各方面。

被临时地配置的模块不必在任何一个时刻被配置。例如,包括一个或多个模块的信息处理器可以具有在不同时间配置的模块。处理器可以在一个时刻包括一组一个或多个模块,并且在不同的时刻包括不同的一组一个或多个模块。可以由成本、时间考虑、工程约束和/或具体设计目标来驱动以永久地配置的形式、临时地配置的形式、或两种形式的组合来制造或实现模块的决定。模块处理的“实质”独立于其被制造或实现的形式。

如本文所使用的,术语“算法”表示模块可以用于变换信息以实现结果的一系列或一组操作或指令。模块可以包括一个或多个算法。如本文所使用的,术语“计算机”包括可以执行诸如(但不限于)与、或和非逻辑运算之类的某些运算的、具有附加的存储器(例如,基于触发器的使用与非或或非运算的存储器)的信息处理器。这样的数字计算机被被称为图灵完备(turing-complete)或计算上通用。无论计算机是否是数字计算机,它通常包括许多模块。

如本文所使用的,术语“软件”或“程序”表示配置信息处理设备以供在本说明书中描述的创新、实施例和示例中使用的一个或多个算法和数据结构。此类设备可由包括一个或多个计算机(例如,独立的、客户端或服务端计算机、或一个或多个硬件模块、或一个或多个此类计算机或模块的系统)的软件配置。如本文所使用的,术语“软件应用程序”表示,配置该信息处理设备以实现特定结果(例如,执行文字处理操作,或加密一组数据)的一组指令和数据。

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

从信息存储设备将软件输入到计算机或计算机系统的一个或多个存储器中,等效地,从信息存储设备将软件读取到计算机或计算机系统的一个或多个存储器中。计算机通常具有用于读取用于传输软件的存储介质的设备,或具有通过网络接收软件的接口设备。

技术专用通用计算机解释

图10a、10b和10c是适于使用本发明的多维约束求解器来生成和验证电路设计的计算机系统的简化框图。计算机系统3110通常包括经由总线子系统3112与数个外围设备进行通信的至少一个计算机或处理器3114。这些外围设备可以包括存储子系统3124(包括存储器子系统3126和文件存储子系统3128)、用户接口输入设备3122、用户接口输出设备3120、和网络接口子系统3116。输入和输出设备允许与计算机系统3110进行用户交互。

该计算机系统可以是服务端计算机、客户端计算机、工作站、主机、个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、智能电话、网络电器、电视、网络路由器、交换机或桥接器、或能够执行指定要由数据处理机器采取的特定动作的指令(顺序的或以其他方式)的任何数据处理机器。所要求保护的发明的创新、实施例和/或示例不受限于常规计算机应用程序和运行它们的可编程装置。为了说明,所要求保护的发明的创新、实施例和/或示例可以包括光学计算机、量子计算机、模拟计算机等。本发明的各方面非常适合多处理器或多核系统,并且可以用于或实现在分布式或远程系统中。这里的处理器以最广泛的含义使用以包括单个处理器和多核或多处理器阵列,包括图形处理单元、数据信号处理器、数字处理器以及这些元件的组合。进一步地,虽然仅示出了单个计算机系统或单个设备,但是使用单数形式的此类术语还应表示独立地或联合地执行指令以执行本文所讨论的指令集中的任何一个或多个的计算机系统或机器的任何集合。由于计算机和网络的不断变化的性质,出于说明优选实施例的目的,图10a中描绘的计算机系统3110的描述仅旨在作为特定示例。计算机系统3110的许多其他配置可能比图10a描绘的计算机系统具有更多或更少的部件。

网络接口子系统3116提供了到外部网络的接口,包括到通信网络3118的接口,并且经由通信网络3118耦合到在其他计算机系统或机器中的相应的接口设备。通信网络3118可以包括许多互连的计算机系统、机器和通信连接。这些通信连接可以是有线链路、光学链路、无线链路、或用于信息通信的任何其他设备。通信网络3118可以是任何合适的计算机网络,例如因特网。

用户接口输入设备3122可以包括键盘、指向设备(诸如鼠标、轨迹球、触摸板、或图形平板设备之类)、扫描仪、结合到显示器中的触摸屏、音频输入设备(诸如语音识别系统之类)、麦克风、以及其他类型的输入设备。通常,术语“输入设备”的使用旨在包括将信息输入到计算机系统3110中或通信网络3118上的所有可能类型的设备和方法。用户接口输出设备3120可以包括显示子系统、打印机、传真机、或诸如音频输出设备之类的非可视显示器。显示子系统可以包括阴极射线管(crt)、诸如液晶显示器(lcd)之类的平板设备、投影设备、或诸如虚拟现实系统之类的用于创建可见图像的一些其他设备。显示子系统还可以诸如经由音频输出设备来提供非视觉显示。通常,术语“输出设备”的使用旨在包括将信息从计算机系统3110输出到用户或另一机器或计算机系统的所有可能类型的设备和方法。

存储器子系统3126通常包括数个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(ram)3130和只读存储器(rom)3132,其中存储固定的指令。在一个实施例中,ram3130还用于存储各种工具、库和在本文所述的机器学习优化方法的执行期间利用的其他数据。文件存储子系统3128为程序和数据文件提供永久性存储,并且可以包括硬盘驱动器、软盘驱动器以及相关联的可移除介质、cd-rom驱动器、光盘驱动器、或可移除介质盒。实现某些实施例的功能的数据库和模块可以由文件存储子系统3128存储。总线子系统3112提供用于使计算机系统3110的各种组件和子系统按预期彼此通信的设备。虽然总线子系统3112被示意性地示出为单个总线,但是总线子系统的替代实施例可以使用多个总线。

当配置成执行包括本文所述的机器学习优化工具的eda软件工具时,图10a描绘的计算机系统3110表示适于创建电路设计的电子结构。图10b示出了存储器3140,诸如与文件存储子系统3128和/或与网络接口子系统3116相关联的非瞬态计算机可读数据存储介质,并包括指定描述集成电路的电路设计的数据结构3180。存储器3140可以是硬盘、软盘、cd-rom、光学介质、可移除介质盒、或以易失性或非易失性形式存储计算机可读数据的其他介质。从此类存储器读取到计算机中的软件可以在选定时刻从有形形式转换成通过介质(诸如作为电脉冲在网络、连接器、导线、或迹线之类,或作为具有比红外光更长的电磁波频谱中的波长的电磁辐射在诸如空间或大气之类的介质)传播的传输信号。图10c是表示根据上述过程设计和制造的ic3190的框,其中电路3190是根据数据结构的电路设计3180(见图10b)制造的。

前面的详细描述隔离地表示本文所述的单独的特征、结构或特性以及两个或更多此类特征、结构或特性的任何组合,使得根据本领域技术人员的知识,此类特征、结构或特性或其组合是基于本说明书作为整体,而不管此类特征、结构或特性、或其组合是否解决本文所公开的任何问题,并且不限制权利要求书的范围。当所要求保护的发明的实施例包括具体特征、结构或特性时,无论是否明确地描述,是在本领域技术人员的知识范围内结合其他实施例来使用此类特征、结构、或特性。

鉴于前面的具体实施方式,对于本领域技术人员将是明显的是,可以在本文所述的创新、实施例和/或示例的范围内做出许多变型(诸如函数和要素的布置之类)而不脱离本文所述的原理。如对于本领域技术人员将显而易见的,实施例中的一个或多个要素可以替代另一个实施例中的一个或多个要素。选择和描述本文所述的实施例是为了表示本发明的原理及其有用的应用,由此使得其他本领域的技术人员能够理解各种实施例和变型如何适于所表示的特定用途。

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

旨在通过接下来的权利要求和等效物来限定和判断所要求保护的发明的范围。以下权利要求在此并入具体实施方式中,其中每个权利要求自身作为单独的实施例。可以用比权利要求中明确记载的特征更多的特征来描述所公开的实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1