背景: 对于traditional scan的capture过程来说,实际上分为三个步骤,分别是force PI,measure PO和pulse clock。在pattern shift in之后,电路中的所有寄存器都已经有了初值,但如果此时直接pulse clock去进行capture操作,由于primary input上没有force值,与primary input直接相连的那些寄存器将会capture进来一个x,同时primary input和寄存器之间的组合逻辑不可测,这不是我们所期望的。因此,在pulse clock之前要先进行force PI的操作,给primary input上force一个初值,pulse clock的时候就不会将x态引入电路。同理,对于primary output来说,在shift in之后所有的寄存器都有了初值,此时就可以去观测output port了。在force PI后紧跟着measure PO的操作。假如没有measure PO,就无法观测到寄存器与Primary output port之间的组合逻辑是否有fault。最后是pulse clock,将每个scan cell前组合逻辑输出的值capture进来,以备接下来的shift out去观测。总的来说,对于tradition scan,force PI、measure PO和pulse clock这三个操作一起才是一个完整的capture过程,然后再shift out,就完成了一次完整的scan测试。对于hierarchy scan的capture过程来说,是没有force PI和measure PO的。因为在intest_mode下,我们测试的是wrapper chain内包裹起来的逻辑,此时wrapper chain上的寄存器,就充当了traditional scan时input port/output port的角色。load input wrapper chain代替了force PI的操作,而unload output wrapper chain代替了measure PO的操作。而对于真正的core的input port和output port,我们反而可以不去控制和观测,因为那已经不是wrapper内包裹起来的部分了。而wrapper chain的外部,会交给extest_mode来测试。从这一差异也可以看出wrapper chain的隔离作用。
wrapper chain之所以如此特殊,在capture phase还能保持shift/hold状态,主要取决于wrapper cell的特殊结构。接下来我们将详细介绍wrapper cell。
Wrapper cell —— 构成wrapper chain的寄存器,主要介绍simple core wrapper cells和simple core wrapper chains。
-
simple core wrapper cells
简单的core wrapping flow所用到的wrapper cell有三种:Dedicated Wrapper Cell、Dedicated Safe-State Wrapper Cell和Shared-Register Wrapper Cells。
-
Dedicated Wrapper Cell
Dedicated Wrapper Cell用自己内部的专用触发器来提供可控制性、可观测性和移位功能,如下图所示。
该wrapper cell包含如下接口:
cti - core test input,wrapper cell的测试输入,该信号可以来自主要输入(如果该wrapper cell处于wrapper chain的首位)或者wrapper chain上前一个wrapper cell的cto信号。
cto - core test output,wrapper cell的测试输出,该信号可以驱动主要输出(如果该wrapper cell处于wrapper chain的末位)或者wrapper chain上后一个wrapper cell的cti信号。
cfi - core functional input,对于输入的wrapper cell,该信号来自core周围的逻辑;对于输出的wrapper cell,该信号来自core。
cfo - core functional output,对于输入的wrapper cell,该信号驱动core;对于输出的wrapper cell,该信号驱动core周围的逻辑。
shift_clk - wrapper clock,通常由core的wrp_clock驱动,为wrapper cell中的触发器提供时钟。
shift_en - shift enable,类似于wrapper cell的scan-enable信号,该信号为高时,通过cti和cto进行数据移位;该信号为低时,根据capture_en决定是捕获功能输入还是保持当前状态。输入和输出wrapper cell的shift_en可以分别进行控制。
capture_en - capture enable,该信号决定wrapper cell不进行移位时所捕获的内容,为高时保持当前值,为低时捕获功能输入。
2.Dedicated Safe-State Wrapper Cell
wrapper cell可以在它的输入提供可观测性,在它的输出提供可控制性,但是,wrapper cell的受控输出也会在通过wrapper chain进行数据移位(shift)时发生变化。在一些情况下,如果wrapper cell的扇出存在边沿触发或者电平敏感的逻辑,就会发生意外的电路操作。
为了避免此种情况,可以为wrapper cell指定一个安全值。如下图所示,在cfo输出增加了一个mux来驱动一个静态安全值(safe_value),由safe_control进行控制。
3.Shared-Register Wrapper Cell
如果在design中存在边界I/O寄存器,那么wrapper cell可以共享这些function寄存器,以减少wrapper cell的面积开销。share wrapper cell会取代原有的function寄存器,并且在function mode下可以提供原有的功能。下图是上述提到的两种wrapper cell所对应的share wrapper cell,接口均保持不变。