具体实施方式
本发明涉及集成电路中的时钟分布,更具体而言涉及降低集成电路中的时钟分布***消耗的功率。本发明的实施例提供了一种芯片和一种自动化芯片设计过程,用于在时钟分布***中实现谐振钟控。本发明的各方面提供了一种包括谐振结构的时钟分布***,谐振结构具有开关,开关选择性地使能和禁能谐振结构,从而得到两种操作模式:谐振模式和非谐振模式。另外,本发明的各方面减小了谐振使能/禁能开关的面积和功率开销。另外,本发明的各方面确定一种转变型式,其将时钟分布***从非谐振模式转变到谐振模式,而对时钟周期没有显著的干扰。另外,本发明的各方面修改选择性地使能和禁能时钟分布***的谐振结构的谐振使能/禁能开关的供给电压以最小化谐振使能/禁能开关的面积开销。此外,本发明的各方面使用谐振使能/禁能开关来选择性地禁能时钟分布***中的谐振结构,同时时钟分布***在没有一些被禁能的谐振结构的情况下在谐振模式中操作。
所属技术领域的技术人员知道,本发明的各个方面可以实现为***、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其他可编程数据处理装置或其他设备上以使得一系列操作步骤在该计算机、其他可编程装置或其他设备上被执行来产生计算机实现的过程,使得在该计算机或其他可编程装置上执行的指令提供用于实现流程图和/或方框图的一个或多个方框中指定的功能/动作的过程。
图1是用于实现根据本发明各方面的步骤的例示性环境10。在这种程度上,环境10包括可执行本文描述的过程的服务器或其他计算基础设施12。具体地,计算基础设施12包括计算设备14。计算设备14可驻留在网络基础设施或第三方服务提供商的计算设备上(图1中概括表示了其中任一个)。
计算设备14还包括处理器20、存储器22A、I/O接口24和总线26。存储器22A可包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及缓存存储器,缓存存储器提供对至少一些程序代码的临时存储以便减少在执行期间必须从大容量存储装置取回代码的次数。此外,计算设备包括随机访问存储器(RAM)、只读存储器(ROM)和操作***(O/S)。
计算设备14与外部I/O设备28和存储***22B通信。例如,I/O设备28可包括任何使得个体能够与计算设备14交互的设备(例如,用户界面)或者任何使得计算设备14能够利用任何类型的通信链路与一个或多个其他计算设备通信的设备。外部I/O设备/资源28例如可以是手持设备、PDA、手机、键盘,等等。
一般地,处理器20执行可存储在存储器22A和/或存储***22B中的计算机程序代码(例如,程序控件44)。另外,根据本发明的各方面,程序控件44控制执行根据本发明各方面的过程和步骤的一个或多个模块,包括设计模块105、开关大小设定模块110、转变型式模块112、栅极电压模块114、区段禁能模块116和频率调谐模块118。这些模块可作为单独的或组合的模块实现为存储器22A中存储的程序控件44中的一组或多组程序代码。此外,这些模块可实现为单独的专用处理器或者单个或若干个处理器以提供这些工具的功能。
在执行计算机程序代码的同时,处理器20可向/从存储器22A、存储***22B和/或I/O接口24读取和/或写入数据。程序代码执行本发明的过程,例如设计模块105、开关大小设定模块110、转变型式模块112、栅极电压模块114、区段禁能模块116和频率调谐模块118。另外,向/从存储器22A、存储***22B和/或I/O接口24读取和/或写入的数据可包括IC设计120、元件定义122、开关大小设定信息124、转变型式信息126、栅极电压信息128、区段禁能信息130和频率调谐信息132。总线26提供计算设备14中的每个组件之间的通信链路。
根据本发明的各方面,设计模块105是存储在例如存储器22A和/或存储***22B中的计算机程序代码,其在被处理器20执行时使得计算设备14对IC设计120的各方面进行建模和仿真。设计模块105可包括一个或多个软件或硬件模块,用于利用诸如VERILOG或VHDL之类的硬件描述语言对IC设计进行设计、建模、仿真和验证。例如,设计模块105可以是读入设计定义(例如VHDL)、物理面积约束、定时约束、功率约束、设计库信息、合成规则和操作条件的合成/布置CAD工具。利用这些各种参数,设计模块105可为IC设计中的元件迭代地确定布局。所确定的布局和关联的信息可被计算设备14存储在存储***22B中作为IC设计120。此外,基于布局信息、关于定时和功率的规则(例如,要求、约束和裕量)、元件模型和/或操作条件,设计模块105可部分或全部地对IC设计120的操作进行建模和仿真。例如,设计模块105可基于IC设计120的模型来仿真谐振钟控***的操作,包括其定时和功率消耗。
根据本发明的各方面,设计模块105可与开关大小设定模块110、转变型式模块112、栅极电压模块114、区段禁能模块116和频率调谐模块118结合使用。如下文更详细描述的,开关大小设定模块110确定使能/禁能谐振结构的开关的大小。转变型式模块112确定非谐振钟控与谐振钟控之间的转变型式。栅极电压模块114修改谐振使能开关的栅极电压。区段禁能模块116选择性地禁能时钟分布***网络的区段。频率调谐模块118选择性地调谐时钟分布***网络的区段中的组件以实现期望的谐振频率。
计算设备14可包括任何能够执行安装在其上的计算机程序代码的通用计算制品(例如,个人计算机、服务器,等等)。然而,要理解,计算设备14只是代表了可执行本文描述的过程的各种可能的等同计算设备。在这种程度上,在实施例中,由计算设备14提供的功能可由包括通用和/或专用硬件和/或计算机程序代码的任何组合的计算制品实现。在每个实施例中,可分别利用标准的编程和工程技术来创建程序代码和硬件。
类似地,计算基础设施12只是例示了用于实现本发明的各种类型的计算机基础设施。例如,在实施例中,计算基础设施12包括两个或更多个计算设备(例如,服务器集群),它们通过诸如网络、共享存储器等等之类的任何类型的通信链路通信以执行本文描述的过程。另外,在执行本文描述的过程的同时,计算基础设施12上的一个或多个计算设备可利用任何类型的通信链路与计算基础设施12外部的一个或多个其他计算设备通信。通信链路可包括有线和/或无线链路的任何组合;一种或多种类型的网络(例如,因特网、广域网、局域网、虚拟专用网,等等)的任何组合;和/或利用传输技术和协议的任何组合。
图2示出了包括示范性时钟分布***205的集成电路200的图。时钟分布***205可用于例如向集成电路200内的器件215分布时钟信号。时钟分布***205包括主时钟210、缓冲器树220、时钟网格230以及逻辑时钟缓冲器和锁存器240。主时钟210是生成用于集成电路的同步逻辑的周期性时钟信号的器件,该时钟信号通过时钟分布***205被分布到器件215。在实现中,主时钟210可包括生成时钟信号的锁相环(即PLL)。
缓冲器树220把由主时钟210提供的时钟信号分布到时钟网格230。缓冲器树220包括按层级布置的数个缓冲器(例如,重新提供动力的缓冲器)。例如,第一层级的缓冲器,例如主缓冲器222,扇出到一个或多个次级缓冲器,例如缓冲器224,然后到最终层级的叶缓冲器,例如叶缓冲器226。叶缓冲器226向时钟网格230提供时钟信号。时钟网格230的每个矩形部分形成时钟信号的一个区段,该区段可被视为一个单元。在时钟网格230的节点,例如节点235,本地时钟缓冲器和锁存器240从时钟网格230接收时钟信号并将时钟信号分布到器件,例如器件215。通过此布置,时钟分布***205以最小的偏差将时钟信号分布到集成电路的器件。
图3示出了示范性谐振钟控电路300的图。谐振钟控电路300包括时钟分布***205和谐振结构305。如上所述,时钟分布***205包括主时钟210、缓冲器树(例如,包括缓冲器222、224、226的缓冲器树220)和时钟网格230的节点235。此外,谐振结构305包括形成谐振LC电路的电容器312、314和电感器316,该谐振LC电路连接到供给电压VDD并经由节点235连接到图2的时钟网格230。
谐振钟控电路300利用包括电容器312、314和电感器316的耦合LC(电感和电容)振荡器电路提供谐振钟控。电感器316回收利用功率来用于对集成电路200的器件215进行钟控。为了例示起见,图3只图示了单个谐振结构305。然而,时钟网格230包括许多这样的谐振结构。在实施例中,谐振结构305的一个或多个实例均匀分布在时钟网格230的每个区段D11…D34的各处。虽然图3只例如示出了区段D11…D34,但应当理解,区段的数目不限于这个区段数目,而是可以包括多得多的区段。
根据本发明的各方面,谐振结构305包括开关318。谐振使能信号320激活/取消激活开关318,开关318进而又通过包括/排除谐振所必需的LC电路的电容器312、314来使能/禁能谐振结构305。虽然在图3中只对于谐振结构305示出,但应当理解,时钟网格230中的每个谐振结构可包括这种开关318来用于接收相应的谐振使能信号320,使得时钟网格230的每个矩形区段包含至少一个相应的开关318。可从例如处理器(例如处理器20)向谐振钟控电路300中的每个谐振结构305提供谐振使能信号320。
图4A是根据本发明各方面的用于确定谐振结构(例如谐振结构305)中的开关(例如开关318)的大小的示范性过程的流程图。在谐振模式期间(即,当谐振结构被激活时),当开关活动时(例如由谐振使能信号320激活),更大的开关在谐振结构(例如谐振结构305)中提供更小的电阻。更低的电阻增大谐振钟控结构的效率,这增大了谐振钟控电路(例如谐振钟控电路300)提供的功率节省。
在实现中,开关是一个或多个场效应晶体管(FET)。通过增大形成开关的FET的大小和/或通过并联链接数个FET,可以使开关的大小更大。然而,使用更大和/或更多的FET增加了非谐振模式期间(当它们未被接通时)时钟分布***中的功率消耗,因为即使当开关未用于谐振钟控时,连接到时钟分布***(例如时钟分布***205)的FET漏极/源极端子仍被充电。换言之,FET漏极/源极端子的寄生电容汲取额外的功率。另外,更大的FET也消耗了额外的硅面积。
根据本发明的各方面,确定一个或多个谐振结构(例如谐振结构305)中的开关(例如开关218)的大小以最大化从谐振钟控电路(谐振钟控电路300)得到的整体功率节省。参考图4A,在步骤405,开关大小设定模块(例如,由计算设备14执行的开关大小设定模块110)确定可用于谐振结构中的开关的最大面积开销。最大面积开销可基于开关所需的硅面积和将开关连接到时钟网格(例如网格230)所需的配线资源来确定。例如,利用电子计算机辅助设计(ECAD)应用(例如设计模块105)和集成电路的组件的模型(例如元件定义122)对集成电路设计(例如IC设计120)的元件的布局建模,可确定开关中的器件所需的集成电路芯片的硅面积和连接开关所需的配线资源。
在步骤410,开关大小设定模块获得开关的初始面积和非谐振功率开销。开关大小设定模块可从预定的设计标准(例如,IC设计120和元件定义122)和/或从来自设计工程师的输入(例如,经由由开关大小设定模块110提供的计算机-用户界面)获得此信息。例如,初始FET电感器面积和非谐振功率开销可以是1%硅面积和非谐振模式中的5%功率。
在步骤413,开关大小设定模块利用越来越大的开关对集成电路(例如IC设计120)的不同版本迭代地建模。在实施例中,开关大小设定模块可使用在集成电路的设计的预定设计裕量内(即,在IC设计120中定义的非谐振模式中的面积阈值和功率阈值内)的更大开关。在实施例中,开关大小设定模块自动地从预定的一组开关中选择更大的开关。或者,设计工程师可选择更大的开关并且将这些选择提供给开关大小设定模块(例如,经由由开关大小设定模块110提供的计算机-用户界面)。
在步骤415,对于开关大小的每次迭代,开关大小设定模块确定谐振模式中的功率节省。例如,对于更大开关大小的每次迭代,开关大小设定模块可以对包括谐振结构的谐振模式中的集成电路的操作进行仿真,并且确定与步骤410的初始开关大小相比的功率节省(或损耗)。开关大小设定模块可以记录描述开关大小和相应功率节省的信息(例如,作为存储***22B中的开关大小信息124)。
在步骤417,开关大小设定模块选择在谐振模式中提供最大功率节省的一个或多个开关大小。在实施例中,开关大小设定模块可比较在步骤415确定的每个开关的功率节省信息并且选择如下一组开关:该组开关具有与初始选择的开关大小相比在谐振中提供最大功率节省的大小。例如,开关大小设定模块可选择相对于初始开关大小被确定为消耗最少功率的一组五个开关。或者,设计工程师可审查存储的功率节省信息并选择提供最大功率节省的开关。对开关的选择可被存储来供将来参考(例如,存储为开关大小设定信息124)。
在步骤419,开关大小设定模块确定在非谐振模式中用于每个所选开关的功率量。例如,对于在步骤417中选择的开关中的一些或全部,开关大小设定模块可对集成电路的操作进行仿真并且确定在非谐振模式操作中使用的功率。为每个所选开关确定的非谐振模式功率操作可被存储来供将来参考和分析(例如,存储在开关大小设定信息中)。如上所述,在非谐振模式中,由于为开关中的每个FET对连接到时钟网络的FET节点充电的开销,更大的开关消耗更多的功率。从而,在非谐振模式中可以使用在谐振模式中从更大的开关获得的功率节省中的一些。这样,谐振模式操作中的功率节省与非谐振模式中的功率损耗之间的平衡可基于预期特定的谐振结构在任一模式中要操作多少时间来确定。
在步骤421,开关大小设定模块选择来自步骤419的在操作条件下提供最大功率节省的开关。在实现中,操作条件是预期集成电路在谐振模式中操作的时间百分比(例如45%),并且开关大小设定模块选择具有最大化整体功率降低的大小的开关。计算设备可从预定的设计标准(例如IC设计120)和/或从来自设计工程师的输入(例如,经由设计模块的计算机-用户界面)获得操作条件信息。预期集成电路在谐振模式中操作的时间百分比可基于在类似类型的芯片中使用的时钟分布***的历史信息或基于使用类似类型的芯片的***的预期工作负荷的历史信息。
图4B是根据本发明的各方面对于谐振结构中的各种开关大小图示出在谐振模式中花费的时间的比率(x轴)与开关中的FET的大小(y轴)之间的示范性比较的曲线图。从图4B可见,开关大小设定模块可以为在谐振模式中花费更大量时间的集成电路在开关(例如开关318)中选择更大的FET,因为更大的FET在谐振模式期间在连接到时钟分布***的LC电路中提供更小的电阻,从而提供更高效的集成电路。相反,对于在谐振模式中花费相对较少量时间的集成电路,开关大小设定模块可选择更小的开关,因为更小的开关在非谐振模式中具有更低的寄生电容。
图5A是根据本发明各方面的用于确定非谐振钟控与谐振钟控之间的转变型式的示范性过程的流程图。在实施例中,逐步执行从非谐振模式到谐振模式的转变以确保对时钟信号的周期的干扰最小化。在实现中,转变型式是通过优化步阶的持续时间(例如缩短或增长)来确定的,这对应于在谐振和非谐振模式之间的转变期间将谐振能量包括到时钟分布***中或从时钟分布***中去除谐振能量。
根据本发明的各方面,转变型式由每个谐振结构(例如谐振结构305)中的开关(例如开关318)控制,其中这些开关可被控制来逐步地允许更多或更少电流。在实现中,开关包括并联连接的数个FET,使得在开关内逐步激活每个额外的FET将递增地增大为谐振结构馈给的FET的源极和漏极之间的总能量流动。在这种实现中,转变型式中包括的转变增量(即步阶)的数目可基于谐振结构的开关中包括的FET的数目、控制集成电路内的每个转变增量所需的布线资源以及每个个体转变增量对应的整个开关大小的百分比。例如,转变型式由利用可编程开关实现的从不导通状态到完全导通状态的逐渐转变构成。
参考图5A,在步骤505,转变型式模块(例如,由计算设备14执行的转变型式模块112)获得包括谐振钟控电路(例如谐振钟控电路300)的集成电路(例如集成电路200)能够容忍的最大周期缩短或周期增长值。在实现中,转变型式模块可从用于集成电路设计(例如IC设计120)的预定设计参数取回最大周期缩短/增长值。集成电路设计可包括定时约束,其中包括预期时钟周期和从预期时钟周期的允许偏离量。例如,如果预期时钟周期是250皮秒(ps),则时钟周期的4%缩短对应于10ps。或者,设计工程师可向转变型式模块提供最大周期缩短或周期增长值(例如,经由由转变型式模块112提供的计算机-用户界面)。
在步骤510,转变型式模块确定谐振结构(例如谐振结构305)的关断状态与接通状态之间可能的转变数目。在实现中,该转变数目对应于可编程开关(例如开关318)中包括的增量(即步阶)。转变型式模块可从描述开关的信息(例如,在步骤421确定的开关大小设定信息124)和/或从来自设计工程师的输入(例如,经由转变型式模块的计算机-用户界面)获得此信息。例如,开关可包括八个FET,它们可由控制器(例如处理器20)分别激活以在转变型式中提供八个离散步阶。
在步骤515,转变型式模块获得可用于完成转变型式的总转变时间。此总转变时间是对***的约束并且是由设计工程师设定的。总转变时间的值可预先确定并存储在设计规格(例如IC设计120)中。
在步骤520,转变型式模块确定每个转变增量的长度。在实现中,转变型式模块通过用总转变时间(来自步骤515)除以总转变数目(来自步骤510)来为每个增量确定初始转变长度。从而,在使用具有数个FET的开关的实现中,每个转变增量的长度对应于开关中的FET的总数。
在步骤525,转变型式模块最小化转变时间。在实施例中,转变型式模块通过在确保所有步阶的周期缩短和增长保持在步骤505中确定的值以下的同时设定转变型式的每个增量,来优化转变型式以最小化总转变时间。每步阶(向谐振模式中的转变)的最优宽度优选随着时间超线性地增长。这样,每个相继的增量均匀地将谐振能量引入到网格中,这最小化了任何一个增量中的时钟干扰。
转变型式模块确定在非谐振模式与谐振模式之间(即,从谐振模式到非谐振模式,或者从非谐振模式到谐振模式)改变所需的总时间。在实施例中,转变型式模块使在转变型式的步阶数上转变最大值的缩短最大化。或者,转变型式模块最小化总转变时间和总周期缩短/增长或最大周期缩短/增长两者。
在步骤530,转变型式模块记录所确定的转变型式。例如,转变型式可被记录为转变型式信息(例如转变型式信息126)。可以向根据包括谐振钟控电路(例如谐振钟控电路300)的设计(例如IC设计120)产生的集成电路(例如集成电路200)提供转变型式信息的拷贝以用于控制谐振与非谐振模式之间的切换。例如,集成电路可以是包括存储所确定的转变型式信息的拷贝的非易失性存储器的片上***。
图5B示出了根据本发明各方面的用于实现递增转变的示范性开关540。在实施例中,开关540包括一个或多个FET542。描述物理大小(即,芯片面积)、性能特性(例如源极-漏极电阻)和约束(例如电压容差阈值)的信息可被存储在一个或多个FET模型中(例如作为元件定义122存储在存储***22B中)。FET542的栅极可由集成电路(例如集成电路200)中包括的控制器分别控制以根据所确定的转变型式信息激活每个FET542。开关中包括的FET542的数目可受开关540的大小所限制,如上文联系图4A和4B所述。例如,图5B中的开关具有七个FET542。开关540可用作图3中的开关318。
图5C描绘了根据本发明实施例的用于实现递增转变的示范性开关器件545。开关器件545包括多个步阶,例如步阶1410、1420、1430、1440、1450、1460。在步阶1410中,反相器1413接收谐振模式(RES_MODE)信号,并且反相器1414接收使能(EN_1)信号。或门1411接收反相的谐振模式信号和反相的使能信号作为输入并将其输出提供到开关组件1415中的PFET的栅极。与门1412接收谐振模式信号和使能信号并将输出提供到开关组件1415中的NFET的栅极。
如果谐振模式信号被取消断言(低)并且使能信号EN_1被取消断言(低),则或门1411的输出为高并且与门1412的输出为低,在此情况下开关组件1415的PFET和NFET两者都处于关断状态。如果谐振模式信号被取消断言(低)并且使能信号EN_1被断言(高),则或门1411的输出为高并且与门1412的输出为低,在此情况下开关组件1415的PFET和NFET两者都处于关断状态。如果谐振模式信号被断言(高)并且使能信号EN_1被取消断言(低),则或门1411的输出为高并且与门1412的输出为低,在此情况下开关组件1415的PFET和NFET两者都处于关断状态。如果谐振模式信号被断言并且使能信号EN_1被断言,则或门1411的输出为低并且与门1412的输出为高,在此情况下开关组件1415的PFET和NFET两者都处于接通状态。从而,当谐振模式信号被断言并且使能信号EN_1被断言时,开关组件1415被接通。
当步阶1410接通开关组件1415时,电流经过电感器1402(与电感器316类似)和开关组件1415流入时钟网格(例如时钟网格230)中。可以按类似的方式控制步阶1420、1430、1440、1450、1460。从而,控制逻辑(例如,来自区段禁能模块116或区段禁能模块116)可通过断言使能信号EN_1,EN_2,EN_3…EN_16来递增地接通开关器件545。开关器件545的接通因此是完全可编程的。随着控制逻辑使能每个步阶(例如,步阶1410、1420、1430、1440、1450和1460),开关器件545的导通性增大并且电阻减小。值得注意的是,步阶1410、1420、1430、1440、1450和1460具有1、2、4、8、16和32的大小。例如,步阶1410具有等于1的步长,步阶1420具有等于2的步长,步阶1430具有等于4的步长,步阶1440具有等于8的步长,步阶1450具有等于16的步长,并且步阶1460具有等于32的步长。这些大小是示范性的,并且对于步阶中的一个或多个可以使用其他大小。
图5D是图示根据本发明各方面的示范性转变方案的曲线图。图示的转变型式可表示如图5A中所述由转变型式模块在步骤530记录的那个。曲线图的x轴表示时间。y轴表示谐振结构的开关中被接通的FET占总数的百分比,其中“0.2”表示开关被部分接通,“1”表示开关被完全接通。图5D中绘出的线550描绘了在不同时间接通的总FET的百分比。接通的FET的百分比对应于当开关中的FET被激活时开关的导通率。
图5B、5C和5D是示范性的,而本发明的实施例不限于这些示例中例示的特定开关或转变型式。不同的开关可添加不同量的导通率并且具有不同的转变型式。另外,图5A、5B、5C和5D描述了一种数字实施例,其中通过递增地添加FET来增大开关携带的功率。然而,本发明的实施例可改为是模拟的,其中随着时间的流逝连续地增大单个FET的栅极电压。
图6是根据本发明实施例的用于修改谐振使能开关的栅极电压的示范性过程的流程图。在集成电路面积的使用中的更高面积效率可通过在谐振结构(例如谐振结构305)中使用更小的开关(例如开关318)和高于标称供给电压(例如VDD)的栅极电压来实现。这是可能的,因为当开关完全接通(例如FET被激活)并且其电容器(例如电容器312、314)被充电时,源极和漏极处的电压基本上保持为开关的供给电压的值的一半(例如VDD/2)。从而,在开关的栅极上可维持更高的电压,而不超过开关的关于栅极到源极或栅极到漏极电势的可靠性容差。这样,在开关是场效应晶体管(FET)的实现方式中,可向FET的栅极提供大于供给电压的电压(即,谐振使能信号的电压大于VDD)。向栅极施加增大的电压进而允许了使用具有比较大的FET的电流携带能力的更小FET。因此,本发明的实现方式增大了FET的大小,而不超过空间限制(即,芯片面积阈值)并且不超过非谐振模式中的功率阈值。
参考图6,在步骤605,栅极电压模块(例如,由计算设备14执行的栅极电压模块114)为谐振模式开关确定初始栅极电压(例如VDD)。在步骤610,栅极电压模块为开关确定最大电压容差。栅极电压模块可根据预定的设计标准(例如IC设计120)、开关的FET的预定器件信息(例如,在元件定义122中)和/或根据来自设计工程师的输入(例如,经由栅极电压模块的计算机-用户界面)来确定此信息。例如,FET栅极电压的基于可靠性的容差(例如,关于SOI的)可被规定为Vgate–Vsource/drain。
在步骤615,栅极电压模块为开关选择大于在步骤605确定的供给电压并且小于在步骤610确定的最大电压容差的栅极电压。栅极电压模块可根据预定的设计标准(例如,存储在元件定义122中)和/或根据来自设计工程师的输入(例如,经由设计模块的计算机-用户界面)来选择栅极电压。所选择的栅极电压值可被存储为栅极电压信息(例如,存储在栅极电压信息128中)。基于所确定的栅极电压信息,可以修改集成电路设计(例如IC设计120)信息以向开关提供所选的电压。在实施例中,利用电荷泵或类似的电路来提供开关的栅极处的增大的电压。
图7A是根据本发明各方面的用于选择性地禁能谐振钟控电路的区段的示范性过程的流程图。由于制造差异和/或缺陷,集成电路中的谐振结构中的一些可能不是像设计的那样工作。例如,一些电容器(例如电容器312、314)可能被形成地有缺陷,结果,它们作为其一部分的谐振结构(例如谐振结构305)可能不会适当地工作。然而,因为根据本发明的各方面,谐振结构可分布在整个集成电路各处,所以集成电路包括冗余的谐振结构。因此,失去一些个体谐振结构是可容忍的。即使如此,负载的差异也会使整个谐振钟控电路的一些区段比其他区段对这种缺陷更敏感。因此,在节点(例如节点235)处可发生偏差、回转(slew)或周期压缩并且导致谐振钟控电路的故障。例如,本地负载的差别可使得谐振模式中的时钟电路对于特定的电感器和电容器对的存在尤其敏感。如果谐振电路内的这些电容器在集成电路被制造出来以后被发现是有缺陷的,则为了安全的操作,不应当在谐振模式中操作集成电路。
根据本发明的各方面,针对个体谐振结构(例如谐振结构305)分析时钟分布***(例如时钟分布***205)的敏感性以确定任何特定谐振结构的失去是否会损害集成电路在谐振模式中运行的能力。如果任何这种个体谐振结构确实存在并且随后在硬件测试期间被发现有缺陷,则集成电路被识别为不能在谐振模式中运行。
参考图7A,在步骤705,对于时钟网格(例如时钟网格230)的每个区段(例如,D11…D34),区段禁能模块(例如,由计算设备14执行的区段禁能模块116)取消激活该区段中的谐振电路(在每个区段有多于一个谐振电路的情况下)。例如,区段禁能模块可控制谐振使能/禁能开关(例如开关318)以取消激活所选的谐振结构(例如,区段D11中的谐振结构305)。
在步骤708,区段禁能模块确定当在所选区段被取消激活的情况下操作时时钟分布***的性能。在实现中,性能的参数包括偏差、回转、周期压缩。所确定的参数可与所选区段的标识符相关联地被存储为区段禁能信息(例如,作为区段禁能信息130存储在存储***22B中)。区段禁能模块可确定在谐振模式中稳态执行时和从非谐振模式转变到谐振模式以及从谐振模式转变到非谐振模式时的时钟分布***的性能参数。此评估可通过对集成电路设计(例如IC设计120)的仿真来执行或者通过对例如集成电路的硬件测试来执行。
在步骤711,区段禁能模块确定在步骤708确定的性能(例如,偏差、回转和/或周期压缩)是否在设计约束内。在实施例中,区段禁能模块将区段禁能信息中存储的性能参数与集成电路设计(例如IC设计120)中包括的相应约束相比较。如果确定性能参数违反了集成电路的设计参数的约束,则在步骤714,关于被取消激活的区段的信息被记录在区段禁能信息中的修复可能性的表格(即,“修复可能性表”)中,指出被取消激活的区段必须正常工作。例如,如果确定性能在设计约束之外,则在步骤714,区段禁能模块在修复可能性表中为该区段记录“0”。
如果确定性能参数没有违反集成电路的设计参数的约束,则在步骤717,在区段禁能信息中的修复可能性表中记录信息,指出被取消激活的区段不是必须要正常工作。例如,如果确定性能在设计约束内,则在步骤717,区段禁能模块在修复可能性表中为该区段记录“1”。在步骤720,区段禁能模块确定是否为谐振钟控电路的所有区段(例如,D11…D34)完成了步骤705…717。如果否,则过程返回到步骤705并且对于下一个未测试的区段重复。
在步骤725,区段禁能模块确定在谐振钟控电路内是否存在故障谐振结构。例如,对集成电路的台架测试可确定特定谐振结构中的一电容器由于制造缺陷而没有适当地充电和/或放电。如果集成电路不包括故障谐振结构,则在步骤726,区段禁能模块与该集成电路相关联地记录信息,指出可在谐振模式中操作该特定集成电路。
如果确定在集成电路中有故障谐振电路,则在步骤728,基于在步骤714和717中记录的评估信息来确定是否可能修复。如果关于包括故障谐振电路的区段的相应信息指出该区段不是必须要正常工作(例如,在修复可能性表的相应单元中记录了“1”),则在步骤726,区段禁能模块与集成电路相关联地记录指出可在谐振模式中操作该特定集成电路的信息。否则,如果关于包括故障谐振结构的区段的相应信息指出区段必须正常工作(例如,在修复可能性表的相应单元中记录了“0”),则在步骤730,区段禁能模块与集成电路相关联地记录指出不应当在谐振模式中操作该特定集成电路的信息。
图7B是图示根据本发明各方面的谐振钟控电路的示范性修复可能性表700的数据结构。在实现中,修复可能性表700是单元的矩阵,其中每个单元对应于谐振钟控电路(例如谐振钟控电路300)的时钟网格(例如时钟网格305)的一个区段。每个单元中存储的值指出相应区段中的(一个或多个)谐振结构是否必须正常工作(例如“0”或“1”)。修复可能性表700被描绘为单元的矩阵,然而,本发明的实现方式不限于此示例,而也可改为使用其他结构(例如,将每个区段映射到相应的修复可能性值的2xN表格)。例如,表700指出,当从谐振操作中禁能区段D23和D31(其包含0)时,不能在谐振模式中安全地操作集成电路。
图8是根据本发明各方面的用于选择性地调谐谐振钟控电路(例如谐振钟控电路300)的频率的示范性过程的流程图。谐振频率作为电容(C)和电感(L)的乘积的平方根的倒数变化。因此,如果谐振LC回路中的电容器(例如电容器312、314)和电感器(例如电感器316)是并联布置的,就像它们在例如图3中所示的谐振电路中那样,则更少的电感器和电容器导致更大的C和L,并从而导致更低的谐振频率。在给定的一组电感器和电容器和时钟网格(例如时钟网格230)上的负载的情况下,本发明的各方面禁能所选的谐振结构(例如谐振结构305),并从而改变时钟网格的谐振频率以提高在特定操作频率下谐振钟控电路的功率效率。例如,可以选择性地使能谐振电路的特定集合或型式(例如“棋盘”型式)以提高特定操作频率下谐振钟控电路的功率效率。
参考图8,在步骤805,频率调谐模块(例如,由计算设备14执行的频率调谐模块118)取消激活时钟网格(例如时钟网格230)的所选区段(例如区段D11…D34)。在实现中,作为初始方案,频率调谐模块以某种型式取消激活时钟网格的预定区段。例如,初始方案可以以棋盘型式取消激活区段。预定的区段(或区段型式)可被存储在频率调谐信息(例如,存储***22B中存储的频率调谐信息132)中。
在步骤807,频率调谐模块确定在所选区段被取消激活的情况下谐振钟控电路的谐振频率。对于由取消激活的区段引起的谐振频率的确定可通过利用例如ECAD应用(例如设计模块105)对集成电路进行仿真来进行。额外地或替换地,对于由取消激活的区段引起的谐振频率的确定可通过对制造的集成电路的硬件测试来进行。
在步骤810,频率调谐模块确定取消激活的区段是否导致期望的时钟频率。频率调谐模块可从预定的设计信息(例如IC设计120)获得期望的时钟频率,或者此信息可存储在频率调谐信息中。或者,设计工程师可提供期望的时钟频率(例如,经由由频率调谐模块提供的计算机-用户界面)。
如果在步骤810,频率调谐模块确定时钟网格的当前取消激活的区段导致谐振钟控电路在与期望频率基本相同的谐振频率下操作,则在步骤815,描述当前取消激活的区段的信息被记录在频率调谐信息中。此信息可被处理器(例如处理器20)用于控制所选结构中的开关(例如开关318)并从而控制集成电路在由频率调谐模块确定的谐振频率下工作。
如果在步骤810,频率调谐模块确定时钟网格的当前取消激活的区段没有导致谐振钟控电路在与期望频率基本相同的谐振频率下操作,则在步骤817,频率调谐模块修改先前在步骤805取消激活的区段并且过程迭代地返回到步骤807。在实现中,修改区段包括迭代地使能或禁能先前的被取消激活的区段的集合中的区段中的一个或多个。或者,修改区段包括选择不同的预定区段型式,其与先前选择的型式具有被取消激活的区段的不同密度。
图9是根据本发明各方面的半导体设计、制造和/或测试中使用的设计过程的流程图。图9示出了用在例如半导体IC逻辑设计、仿真、测试、布局和制造中的示范性设计流程900的框图。设计流程900包括用于处理设计结构或器件以生成上文描述和图2、3、和5B中示出的设计结构和/或器件的在逻辑上或以其他方式在功能上等同的表示的过程、机器和/或机制。由设计流程900处理和/或生成的设计结构可被编码在机器可读传输或存储介质上以包括数据和/或指令,所述数据和/或指令当在数据处理***上被执行或以其他方式处理时生成硬件组件、电路、器件或***的在逻辑上、结构上、机械上或以其他方式在功能上等同的表示。机器包括但不限于在IC设计过程——例如设计、制造或仿真电路、组件、器件或***——中使用的任何机器。例如,机器可包括:光刻机器、用于生成掩模的机器和/或装备(例如,电子束写入器)、用于仿真设计结构的计算机或装备、制造或测试过程中使用的任何装置、或者用于将设计结构的功能上等同的表示编程到任何介质中的任何机器(例如,用于对可编程门阵列编程的机器)。
设计流程900可依据所设计的表示的类型而变化。例如,用于构建专用IC(ASIC)的设计流程900可不同于用于设计标准组件的设计流程900或者不同于用于将设计具现化到可编程阵列中的设计流程900,其中可编程阵列例如是由Inc.或Inc.提供的可编程门阵列(PGA)或现场可编程门阵列(FPGA)。
图9图示了多个这种设计结构,其中包括优选由设计过程910处理的输入设计结构920。设计结构920可以是由设计过程910生成和处理来产生硬件器件的逻辑上等同的功能表示的逻辑仿真设计结构。设计结构920可以额外或替换地包括在被设计过程910处理时生成硬件器件的物理结构的功能表示的数据和/或程序指令。无论是表示功能还是结构设计特征,设计结构920都可利用例如由核开发者/设计者实现的电子计算机辅助设计(ECAD)来生成。当被编码在机器可读数据传输、门阵列或存储介质上时,设计结构920可被设计过程910内的一个或多个硬件和/或软件模块访问和处理以仿真或以其他方式从功能上表示电子组件、电路、电子或逻辑模块、装置、器件或***,例如图2、3和5B中所示的那些。这样,设计结构920可包括文件或其他数据结构,其中包括人类和/或机器可读源代码、编译的结构和计算机可执行代码结构,它们在被设计或仿真数据处理***所处理时从功能上仿真或以其他方式表示电路或其他级别的硬件逻辑设计。这种数据结构可包括硬件描述语言(HDL)设计实体或者符合和/或兼容诸如Verilog和VHDL之类的更低级别HDL设计语言和/或诸如C或C++之类的更高级别设计语言的其他数据结构。
设计过程910优选采用并包含硬件和/或软件模块,用于合成、转化或以其他方式处理图2、3和5B中所示的组件、电路、器件或逻辑结构的设计/仿真功能等同物,以生成可包含诸如设计结构920之类的设计结构的网表980。网表980例如可包括编译的或以其他方式处理的数据结构,这些数据结构表示导线、分立组件、逻辑门、控制电路、I/O器件、模型等等的列表,该列表描述了与集成电路设计中的其他元件和电路的连接。网表980可利用迭代过程来合成,其中依据器件的设计规格和参数,网表980被再合成一次或多次。与本文描述的其他设计结构类型一样,网表980可被记录在机器可读数据存储介质上或编程到可编程门阵列中。介质可以是非易失性存储介质,例如磁盘或光盘驱动器、可编程门阵列、紧凑式闪存或其他闪存存储器。额外地,或者替换地,介质可以是***或缓存存储器、缓冲器空间或者导电或导光的器件和材料,数据包可经由因特网或其他适于联网的手段在这些器件和材料上传输并立即被存储。
设计过程910可包括用于处理包括网表980在内的多种输入数据结构类型的硬件和软件模块。这种数据结构类型可驻留在例如库元件930内并且包括一组常用的元件、电路和器件,其中包括模型、布局和符号表示,用于给定的制造技术(例如,不同的技术节点、32nm、45nm、90nm,等等)。数据结构类型还可包括设计规格940、表征数据950、验证数据960、设计规则970和测试数据文件985,测试数据文件985可包括输入测试型式、输出测试型式和其他测试信息。设计过程910还可包括例如标准机械设计过程,比如应力分析、热分析、机械事件仿真、对于诸如浇铸、模塑、模具冲压成型等等之类的操作的过程仿真。机械设计领域的普通技术人员可以明白在不脱离本发明的范围和精神的情况下在设计过程910中使用的可能机械设计工具和应用的程度。设计过程910还可包括用于执行诸如定时分析、验证、设计规则检查、布置和布线操作等等之类的标准电路设计过程的模块。
设计过程910采用并包含诸如HDL编译器和仿真模型构建工具之类的逻辑和物理设计工具来将设计结构920与所描绘的支持数据结构中的一些或全部一起连同任何额外的机械设计或数据(如果适用的话)来加以处理,以生成第二设计结构990。
设计结构990以用于机械器件和结构的数据交换的数据格式驻留在存储介质或可编程门阵列上(例如,以IGES、DXF、Parasolid XT、JT、DRG或者任何其他用于存储或渲染这种机械设计结构的适当格式存储的信息)。与设计结构920类似,设计结构990优选包括一个或多个文件、数据结构或其他计算机编码的数据或指令,它们驻留在传输或数据存储介质上,并且当被ECAD***处理时生成图2、3和5B中示出的本发明的一个或多个实施例的在逻辑上或以其他方式在功能上等同的形式。在一个实施例中,设计结构990可包括在功能上仿真图2、3和5B中所示的器件的经编译的可执行HDL仿真模型。
设计结构990也可采用用于集成电路的布局数据交换的数据格式和/或符号数据格式(例如,以GDSII(GDS2)、GL1、OASIS、映射文件或者任何其他用于存储这种设计数据结构的适当格式存储的信息)。设计结构990可包括诸如以下信息:符号数据、映射文件、测试数据文件、设计内容文件、制造数据、布局参数、导线、金属级别、过孔、形状、用于按某种路径经过制造线的数据、以及制造者或其他设计者/开发者为了产生如上文所述和图2、3和5B中所示的器件或结构而需要的任何其他数据。设计结构990随后可前往阶段995,在该处,例如,设计结构990:前往流片,被释放到制造,被释放到掩模公司,被发送到另一设计公司,被发送回客户,等等。
如上所述的方法用于集成电路芯片的制作。所得到的集成电路芯片可被制作者以空白晶片的形式发行(即,作为具有多个未封装芯片的单个晶片)、作为裸片发行或者以封装形式发行。在后一种情况下,芯片被安装在单芯片封装中(例如塑料载体,具有附接到主板或其他更高级载体的引线)或安装在多芯片封装中(例如陶瓷载体,其具有表面互连或隐埋互连中的任一者或两者)。在任何情况下,芯片随后与其他芯片、分立电路元件和/或其他信号处理器件集成为(a)中间产品(例如主板)或(b)最终产品的一部分。最终产品可以是包括集成电路芯片的任何产品,从玩具和其他低端应用到具有显示器、键盘或其他输入设备和中央处理器的高级计算机产品不等。
对本发明的各种实施例的描述是为了例示而给出的,但并不打算是穷尽的或者限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,本领域普通技术人员将清楚许多修改和变化。选择本文使用的术语是为了最好地说明实施例的原理、实际应用或者相对于市场中存在的技术的技术改进,或者使得本领域普通技术人员能够理解本文公开的实施例。