scandef文件和scan reorder介绍

 DFT Compiler能够生成scandef,此文件描述scan cell可以被怎样reorder和repartition。在数字IC后端的布局布线工具中可以使用scandef信息来优化scan chain以及配合物理信息来修复timing violation。

插入DFT scan chain 之后,为了解决由于绕线开销而导致的timing 问题,其中一种方式就是基于物理位置来优化scan chain。通常有两种对scan chain进行优化的操作方式,scan reorder和scan repartition

scan reorder是改变同一条scan chain上两个(或多个)scan cell的位置,如下图所示,可以看到scan reorder后绕线长度明显减小。

 scan repartition是交换不同的scan chain之间的两个(或多个)scan cell,在此过程中保持scan chain的长度不变,如下图所示。

因为scan reorder和scan repartition改变了scan chain的结构,因此在后端流程中做完对scan chain的优化后需要拿优化后netlist重新生成测试向量。

在scan reorder和scan repartition的过程中,后端工具必须遵循DFT的相关约束,例如clock是否可以mix,不同的dft partitions,多个test mode等等。如果直接把这些约束信息传给后端工具,这将会是十分复杂的而且十分容易出错。

    因此,scandef就可以作为中间桥梁来为scan reorder和scan repartition的操作传递这些约束信息,后端工具不需要理解复杂的dft约束,只需要遵循scandef的描述来进行优化操作就可以了。

下面介绍一下scandef的具体格式,以下图展示的scandef文件为例进行介绍。

①SCANCHAINS表示scandef中chain的数目。要注意的是这里的chain是指stub chain,跟实际design中我们通常所说的的scan chain并不完全相同。stub chain描述的是scan chain的一部分,这一部分能够在自己内部进行reorder操作。一条stub chain包含了起始的点(START)、中间穿过的cell (FLOATING/ORDERED)和结束的点(STOP)。

② “-” 开头的表示stub chain的名字,这里简单的用数字1/2/3表示的,通常还会带有字母。

③START和STOP指定了stub chain的边界,它们可以是各种scan相关的cell,例如scan I/O port,codec logic,lockup latch,mux,buffer/inverter等等。

FLOATING部分所包含的就是一个可以被自由reorder的scan cell列表。因为该列表内的这些scan cell互相之间是可以任意reorder的,所以这个列表中列出来的scan cell的顺序是有可能跟实际scan chain的顺序不一致的。

ORDERED部分描述的是一组scan cell,这一组内scan cell顺序不能变动,但是他们可以作为一个整体被reorder。会产生ORDERED的原因是通过compile_ultra命令被识别为了shift register,或者是被set_scan_path -orderd_elements命令定义了,或者是scan cell之间的buffer或inverter。

BITS表示该scan元素是多bit的,例如已经插好dft的core,不带BIST就表示默认每个scan cell是1bit的。

PARTITION表示该stub chain所属的分组,是repartition操作的依据,具有相同partition name的stub chain属于同一个分组,它们之间的元素可以进行repartition。

    此外,scandef文件中并不会包含design中所有的scan cell,只包含了design中可以被reorder和repartition的scan cell的信息,不能优化的scan cell会被忽略

dc compiler 工具生成scan def 命令:

write_scan_def -output filename.scandef

需要注意此命令使用的位置,该命令必须要在inset_dft串完chain之后才可以使用。类似于change_name或者eco等要对design进行修改的操作也需要在write_scan_def之前完成。

    该命令还必须要在write ddc之前执行。因为执行完write_scan_def命令后,工具会将scandef信息存在内存中,后续再写出ddc文件的时候才会含有scandef的信息。如果是用ICC来进行后端的布局布线,那么吃ddc就足够进行reorder了,用其他家的后端tool则需要使用netlist+scandef。

使用实例:

  write_scan_def命令还有一个option,是用来决定design所用的core中的dff是否可以被reorder。默认core中的dff不会被reorder,所以对于一个含有core的design来说,写出来的scandef中并不会含有core中的dff,而是用上提到的BITS来表示这些dff,如下图所示:

图片

    若想让core中的dff也可以被reorder,可以使用如下命令:

  write_scan_def -expand_elements {CORE} -output filename.scandef

    这样写出来的scandef中就会含有core中的dff了,如下图所示

图片

感谢微信公众号为 数字IC小白记录 总结

  • 14
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值