使用DFT Compiler进行wrapping cores需要完成一些相关的配置,下面介绍主要的配置以及涉及到的的DC命令。
使能core wrapping
为了使用core wrapping功能,首先要使用包含wrapper cell的工艺库:
然后读入设计后,使用如下命令使能core wrapping功能:
定义wrapper shift信号
wrapper shift信号可以使能scan数据通过wrapper chain进行移位,就像scan chain的scan-enable一样。wrapper shift信号可以有以下多种选择。
使用工具创建的信号,默认情况下,DFT Compiler会自动创建一个wrapper shift信号,名字叫做wrp_shift。
自己定义单独的wrapper shift信号,通过如下命令将信号源定义为wrp_shift:
复用已经存在的scan-enable信号,这样的话需要通过命令将信号源既定义为ScanEnable信号又定义为wrp_shift信号:
定义输入和输出分开的wrapper shift信号。为输入和输出wrapper chain定义分开的wrapper shift信号,需要通过set_dft_signal命令定义两个wrp_shift信号,然后通过set_wrapper_configuration命令分别将其指定为input_shift_enable和output_shift_enable。
定义单独的wrapper时钟信号
如果需要一个独立的wrapper clock,工具会默认创建一个名为wrp_clock的端口。这个时钟默认10%的占空比(在45%时上升沿,在55%时下降沿)。如果想将一个存在的端口用来做wrapper clock,可以用如下命令:
也可以通过如下命令实现特定的timing:
配置全局的wrapper设定
set_wrapper_configuration命令允许为wrapper chain定义全局的配置参数,此时必须使用-class core_wrapper选项。
例如,默认情况下工具不会创建安全态的wrapper cell,为了给wrapper chain上的所有wrapper cell都指定一个安全值,可以使用如下的命令:
配置特定端口的wrapper设定
set_wrapper_configuration命令是应用到design的所有port上的,如果想要对一些特定的端口进行配置,可以使用set_boundary_cell命令,其一些选项和set_wrapper_configuration基本相同。
例如,对特定的端口设定安全值:
避免对一些端口插入wrapper cell:
控制wrapper chain的数目和长度
控制wrapper chain的数目可以通过如下命令:
控制wrapper chain的长度可以通过如下命令:
如果还同时通过set_scan_configuration命令指定了chain的数目为N,那么这个N是wrapper chain和internal chain的总数目,工具会先构建wrapper chain,然后用剩下的数目去构建internal chain。如果chain的数目和长度都指定了,则以长度为准。