一种扫描链重定序方法与流程

文档序号:12720506阅读:296来源:国知局

本发明涉及集成电路测试技术领域,尤其涉及一种扫描链重定序方法。



背景技术:

插入扫描链是集成电路可测性设计的重要方法,它将集成电路中的普通寄存器替换成扫描寄存器,并将扫描寄存器首尾连接,构成串行的扫描链,以实现附加的扫描测试功能。扫描链的插入会增加集成电路的面积和功耗开销,并且在测试模式下,扫描链的数据通路还必须满足建立时间、保持时间等时序检查约束,由此所引入的缓冲器进一步增加了集成电路的面积和功耗开销。

对扫描链进行重定序是降低集成电路的面积和功耗的一种途径,扫描链重定序方法是将扫描链上的扫描寄存器按照一定的顺序,在不影响逻辑功能的前提下,进行重新连接,从而减少扫描链占用的面积及功耗。虽然现有的重定序方法在降低电路功耗方面取得了一定的成果,但是却带来了另外一个问题,即布线拥塞,而且随着集成电路技术的发展,电路集成度越来越高,当集成电路设计的工艺节点缩小到65nm以下时,为满足扫描链的建立时间、保持时间约束,扫描链上所需的缓冲器单元越来越多,导致的面积和功耗额外开销越来越大,引起的布局布线拥塞问题越来越严重,从而对芯片的性能、功耗和面积造成不利影响。



技术实现要素:

本发明从满足扫描链的建立时间、保持时间等时序约束出发,提出一种扫描链重定序方法,这种方法可大幅度减少扫描链上所插入的缓冲器单元数量,达到减少布局布线拥塞以及降低面积和功耗开销的目的。

有鉴于此,本发明第一方面提供一种扫描链重定序方法,可包括:

将扫描链中的所有寄存器按照在测试时钟下的时钟树延迟从大到小排序,组成寄存器第一序列;

以为单位长度将所述第一序列分为多段,序列中最后长度不足的部分作为一段,其中n为寄存器的个数,为对取整;

依次从每段中取第i个寄存器顺序组成第i组,直至取完第一段中的寄存器,将i组寄存器按照组成的先后顺序依次排列组成第二序列;

记所述第二序列中的第二个寄存器为当前寄存器,执行定序流程,所述定序流程包括:

查找当前寄存器之后与当前寄存器的时钟树延迟相等的第一个寄存器,若找到,则记为第一寄存器;计算当前寄存器与第一寄存器交换位置之前与交换之后的扫描链的链长,如果交换之后的扫描链链长较短,则交换当前寄存器与第一寄存器的位置;更新第二序列;在更新的第二序列中继续查找当前寄存器之后与当前寄存器的时钟树延迟相等的第一个寄存器,若未找到,将更新后的第二序列中的第三个寄存器作为当前寄存器,返回执行定序流程直至最后一个寄存器执行完定序流程;若在更新的第二序列中找到,则仍记为第一寄存器,返回执行计算当前寄存器与第一寄存器交换位置之前与交换之后的扫描链的链长的步骤。

优选的,扫描链的链长以曼哈顿距离表示,计算公式如下:

其中,D1为以曼哈顿距离表示的扫描链链长,(xi,yi)为寄存器组成的序列中第i个寄存器的坐标。

优选的,转换扫描链中两个寄存器位置之后扫描链的总线长以曼哈顿距离的计算公式如下:

其中,交换位置的为第p个寄存器与第q个寄存器,D2为第p个寄存器与第q个寄存器交换位置之后的扫描链链长。

从以上技术方案可以看出,本发明实施例具有以下优点:

在扫描链中,相邻的寄存器之间需要满足保持时间的要求,往往需要插入缓冲器,而本发明将寄存器之间的时钟偏差考虑进来,可以在满足相邻寄存器之间的保持时间约束的情况下,尽量减少插入缓冲器的数目,可以减小扫描链占用的面积,以及电路的整体功耗。由于插入的缓冲器的数目较少,缓解了布线拥塞的问题,而且本方法对扫描链的测试时间和扫描覆盖率没有副作用,对设计的流程影响比较小。

附图说明

图1为本发明实施例的物理设计流程。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明实施例提出的扫描链重定序方法,是一种按时钟树延迟跳跃式排序的方法,在设计时钟树综合之后实施,参考图1所示为本发明物理设计流程,本发明的主要思想是:传统物理设计流程为“设计导入→布局→时钟树综合→布线”。扫描链重定序过程可以在时钟树综合后实施,并且在设计时钟树综合之后可以得到时序单元的时钟树延迟信息以及其物理坐标信息。

下面对本发明实施例提供的技术方案做详细公开的描述,如下:

S1、将扫描链中的所有寄存器按照在测试时钟下的时钟树延迟从大到小排序,组成寄存器第一序列;

为了便于描述,这里记第一序列为ins(C1,C2,C3,…,Cn);其中,时钟树延迟相等的寄存器随机依次排列。序列中的元素Ck(1≤k≤n)代表一个寄存器,n为扫描链中总的寄存器个数。在序列ins(C1,C2,C3,…,Cn)中具有相等时钟树延迟的寄存器则随机分配先后顺序,序列整体保持从大到小的顺序。

S2、以为单位长度将所述第一序列分为多段,序列中最后长度不足的部分作为一段;

选择正整数m(其中为对进行取整,简单的理解为对只取整数部分),则n=a*m+r,其中,a为m除n的商数,r为余数。

下面具体介绍对序列ins(C1,C2,C3,…,Cn)的分段流程,对于余数r是否为零,具体执行流程不同,当r≠0时,执行步骤1.1-步骤1.4,如下:

步骤1.1:当r≠0时,设置参数i,对i赋初值i=0;

步骤1.2:ins(C1,C2,C3,…,Cn)中Ci*m+1→Ci*m+2→Ci*m+3…→Ci*m+m作为第i+1段;

步骤1.3:令i=i+1;

步骤1.4:如果i值小于a,则返回步骤1.2;否则ins(C1,C2,C3,…,Cn)中Ci*m+1→Ci*m+2…→Ci*m+r作为第i+1段。

举例说明,假设寄存器的个数为10,则m=3,a=3,r=1(不为零),寄存器按照时钟树延迟从大到小的顺序排列得到的序列为ins(C1,C2,C3,C4,C5,C6,C7,C8,C9,C10),假设其中时钟树延迟相等的寄存器在序列中的位置为C3、C4、C5,则根据上述分段过程可得本例中10个寄存器排序后的序列分段结果如下:

第一段:C1→C2→C3

第二段:C4→C5→C6

第三段:C7→C8→C9

第四段:C10

当r≠0时,执行步骤2.1-步骤2.4,如下:

步骤2.1:当r=0时,设置计数参数j,对j赋初值j=0;

步骤2.2:ins(C1,C2,C3,…,Cn)中Ci*m+1→Ci*m+2→Ci*m+3…→Ci*m+m作为第j+1段组;

步骤2.3:令j=j+1;

步骤2.4:如果j值小于a,则返回步骤2.2,否则序列分段完毕。

举个例子,假设寄存器的个数为9,则m=3,a=3,r=0,寄存器按照时钟树延迟从大到小的顺序排列得到的序列为ins(C1,C2,C3,C4,C5,C6,C7,C8,C9),假设其中时钟树延迟相等的寄存器在序列中的位置为C4,C5,则根据上述分段过程可得对本例中9个寄存器排序后的序列分段结果如下:

第一段:C1→C2→C3

第二段:C4→C5→C6

第三段:C7→C8→C9

S3、依次从每段中取第i个寄存器顺序组成第i组,直至取完第一段中的寄存器,将i组寄存器按照组成的先后顺序依次排列组成第二序列;

本步骤是对分段之后的寄存器重新分组,具体执行过程如下:

对于r≠0的情况,根据步骤S2中,当r≠0时得到的分段结果,执行步骤3.1。所述步骤3.1包括如下步骤:

步骤3.1.1:设置参数l,对l赋初值l=1;

步骤3.1.2:将每段的第l(1≤l≤m)个寄存器按照分段的先后顺序串联形成第l条扫描链段:

Cl→Cm+l→C2*m+l…→C(a-1)*m+l→Ca*m+l

步骤3.1.3:令l=l+1;

步骤3.1.4:如果l小于r+1,则返回步骤3.1.2,否则进行步骤3.1.5;

步骤3.1.5:将每组的第l个寄存器按照组分段的先后顺序串联形成扫描链段M(l):

Cl→Cm+l→C2*m+l…→C(a-1)*m+l

步骤3.1.6:令l=l+1;

步骤3.1.7:如果l小于m+1,则返回步骤3.1.5,否则进行下一步骤;

步骤3.1.8:对l重新赋初值l=1,将扫描链段M(l)赋值给扫描链S(l);

步骤3.1.9:将扫描链段M(l+1)与扫描链S(l)首尾相连形成新的扫描链,并赋值给扫描链S(l+1);

步骤3.1.10:令l=l+1;

步骤3.1.11:如果l小于m,则返回步骤3.1.9,否则步骤3.1执行完毕,得到扫描链S(m)。

举例说明,参考步骤S2中的例子,寄存器的个数为10,则分段后重新分组如下:

M(1):C1→C4→C7→C10

M(2):C2→C5→C8

M(3):C3→C6→C9

得到的S(3)为ins(C1,C4,C7,C10,C2,C5,C8,C3,C6,C9)。

对于r=0的情况,根据步骤S2中,当r=0时得到的分段结果,执行步骤3.2,所述步骤3.2包括如下步骤:

步骤3.2.1:对e赋初值e=1;

步骤3.2.2:将每组的第e(1≤e≤m)个单元按照组分配的先后顺序串联形成扫描链段N(e):

Ce→Cm+e→C2*m+e…→C(a-1)*m+e

步骤3.2.3:令e=e+1;

步骤3.2.4:如果e小于m+1,则返回步骤3.2.2,否则进行下一步骤;

步骤3.2.5:对e重新赋初值e=1,将扫描链段N(e)赋值给扫描链S(e);

步骤3.2.6:将扫描链S(e)与扫描链段N(e+1)尾首相连形成新的扫描链,并赋值给扫描链S(e+1);

步骤3.2.7:令e=e+1;

步骤3.2.8:如果e小于m,则返回步骤3.2.6,否则终止,最终得到扫描链S(m)。

举例说明,参考步骤S2中的例子,寄存器的个数为9,则分段后重新分组如下:

第一组:C1→C4→C7

第二组:C2→C5→C8

第三组:C3→C6→C9

得到的S(3)为ins(C1,C4,C7,C2,C5,C8,C3,C6,C9)。

S4、记所述第二序列中的第二个寄存器为当前寄存器,执行定序流程。

所述定序流程具体可以包括:查找当前寄存器之后与当前寄存器的时钟树延迟相等的第一个寄存器,如果没找到,则将第二序列中的第三个寄存器作为当前寄存器,返回执行定序流程直至最后一个寄存器执行完定序流程;如果找到,则记为第一寄存器。然后,计算当前寄存器与第一寄存器交换位置之前与交换之后的扫描链的链长,如果交换之后的扫描链链长较短,则交换当前寄存器与第一寄存器的位置,并更新第二序列;如果交换之前的扫描链链长较短,则保持第二序列不变。

在更新的第二序列中继续查找当前寄存器之后与当前寄存器的时钟树延迟相等的第一个寄存器,若在更新的第二序列中未找到第一个与当前寄存器的时钟树延迟相等的寄存器,则将更新后的第二序列中的第三个寄存器作为当前寄存器,返回执行定序流程直至最后一个寄存器执行完定序流程;

若在更新的第二序列中找到了第一个与当前寄存器的时钟树延迟相等的寄存器,则仍记为第一寄存器,返回执行计算当前寄存器与第一寄存器交换位置之前与交换之后的扫描链的链长的步骤。

举例说明如下:为了便于描述,将步骤S3中得到的第二序列统一记为O(R1→R2→…→Rn-1→Rn),确定R1为链头,执行扫描链重定序流程如下:

步骤4.1:对s赋初值,s=1;

步骤4.2:当扫描链O(R1→R2→…→Rn-1→Rn)中前s个寄存器确定之后,对于下一级扫描单元Rs+1,对f赋初值,f=s+2;

步骤4.3:如果Rs+1与Rf的时钟树延迟相等,则确定Rs+1与Rf在扫描链O中转换位置前后扫描链的长度;

为了确定Rs+1与Rf转换前后扫描链的长度的变化,首先介绍一下扫描链长度的概念,以曼哈顿距离为例,假设一扫描链序列为(H1…→Hp…→Hq…→Hn)序列中Hi的坐标为(xi,yi),则(H1…→Hp…→Hq…→Hn)的总线长按照曼哈顿距离计算结果为:

转换扫描链序列(H1…→Hp…→Hq…→Hn)中Hp,Hq(1≤p<q≤n)的位置,转换后的总扫描链线长为:

转换后的总扫描链线长减去原扫描链线长为:

Δl=D2-D1=|xp-1-xq|+|yp-1-yq|+|xq-xp+1|+|yq-yp+1|+

|xq-1-xp|+|yq-1-yp|+|xp-xq+1|+|yp-yq+1|-

(|xp-1-xp|+|yp-1-yp|+|xp-xp+1|+|yp-yp+1|+

|xq-1-xq|+|yq-1-yq|+|xq-xq+1|+|yq-yq+1|)

根据上述公式计算Rs+1与Rf转换位置前后的扫描链长度差,如果相应的Δl<0,则转换Rs+1与Rf在扫描链中的位置,即更新第二序列,否则扫描链顺序保持不变。

步骤4.4:令f=f+1;

步骤4.5:如果f的值小于n+1,则返回步骤4.3,否则进行下一步;

步骤4.6:令s=s+1;

步骤4.7:如果s的值小于n,则返回步骤4.2,否则终止,得到最终扫描链记为O(Q1→Q2→…→Qn-1→Qn)。

与现有技术相比,本发明提出的扫描链重定序方法有以下优点:

将寄存器之间的时钟偏差考虑进来,可以在满足相邻寄存器之间的保持时间约束的情况下,尽量减少插入缓冲器的数目,一方面可以减小扫描链占用的面积,另一方面可以缓解布线拥塞的问题,降低电路的整体功耗。而且本方法对扫描链的测试时间和扫描覆盖率没有副作用,对设计的流程影响比较小。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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