|
SOC封装测试中对core的测试时间计算的一个问题
[复制链接]
SOC封装测试中对core的测试时间计算的一个问题
流水线的三种不同计算方法:1)各段均取周期法2)最省时法3)各叠加段取最大值法
在各段均取周期法中,流水线时间计算公式:第一条指令的执行时间+(指令条数-1)*周期,周期是指最大的一个阶段。
最近碰到一个问题,来源于文章<>中的5.2.3节公式(4),T=max(s1,s2)*n+min(s1,s2),也就是SOC封装测试中对core的测试时间的计算,对这个公式有点模糊~~~~~~~~~.
扫描链扫入时,有3个阶段:扫入,响应,捕获。现有扫描电路,由以下三个部分构成:封装输入单元,长度为L1;扫描链单元,长度为L2;封装输出单元,长度为L3。现在合并成两个阶段{s1,s2},其中,s1=L1+L2,s2=L2+L3。
问题:有n个向量,从这3个阶段经过,采用流水线方式,求总共需要多少时间。假设每个单位长度的移动要1个时钟。并且响应等待为1个时钟,在计算中由于每个向量都有等待,所以忽略。
解:就一个向量而言,从扫描输入到扫描捕获完成需要的时间为:L1+L2+L3
采用各段均取周期法,时间公式为T=(L1+L2+L3)+(n-1)*max(L1,L2,L3)
由于我们问题的特殊性,所以我将时间公式应改为T=(L1+L2+L3)+(n-1)*max(L1,L2,L3)+(n-1)*L2 (@)
举个例子。如L1=4,L2=8,L3=3,即s1=12,s2=11;n=3
则T=(4+8+3)+2*max(4,8,3)+2*8=47
由原来我们给定的公式T=max(s1,s2)*n+min(s1,s2)=12n+11=12*3+11=47
从而验证原来给定的公式是正确的。我现在只能想出将各段均取周期法的公式改为@式,可以验证出来。@式的来由我是这样想的:由于每个向量都在扫入和扫出时都做为s1和s2的一个部分,所以就假定这个部分只经过一次,然后在最后加上。不知道对不对~~~~~~~
感觉实际上这只是流水线操作方式的一种变形,不过原来给定的公式还是不清楚怎么推
|
|