背景技术
复杂的硬件盘片通常包括数百万个晶体管。电路设计者通常利用计算机辅助设计程序来辅助他们的设计过程。一旦设计者已完成电路的概念设计,则存在多种可以执行的优化。
例如,对于低功率设计,通常添加逻辑元件使其他元件,当不需要它们时不进行操作,这通常是有用的。
现在参考图1A和图1B,它们示出了对于低功率操作可能发生的改变。图1A示出第一电路10,其具有触发器12。如同所有触发器,触发器12由时钟信号CLK控制。当时钟信号CLK变为高,则触发器12输出由其输入I计算得来的值Q,该输入I可以是逻辑电路14的函数,而该输入I又可以是多个输入(示出了a、b和c)的函数。触发器12将执行计算,而不考虑输入I是否变化。当涉及确定如何最小化其电路的功率消耗时,电路设计者可以检查触发器的活动性并可以“门控”那些他所知道在给定的特定情形下将不会改变值的触发器。为此,设计者可以添加线路以断开对该触发器的时钟输入。
这种改变在图1B中示出。在现在标记为10’的电路中,触发器12如逻辑电路14一样保留,但是触发器12的时钟信号已经改变。该时钟信号,标记为GCLK,现在是仅当时钟信号CLK和使能信号EN两者都激活时才激活的门控时钟信号。门控时钟信号GCLK由门16产生。这种在单独的触发器上执行的时钟门控被称为“细粒度(finegrained)”时钟门控。
用于时钟门控的另一方法被称为“粗粒度(coarse grained)”时钟门控。在粗粒度时钟门控下,使用相同的时钟门控函数关断大量触发器,以此提供功率使用量的显著降低。例如,作为单一单元操作的电路部分,诸如浮点单元,可以被时钟门控。
对于时钟门控的其他候选并不总是如此容易确定。另外,确定电路应当何时被门控的逻辑函数由逻辑门加以实现,诸如触发器。如果该逻辑函数与待门控电路相比是复杂的(即,其比被关断的电路具有更多的门),则该时钟门控极少节省,甚至不节省功率。
下文讨论自动时钟门控方法:
1997欧洲设计与测试会议,L.Benini,G.De Micheli,E.Macii,M.Poncino,R.Scarsi,“Symbolic Synthesis of Clocking-Gating Logic forPower Optimization of Control-Oriented Synchronous Networks”;1996年IFIP逻辑与结构合成国际研讨会会议文集,F.Theeuwen,E.Seelen的“Power Reduction through Clock Gating by SymbolicManipulation”。
1999年VLSI设计第十二次国际会议会议文集,N.Raghavan,V.Akella,S.Bakshi,“Automatic Insertion of Gated Clocks at RegisterTransfer Level”;以及T.Lang,E.Musoll,J.Cortadella,″IndividualFlip-Flops with Gated Clocks for Low Power Datapaths″,IEEETransactions on Circuits and Systems-II:Analog and Digital SignalProcessing,Vol.44,No.6,1997年6月。
发明内容
本发明的一些方面提供了用于寻找多周期时钟门控机会的方法,以及在随附的权利要求书中对其做出了定义,现在将参考这些内容。
因此,根据本发明优选实施方式,提供了具有多周期时钟门控器以及电路设计更新器的单元。多周期时钟门控器可以产生电路设计的数据锁存器件的多周期门控组。电路设计更新器可以以选定的多周期门控组来更新电路设计。
另外,根据本发明的优选实施方式,每个门控组可以与单一门控函数相关联。对于每个门控组,可以以门控函数来门控门控组的第0级数据锁存器件,以及可以以门控函数的第i级锁存的版本来门控门控函数的第i级数据锁存器件。
另外,根据本发明的优选实施方式,数据锁存器件可以是触发器或锁存器。
进一步,根据本发明的第一优选实施方式,多周期时钟门控器包括指示符信号发生器,展开器(unfolder)以及门控函数确定器。指示符信号发生器可以创建指示符信号用于标识其中输入电路设计的数据锁存器件的值不发生改变的条件。展开器可以以指示符信号多k次地展开电路,并且门控函数确定器可以从至少已展开的指示符信号确定用于多个数据锁存器件的多个候选门控函数。
更进一步,根据本发明的第一优选实施方式,门控函数确定器包括二进制决策图运算器用于建立一并“与”运算的已展开指示符信号的二进制决策图(BDD)X,用于在值不变化处生成X的BDD Y,对于每个时间戳k,去除其输入并非来自第k个周期的BDD Yk的变量。
另外,根据本发明的第二优选实施方式,多周期时钟门控器包括电路检查器、门控函数确定器以及组发生器。电路检查器可以寻找电路中仅依赖输入周期的数据锁存器件的组G。门控函数确定器可以确定组G中共享第j个门控函数Fj的数据锁存器件的组Hj,以及组发生器可以对于每个组Hj,添加电路中从组Hj的现有数据锁存器件接收输入的数据锁存器件。
进一步,根据本发明的第二优选实施方式,组发生器包括0级定义器以及非0级定义器,对于每个初始组Hj,0级定义器用于将其中的数据锁存器件定义为0级数据锁存器件;对于每个第i级,非0级定义器用于,如果电路的某个数据锁存器件仅依赖于已经出现在组Hj中的i级数据锁存器件,则将该数据锁存器件添加至组Hj中作为i+1级数据锁存器件。
最后,根据本发明的优选实施方式,本发明并入由多周期时钟门控器以及电路设计更新器实现的方法。
具体实施方式
在下文的详细描述中,描述了许多具体细节以便提供对于本发明的完全理解。然而,本领域技术人员应该理解,本发明可以不具备这些特定细节而得以实施。在其他的举例中,并未详细描述公知方法、过程和组件从而避免模糊本发明。
除了特别说明之外,应该理解,利用了诸如“过程”、“计算”、“运算”、“确定”等术语的讨论代指计算机、计算系统或类似电子计算设备中用于对表现为计算系统的寄存器和/或存储器内的诸如电子之类的物理量的数据进行操作和/或将其变换为类似地表现为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备内的物理量的数据的动作和/或过程。
本文所述的过程和显示并不固有地涉及任何特定计算机或其他设备。另外,本发明的实施方式并非参考任何特定编程语言而描述。应该理解,可以使用各种编程语言来实现如本文所述的本发明的教导。
申请人已认识到存在这样的情形,其中能够以锁存的形式使用对于特定触发器的时钟门控函数作为对于至少一个其他触发器的时钟门控函数。这可以称为“多周期”时钟门控因为其可以包括使用相同、可能锁存的时钟门控函数的触发器的多个周期。
应该理解,以本发明的多周期门控组,电路的不同数据锁存器件在不同时间打开/关断,而不是一并关断一整段设计。
应该理解多周期门控组还可以门控数据锁存器件的“数据依赖”状态,其中数据依赖状态可以定义为当数据锁存器件的输出不仅依赖于输入值而且依赖于数据输入值时的状态。数据独立状态是那些其中无论数据输入如何数据锁存器件的输出都相同的状态。例如,对于简单输入函数,诸如(如果EN=1则f(A,B,C)否则为Q),当输出Q的值不变时存在两种情况:1)当EN=0;2)当EN=1以及f(A,B,C)=Q。第一种情况不依赖任何输入值A、B或C,并因此是数据独立的。第二种情况由于依赖输入值A、B或C,其是数据依赖的。
现在参考图2,其示出了降低功率的、电路检查器18。检查器18可以包括新颖的、多周期时钟门控器20以及电路更新器22。多周期时钟门控器20可以检查输入电路设计R用于寻找可能的、多周期、时钟门控机会并产生逻辑函数用于控制时钟门。电路更新器22可以与诸如电路设计者的用户交互,用于确定用户希望实施哪些可能的机会,并能够以选定的时钟门和与它们关联的逻辑来更新电路设计R。结果可以是更新的、更低功率的设计R’。
多周期时钟门控器20可以产生时钟门控逻辑函数,该函数可以用于多个周期,因此允许了用于时钟门控的更大函数(即具有更多的门)和/或降低了开销。
可以通过将电路作为整体考虑来操作多周期时钟门控器20,而不是基于其操作将电路划分为多个单元。现在参考图3,其示出了时钟门控器20所执行的方法,以及参考图4A、图4B和图4C,其有助于理解图3的方法的步骤。
初始地,时钟门控器20可以检查设计R用于识别(步骤24)其中的触发器、锁存器或其他数据锁存器件。其余的讨论将使用术语“触发器”,如图4中所示。然而,应该理解本发明对于所有类型的数据锁存器件均可操作。
在步骤25,时钟门控器20可以确定哪个使能信号控制哪个触发器,并可以据此对触发器分组。应理解,并非所有触发器都可以由使能信号控制,并且并非所有使能信号都可以用于门控。某些使能信号可以控制附近具有反馈回路的触发器。此种使能信号可以转换为使用在2005年12月7日提交的序列号为No.11/295936的、授予本发明共同受让人的美国专利申请“Clock Gating Through DataIndependent Logic”所描述方法的不同使能信号,该文献的公开内容通过引用并入本文。
对于每个如此确定的(如循环23中所检查的)使能信号,时钟门控器20可以继而临时增加逻辑(步骤26),该逻辑可以识别条件,在该条件下电路中由当前使能信号使能的触发器、或未分配给任何使能信号的触发器的值均不发生变化。例如,图4A示出待分析电路30。电路30具有五个输入x1,x2,x3,x4和x5以及三个触发器FF-1,FF-2和FF-3。电路30还具有组合逻辑32-1、32-2和32-3,其中逻辑32-1和32-3馈送触发器FF-1和FF-3,并且逻辑32-2将触发器FF-1和FF-3的输出组合以馈送到触发器FF-2。
图4B示出了在增加了分别与触发器FF-1,FF-2和FF-3相关联的临时逻辑34-1、34-2和34-3之后的电路,此处标号为30’。在本示例中,每个额外逻辑34-i(对于i=1,...,N,其中N是电路30中触发器的数目)可以是XOR门,其接收其所关联的触发器FF-i的输入A和输出B。XOR 34-i的输出信号可以是指示符信号pi,并且当其所关联的触发器FF-i的输入A和输出B不相同时其值为1,并且当输入A和输出B相同时其值为0。因此,指示符信号pi可以指示触发器FF-i何时改变值以及何时其未改变。时钟门控器20可以增加额外逻辑34-i(即,图4B中举例中的XOR)到RTL逻辑描述。
回到图3,在步骤40,时钟门控器20可以K步骤地“展开”电路30’,其中K是感兴趣逻辑的深度。例如,K可以定义为从芯片输入到芯片输出、或从芯片的某分段输入到其输出的最长路径中触发器的数目。在图4的示例中,K可以是2,由于只有两级触发器(第一级的FF-1和FF-3以及第二级的FF-2)。
“展开”可以是对于每k次虚拟制作电路30’副本的过程。2003年CHARME给出的,作者为R.Tzoref,M.Matusevich,E.Berger,I.Beer,题目为“An Optimized Symbolic Bounded Model CheckingEngine”的文章讨论了在符号模型检验器内的展开过程。
图4C示出了示例性电路30’对于周期1和2的展开。每个输入信号被记录有时间戳,如同指示符信号pi所记录的时间戳。例如,图4C对于两个周期,周期1和周期2,具有输入信号x1的两个副本(x11,x12)并且存在指示符信号p3的两个副本(p31,p32)。
返回图3,时钟门控器20可以继而建立(步骤42)二进制决策图(BDD)X,其表示一并“与”运算的已展开指示符信号pik。二进制决策图(BDD)通常是布尔表达式的简明表示,并一般用于符号模型检验,尤其是复杂硬件的检验。
简略地,BDD是表示布尔表达式的有向无环图。现在简略对图5进行参考,图5中示出了表达式((A&B&C)|(C&D))的示例性BDD,其中“&”代表“AND(与)并且“|”代表“OR(或)”。每个周期(或节点)指示变量(A,B,C,D),并且线指示当变量评估为FALSE(假)(左边)或TRUE(真)(右边)时接下来遵循的方向。叶节点51表示布尔表达式的值。
因此,在步骤42,时钟门控器20可以利用修改的电路30’的RTL逻辑来确定定义了每个指示符信号pi的布尔表达式Qi。由于布尔运算可以在BDD中执行,时钟门控器20可以一并“与”运算所有的布尔表达式Qi以及它们的多个副本Qik用于产生BDD X。
在步骤44,时钟门控器20可以产生不变BDD,其具有当触发器FF-i值不变时指示符信号pi所产生的值。在此实施方式中,当触发器FF-i值不变时指示符信号pi产生值为0,并因此,对于此实施方式,时钟门控器20可以通过创建BDD X=0来产生不变的BDD Y。
在0到K的k次循环50中,时钟门控器20可以通过消除任何依赖于来自并非k周期的输入xjk的指示符信号pi来确定第k个门控组。这样,时钟门控器20可以首先产生(步骤52)周期k中使用的不变BDD Y的临时副本Yk。时钟门控器20可以继而从临时不变BDDYk去除(步骤54)作为来自非k周期的输入xjnot_k的函数的任何指示符信号pi(not_k)。保留的指示符信号pi(remaim)形成第k个候选门控组Yk’。
时钟门控器20可以去除不理想的信号pi(not_k),并且可以继而对BDD Yk’执行标准压缩。此操作在现有技术中是已知的,并在1986年,IEEE Transactions on Computers,Vol.C-35(8),R.Bryant的题目为“Graph-based algorithms for Boolean function manipulation”文章中讨论。
留在第k个候选门控组Yk’中的保留指示符信号pi(remaim)指示能够以当前使能信号和/或其锁存形式门控的触发器FF-i。
相比于实现其门控函数所需要的逻辑,大的门控组可以是用于时钟门控的良好候选。门控组的大小可由其中触发器或其他数据锁存器件的数目所定义。
当时钟门控器20结束循环23和50,时钟门控器20可以具有一组候选门控函数以及它们的门控组用于检查。电路更新器22可以向电路设计者提供这些门控函数以及它们的门控组,以便其可以选择哪些加以实施,在此之后,电路更新器22可以继而将选定的门控函数添加到电路,从而产生更新的电路R’。
现在简略地参考图6A,其中示出了32个重复的相同元件n的简单电路,以及参考图6B,其示出了电路的时钟门控情形。每个元件n具有输入s(n)、多路复用器60-n、以及三个级联触发器62A-n、62B-n和62C-n。触发器62A-n、62B-n和62C-n的输出为a(n)、b(n)和o(n),并且多路复用器60-n的输入为输入s(n)、信号en、以及触发器62A-n的输出a(n)。使能信号en使能多路复用器60-n。
对于这样的电路,时钟门控器20可以产生以下门控函数,在图6B中示出。
以使能信号en来门控信号a(n),用于生成门控的时钟g0;
以使能信号en的锁存版本来门控信号b(n),用于生成门控的时钟g1;以及
以使能信号en的双重锁存版本来门控信号o(n),用于生成门控的时钟g2。
对于此举例,开销为三个门70-1、70-2和70-3以及两个延迟72-1和72-2。在某些情况下,这可能是可接受的开销。应该理解,即使存在简单电路之间的组合逻辑(因此,例如,b(0)可以是a(0)-a(4)的函数),上述门控也可以工作。
现在参考图7,其示出了可选的方法,将由时钟门控器20执行,用于确定对哪些数据锁存器件进行时钟门控以实现多周期时钟门控。
如前文的实施方式,时钟门控器20可以初始地检查设计R用于识别(步骤24)其中的数据锁存器件。再次地,下文的讨论将使用示例性触发器,应理解这包括所有类型的数据锁存器件。
根据本发明的可选的优选实施方式,时钟门控器20可以遍历(步骤80)设计R的连线表用于确定哪些触发器仅依赖输入。这便是组G。
在步骤82,时钟门控器20可以检查在先前步骤中所识别的“仅输入”触发器G,用于确定哪些触发器根据相同的时钟门控函数Fj操作。时钟门控函数Fj可以仅是对于仅输入触发器G的使能函数。可选地,可以使用用于细粒度时钟门控的标准算法确定时钟门控函数Fj,诸如上文提到的2005年12月7日提交的序列号为No.11/295936的美国专利申请“Clock Gating Through Data IndependentLogic”中所描述的算法。结果可以列出能够以第j个门控函数Fj一并时钟门控的数据锁存器件的组Hj。
时钟门控器20可以继而确定将由每个门控函数Fj门控的触发器。对于每个门控函数Fj,由循环84经过j次所控制,时钟门控器20可以将门控组Hj中的触发器初始化(步骤86)为“0级”触发器。时钟门控器20可以继而进入经过i次的循环88。在步骤90,时钟门控器20可以检查电路的触发器用于在门控组Hj中寻找那些仅依赖i级触发器的触发器。这些触发器可以标记为“i+1级”触发器,并可以添加到门控组Hj。在步骤92,时钟门控器20可以检测在步骤90是否有任何新的触发器添加至门控组Hj。如果是,则时钟门控器20可以在步骤94递增i,并且可以继续循环88直到步骤92的结果为否定结果。
对于每个门控组j,时钟门控器20可以产生以下门控函数:
以时钟门控函数Fj来门控0级触发器的信号;
以时钟门控函数Fj的第i个锁存版本来门控第i级触发器的信号。
每个门控组Hj的大小可以是其中存储的触发器的数目。
尽管本发明的某些特征已在本文示出或描述,对于本领域技术人员将出现许多变型、替换、改变以及等同。因此,应该理解,随附的权利要求书意在覆盖所有这些在本发明的真实精神的范围内的变型以及改变。
本公开的范围包括本文所公开的任何新的特征以及特征的组合。因此申请人提请注意将可能在本申请或任何由此产生的进一步申请的授权过程中撰写对于这些特征或特征组合的新的权利要求。具体而言,参考随附的权利要求书,独立权利要求的特征可以与从属权利要求的特征相结合并且相应从属权利要求可以按任何可能的方式互相组合而不仅仅是权利要求书中所列举的特定组合。
为了避免疑问,在说明书和权利要求书中通篇使用的术语“包括”,不应限定为“仅由……组成”之意。