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

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

日志

设计约束文件SDC简略总结2

热度 1已有 559 次阅读| 2022-12-17 22:11 |个人分类:集成电路基本概念|系统分类:芯片设计

本文记录SDC约束文件中比较复杂的一些命令包括时钟分频时序例外多周期约束半周期约束多时钟约束等。感觉项目中能用到的基础命令差不多就总结完了。

 

时钟分频

时钟信号穿过时序单元分频之后需要人为设置generated clock工具才能够正确推导分频之后的时钟因为EDA工具在STA时时钟信号不能穿透时序单元传播

命令:

create_generated_clock -divide_by 2 -name CLKG -source [get_ports CLK] [get_pins FF1/Q]

set_clock_latency value [get_clocks CLKG] #设置延时

set_clock_uncertainty value [get_clocks CLKG] #设置不确定性

set_clock_transition value [get_clocks CLKG] #设置转换时间

-divide_by之外还可以采用-edges更精确的表明相对于master clockgenerated clock的时钟跳变边沿

 

False Path

某些情况下设计中的确存在某些路径但是这些路径之间的时序是不可能的或者不是真实的就要设置false path让工具不再对该路径进行STA注意只是不进行时序分析路径还是存在的)。比如跨时钟域之间的路径不会跳变的路径等或者不可能的路径等命令为

set_false_path

 

互斥时钟

多个时钟是同步的,但是逻辑是相互排斥的比如通过MUX二选一的时钟他们之间的时序路径也不需要分析为了让工具不再优化两时钟之间的时序可以用两种命令约束

方法1

set_false_path -from [get_clocks CLK1] -to [get_clocks CLK2]

方法2

set_clock_group -logically_exclusive -group CLK1 -group CLK2

-logical_exclusive表示两个时钟在逻辑上是不能同时存在的如果物理上不能同时存在比如同一个时钟源定义了两个时钟就要采用-physically_exclusive

 

异步时钟

两个设计的时钟来自于两个不同的晶振,时钟源没有任何关系,频率不确定,相位不确定这两个时钟就叫异步时钟工具无法对异步时钟进行时序分析也没必要进行时序分析但是设计人员要确保信号在异步时钟域之间的传输时不出现亚稳态。一般采用打两拍、握手fifo等跨时钟域处理方式

命令为

set_clock -asynchronous -group CLKA -group CLKB

 

set_case_analysis

用于约束固定0/1,或者只有上升沿/下降沿的端口在这个端口散出的路径中就只有0/1,或者只分析上升沿/下降沿MMMC设置中经常用这个设置芯片的不同工作模式

 

 

多周期设计

在设计中当两个寄存器之间的组合逻辑路径里数据传输花费的时间多于一个时钟周期就需要为这个组合逻辑路径声明为多时钟周期路径

WechatIMG88.jpeg 

上图中两个寄存器之间的组合路径需要3个时钟周期对建立时间的约束命令为

create_clock-nameCLKM -period 10 [get_portsCLKM]

set_multicycle_path 3 -setup -from[get_pins UFF0/Q] -to [get_pinsUFF1/D]

接下来考虑hold时间检查默认的hold检查是setup之前的有效沿2nd edge),但是实际上数据不需要经过这么久的延时实际上hold检查的合理有效沿需要提前2个周期setup-1)因此hold约束命令为

set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D]

WechatIMG88.jpeg 

此外如果该多时钟周期路径分为两个部分A和B其中A的延时为clock cyclesB的延时是一个标准的时钟周期那么可以只用-through选项约束慢速的部分命令

set_multicycle_path 3 -setup -throug SLOW

set_multicycle_path 2 -hold -through SLOW

 

Half-Cycle Paths

当设计中同时存在上升沿和下降沿出发的场景就很可能存在half-cycle path比如上升沿出发的寄存器到下降沿触发的寄存器或者下降沿出发的寄存器到上升沿触发的寄存器如下所示

WechatIMG90.jpeg 

建立时间中数据的Arrive Time等于下降沿的6ns延时加上数据的延时Require Time为12ns的时钟周期即数据只有半个时钟周期的时间因此对建立时间的约束更苛刻了

保持时间的含义是在时钟沿跳变时上一个状态不能变化太快如上图所示保持时间的检查的有效沿为caputre edge的上一个上升沿由于launch edge已经有半个周期6ns的延时了因此数据总是在6ns之后才来的因此保持时间的裕量特别大

 

多时钟约束

设计内部包含多个时钟,但是所有时钟都通过一个时钟源分频得到是同步时钟,相位都是固定的工具在分析时序时会自动计算两时钟信号相邻最近的相位的时间差作为STA检查中的Require Time

在输/出端口,一个输/出对应着多个时钟的输入,这种需要对端口进行多约束。

多时钟输入延时

create_clock CLKA #内部时钟

create_clock CLKB #外部时钟

set_input_delay 1 -clock CLKB -max get_ports A

其中CLKA为待优化模块内部的采集端口A数据的时钟CLKB为待优化模块外部驱动数据进入端口A的虚拟时钟

多时钟输出延时

create_clock CLKA #内部时钟

create_clock CLKB #外部采集时钟B

create_clock CLKC #外部采集时钟C

set_output_delay 1 -clock CLKB -max get_ports A

set_output_delay 1 -clock CLKC -add_delay -max get_ports A

 

Removal/Recovery Timing

可以理解为复位信号的“Setup/Hold Time”


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 00:59 , Processed in 0.028288 second(s), 15 queries , Gzip On, Redis On.

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