SCOAP参数介绍与计算
为什么要学习SCOAP算法
电路的Primary Input(PI) 可控性最高,Primary Output(PO)可观测性最高,插入Test Point时需要考虑节点的位置,可以用SCOAP算法来计算节点可控、可观的难易程度。
可控性:将电路中节点置为预定逻辑值的难易程度
可观性:电路中任意节点的值在PO可观察的难易程度
SCOAP算法介绍
SCOAP(Sandia Controllability / Observability Analysis Program):
一种可测试性度量工具,其复杂度随电路规模呈线性增长。SCOAP基于电路拓扑学,是一种静态分析,容易计算,为电路的可控和可观提供一个不错的估计值,也为Test Point的插入提供依据。
SCOAP算法的衡量指标
SCOAP参数:CC0(N)/CC1(N),SC0(N)/SC1(N),CO(N)/SO(N)

什么是可控性值、可观性值
CC0(N)/CC1(N):称为节点N的组合0/1可控性值。也就是将节点N的值置为组合逻辑值0/1时,需要对相关节点赋以确定组合逻辑值的最少赋值次数。
SC0(N)/SC1(N):称为节点N的时序0/1可控性值。也就是将节点N的值置为时序逻辑值0/1时,需要对相关节点赋以确定时序逻辑的最少赋值次数。
CO(N):节点N的组合可观性值。也就是将节点N的信息传播到PO,所需最少的组合逻辑值赋值次数。
SO(N):节点N的时序可观性值。也就是将节点N的信息传播到PO,所需最少的时序逻辑赋值次数。
SCOAP算法计算
组合逻辑单元的计算公式
组合可控性与组合可观性计算:

时序逻辑单元的计算公式
时序可控性与时序可观性计算:

SCOAP算法描述
下图是SCOAP算法中计算任意节点N的可控性值的流程图。

SCOAP算法中,设置一个先进先出的排队表,称之为后继表。每次计算时都按顺序从后继表中取出一个元件,再调用标准元件的可控性值数据库算出该元件所有输出节点的可控性值,计算过程直到表空才结束。
如图是SCOAP算法中计算任意节点N的可观性值的流程图。

为了方便计算节点的可观性值,设置一个先进先出的排队表,称之为前趋表。每次计算时都按顺序从该表中取出一个元件,再调用标准元件的可观性数据库和前面已求得的各元件可控性值,求出该元件所有输入节点的可观性值。对于扇出节点,取所有扇出分支中可观性值最小的作为扇出根节点的可观性值。
若某节点的可观性值在计算后没变,则其前趋不进前趋表;若表中已有某节点的前趋,该前趋也不入表。重复上述计算过程,直到各节点的可观性值稳定之后才结束。
总结
1、可测性度量SCOAP用来衡量电路可测性的难易程度;
2、可控性值表示了对电路中节点置为预定逻辑值的难易程度,随着节点在电路中深度的提高,难度增大;
3、可观性值代表了在PO观察电路节点的逻辑值所付出的难易程度,随着电路深度的提高,距离PO越远的节点,可观性越差;
4、可测性度量SCOAP可以快速分析测试生成的难易程度,并不生成测试向量。可测性分析所用的时间并不像测试生成那样长,一般与电路中的path数量成正比。