一种低功耗时钟树的设计方法与流程

文档序号:19528633发布日期:2019-12-27 15:10阅读:530来源:国知局
一种低功耗时钟树的设计方法与流程

本发明属于集成电路物理设计领域,涉及物理设计中各模块时钟树设计领域,涉及具体涉及一种低功耗时钟树的设计方法。



背景技术:

集成电路物理设计中,一个模块往往有成千上万、甚至数十万的寄存器单元,这些寄存器由锁相环提供时钟;锁相环输出端到各寄存器的时钟端之间的逻辑电路成为时钟树。时钟树有多种形式,平衡树状、h-树状、以及网状。时钟树由反相器、缓冲器、金属连线、以及钟控单元构成。时钟树的功耗由动态功耗和静态功耗两部分组成。随着时钟频率的提升,动态功耗线性增长。工艺的进步本身有利于降低器件功耗,特别是finfet工艺的发明,因增强了栅极对沟道的控制能力,器件泄露电流降低了约2个数量级。finfet工艺的使用,使得物理设计各模块漏功耗降低;相对地,动态功耗占比增加,从而改变了物理设计中各组件的功耗占比。16nmfinfet工艺下高性能物理设计实践表明,时钟功耗占比提高,达到模块总功耗的40%~60%。抑制时钟功耗成为高性能物理设计的迫切需求。



技术实现要素:

本发明要解决的技术问题:针对目前物理设计中时钟树功耗偏高的问题,提供一种低功耗时钟树的设计方法,本发明利用电路与版图设计技术、利用布局布线技术,在维持时钟树性能的前提下,降低时钟树的功耗,对现有布局布线流程的影响最小。

为了解决上述技术问题,本发明采用的技术方案为:

一种低功耗时钟树的设计方法,实施步骤包括:

1)准备时钟树以及定制单元,所述定制单元包括针对各种指定尺寸以及子类型的反相器、缓冲器以及钟控单元定制下拉或上拉驱动降低的定制单元,且下拉或上拉驱动降低的定制单元不改变单元输出引脚的位置,不改变引脚的尺寸、并保留单元尺寸不变;

2)从时钟树中获取目标时钟驱动的所有寄存器输入引脚,从寄存器输入引脚开始逐级回溯对目标时钟驱动的路径中的反相器、缓冲器以及钟控单元替换为对应的定制单元;

3)修复时钟树建立时序的扰动。

优选地,步骤1)中的定制单元中,所述反相器包括带有定制的上、下拉驱动降低的定制单元;所述缓冲器包括由前级反相器inv1与后级反相器inv2构成,且每一种缓冲器包括将后级反相器inv2上拉驱动降低、将前级反相器inv1下拉驱动降低的定制单元,以及将后级反相器inv2下拉驱动降低、将前级反相器inv1上拉驱动降低的定制单元;所述钟控单元包括工作沿是正沿的下拉驱动降低的定制单元,以及工作沿是负沿的上拉驱动降低的定制单元。

优选地,步骤2)的详细步骤包括:

a2.1)从时钟树中选择目标模块的一个、多个或者全部时钟,获取时钟驱动的所有种控单元除外的时序逻辑的时钟输入引脚得到当前输入引脚集cur_pin_colls,将当前输入引脚集cur_pin_colls中每一个引脚设置初始相位ipin_phase为0,当前替换级数n为0;

a2.2)将当前替换级数n和预设阈值n进行比较,预设阈值n大于或等于0,且预设阈值n小于时钟树中时钟根到时钟树最长叶节点的深度;如果当前替换级数n小于预设阈值n时,跳转执行步骤a2.3);如果当前替换级数n大于或等于预设阈值n、且预设阈值n等于0时,跳转执行步骤a2.7);如果当前替换级数n大于或等于预设阈值n、且预设阈值n大于0时,跳转执行步骤a2.6);如果当前替换级数n等于预设阈值n、且预设阈值n大于0时,则跳转执行步骤3);

a2.3)从当前输入引脚集cur_pin_colls的每个引脚,回溯获取其前一级逻辑单元得到前级单元集合pre_cell_colls,所述前级单元集合pre_cell_colls中各前级单元的相位phase_of_cell赋值为有连接关系的引脚的初始相位ipin_phase的值;

a2.4)针对所述前级单元集合pre_cell_colls中的每一个前级单元,判断前级单元的类型,前级单元的类型为反相器、缓冲器、钟控单元、多路选择器中的一种,根据前级单元的类型替换为对应的定制单元:如果该前级单元为反相器,则在反相器的相位phase_of_cell为0时使用下拉网络驱动降低的定制单元替代、相位phase_of_cell为1时使用上拉网络驱动降低的定制单元替代,并将相位phase_of_cell加1模2的值作为该定制单元时钟输入引脚的初始相位ipin_phase的值;如果该前级单元为缓冲器,则在缓冲器的相位phase_of_cell为0时使用下拉网络驱动降低的定制单元替代、相位phase_of_cell为1时使用上拉网络驱动降低的定制单元替代,并将相位phase_of_cell的值作为该定制单元时钟输入引脚的初始相位ipin_phase的值;如果该前级单元为钟控单元,则将钟控单元使用下拉网络驱动降低的定制单元替代,将钟控单元的相位phase_of_cell的值直接作为定制单元时钟输入引脚的初始相位ipin_phase的值;

a2.5)将当前替换级数n加1,将前级单元集合pre_cell_colls作为新的当前输入引脚集cur_pin_colls,跳转执行步骤a2.2)。

优选地,步骤1)中的定制单元中还包括多路选择器的定制单元,且多路选择器的定制单元包括工作沿是正沿的下拉驱动降低的定制单元,以及工作沿是负沿的上拉驱动降低的定制单元;步骤a2.4)中还包括前级单元的类型为多路选择器的判断,如果判定前级单元的类型为多路选择器,则将多路选择器使用下拉网络驱动降低的定制单元替代,将多路选择器的相位phase_of_cell的值直接作为定制单元时钟输入引脚的初始相位ipin_phase的值。

优选地,步骤2)的详细步骤包括:

b2.1)从时钟树中选择目标模块的一个、多个或者全部时钟,获取时钟驱动的所有种控单元除外的时序逻辑的时钟输入引脚得到当前输入引脚集cur_pin_colls,将当前输入引脚集cur_pin_colls中每一个引脚设置初始相位ipin_phase为0,当前替换级数n为0;

b2.2)将当前替换级数n和预设阈值n进行比较,预设阈值n大于或等于0,且预设阈值n小于时钟树中时钟根到时钟树最长叶节点的深度;如果当前替换级数n小于预设阈值n时,跳转执行步骤b2.3);如果当前替换级数n大于或等于预设阈值n、且预设阈值n等于0时,跳转执行步骤b2.7);如果当前替换级数n大于或等于预设阈值n、且预设阈值n大于0时,跳转执行步骤b2.6);如果当前替换级数n等于预设阈值n、且预设阈值n大于0时,则跳转执行步骤3);

b2.3)从当前输入引脚集cur_pin_colls的每个引脚,回溯获取其前一级逻辑单元得到前级单元集合pre_cell_colls,所述前级单元集合pre_cell_colls中各前级单元的相位phase_of_cell赋值为有连接关系的引脚的初始相位ipin_phase的值;

b2.4)针对所述前级单元集合pre_cell_colls中的每一个前级单元,判断前级单元的类型,前级单元的类型为反相器、缓冲器、钟控单元、多路选择器中的一种,根据前级单元的类型替换为对应的定制单元:如果该前级单元为反相器,则在反相器的相位phase_of_cell为0时使用上拉网络驱动降低的定制单元替代、相位phase_of_cell为1时使用下拉网络驱动降低的定制单元替代,并将相位phase_of_cell加1模2的值作为该定制单元时钟输入引脚的初始相位ipin_phase的值;如果该前级单元为缓冲器,则在缓冲器的相位phase_of_cell为0时使用上拉网络驱动降低的定制单元替代、相位phase_of_cell为1时使用下拉网络驱动降低的定制单元替代,并将相位phase_of_cell的值作为该定制单元时钟输入引脚的初始相位ipin_phase的值;如果该前级单元为钟控单元,则将钟控单元使用上拉网络驱动降低的定制单元替代,将钟控单元的相位phase_of_cell的值直接作为定制单元时钟输入引脚的初始相位ipin_phase的值;

b2.5)将当前替换级数n加1,将前级单元集合pre_cell_colls作为新的当前输入引脚集cur_pin_colls,跳转执行步骤b2.2)。

优选地,步骤1)中的定制单元中还包括多路选择器的定制单元,且多路选择器的定制单元包括工作沿是正沿的下拉驱动降低的定制单元,以及工作沿是负沿的上拉驱动降低的定制单元;步骤b2.4)中还包括前级单元的类型为多路选择器的判断,如果判定前级单元的类型为多路选择器,则将多路选择器使用上拉网络驱动降低的定制单元替代,将多路选择器的相位phase_of_cell的值直接作为定制单元时钟输入引脚的初始相位ipin_phase的值。

和现有技术相比,本发明具有下述优点:

1、本发明是一种牺牲时钟非工作沿性能降低时钟功耗的、可配置的方法,通过牺牲非工作沿的性能降低时钟树整体的功耗,对时钟树的处理几乎不影响时钟工作沿的性能。

2、本发明通过判断时钟缓冲单元的输出相位选用对应的定制单元进行替换,从而使得替换后的等价缓冲单元驱动工作沿的上拉或下拉网络不变,而驱动非工作沿的上拉或下拉网络驱动降低,本发明利用电路与版图设计技术、利用布局布线技术,在维持时钟树性能的前提下,降低时钟树的功耗,对现有布局布线流程的影响最小。

3、本发明对时钟树进行的处理不改变各时钟缓冲单元pin的位置,因而无需重新对时钟树进行绕线。

4、本发明对时钟树的处理不改变各时钟缓冲单元的尺寸,因而不会引入drc违反。

附图说明

图1为本发明实施例一方法的基本流程示意图。

图2为本发明实施例一方法的详细流程示意图。

图3为本发明实施例一中应用的电路实例。

具体实施方式

实施例一:

下文将以模块的时钟输入正沿为工作沿的情况为例,对本发明的低功耗时钟树的设计方法进行进一步的详细说明。

如图1所示,本实施例的低功耗时钟树的设计方法的实施步骤包括:

1)准备时钟树以及定制单元,所述定制单元包括针对各种指定尺寸以及子类型的反相器、缓冲器以及钟控单元定制下拉或上拉驱动降低的定制单元,且下拉或上拉驱动降低的定制单元不改变单元输出引脚的位置,不改变引脚(pin)的尺寸、并保留单元尺寸不变;

本实施例中步骤1)的时钟树为在模块布局布线过程中,基于传统的时钟树生成技术(如cadence公司提供的innovus工具的cts等)生成时钟树。

2)从时钟树中获取目标时钟驱动的所有寄存器输入引脚,从寄存器输入引脚开始逐级回溯对目标时钟驱动的路径中的反相器、缓冲器以及钟控单元替换为对应的定制单元;

3)修复时钟树建立时序的扰动。

多级时钟单元的累积必然造成时钟树各分支延迟上的偏斜,对建立时序产生轻微的扰动,借助布局布线平台提供的时钟树优化功能,修复建立时序的扰动。修复时钟树建立时序的扰动以后,就可以继续完成布局布线的后续环节。

本实施例的低功耗时钟树的设计方法是一种牺牲时钟非工作沿性能降低时钟功耗的、可配置的方法,其低功耗的实现原理如下:通过判断时钟缓冲单元的输出相位选用对应的定制单元进行替换,从而使得替换后的等价缓冲单元驱动工作沿的上拉或下拉网络不变,而驱动非工作沿的上拉或下拉网络驱动降低。正沿主要受逻辑单元的上拉网络影响,负沿主要受下拉网络影响。工作沿为正沿的情况下,该逻辑的单元的下拉网络处于关闭状态,降低该逻辑单元的下拉网络驱动能力,对正沿的跳变影响较小,而负沿的跳变将变缓慢,即负沿的性能下降而该单元的功耗降低;工作沿为负沿的情况下,该逻辑的单元的上拉网络处于关闭状态,降低该逻辑单元的上拉网络驱动能力,对负沿的跳变影响较小,而正沿的跳变将变缓慢,即正沿的性能下降而该单元的功耗降低。在模块内部,时钟的工作沿沿着时钟树在正沿和负沿之间交替变化,各单元的输出信号要么与时钟输入同相,要么与时钟输入反相。时钟信号沿着时钟树抵达末端的各个寄存器或各钟控单元的时钟引脚(cp端)时,相位与输入信号相同。

本实施例中,步骤1)中的定制单元中,所述反相器包括带有定制的上、下拉驱动降低的定制单元;所述缓冲器包括由前级反相器inv1与后级反相器inv2构成,且每一种缓冲器包括将后级反相器inv2上拉驱动降低、将前级反相器inv1下拉驱动降低的定制单元,以及将后级反相器inv2下拉驱动降低、将前级反相器inv1上拉驱动降低的定制单元;所述钟控单元包括工作沿是正沿的下拉驱动降低的定制单元,以及工作沿是负沿的上拉驱动降低的定制单元。对于反相器(inv):对每个尺寸、每种子类型的单元定制相应的上拉驱动降低的单元,命名在原名字之前加上前缀hp_;对每个尺寸、每种子类型的单元定制相应的下拉驱动降低的单元,命名在原名字之前加上前缀hn_。对于缓冲器(buf):每个尺寸、每种子类型的buf均由前级inv1与后级inv2构成,在定制中将inv2上拉降低、并将inv1下拉降低的单元,命名在原名字之前加上hp_;在定制中将inv2下拉降低、并将inv1上拉降低的单元,命名在原名字之前加上hn_。对于钟控单元(cg),因其输出相位总是与时钟相位同向,因而只需定制一种。如工作沿是正沿,即只需定制下拉的cg,命名在原名字之前加上前缀hn_;反之,命名在原名字之前加上前缀hp_。

如图1和图2所示,步骤2)的详细步骤包括:

a2.1)从时钟树中选择目标模块的一个、多个或者全部时钟(可以根据需要制定),获取时钟驱动的所有种控单元除外的时序逻辑的时钟输入引脚得到当前输入引脚集cur_pin_colls,将当前输入引脚集cur_pin_colls中每一个引脚设置初始相位ipin_phase为0,当前替换级数n为0;

a2.2)将当前替换级数n和预设阈值n进行比较,预设阈值n大于或等于0,且预设阈值n小于时钟树中时钟根到时钟树最长叶节点的深度(预设阈值n的设定根据实际需求而定,受sram的minpulse指标约束,可大可小);如果当前替换级数n小于预设阈值n时,跳转执行步骤a2.3);如果当前替换级数n大于或等于预设阈值n、且预设阈值n等于0时,跳转执行步骤a2.7);如果当前替换级数n大于或等于预设阈值n、且预设阈值n大于0时,跳转执行步骤a2.6);如果当前替换级数n等于预设阈值n、且预设阈值n大于0时,则跳转执行步骤3);

a2.3)从当前输入引脚集cur_pin_colls的每个引脚,回溯获取其前一级逻辑单元得到前级单元集合pre_cell_colls,所述前级单元集合pre_cell_colls中各前级单元的相位phase_of_cell赋值为有连接关系的引脚的初始相位ipin_phase的值;

a2.4)针对所述前级单元集合pre_cell_colls中的每一个前级单元,判断前级单元的类型,前级单元的类型为反相器、缓冲器、钟控单元、多路选择器中的一种,根据前级单元的类型替换为对应的定制单元:如果该前级单元为反相器,则在反相器的相位phase_of_cell为0时使用下拉网络驱动降低的定制单元替代、相位phase_of_cell为1时使用上拉网络驱动降低的定制单元替代,并将相位phase_of_cell加1模2的值作为该定制单元时钟输入引脚的初始相位ipin_phase的值;如果该前级单元为缓冲器,则在缓冲器的相位phase_of_cell为0时使用下拉网络驱动降低的定制单元替代、相位phase_of_cell为1时使用上拉网络驱动降低的定制单元替代,并将相位phase_of_cell的值作为该定制单元时钟输入引脚的初始相位ipin_phase的值;如果该前级单元为钟控单元,则将钟控单元使用下拉网络驱动降低的定制单元替代,将钟控单元的相位phase_of_cell的值直接作为定制单元时钟输入引脚的初始相位ipin_phase的值;

a2.5)将当前替换级数n加1,将前级单元集合pre_cell_colls作为新的当前输入引脚集cur_pin_colls,跳转执行步骤a2.2)。

本实施例中,步骤1)中的定制单元中还包括多路选择器的定制单元,且多路选择器的定制单元包括工作沿是正沿的下拉驱动降低的定制单元,以及工作沿是负沿的上拉驱动降低的定制单元;步骤a2.4)中还包括前级单元的类型为多路选择器的判断,如果判定前级单元的类型为多路选择器,则将多路选择器使用下拉网络驱动降低的定制单元替代,将多路选择器的相位phase_of_cell的值直接作为定制单元时钟输入引脚的初始相位ipin_phase的值。对于多路选择单元(mux)而言,因为多路选择单元(mux)版图较复杂,而且一般离时钟根(root)较近,因此一般情况下不建议定制。

以图3所示电路为例,假如n=2、即替换级数为2级。

在完成步骤1)和步骤a2.1)后,当前替换级数n=0,n=2,cur_pin_colls集中各pin的初始相位ipin_phase为0。

在步骤a2.2)中,因当前替换级数n小于预设阈值n时,跳转执行步骤a2.3).

在步骤a2.3)中,获得前级单元集pre_cell_colls={l6_1,l6_2,l6_3……l6_31,l6_32},共32个反相器单元,将pre_cell_colls中各单元的phase_of_cell值赋值cur_pin_colls中有连接关系的引脚的初始相位ipin_phase的值,即都为0。

在步骤a2.4)中,pre_cell_colls={l6_1,l6_2,l6_3……l6_31,l6_32}中的每个单元都是反相器,且各自的phase_of_cell值为0,于是都以前缀hn_的对应单元进行替换。将pre_cell_colls中各单元phase_of_cell加1模2的值作为该单元时钟输入pin的初始相位ipin_phase的值,即pre_cell_colls中各单元的时钟输入pin的初始相位ipin_phase的值为1。将pre_cell_colls中各个单元的时钟信号输入引脚构成的集合更新cur_pin_colls。同时,当前替换级数n加1,即n=1。因此,又需要循环进入步骤a2.2)。

然后第二次在步骤a2.2)中,因n<n,再次执行步骤a2.3)。

然后第二次在步骤a2.3)中,获得前级单元集pre_cell_colls={l5_1,l5_2,l5_3……l5_15,l5_16},共16个反相器单元,将pre_cell_colls中各单元的phase_of_cell值赋值cur_pin_colls中有连接关系的引脚的初始相位ipin_phase的值,即都为1。再次执行类型判断,各单元都是反相器。然后在步骤a2.4)中,pre_cell_colls={l5_1,l5_2,l5_3……l5_15,l5_16}中的每个单元都是反相器,且各自的phase_of_cell值为1,于是都以前缀hp_的对应单元进行替换。将pre_cell_colls中各单元phase_of_cell加1模2的值作为该单元时钟输入pin的初始相位ipin_phase的值,即pre_cell_colls中各单元的时钟输入pin的初始相位ipin_phase的值为0。将pre_cell_colls中各个单元的时钟信号输入引脚构成的集合更新cur_pin_colls。同时,当前替换级数n加1,即n=2。

然后第三次在步骤a2.2)中,因n=n,且n>0,执行步骤3)修复时钟树建立时序的扰动,然后结束处理。

实施例二:

本实施例与实施例一基本相同,其主要区别点为本实施例中将以模块的时钟输入负沿为工作沿的情况为例,其区别点实际为步骤2)中处理的方式不同,具体为将前缀hp_与前缀hn_互换即可。本实施例中,步骤2)的详细步骤包括:

b2.1)从时钟树中选择目标模块的一个、多个或者全部时钟,获取时钟驱动的所有种控单元除外的时序逻辑的时钟输入引脚得到当前输入引脚集cur_pin_colls,将当前输入引脚集cur_pin_colls中每一个引脚设置初始相位ipin_phase为0,当前替换级数n为0;

b2.2)将当前替换级数n和预设阈值n进行比较,预设阈值n大于或等于0,且预设阈值n小于时钟树中时钟根到时钟树最长叶节点的深度;如果当前替换级数n小于预设阈值n时,跳转执行步骤b2.3);如果当前替换级数n大于或等于预设阈值n、且预设阈值n等于0时,跳转执行步骤b2.7);如果当前替换级数n大于或等于预设阈值n、且预设阈值n大于0时,跳转执行步骤b2.6);如果当前替换级数n等于预设阈值n、且预设阈值n大于0时,则跳转执行步骤3);

b2.3)从当前输入引脚集cur_pin_colls的每个引脚,回溯获取其前一级逻辑单元得到前级单元集合pre_cell_colls,所述前级单元集合pre_cell_colls中各前级单元的相位phase_of_cell赋值为有连接关系的引脚的初始相位ipin_phase的值;

b2.4)针对所述前级单元集合pre_cell_colls中的每一个前级单元,判断前级单元的类型,前级单元的类型为反相器、缓冲器、钟控单元、多路选择器中的一种,根据前级单元的类型替换为对应的定制单元:如果该前级单元为反相器,则在反相器的相位phase_of_cell为0时使用上拉网络驱动降低的定制单元替代、相位phase_of_cell为1时使用下拉网络驱动降低的定制单元替代,并将相位phase_of_cell加1模2的值作为该定制单元时钟输入引脚的初始相位ipin_phase的值;如果该前级单元为缓冲器,则在缓冲器的相位phase_of_cell为0时使用上拉网络驱动降低的定制单元替代、相位phase_of_cell为1时使用下拉网络驱动降低的定制单元替代,并将相位phase_of_cell的值作为该定制单元时钟输入引脚的初始相位ipin_phase的值;如果该前级单元为钟控单元,则将钟控单元使用上拉网络驱动降低的定制单元替代,将钟控单元的相位phase_of_cell的值直接作为定制单元时钟输入引脚的初始相位ipin_phase的值;

b2.5)将当前替换级数n加1,将前级单元集合pre_cell_colls作为新的当前输入引脚集cur_pin_colls,跳转执行步骤b2.2)。

本实施例中,步骤1)中的定制单元中还包括多路选择器的定制单元,且多路选择器的定制单元包括工作沿是正沿的下拉驱动降低的定制单元,以及工作沿是负沿的上拉驱动降低的定制单元;步骤b2.4)中还包括前级单元的类型为多路选择器的判断,如果判定前级单元的类型为多路选择器,则将多路选择器使用上拉网络驱动降低的定制单元替代,将多路选择器的相位phase_of_cell的值直接作为定制单元时钟输入引脚的初始相位ipin_phase的值。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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