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

STA | Logical DRC

作者头像
老秃胖驴
发布2020-05-17 15:22:36
3.2K1
发布2020-05-17 15:22:36
举报
文章被收录于专栏:陌上风骑驴看IC

本文源于一个问题:min capacitance DRC violation 需要fix 吗?

答:min Capacitance DRC violation 理论上当然要fix, 但实际上,min Capacitance 极可能是库K 得不对导致的,所以遇到min Capacitance DRC violation 尤其是很多的情况时,请先找library 的提供者去确认,先排除library 的问题,如果是真实的violation 是必须要修掉的。

数字实现中有多种DRC, 可回顾《数字电路实现中的DRC》。所谓的logical DRC 指:

  • max/min transition
  • max/min fanout
  • max/min capacitance

Logical DRC 的目的是限制std cell 的行为在library 仿真范围之内,据说目前有两种主流的K 库方式,一种是基于SPICE 仿真:精确但代价大;一种是AI K库:代价小但是不够精确。不论哪种方式,library 中都只给出transition 跟load 在一定范围内的table, 在STA 分析时,对于transition/ load 在表范围内的用内插得到对应的delay/ transition/ SOCV等值;对于 transition/ load 在表范围外的用外插方式得到对应的delay/ transition/ SOCV 等值。而外插往往会导致精度损失,所以在实现过程中要保证Logical DRC 在库的范围内,或代工厂大爷要求的范围内。

  • The foundry guarantees the certainty in behavior of the cells over this particular range only. <代工厂大爷只保证cell 在表内的行为。>
  • The upper and lower limits of characterization range are sufficiently large/small so that the cell is expected to go beyond this very-very rarely. Since, characterization has its own cost, it may not be economically feasible to characterize the cell to extreme loads and transitions. <代工厂大爷给出的表值基本覆盖了大部分需求,超出这个范围的需求不大,而如果要K 范围更大的库,代价太大。>

Max/min Transition time: 用于约束信号翻转时上升或下降过程所允许的最大或最小时间,在数字电路实现过程中,该值可以从library 中读出,或用命令set_max_transition, set_min_transition 进行设置。如果两个值同时存在,工具在优化或检查时以最紧的为标杆,在电路中,通常input port 的transition 是通过driving cell 或set_input_transition 设置的,第一级std cell input pin 的transition 根据对应net 的RC 计算得到,第一级std cell output pin 的transition 通过查表<cell output transition = F (cell input transition , cell output load )>得到,以此类推。任何一个结点的transition 超过表值,都会报violation, 都必须要修掉。

Max/Min Fanout: 在老工艺的lib 中通常会有fanout 的定义,在新工艺的library 中通常都没有fanout 的定义,所以在工具解析library 时会报max fanout 未定义的警告,在实现过程中通常用命令set_max_fanout/ set_min_fanout 来约束。据说在先进工艺节点,只要把max transition 跟max capcitance 修干净,max_fanout 并不是一个必须要遵守的hard rule.

Max/Min Capcitance: 定义cell inout 或output port 能够驱动的最大和最小负载电容,负载电容包括该pin 所驱动的net 电容跟pin 电容总和,在数字电路实现过程中,该值可以从library 中读出,或用命令set_max_capacitance, set_min_capcitance 定义,通常用命令设置的值不应该大于library 中定义的值。同样在library 中通常会有default_max_capacitance 的定义,在pin 上有max_capacitance 跟min_capacitance 的定义,先进工艺的lib 中max_capacitance 跟min_capacitance 可能是一张一维或二维的表格,比如:因为负载电容会随频率变化,所以会在多个频点去K 对应的max/ min capacitance 值,此时library 中的max/ min capacitance 就是一张以频率为index 的一维表。

举个例子:下图是一颗cell 上升delay 的table, 从表中可以得到,如果该cell input pin 的 transition 小于0.0016ns 或大于0.329ns 或该cell 的load 小于0.0001pf 或大于0.563557pf 就需要外插,一旦外插就要承担delay 精确度损失的风险。

再回到文章开头的问题,min capacitance DRC violation 是否要fix? 通过上面一通啰嗦,可知,所谓的logical DRC 只是为了保证表值的精确度,如果超了表是否一定就会变石头?!当然不会,假设通过实测或仿真得到,在某个工艺点,外插可以导致20% 精确度的损失,如果DRC violation 造成的delay 偏差已通过其他方式『挤』回来了,比如加了更大的uncertainty 且没有min period 《论STA | clock min period check》或min pulse width 《论STA | min pulse width》等违规,那这些DRC violation 不修也不会变石头的。但是,强烈建议有DRC violaiton 一定要修!

那么问题来了,修DRC 通常有哪些办法呢?通常,max logical DRC 常用办法有:

  • 不论是修DRC 还是修timing 还是修power, 先修Cross talk!
  • 增加cell 驱动:
    • Upsize Cell to higher drive strength
    • Swap Cell to lower channel length
    • Swap Cell to Lower Vt
  • 动物理位置或线长:Fixing it physically in implementation tool
    • Deploy similar approach (as applied for driver cell) for the logic in driver fan-in cone.
    • Load Splitting (Adding Buffers)
    • Try to de-congest the congested area by the movement of spare cells / less timing critical logic.

Min logical DRC 修起来就比较简单,down size cell 或swap 成慢的pin 电容大的cell, 或者走一段蚯蚓线把电容增加,或者插个buffer.

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

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

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

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

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