Wrapping Core Flow
本文主要讲述了the Simple Wrapper Flow的默认配置、配置规则以及如何进行修改。参考(翻译)自《Synopsys® TestMAX™ DFT User Guide》,FYI。
Configuring Simple Core Wrapping
1. Configuring Dedicated Wrapper Cell Clocks
默认情况下,the simple core wrapping使用带有dedicated wrapper clock的dedicated wrapper cell。不过可以使用以下option为dedicated wrapper cell指定system clock。
set_wrapper_configuration -use_system_clock_for_dedicated_wrp_cells enable
在这种情况下工具会尝试使用以下规则来识别和使用与每个port关联的主时钟域。
- port 的dedicated wrapper cell使用与该port相连flip-flop相同的clock;
- 如果这个port和多个时钟域的flip-flop相连,选择最优时钟;
- 如果如果没有找到时钟,就会使用任何用户使用set_dft_signal -view spec -type wrp_clock指定的wrapper clock;
- 如果没有用户指定的wrapper clock则会创建并使用dedicated wrapper clock;
2. Using Shared Wrapper Cell
默认情况下,simple core wrapping flow插入dedicated wrapper cell来wrap input和output port。如果存在functional I/O register并且想要用做shared wrapper cell,使用set_wrapper_configuration的-style shared指定。
set_wrapper_configuration -class core_wrapper -style shared
默认情况下当shared wrapper cell被启用之后对于不满足share条件的port会插入dedicated wrapper cell以免出现unwrapped情况,如果不想使用dedicated wrapper cell可以使用set_wrapper_configuration的-dedicated_cell_type none选项禁用。
set_wrapper_configuration -class core_wrapper -style shared -dedicated_cell_type none
DFTC根据每个wrapper cell需要的性能自动选择wrapper cell(WC_D1,WC_D1_S,WC_S1_S,WC_S1_S)。如果shared wrapper cell跨越多个clock domain,除非clock mixing选项被启用不然会将它们放置在单独的wrapper chain里。
3. Configuring Shared Wrapper Cell Clocks
对于shared wrapper cell,core wrapping保留寄存器现有的functional clock signal。这可能会在boundary cell操作期间干扰到内部core logic。所以为了避免这种情况出现,应该为shared wrapper cell提供单独的functional clock,或者使用set_wrapper_configuration或set_boundary_cell命令中的-use_dedicated_wrapper_clock选项。
#global
set_wrapper_configuration -class core_wrapper -style shared
#per-port
set_boundary_cell -class core_wrapper -ports port_list -type WC_S1 -use_dedicated_wrapper_clock true
当这个选项启用时,这个option会在wrapper test mode有效时使用dedicated wrapper clock,但在其他模式会保留原始的functional clock。
4. Using In-Place Shared Wrapper Cells
当shared wrapper cell被用来wrapper port时,DFTC会用shared wrapper cell替换或交换该port的整个I/O register。这个过程会在这个register周围加一层Hier结构并且重新命名。
如果想保留这个register原始的Hier结构使用set_wrapper_configuration或者set_boundary_cell的-register_io_implementation_in_place选项:
#global
set_wrapper_configuration -class core_wrapper -style shared -register_io_implementation in_place
#per-port
set_boundary_cell -class core_wrapper -ports port_list -type WC_S1 -register_io_implementation in_place
这个选项会将组成这个wrapper cell的其他逻辑散在这层design中已实现保留原始I/O register Hier结构的目的。
5. Creating Separate Input and Output Wrapper Chains
默认情况下,the simple wrapper mode插入具有以下特性的wrapper chain:
- input和output wrapper cell可以混在同一条scan chain上;
- input和output wrapper cell共享同一个wrapper shift signal;
为了防止input和output wrapper cell混到同一条scan chain,使用set_wrapper_configuration的-mix_cells false选项指定。
如果使用单个wrapper shift signal,它会被用到input和output wrapper chain。你还可以单独定义输入输出wrapper chain shift signal。