前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >点论 | Lock-up latch

点论 | Lock-up latch

作者头像
老秃胖驴
发布2019-06-03 18:09:05
3.7K1
发布2019-06-03 18:09:05
举报
文章被收录于专栏:陌上风骑驴看IC陌上风骑驴看IC

目前,在基于寄存器的同步设计中,除了ICG cell, 不期望设计中有其他latch ,所以在RTL 质量检查或综合阶段要对Latch 报警。

但Latch 在以下两个方面被广泛应用:

  • DFT: 插scan chain 如果做了clock mix 或clock edge mix 需要插入Lock-up latch;
  • 修hold: 在某些情况下,setup margin 足够,如果用buffer 或delay cell 修hold 则需要插入大量cell,可以考虑插入一颗Latch 来修hold. 

插scan chain 时插入lock-up latch 为了两个目的:

  • 插scan chain 时如果做了clock mix,为了hold 好meet 需要在跨clock domain 处插一颗lock-up latch.
  • 插scan chain 时如果做了clock edge mix, 且在链上正沿触发器在前负沿触发器在后,则需要在跨clock edge 处插一颗latch.

clock mix scan chain insertion:

在function 模式,异步clock 之间是不做balance 的,如果插scan chain 时要把不同clock domain 的寄存器串到同一条chain 上,在shift 模式:通常shift clock是慢速clock 且scan shift 路径上没太多逻辑,setup 通常没问题,但是hold 就比较难修,通常的做法是插一颗lock-up latch 将数据延迟半个cycle. 

注意

  • 如果跨时钟域前后都是正沿寄存器,则需要插入一颗低电平有效的latch;
  • 如果跨时钟域前后都是负沿寄存器,则需要插入一颗高电平有效的latch;

clock edge mix scan chain insertion:

通常插chain 的时候都会尽量将负沿寄存器放在前头,正沿寄存器放在后头,在夸时钟沿时不需要插入latch。

但是如果不得已或非要把正沿寄存器放在负沿寄存器之前,则必须在跨时钟沿处插一颗latch, 否则在shift 模式,一个cycle 之内会同时穿过正沿寄存器再穿过负沿寄存器,所以会丢掉一个值,故此处的lock-up latch 是必须的。

注意

  • 为了修hold 插入lock-up latch 跟clock mix scan chain insertion 的情况一样;
  • 在DFT 模式下插入的lock-up latch 不应该影响function 逻辑;
  • 插了lock-up latch 之后scan chain 会被打断成不同的scan segment, 影响scan reorder. <至于原因请翻阅:《论DFT | 一文读懂 ScanDEF 相关的一切》《Innovus 小技巧 | ScanChain reorder》>。
  • lock-up latch 会影响形式验证。

Lock-up Latch 对形式验证的影响

  • 如果lock-up latch 只在revised 中存在,且scan 相关的约束没有正确设上,那这些lock up latch 会被当做not-mapped DLAT, 并导致NoN-EQ.
  • 如果lock-up latch 同时存在于Golden 跟Revised 中,且没有做scan reorder, 则工具会对lock up latch 做map 且compare, 结果应该Pass.
  • 如果lock-up latch 同时存在于Golden 跟Revised 中,且做了scan reorder, 如让工具对lock up latch 做map 且compare, 则会导致NoN-EQ.
  • 通常DFT 插入的lock-up latch 不应该被当做compare point, 需要在LEC 中将scan 相关的约束设上,且加-latch_transparent 的modeling, 如:

add pin constraints 0 SCAN_MODE –both

set flatten model -latch_transparent

  • 如果设了"set flatten model -latch_transparen", 工具会判断latch 的enable 是否一直有效,如果是则会将对应的latch modeling 成buffer. 通常在DFT 阶段插入的lock-up Latch, 在function 模式下enable 应该是一直有效的。
  • 但是某些特殊case 在function 模式通过设Scan 相关的约束也不能使得所有lock-up latch 的enable 一直有效。
  • 对于在function 模式通过Scan 约束无法使latch 的enable 一直有效的情况,通常可以通过以下两种方式解决:

驴说IC

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

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

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

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

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