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

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

日志

设计约束文件SDC简略总结

热度 1已有 863 次阅读| 2022-12-3 16:45 |个人分类:集成电路基本概念|系统分类:芯片设计

设计约束文件SDC简略总结

 

设计约束文件SDC全称synopsys design constrains用于对设计进行设计约束个人的理解SDC的作用主要是模拟芯片工作的真实场景这个真实场景包括输入输出负载运行频率时钟质量负载散出情况等还有为了提升良率添加的margin一定要小心的是SDC与芯片功能直接相关一定要完备合理比如可以通过check_timing命令检查sdc文件有没有错误

 

如果按照芯片的工作环境去理解SDC可以分为外部环境内部环境

 

外部环境

输入管脚的输入延时和驱动特性

输出管脚的输出延时和负载特性

 

输入延时和输出延时

就是数据在设计之外的传输时间可以通过以下命令约束

 

set_input_delay

如果不知道多大就要设置的尽可能大一些

 

set_output_delay

如果不知道多大就要设置的尽可能大一些

 

 

驱动特性

指的是外部环境对输入管脚的驱动能力可以用两种方式约束

 

set_driven_cell

通过制定该输入管脚的驱动单元通过库文件查询得到驱动能力

尽量选驱动能力较弱的单元为后续优化留margin

 

或者

 

set_input_transition

通过人为指定输入的转换时间transition time来确定驱动能力

 

负载特性

指的是输出管脚需要驱动的外部环境下的负载电容大小用下面命令约束

 

set_load

如果不知道load多大人为设置尽可能大的负载可以用set_load [load_of slow_lib/lib_cell/input_pin] [get_ports OUT]设置

 

为什么要用转换时间的负载电容来约束设计呢因为工具是通过二维查找表的方式确定门的延时其中查找表的两个输入就是转换时间和负载电容转换时间越短说明前端的驱动能力越大速度越快负载电容越小说明该节点越容易充电或者放电速度也越快

 

内部环境

包括design ruletiming constrain

 

design rule

表示设计者要求设计内部要符合的设计规则比如一个输出能驱动的最大cell数量和最大负载电容,以及时钟信号数据信号的转换时间等一般时钟信号比数据信号的要求更严格这个设置的值肯定不能超过lib规定的最大值我见过的一般都会比最大值小很多不过具体如何影响还不十分清楚以后有空跑个不同的design rule设置对比下PPA

 

timing constrain

表示芯片内部的时钟分布该部分要保证所有的时序单元都被正确的时钟驱动其中正确的时钟指的是要和芯片实际工作的时钟有尽可能一样的周期period)、转换时间transition time/slew)、延时latencyuncertaintyskew+jitter+margin

时序单元在这些时钟的驱动下要满足建立时间和保持时间的约束

 

对时钟周期的约束

设置时钟周期

 

create_clock -period 2 [get_ports CLK] -name clock_name

默认占空比为50%仅仅进行以上约束时钟是理想的,有无穷的驱动能力,偏斜也是0,能够连接任意的bufferdff而这是不符合“实际场景”的为了使综合以后时钟树(在P&R进行时钟综合)和综合前的时钟树匹配,需要人工设置约束uncertaintyskewtransition timejitter人为添加的marginlatency

 

对时钟uncertainty建模

uncertainty包括skewjittermarginskew指的是时钟定义点到各个触发器的时钟差异jitter指时钟的相位噪声margin为认为留下的裕量命令为

 

set_clock_uncertainty -setup value [get_clock CLK]

-setup主要用于建立时间分析value 意味着Setup uncertainty,包括clock skew+jitter(抖动)+margin(按照经验留的裕量)。

 

set_clock_uncertainty -hold value [get_clock CLK]

-hold主要用于保持时间分析value 意味着hold uncertainty,包括jitter(抖动)+marginhold就不会有clock skew

 

 

时钟的网络延时(clock network delay建模

时钟网络延时包括两部分,network latency(时钟网络定义点create_clock port到触发器时钟pin的延时)和source latency(真实时钟源点,PLL,到时钟定义点create_clock port的延时)。

 

set_clock_latency -source -max 5 clock_name

定义了source latency

 

set_clock_latency -max 5 clock_name

定义了network latency

 

set_propagated_clock [get_clocks CLK]

有了版图后用这个

 

对转换时间约束

 

set_clock_transition -max Tmax [get_clocks CLK]

用于分析建立时间

 

set_clock_transition -min Tmin [get_clocks CLK]

用于分析保持时间

 

时钟树综合前和时钟树综合后的约束文件区别

时钟树综合之前需要建模时钟的两个latency源和网络),uncertaintyskewjittermargin),transition time

时钟树综合之后有了真实的时钟延时就只用建模源到时钟定义点的源延时和uncertainty其中uncertainty只包括jittermargin因为有了真实的时钟skew就可以通过工具计算得到命令如下

 

set_propagated_clock [all_clocks]

用途是将时钟传递下去EDA工具可以根据传播延时自动计算时钟的延时更加精准

 

 

约束组合逻辑时序两种方式

1约束最大延时

set_max_delay 1 -from A -to B

 

2设置虚拟时钟这时的虚拟时钟没有transition time 没有latency但是要有uncertainty或许是margin

 

 

 

以上是自己理解的SDC基本概念,如有问题还请同行指正以后有空再整理一下复杂点的SDC,比如时序例外、多时钟约束、时钟分频,多周期约束等。


1

点赞

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 3

    获赞
  • 0

    评论
  • 17

    访问数
关闭

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

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

GMT+8, 2024-5-3 04:43 , Processed in 0.017355 second(s), 8 queries , Gzip On, Redis On.

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