在分块之间插入门控时钟的方法、系统、设备和介质技术方案

技术编号:38771322 阅读:13 留言:0更新日期:2023-09-10 10:44
提供一种在芯片分块之间插入流水线寄存器和门控时钟的方法、系统、电子设备和非暂时存储介质,该方法包括如下步骤:根据使能信号在存在时序违例的两个芯片分块之间插入数据流水线寄存器和对应的使能流水线寄存器;根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟。如此,通过根据使能信号在存在时序违例的两个芯片分块之间插入数据流水线寄存器和对应的使能流水线寄存器并插入门控时钟,可以在减少时序违例的情况下减少芯片功耗。减少时序违例的情况下减少芯片功耗。减少时序违例的情况下减少芯片功耗。

【技术实现步骤摘要】
在分块之间插入门控时钟的方法、系统、设备和介质


[0001]本申请涉及集成电路领域,且更具体地,涉及在芯片分块之间插入流水线寄存器和门控时钟的方法、系统、电子设备和非暂时存储介质。

技术介绍

[0002]随着日益增长的算力需求,芯片规模越来越大,芯片的功耗也越来越高。当前芯片设计中一般都会采用多种低功耗技术来降低芯片的功耗,门控时钟就是一种非常常见而且有效的低功耗技术。芯片的功耗分为动态功耗和静态功耗,其中静态功耗主要来自晶体管的漏电。而动态功耗主要来自芯片中电路的翻转,对电容进行充放电从而产生的功耗消耗。芯片在活动的时候一般动态功耗远大于静态功耗,为了降低动态功耗,需要减少芯片中电路的翻转。而时钟网络是芯片中翻转最多的电路,因此减少时钟网络的翻转,可以大大降低芯片中的功耗。而门控时钟技术就是利用了这一特性,当时钟网络驱动的寄存器不需要进行数据采样时,关闭这些寄存器的时钟网络,从而减少寄存器时钟网络上的功耗消耗。

技术实现思路

[0003]根据本申请的一个方面,提供一种在芯片分块之间插入流水线寄存器和门控时钟的方法,包括如下步骤:根据使能信号在存在时序违例的两个芯片分块之间插入数据流水线寄存器和对应的使能流水线寄存器;根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟。
[0004]根据本申请的另一个方面,提供一种在芯片分块之间插入流水线寄存器和门控时钟的系统,包括:第一插入装置,被配置为根据使能信号在存在时序违例的两个芯片分块之间插入数据流水线寄存器和对应的使能流水线寄存器;第二插入装置,被配置为根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟。
[0005]根据本申请的另一个方面,提供一种电子设备,包括:存储器,用于存储指令;处理器,用于读取所述存储器中的指令,并执行根据本申请的实施例的方法。
[0006]根据本申请的另一个方面,提供一种非暂时存储介质,其上存储有指令,其中,所述指令在被处理器读取时,使得所述处理器执行根据本申请的实施例的方法。
[0007]如此,通过根据使能信号在存在时序违例的两个芯片分块之间插入数据流水线寄存器和对应的使能流水线寄存器并插入门控时钟ICG,可以在减少时序违例的情况下减少芯片功耗。
附图说明
[0008]为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0009]图1示出了现有技术的门控时钟的原理。
[0010]图2A

2D示出了常见的寄存器的RTL设计及其对应的等效电路和综合电路。
[0011]图3A

3C示出了现有技术的芯片分块划分和分块间长距离绕线通道插入流水线寄存器的示意图。
[0012]图4示出了技术方案1的芯片设计以及解决分块之间时序违例的流程图。
[0013]图5A

5C示出了插入流水线寄存器后的分块接口之间的抽象电路模型。
[0014]图6A

6C示出了对图5A

5C中的抽象电路分别应用根据本申请的实施例后期望的结果的示意图。
[0015]图7示出了根据本申请的实施例的芯片设计流程的流程图。
[0016]图8示出了根据本申请的实施例的使能

数据流水线寄存器数据结构的示意图。
[0017]图9A示出了根据本申请的实施例的算法流程的总体流程图。
[0018]图9B示出了根据本申请的实施例的类型(c)的电路的使能流水线寄存器的插入流程的流程图。
[0019]图9C示出了根据本申请的实施例的插入门控时钟ICG的流程的流程图。
[0020]图10A

图10C分别示出了为三种类型的电路的流水线寄存器插入门控时钟ICG的三个过程的示意图。
[0021]图11A示出了根据本申请的实施例的在芯片分块之间插入流水线寄存器和门控时钟的方法的流程图。
[0022]图11B示出了图11A中的步骤1110的过程的流程图。
[0023]图12示出了根据本申请的实施例的根据插入的数据流水线寄存器和对应的使能流水线寄存器、对所述数据流水线寄存器插入门控时钟的步骤的一个实施例的流程图。
[0024]图13示出了根据本申请的实施例的在芯片分块之间插入流水线寄存器和门控时钟的系统的方框图。
[0025]图14示出了适于用来实现本申请的实施例的示例性电子设备的框图。
[0026]图15示出了根据本申请的实施例的非暂时性计算机可读存储介质的示意图。
具体实施方式
[0027]现在将详细参照本申请的具体实施例,在附图中例示了本申请的例子。尽管将结合具体实施例描述本申请,但将理解,不是想要将本申请限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本申请的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
[0028]门控时钟就是一种非常常见而且有效的低功耗技术。
[0029]图1示出了现有技术的门控时钟的原理。
[0030]图1中左边部分为普通的寄存器电路q,当使能信号(enable信号)为高时,多路选择器(MUX)选择输入信号(数据信号,data信号)的值保存入寄存器q中;当使能信号为低时,多路选择器选择寄存器q作为寄存器输入,即寄存器q的值保持不变。由于时钟信号(clock信号)一直保持翻转,这样会对时钟信号的路径和寄存器的时钟输入端(CK端)的电容不断
进行充放电,即使寄存器q的值保持不变(使能信号为低),也会造成功耗消耗。
[0031]图1中右边部分为插入门控时钟单元(Integrated Clock Gating,ICG)后的电路,多路选择器MUX被移除,换成一个集成门控时钟电路ICG单元。当使能信号为高时,ICG单元打开,时钟信号从ICG单元输出到寄存器q的CK端,对输入信号(数据信号)直接进行采样,此时数据值被保存在寄存器q中;当使能信号为低时,ICG单元关闭,时钟信号无法通过ICG单元输出到寄存器q的CK端,寄存器q保持输出值不变,因此该电路的功能和图1左边完全一致。从右图中的波形图可以看到,ICG单元输出的gated_clock(门控时钟信号)只有在使能信号为高时才翻转(如图1右侧所示的T3周期),其他时候一直保持为低,这样时钟路径和寄存器CK端的电容不会进行充放电,因此没有额外的功耗消耗。
[0032]虽然ICG单元的CK端的电容仍然会进行充放电,但是由于寄存器q的位宽远大于时钟位宽(1),因此右边插入门控时钟本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在芯片分块之间插入流水线寄存器和门控时钟的方法,包括如下步骤:根据使能信号在存在时序违例的两个芯片分块之间插入数据流水线寄存器和对应的使能流水线寄存器;根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟。2.根据权利要求1所述的方法,其中,所述根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟的步骤包括:在所述插入的数据流水线寄存器的位宽之和大于预定位宽阈值的情况下,在所述数据流水线寄存器和对应的使能流水线寄存器之间插入门控时钟,其中所述门控时钟的使能输入端连接到所述数据流水线寄存器的前一级数据流水线寄存器相同级的使能流水线寄存器的输出端,所述门控时钟的时钟输入端连接到时钟信号,且所述门控时钟的输出端连接到所述数据流水线寄存器的时钟输入端。3.根据权利要求1所述的方法,其中,所述根据使能信号在存在时序违例的两个芯片分块之间插入数据流水线寄存器和对应的使能流水线寄存器的步骤包括:确定存在时序违例的两个芯片分块;根据时序违例在所述两个芯片分块之间的数据信号线中插入相互连接的预定数量个数据流水线寄存器;如果在所述两个芯片分块之间存在接收使能信号的使能信号线连接,则在所述使能信号线中插入相互连接的所述预定数量个使能流水线寄存器,其中,所述预定数量个使能流水线寄存器与所述预定数量个数据流水线寄存器一一对应。4.根据权利要求3所述的方法,其中所述根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟的步骤包括在对所述数据流水线寄存器插入门控时钟之前:如果在所述两个芯片分块之间不存在所述使能信号线连接,则从所述两个芯片分块之一中的使能信号中引出使能信号线以在所述两个芯片分块之间插入相互连接的所述预定数量个使能流水线寄存器以与所述使能信号线连接。5.根据权利要求1所述的方法,其中,根据数据信号的方向将所述两个芯片分块分为发出数据信号的源分块和接收数据信号的宿分块,其中在所述两个芯片分块之间存在接收使能信号的使能信号线连接的情况包括:第一类型的电路,其中所述宿分块中的寄存器使用使能信号,所述源分块中的寄存器和/或组合逻辑电路使用所述使能信号;第二类型的电路,其中所述源分块中的寄存器使用使能信号,所述宿分块中的寄存器不使用所述使能信号,而所述宿分块中的组合逻辑电路或其他电路使用所述使能信号;在所述两个芯片分块之间不存在所述使能信号线连接的情况包括:第三类型的电路,其中,所述源分块中的寄存器使用使能信号,所述宿分块中没有任何电路使用所述使能信号。6.根据权利要求5所述的方法,其中根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟包括:
获取配置文件,其中所述配置文件指示了插入了数据流水线寄存器的分块对、以及预定位宽阈值;遍历插入了数据流水线寄存器的分块对;根据所述分块对中的宿分块中的寄存器是否使用使能信号来在宿分块使用使能信号的情况下判断第一类型的电路;在宿分块的寄存器不使用使能信号的情况下,根据是否能找到使能流水线寄存器来在能找到使能流水线寄存器的情况下判断第二类型的电路、且在不能找到使能流水线寄存器的情况下判断第三类型的电路;对第一类型的电路或第二类型的电路或第三类型的电路生成指示电路结构的数据结构;对第三类型的电路,从使能信号引出使能信号线以在所述两个芯片分块之间插入相互连接的使能流水线寄存器以与所述使能信号线连接,并根据插入的使能流水线寄存器更新所述数据结构;根据所述数据结构以及所述预定位宽阈值来对所述数据流水线寄存器插入门控时钟。7.根据权利要求5所述的方法,其中根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟包括:获取配置文件(901),其中所述配置文件指示了插入了数据流水线寄存器的分块对、以及针对第一类型的电路或第二类型的电路或第三类型的电路是否插入门控时钟ICG的预定位宽阈值MIN_ICG_SIZE和/或针对第三类型的电路是否插入使能流水线寄存器以及门控时钟ICG的预定位宽阈值MIN_NOEN_ICG_SIZE;遍历所述配置文件中的分块对并判断配置文件中的分块对遍历是否结束(902);如果是,则输出对所述数据流水线寄存器插入门控时钟后的芯片上系统的寄存器传输级RTL描述(921);如果否,则获取下一个宿分块T
sink
(903);遍历宿分块T
sink
的输入端口并判断宿分块T
sink
的输入端口的遍历是否结束(904);如果是,则执行第三类型的电路的插入使能流水线寄存器的步骤(919)和对所述数据流水线寄存器插入门控时钟的步骤(920);如果否,则获取宿分块T
sink
的下一个输入端口P
sink
,获取输入端口P
sink
的驱动寄存器DPF1和数据负载寄存器DF
sink
(905);判断所述驱动寄存器DPF1是否为流水线寄存器且数据负载寄存器DF
sink
存在(906);如果否,则继续遍历宿分块T
sink
的输入端口并判断宿分块T
sink
的输入端口的遍历是否结束(904);如果是,则获取数据负载寄存器DF
sink
的所有使能信号(907);判断数据负载寄存器DF
sink
的使能信号是否为空(908);如果是,则返回遍历宿分块T
sink
的输入端口并判断宿分块T
sink
的输入端口的遍历是否结束(904);如果否,则以所述驱动寄存器DPF1为起点向前递归获取驱动寄存器,直到驱动寄存器不是流水线寄存器为止,其中该非流水线寄存器为DF
src
,将获取的所有流水线寄存器DPF
N
、DPF
N
‑1、

、DPF1的标识保存到数据流水线寄存器列表L
DPF
中,其中数据流水线寄存器列表
L
DPF
=[DPF
N
,DPF
N
‑1,

,DPF1],其中N为流水线寄存器的级数(909);获取所述数据负载寄存器DF
sink
的每个使能信号的操作符及其驱动寄存器EPF0,其中如果所述驱动寄存器EPF0是与数据流水线寄存器DPF1处于相同模块的流水线寄存器,保存驱动寄存器EPF0的标识到使能流水线寄存器列表L
EPF0
中,其中使能流水线寄存器列表L
EPF0
=[EPF
0,K
,EPF
0,K
‑1,

,EPF
0,1
],K为使能信号的个数;保存所有使能信号的操作符到使能信号操作符列表L
EOP
中,其中,使能信号操作符列表L
EOP
=[OP
K
,OP
K
‑1,

,OP1,],其中所述模块包括源分块模块、宿分块模块、源分块和宿分块之间的流水线寄存器通道模块(910);判断所述使能流水线寄存器列表L
EPF0
是否为空(911);如果判断所述使能流水线寄存器列表L
EPF0
不为空,则判断是第一类型的电路,生成所述第一类型的电路的电路结构的哈希表H1:遍历使能流水线寄存器列表L
EPF0
中的所有元素,以所述使能流水线寄存器列表的第一个寄存器EPF
0,j
为起点向前递归获取驱动寄存器,直到获取N级为止,将所有驱动寄存器保存在使能流水线寄存器列表L
EPF
中,其中,使能流水线寄存器列表L
EPF
中的每个元素成为EPF
i,j
,其中i=1~N,j=1~K,在所述使能流水线寄存器列表L
EPF
的第一列中插入使能信号操作符列表L
EOP
(912);将所述数据流水线寄存器列表L
DPF
追加到哈希表H1中以使能流水线寄存器列表L
EPF
为索引的表中,成为哈希表H1{L
EPF
}.append(L
DPF
)(918);如果判断所述使能流水线寄存器列表L
EPF0
为空,获取非流水线寄存器DF
src
的每个使能信号的负载数据寄存器EPF
N
,如果负载数据寄存器EPF
N
是与非流水线寄存器DF
src
处于相同模块的流水线寄存器,保存负载数据寄存器EPF
N
的标识到使能流水线寄存器列表L
EPF
中,其中使能流水线寄存器列表L
EPF
=[EPF
N,K
,EPF
N,K
‑1,

,EPF
N,2
,EPF
N,1
],K为使能信号的个数(913);判断所述使能流水线寄存器列表L
EPF
是否为空(914);如果判断所述使能流水线寄存器列表L
EPF
不为空,则判断第二类型的电路,生成所述第二类型的电路的电路结构的哈希表H1:遍历使能流水线寄存器列表L
EPF
中所有元素,以使能流水线寄存器EPF
N,j
为起点向后递归获取N

1级负载数据寄存器,将所有负载数据寄存器的标识加入使能流水线寄存器列表L
EPF
中,在使能流水线寄存器列表中的每个元素成为EPF
i,j
,其中i=1~N,j=1~K;获取非流水线寄存器DF
src
的使能信号的操作符列表L
EOP
,成为L
EOP
=[OP
K
,OP
K
‑1,

,OP1],在使能流水线寄存器列表L
EPF
的第一列插入使能信号操作符列表L
EOP
(916);将数据流水线寄存器列表L
DPF
追加到哈希表H1中以使能流水线寄存器列表L
EPF
为索引的表中,成为哈希表H1{L
EPF
}.append(L
DPF
)(918);如果判断所述使能流水线寄存器列表L
EPF
为空,则判断第三类型的电路,生成所述第三类型的电路的电路结构的哈希表H1:则在步骤,获取非流水线寄存器DF
src
的使能信号的表达式EN
expr
,将数据流水线寄存器列表L
DPF
追加到哈希表H2中以使能信号的表达式EN
expr
为索引的表中,成为H2{EN
expr
}.append(L
DPF
)(917);将数据流水线寄存器列表L
DPF
追加到哈希表H1中以使能流水线寄存器列表L
EPF
为索引的表中,成为哈希表H1{L
EPF
}.append(L
DPF
)(918);返回遍历宿分块T
sink
的输入端口并判断宿分块T
sink
的输入端口的遍历是否结束(904)。8.根据权利要求7所述的方法,其中根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟还包括:对哈希表H2进行遍历并判断遍历是否结束(9191);
如果判断遍历结束,则进行对所述数据流水线寄存器插入门控时钟的步骤(920);如果判断遍历未结束,则获取哈希表H2的下一个键值对k

v,其中EN
expr
=k,L
DPF
=v,N=数据流水线寄存器列表L
DPF
的深度,计算数据流水线寄存器列表L
DPF
中的数据流水线寄存器DPF
N
列的所有数据流水线寄存器的位宽之和S(9192);判断S是否大于配置文件中的针对第三类型的电路的预定位宽阈值MIN_NOEN_ICG_SIZE(9193);如果S不大于MIN_NOEN_ICG_SIZE,则返回对哈希表H2进行遍历并判断遍历是否结束(9191);如果S大于MIN_NOEN_ICG_SIZE,则获取使能信号的表达式EN
expr
中第一个信号的模块,在所述模块中创建一个新的输出端口P
esrc
,并且将使能信号的表达式EN
expr
赋值给输出端口P
esrc
;以输出端口P
esrc
为起点在流水线寄存器通道模块中插入N级使能流水线寄存器EPF
N
,EPF
N
‑1,

,EPF2,EPF1,其中使能流水线寄存器列表L
EPF
=[,EPF
N
,EPF
N
‑1,

,EPF2,EPF1],其中第一列的操作符为空,即使能信号的个数K=1(9194);将数据流水线寄存器列表L
DPF
追加到哈希表H1中以使能流水线寄存器列表L
EPF
为索引的表中,成为哈希表H1{L
EPF
}.append(L
DPF
)(9195);返回对哈希表H2进行遍历并判断遍历是否结束(9191)。9.根据权利要求7或8所述的方法,其中根据插入的数据流水线寄存器和对应的使能流水线寄存器,对所述数据流水线寄存器插入门控时钟还包括:遍历哈希表H1且判断哈希表H1遍历是否结束(9201);如果判断哈希表H1遍历结束,则清空哈希表H1和H2,输出对所述数据流水线寄存器插入门控时钟后的芯片上系统的寄存器传输级RTL描述(921);如果判断哈希表H1遍历未结束,则获取哈希表H1的下一个键值对k

v,其中使能信号操作符列表L
EOP
=哈希表H1的使能流水线寄存器表k的第一列,使能流水线寄存器列表L
EPF
=哈希表H1的使能流水线寄存器表k的剩余列,数据流水线寄存器列表L
DPF
=v,i=数据流水线寄存器列表L
DPF
表的深度N,计算数据流水线寄存器列表L
DPF
中每一列的所有数据流水线寄存器的位宽之和S(9202);判断S是否大于配置文件中的预定位宽阈值MIN_ICG_SIZE(9203);如果判断S不大于配置文件中的预定位宽阈值MIN_ICG_SIZE,则返回遍历哈希表H1且判断哈希表H1遍历是否结束(9201);如果判断S大于配置文件中的预定位宽阈值MIN_ICG_SIZE,则获取数据流水线寄存器列表L
DPF
中的数据流水线寄存器DPF
i
列以及使能流水线寄存器列表L
EPF
中的使能流水线寄存器EPF
i
列的流水线寄存器,如果使能流水线寄存器EPF
i
列中的寄存器与数据流水线寄存器DPF
i
列中的寄存器不属于相同模块,获取使能流水线寄存器EPF
i
‑1列中的所有寄存器的输入端信号,成为列表en
i
;使用en
i
代替使能流水线寄存器EPF
i
列中的寄存器,即EPF
i
=en
i
,其中使能流水线寄存器EPF
i
列中的元素个数为K(9204);判断K是否等于1(9205);如果判断K等于1,在流水线寄存器通道模块中插入一个门控时钟ICG,其中门控时钟ICG的时钟输入端CK连接到与数据流水线寄存器DPF
i
列中的寄存器相同的时钟,门控时钟ICG的使能输入端EN连接到使能流水线寄存器EPF
i
列中的寄存器;断开数据流水线寄存器
DPF
i
列中的所有寄存器的时钟输入,并将门控时钟ICG的输出端Z连接到DPF
i
列中的所有寄存器的时钟输入端CK(9206);如果判断K不等于1,则在流水线寄存器通道模块中插入一个门控时钟ICG,其中门控时钟ICG的输入端CK连接到与数据流水线寄存器DPF
i
列的中的寄存器相同的时钟,门控时钟ICG的输入端EN连接到以使能流水线寄存器EPF
i
列的信号和使能信号操作符列表L
EOP
组合成的逻辑表达式输出;断开数据流水线寄存器DPF
i
列中的所有寄存器的时钟输入,并将门控时钟ICG的输出端Z连接到数据流水线寄存器DPF
i
列中的所有寄存器的时钟输入端CK(9207);判断i的值是否为1(9208);如果i不为1,则对i递减1(9209),且返回到判断S大于配置文件中的预定位宽阈值MIN_ICG_SIZE之后的步骤(9204),直到i为1,返回遍历哈...

【专利技术属性】
技术研发人员:陶昱良代开勇潘于
申请(专利权)人:海光信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1