lockup latch:锁定锁存器;clock gating:门控
zero cycle check hold, easy to meet: 零周期检查保持,易于满足;
shifting of data from flop 3 to 4 is still in one shift cycle:从触发器3到触发器4的数据转移仍然保持在一个周期内。
Hold check is half cycle back now, much relaxed now: 保持检查现在只占后半个周期,比以前轻松很多
图4
正如以上波形中所示(图4),当我们在 触发器3 和触发器4之间插入锁定锁存器时,我们的时序路径将被分为两个阶段。 1. 从触发器3到锁定锁存器 保持检查从1-1开始,它仍然是零周期检查,但是因为没有偏移,因此非常简单易行。默认建立检查从1-2开始。 2. 从锁定锁存器到触发器4 保持检查从2-1开始。这是插入锁定锁存器的主要优势和动机。保持是向后移位半周期,现在即使我们的时钟偏移高达半个移位时钟周期,我们仍具有足够的裕量。这可以确保在这种情况下不会出现任何保持偏差。
建立检查从2-3开始。在2-3期间锁存器是透明的,这一阶段中捕获的任何数据都将被传输至触发器4,直到边沿 3(减去触发器的建立时间)。我们可以看到,从触发器1到锁定锁存器之间的建立检查也可以轻松完成。1-2是默认检查,但是锁存器在整个半个周期的过程中都是透明的,在理想情况下,建立检查可以向边沿3位移。(这一概念被称为锁存器借用)。
此处,另外一个需要注意的重要事项是该锁定锁存器应具有与发出触发器时钟相同的时钟,而不是与捕获触发器时钟相同。正如我们在上面所看到的,触发器3到锁存器的保持检查仍然是1-1(零周期检查)。如果锁定锁存器具有与捕获 触发器时钟相同的时钟,我们将不会得到任何优点。因此,理想的解决方案是在时钟树结构中发出触发器和锁定锁存器都由相同的时钟缓冲器驱动。
以上示例说明,锁存器可以在扫描移位路径中有效地混合保持。也许有人会提出疑问,我们是否也可以通过插入保持缓冲器或延迟cell来修复这些偏离。但是,快速查看保持缓冲器的面积,延迟cell和锁存器表明,保持缓冲器适合用于混合较小的保持偏离,但是如果偏离较大,则锁存器在面积和延迟方面都比缓冲器更有优势。使用延迟cell时,不同操作条件之间始终存在巨大的偏离风险,因此应当有选择地、巧妙地使用这些cell。在另一方面,锁存器在任何操作条件下始终存在半个周期的延迟。
在最后一节中,我们将考虑各种情况,找出在扫描链的发出和捕获触发器之间出现巨大的时钟偏移时修复保持故障的最适合的解决方案。 不同情形
情形1:正-正边沿触发触发器之间 我们在以上示例中包括了这一情况,可以使用负电平锁存器。 情形2:负-负边沿触发触发器之间 通过上述相同的模拟,可以使用正电平锁存器。 情形3:负-正边沿触发触发器之间 我们已经了解到保持在此处非常轻松。此处不需要锁定元件。 情形4:正-负边沿触发触发器之间 这是一个非常有趣的情形。从时序的角度来看,这种情况不会造成问题,但是在扫描移位中这是一个非法连接。由于在ATPG中,时钟被视为返回至零波形(在移位完成后,时钟将变为活动低电平),如果我们允许这种交叉,我们将发现在扫描移位后,所有此类的正-负对在时钟脉冲后将具有相同的值。因为所有触发器都不是可以独立控制的,因此这将导致测试覆盖范围减少。在拼接时应该避免出现这种情况,但是有时候无法避免,因为存在压缩逻辑或硬宏。
我们可以在正和负触发器之间插入一个正电平锁定锁存器,这样将解决ATPG问题,但是同时也会带来时序问题,因为保持检查在从触发器到锁定锁存器以及从锁存器到负边沿触发器之间将再次变为零周期检查。
另一个解决方案将插入一个哑触发器,可以在这些触发器之间的正边沿或负边沿上工作。应该注意的是,在移位后哑触发器将仍然具有与第一个触发器或第二个触发器相同的值,这取决于它是在正边沿触发还是在负边沿触发,但这不会导致任何问题出现,因此它不是一种功能性触发器,我们不会以任何方式在任何位置使用它来捕获数据。如果我们决定插入正边沿触发器,发出 触发器的时钟延迟和该dummy 触发器将相同,因为它将是零周期保持检查,并且哑触发器到下一个触发器将是半周期保持检查,同样,如果我们插入哑负边沿触发器,捕获触发器和哑负边沿触发器的延迟是相同的。
这些就是设计中可能存在的触发器之间的所有四种情况,但有时候这些情况并不十分明显。例如,在扫描具有硬宏且是预拼接的设计时需要特别注意。许多情况下我们并不具备针对硬宏的netlist/spef/timing约束,因此我们建议在这些硬宏之前插入锁定锁存器,以防这些硬宏的所有者将其丢失。另外一个此类示例是burn-in模式,设计中的扫描链将被连接在一起,以便同时切换所有触发器。因此同样存在这种可能性,也就是说链中的最后一个元件和下一个链的第一个元件具有时序关键逻辑或无效的正-负交叉。对于此种情形,理想的情况下应该注意RTL本身,因为设计者在将这些扫描链连接在一起能够更好地了解扫描元件的顺序。如果未将其考虑在内,最佳的做法是在每个链的结尾处插入相应的锁定锁存器。
通过采用上述技巧和指导,设计者可以在其芯片上实现强大的扫描结构。在出现建立故障的情况下,设计可以在更低的频率上运行,但是在出现任何重大保持故障时,逻辑的既定功能是无法预测的。扫描位移中的保持故障非常严重。它会在测试期间极大地缩小测试覆盖范围。因此,我们需要一个强大的扫描结构,解决我们前面所讨论的潜在的扫描移位故障问题。相应的锁定类型元件可以完美地解决此类问题,因为它可以在任何操作条件下确保半个周期的延迟。