jake的个人空间 https://blog.eetop.cn/1592 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

约束 – set_input_delay 的潜在风险

热度 26已有 969 次阅读| 2023-5-5 07:50 |系统分类:芯片设计

后端刚入门的时候,师傅通常都会讲到top level blocks之间的信号遵循30/30/30timing budget经验法则是 -- 30%给上游模块output data path30%top level routing30%input data path。按这个法则,假设周期为10ns,初学者常常会把input port的约束设成这样:

set_input_delay 7.0 -clock my_clock [get_ports my_input]

这样做语法没问题,但是有潜在风险。

先看看Innovus TCR怎么讲的。

set_input_delay_1.png

set_input_delay_2.png

这就是说如果set_input_delay不加-max,同一个约束值会被用在setup analysishold analysis。这显然是有风险的。

仍以set_input_delay 7.0 -clock my_clock [get_ports my_input]为例子。在hold analysis时候,这个约束等于告诉工具输入信号my_input到达的时间滞后于时钟my_clock 7ns。假设my_input由一个regA锁存,regA的时钟为my_clock,而且regAhold requirement1.5ns。在my_input滞后my_clock 7ns的情况下,只要P&R没发疯,这个regAhold基本是铁定满足的。风险在哪里呢?假设上游模块信号出来很快,相对于时钟只滞后0.5ns,假设top level里两个模块紧挨着,top level routing delay只有0.5ns。这个场景下my_input到达的时间相对于my_clock只滞后1nsregAsetup肯定是满足的,但是regAhold就满足不了了。而由于set_input_delay约束没有加上-max, -min区分,这个hold违例在block P&RSTA的时候都没有发现。等到full chip的时候再发现,就已经非常晚了。

推荐的做法是set_input_delay加上-max-min并使用不同的约束值。

set_input_delay -max 7.0 -clock my_clock [get_ports my_input]

set_input_delay -min 0.0 -clock my_clock [get_ports my_input]

这里-min 0.0是比较保守的做法。假设时钟到达上游模块,下游模块的时间相同,上游模块使用一个regB驱动输出,这个regBclock-to-q延迟通常是大于0的,再加上top level routingdelay-min 0.1-0.5都有可能是合理的。如果考虑top level时钟的skew,时钟到达上游模块下游模块的时间略微不同,那这个skew就要算进去。-min取一个小小的负值也是有可能的。实际上高速系统top level时钟的skew非常重要,要非常严格地控制到尽可能小,top level timing closure才能容易一些。

综合里时钟是ideal的,set_input_delay有没有-max, -min没差别,但还是推荐加上。虽然综合用不到set_input_delay -min,但至少让综合工具查了一下语法。P&R的时候可以用同一个SDC,减少一些麻烦。

时间有限,如有错误,请留言指正。


16

点赞

刚表态过的朋友 (16 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 1

    关注
  • 226

    粉丝
  • 89

    好友
  • 285

    获赞
  • 273

    评论
  • 2306

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 18:45 , Processed in 0.020192 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部