5.3.1 Exhaustive Testing
Exhaustive testing针对n输入的组合逻辑电路需要个pattern,所以二进制计数器就可以作为exhaustive pattern generator (EPG),因为input生成的顺序不重要,所以使用maximum-length LFSR更好,而且为了实现用它生成向量,还需要修正一下LFSR让其包含全零状态,这种LFSRs叫做complete LFSRs (CFSRs)。
5.3.1.1 Binary Counter(二进制计数器)
下图就是一个针对四输入组合逻辑电路设计的四位的二进制计数器,二进制计数器设计起来简单但是比LFSRs需要更多硬件:

5.3.1.2 Complete LFSR
下图中a和b(分别是standard和modular CFSR)是针对四输入组合逻辑电路设计的两种complete LFSRs,它们是从four-stage maximum-length LFSR重构出来的,因此周期为16,XOR门插入在最后一个stage并且NOR门用来作为zero-detector,这样就可以使状态{0001}后面插入一个全零状态。

上图c和d为a和b通过布尔运算简化的电路。如果想进一步简化,就可以用hybrid LFSR scheme实现。
Exhaustive testing通常适用于小于20个输入的电路,当输入大于20个时会耗时很长,下面讲的技术都是在努力减少测试pattern的数量,当exhaustive testing不适用的时候用。
5.3.2 Pseudo-Random Testing
pseudo-random pattern generator (PRPG) 会减小测试长度但是会降低故障覆盖率,Pseudo-random testing的优点就是可以用在组合逻辑电路上也可以用在时序逻辑电路上,难点在于需要评估测试长度和故障覆盖率。
5.3.2.1 Maximum-Length LFSR
Maximum-length LFSRs通常被用于pseudo-random pattern generation,但其实某些电路是有随机pattern抵抗性的random-pattern resistant (RP-resistant),比如五输入的或门,stuck-at-1的难度就很大。
5.3.2.2 Weighted LFSR
为了提高故障覆盖率(或者说检测到大部分的RP-resistant故障),会用到weighted pattern generation technique,顾名思义,就是加权重,让测到难测的故障概率升高,下图展示的就是一个four-stage weighted (maximum-length) LFSR,概率分布为0.25:

5.3.2.3 Cellular Automata
Cellular automata 是1983年被提出来的,比LFSR有更好的随机特性。**cellular-automaton-
based (or CA-based) pseudo-random pattern generator (PRPG)**在BIST应用中非常有吸引力,它有三个主要的优点:
- 提供的pattern更加随机
- 有机会在RP-resistant的电路中实现更高的故障覆盖率
- 它只需要相邻的neighbor之间通信,而不是全局的反馈,不像modular LFSR
cellular automaton (CA) 是cells的一个集合,一个cell的状态只取决于当前的cell和他的左右邻居门,下图a是一个基本的结构:

有一些规则如下:

根据这两条规则可以得到下面的状态转换表:
