scan chain的原理和实现——6.scan architecture
set_scan_configuration
此命令用于指定扫描属性,例如: 扫描方式、扫描链数或扫描链长度、处理多个时钟、lock-up、扫描链中省略的寄存器。
set_scan_configuration -style multiplexed_flip_flop I lssd l clocked_scan | aux_clock _lssd l combinational l none
-clock_mixing no_mix l mix_edges l mix_clocks l mix_clocks_not_edges 指定扫描综合是否将在同一链上建立具有不同时钟域的扫描链,在同一链上混合时钟域通常需要在域交叉处插入锁存锁存器。
-chain_count integer_or_default* 指定要构建的扫描链数。 默认情况下,给定时钟混合约束
-max_length integer_or_default* insert_dft会在不超过指定长度的情况下构建扫描链
-exact_length integer_or_default* insert_dft构建, 尽可能扫描具有指定长度的链
-create_dedicated_scan_ports true l false 寻找直接驱动输出端口的触发器,将此触发器放在扫描链的尾端。
-internal_clocks none l single | multi
-test_mode <mode_name> 在一个insert_dft任务中可以支持多种扫描配置,其中每个扫描配置都具有唯一的test_mode名称
-exclude_elements <element_list> 扫描链中应排除的元素列表
-add_lockup true l false 跨越不同的时钟域时加入latch
-insert_terminal_lockup true l false 如果为true,则insert_dft在扫描链的末尾插入lock-up,如果不是multiplexed_flip_flop,则忽略
-lockup_type latch l flip_flop 指定是使用latch还是将FF用作lock-up synchronization。
使用lock-up latch
lock-up latch(或flip-flops)用于允许扫描链跨越时钟域,它们减轻了两个时钟域之间的偏斜,以确保在扫描链上可靠地转移数据。
插入lock-up latch规则
+edge(上升沿) -edge(下降沿)
+edge to +edge ——Lock-up Latch OK
-edge to -edge ——Lock-up Latch OK
+edge to -edge ——不会在DFTC中发生
-edge to +edge ——无需添加lock-up latch,如果添加了会有潜在的hold time问题
-edge to -edge triggered devicesLock-up Latch OK
+edge to +edge triggered devices
Will never happen by default in DFTC since it willalways order later triggered devices earlier in thechain
-edge to +edge triggered devices口No Lock-up Latch needed
Potential hold time issue if added