罗风 · 2021年03月26日

Innovus 小技巧 | ScanChain reorder

接上回《论DFT | 一文读懂 ScanDEF 相关的一切》,通常,Scan chain 在综合阶段插入,如果插scan chain 时没有考虑物理信息,或者看到的物理信息不准确,或者跟P&R 工具的correlation 不好,那在P&R 阶段可能会看到距离特别远的寄存器被连到了同一条chain 上,这会浪费很多绕线资源,如果设计本来就congestion 敏感,则会使congestion 雪上加霜。

WeChat Image_20210326102836.jpg

聪明的硅农想出了一种解决办法——ScanChain reorder , 顾名思义就是重新连接scan Chain, 尽量将位置靠近的寄存器连到一起,以减少绕线资源的浪费。ScanChain Reorder 也并不能随心所欲,正规flow 通常都需要读入ScanDEF, 工具可以从ScanDEF 中读出哪些chain 属于同一分组(即有相同的partition name, 如还不清除ScanDEF , 请详读上一篇文章),然后对同一组内scan chain 上的DFF 重新排列组合,以使得scan chain 的走线最短。 如果Scanchain 即没有clock mix 也没有clock edge mix 也没有其他要特殊处理的东西,不读ScanDEF 也可以。

WeChat Image_20210326102839.jpg

Innovus 即支持有ScanDEF 的Scan reorder 也支持没有ScanDEF 的Scan reorder.

Native Scan Reordering Approach

如果没有ScanDEF 可用这种方式在Innovus 中做Scan Reorder.

关键命令

  • specifyScanChain: 该命令用于识别scan Chain / Chain segment 的起始、终止点;
  • scanTrace: 根据specifyScanChain 识别的结果,该命令会识别出设计中的scan chain 并分析其连接关系。
  • specifyScanCell: 通常在设计导入时,工具从library 中自动识别scan cells, 如果library 中缺少相应信息,则需要用该命令来指定scan cell.
  • scanReorder: 默认Innovus place\_opt\_design 做完placement 之后会做scan reorder, 对应变量是"setPlaceMode -place\_global\_reorder\_scan" . 用户也可以用该命令做。

适用场景:

  • single-clock domain, single-edge chains: 最简单的情况,没什么要特别注意的。

WeChat Image_20210326102843.png
WeChat Image_20210326103917.jpg

  • multiple clock domain with data lockup: 有clock mix, 为了hold 在插chain 时会在跨clock domain 处插入一个lockup latch, 在Innovus 中trace scan chain 的时候需要加option -lockup.

WeChat Image_20210326102845.jpg

WeChat Image_20210326103931.jpg

  • Shard functional output signal chains: scan chain 的屁股上由于功能共享会有一个mux, specifyScanChain 指定的终止点应为mux 的输入pin, 如果指定为mux 的输出pin, scanTrace 会出错。

WeChat Image_20210326102849.png

WeChat Image_20210326103950.png

  • scan chains with two-pin logic cells: 所谓的two-pin logic cell 就是只有一个输入pin 也只有一个输出pin 的cell, 如buffer, inverter, delay cell. Innovus 在trace scan chain 时会自动识别出这些cell. 在做scanReorder 时可由-skipMode 来控制。

WeChat Image_20210326102903.png

WeChat Image_20210326102906.jpg

scanDEF-Based Reordering Approach

如果有ScanDEF, 别犹豫别徘徊别纠结,直接上ScanDEF.

关键命令:

  • defIn -scanChain: 读入scanDEF.
  • defOutBySection -noNets -noComps -scanChains: 导出scanDEF.
  • scanRorder: 读入scanDEF 后,工具从ScanDEF 中读取scan chain 的信息,并分析scan Chain 的连接关系。工具会check netlist 中scan chain 跟ScanDEF chain 之间的对应关系,如果netlist-to-scanDEF 有mismatch, Innovus 会报SOCSC-5003 的Warning, 如果netlist-to-scanDEF 是组合逻辑mismatch 则可以忽;如果有寄存器mismatch 且该寄存器在ScanDEF 的FLOATING section 中,虽然工具可以容忍,但正规做法是找到mismatch 的根因并改正。

适用场景:

除了上述场景外,scanDEF-Based reorder 还可处理如下场景:

  • clock edge mixed: 如果在插scan chain 时enable 了clock edge mix, 工具会尽量将所有负沿触发的寄存器放在chain 的前半段,把正沿触发的寄存器放在chain 的后半段;如果要将正沿触发的寄存器放在负沿触发的寄存器前面,则需要在rise edge->fall edge 过度的两个寄存器之间插一个lockup latch, 否则在做scan shift 时会漏掉一个周期;如下图所示Scan chain在ScanDEF 中会被拆分成两条ScanDEF chain 并定义为不同的partition.

WeChat Image_20210326102911.jpg

  • scan chain with ORDERED segments: 对于ORDERED segments 在做reorder 时需要将其做为一个整体,工具不能改变ORDERED segments 内部cell 的顺序。

WeChat Image_20210326102913.jpg

脚本示例:

WeChat Image_20210326102916.jpg

WeChat Image_20210326102918.jpg

作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/iljZfQ\_gWz0MKmpWW43OMw
作者微信公众号
捕获.PNG

相关文章推荐

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