前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Innovus 小技巧 | ScanChain reorder

Innovus 小技巧 | ScanChain reorder

作者头像
老秃胖驴
发布2019-05-30 20:03:15
5.8K0
发布2019-05-30 20:03:15
举报
文章被收录于专栏:陌上风骑驴看IC

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

聪明的硅农想出了一种解决办法——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 也可以。

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: 最简单的情况,没什么要特别注意的。
  • multiple clock domain with data lockup: 有clock mix, 为了hold 在插chain 时会在跨clock domain 处插入一个lockup latch, 在Innovus 中trace scan chain 的时候需要加option -lockup.
  • Shard functional output signal chains: scan chain 的屁股上由于功能共享会有一个mux, specifyScanChain 指定的终止点应为mux 的输入pin, 如果指定为mux 的输出pin, scanTrace 会出错。
  • 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 来控制。
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.
  • scan chain with ORDERED segments: 对于ORDERED segments 在做reorder 时需要将其做为一个整体,工具不能改变ORDERED segments 内部cell 的顺序。

脚本示例:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陌上风骑驴看IC 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • scanDEF-Based Reordering Approach
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档