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

SDC | set_data_check

作者头像
老秃胖驴
发布2020-04-27 10:59:38
6.7K0
发布2020-04-27 10:59:38
举报
文章被收录于专栏:陌上风骑驴看IC陌上风骑驴看IC

应@Fly 天 同学的要求,码一遍set_data_check, 关于SDC 有好几个兄弟号都写了很多,可以到『IC 技术圈』中找对应文章去看。

set_data_check 是个啥?


set_data_check 是一条SDC 的命令,用于约束『数据-对-数据』的『建立保持』时间检查,通常被称为非时序约束 ( non-sequential constraints ), 理论上set_data_check 可以设在任意的两个data pin 上,其中一个pin 称为 constrained pin 类似于寄存器的data pin, 另一个pin 称为related pin 类似于寄存器的clock pin.

用set_data_check 约束时,-from 指定的pin 为related pin, -to 指定的pin 为constrained pin.

用set_data_check 约束的『建立保持』时间检查跟普通寄存器的『建立保持』时间检查最大的区别是:set_data_check 约束的『建立保持』时间是zero-cycle check, 即constrained signal 跟related signal 两个数据信号在同一个时钟沿被采样释放,如下图右侧所示;而传统的DFF setup check 默认是跨一个时钟周期的。

set_data_check 也分setup 跟hold:

  • set_data_check setup: 类似于寄存器的setup, 即related signal 翻转前,constrained signal 必须保持稳定的时间。
  • set_data_check hold: 类似于寄存器的hold, 即related signal 翻转后,constrained signal 必须保持稳定的时间。

set_data_check hold check 时,capture clock 同样会往前推一个cycle, 所以如果设了hold data check通常需要设一个multi_cycle 将其拉回来。

除了用set_data_check 约束『数据-对-数据』的检查之外,有的lib 里也会定义『数据-对-数据』的检查,lib 中的关键词是:

  • non_seq_setup_rising
  • non_seq_setup_falling
  • non_seq_hold_rising
  • non_seq_hold_falling

用set_data_check 约束的『数据-对-数据』检查跟lib 里定义的『数据-对-数据』有以下区别:

  • set_data_check 只能指定一个值,而 lib 里定义的non_seq timing check 则是一张index 为input transition 跟output load 的表格,所以更精确。
  • 但是lib 里定义的non_seq timing check 只能在该lib cell 的leaf pin 上,而set_data_check 可以对design 中任意两个pin 进行约束。
  • 对于C 家工具,如果既读了定义有non_seq timing check 的lib, 也设了set_data_check, 则set_data_check 优先级更高。

set_data_check 用在哪?


set_data_check 通常用于信号间的skew 约束,比如一些高速接口相关信号间的约束。摘一段:

Data checks are normally applied where there is a specific requirement of skew (either minimum of maximum) or race condition (where the order of arrival of two signals can affect output and the intention is to get one of the probable outputs by constraining one signal to come before the other) between two or more signals. These may be required where:

  • At the digital-analog interface within a chip where analog signals at the analog block boundary are required in a specific order.
  • At the chip boundary, some asynchronous interface signals may have skew requirements.

set_data_check 在EDA 中的使用


在Innovus 或Tempus 中『数据-对-数据』检查默认是开启的,可以用如下变量控制。

  • 对于用命令set_data_check 设置的约束,可以通过如下变量控制:
  • 对于lib 里定义的non_seq timing check, 可以通过如下变量控制:

如果在Innovus 或Tempus 中设了如下约束,在report_timing 的时候需要加-check_type data_setup/ data_hold 来report 相应的data check:

set_data_check -from u0/D1 -to u0/D2 0.5

不像set_max_delay 会将原始的timing path 打断,set_data_check 是不会将原始timing path 打断的。

如上示例,即使在pin u0/D1 到u0/D2 上设了set_data_check 的约束,但是在timing 分析时u0/D1 不会被当做一个endpoint, 对于如上的path, timing 分析会同时做:

  • u0/D2 相对于 u0/D1 的data check.
  • 到寄存器u1 的setup/hold check.

在Innovus 或Tempus 中默认其他的false path 之类的timing exception 不影响data check, 可以用如下变量控制:

timing_apply_exceptions_to_data_check_related_pin

report_analysis_coverage 会将data-to-data check 归类于:DataCheckSetup 和DataCheckHold.


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

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

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

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

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