罗风 · 2021年03月08日

论DFT | 一文读懂 ScanDEF 相关的一切

ScanDEF 用于记录Scan chain 的信息,以在不同的工具中传递,如ATPG 工具跟P&R 工具。目前常用的ScanDEF 版本是5.5,其格式如下:

WeChat Image_20210308103628.jpg

ScanDEF 由如下几部分组成(注:由于目前常用的是muxed scan style, 以下叙述都是基于muxed scan style, 关于LSSD scan style 如有兴趣,可私聊。):

numScanChains:

  • 表示ScanDEF 中chain 的数目;
  • ScanDEF 中chain 的数目跟设计中实际scan chain 的数目并不相同,ScanDEF 中每条chain 上的所有寄存器必须由同一个clock 驱动,而且必须由同一个clock edge 触发;如果在插scan chain 的时候使能了mix clock 或mix clock edge, 则设计中一条实际scan chain 上可能有多个clock 驱动的寄存器,也可能有多个clock edge 触发的寄存器,这样的chain 在写到ScanDEF 中时,会被拆分成多条scanDEF chain.
  • ScanDEF 并不包含设计中所有在scan chain 上的寄存器,它只包含可以reorder 或repartition 的部分,不能优化的scan cell 或scan segment 被忽略。

chainName:

  • scanDEF chain 的名字,其格式为:

WeChat Image_20210308103633.jpg

+ PARTITION partition\_name:

  • 用于定义该ScanDEF chain 所属分组,partition\_name 相同的ScanDEF chain 属于同一个分组,P&R 工具只能对同一分组内ScanDEF chain 中的寄存器做位置交换(即所谓的Scan Chain Reorder ).
  • partition name 的格式如下,在ScanDEF 中 1500 core wrapper segments 有单独的ScanDFE chain, 有独立的partition name, 用关键词"EXTEST" 予以区分,但是不会对input 和output bounding wrapper segments 进行区分。

WeChat Image_20210308103638.png

MAXBITS maxBits

  • 跟PARTITION 一起使用,用于设定该分组中chain 的最大长度,以寄存器的个数计,默认值是0, 表示以当前工具的设定值为准。

START { fixedInComp | PIN } outPin

  • 指定ScanDEF chain reorder 的起点;
  • fixedInComp outPin 指定某个component 的输出pin 为起点;
  • PIN outPin 指定 I/O pin 为起点。

STOP { fixedOutComp | PIN } inPin**

  • 指定ScanDEF chain reorder 的终点;
  • fixedOutComp inPin 指定某个component 的输入pin 为终点;
  • PIN inPin 指定 I/O pin 为终点。

FLOATING

  • Floating component 包含一个或多个寄存器,该字段包含的寄存器可以在chain 上被随意reorder.

ORDERED

  • Ordered component 由两个或多个互连的components 构成一个固定段( fixed segment ), 在做reorder 时固定段整体作为可reorder 的对象,reorder 不可以改变固定段内components 的顺序;
  • 固定段内的components 可以是扫描路径中的registers, buffers, inverters, muxes,  other combinational cells.

示例:

  • no mixed clock, no mixed clock edges;
  • 4条由 clk1 驱动的chain, 每条chain 有75个上沿触发的寄存器;
  • 1 条由 clk2 驱动的chain, 有100个下沿触发的寄存器;
  • 未定义scan segments, 五条chain 都只有FLOATING 的section 没有ORDERED 的section.
  • 共有两个partition, p\_clk1\_rising 和p\_clk2\_falling.

WeChat Image_20210308103642.jpg


Segmentation Rules

将设计中实际scan chain 写到ScanDEF 中时,遵守如下规则:

  • 如果scan chain 包含head / tail segment,  且定义成preserved 或fixed segment, 那head segment 最后一个寄存器的Q pin 被定义成ScanDEF chain 的START 点;tail segment 第一个寄存器的SI pin 被定义成ScanDEF chain 的STOP 点。

WeChat Image_20210308103647.jpg

  • 如果scan chain 包含head / tail segment,  且定义成floating segment, 那该segment 会被写成有自己partition 的ScanDEF chain.
  • 对于mixed edge scan chain, 且下降沿触发寄存器在前上沿触发的寄存器在后,无lockup latch, 则第一个上沿触发寄存器的SI pin 被定义成 falling edge-triggered segment 的STOP 点;第一个上沿触发寄存器的Q pin 被定义成 rising edge-triggered segment 的START 点.

WeChat Image_20210308103733.jpg

  • 对于mixed clock scan chain, 在跨clock domain 处,会插入lockup latch, 那lockup latch 的D pin 会被定义为前一个clock segment 的internal STOP 点;lockup latch 的Q pin 会被定义为后一个clock segment 的internal START 点。

WeChat Image_20210308103746.jpg

  • 对于shared functional output scan chain, ScanDEF chain 的STOP 点是最后一个寄存器的SI pin 而不是shared mux 的输入pin.

WeChat Image_20210308103750.png

  • ORDERED 段可能不被写入ScanDEF chain, 这取决于ORDERED segment 在scan chain 中的位置以及该ORDERED segment 中是否有mixed clock / edge. 如果一段scan chain segment 被定义为fixed 或preserve, 则会在ScanDEF chain 中写出ORDERDED segment.
  • 如果Scan chain 中有abstract segment, 而且对应于logic abstract 或white box module, 那该abstract segment 不会被写入ScanDEF, 工具通过向前或向后trace 来确定对应的START 和STOP 点;如果abstract segment 对应于library componet, 则该abstract segment 可能被写到ScanDEF 中。

WeChat Image_20210308103752.jpg

  • 如果scan chain 是power domain 或library domain aware 的,那scan chain 将会被拆分成多条ScanDEF chain. 如果scan data input 和output 跟scan chain 上的寄存器不属于同一个power / library domain, 则该power domain 第一个寄存器的Q pin 被定义为对应的START 点;该power domain 最后一个寄存器的SI pin 被定义为对应的STOP 点。
作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/1MtAoF1lobzE5TD5sza3ZA
作者微信公众号
Capture.PNG

相关文章推荐

曲线们 | 学习曲线预测单个晶体管的成本收益
从EDA使用,捋数字芯片设计实现流程 | 上

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
11662
内容数
1232
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息