0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SDC约束文件中常见的基础命令总结

要长高 来源:eetop 作者:eetop 2023-12-04 12:21 次阅读

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

时钟分频

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

命令:

create_generated_clock-divide_by 2 -nameCLKG-source[get_portsCLK] [get_pinsFF1/Q]

set_clock_latencyvalue[get_clocksCLKG]#设置延时

set_clock_uncertaintyvalue[get_clocksCLKG]#设置不确定性

set_clock_transitionvalue[get_clocksCLKG]#设置转换时间

除-divide_by之外,还可以采用-edges更精确的表明相对于masterclock,generatedclock的时钟跳变边沿。

FalsePath

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

set_false_path

互斥时钟

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

方法1:

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

方法2:

set_clock_group-logically_exclusive-groupCLK1 -groupCLK2

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

异步时钟

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

命令为:

set_clock-asynchronous-groupCLKA-groupCLKB

set_case_analysis

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

多周期设计

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

1671286160393095.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之前的有效沿(2ndedge),但是实际上数据不需要经过这么久的延时,实际上hold检查的合理有效沿需要提前2个周期setup-1),因此hold约束命令为:

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

1671286138119674.jpeg

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

set_multicycle_path 3 -setup-througSLOW

set_multicycle_path2-hold-throughSLOW

Half-Cycle Paths

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

1671286193378256.jpeg

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

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

多时钟约束

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

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

多时钟输入延时

create_clockCLKA#内部时钟

create_clockCLKB#外部时钟

set_input_delay1 -clockCLKB-max【get_portsA】

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

多时钟输出延时

create_clockCLKA#内部时钟

create_clockCLKB#外部采集时钟B

create_clockCLKC#外部采集时钟C

set_output_delay1 -clockCLKB-max【get_portsA】

set_output_delay1 -clockCLKC-add_delay-max【get_portsA】

Removal/RecoveryTiming

可以理解为复位信号的“Setup/HoldTime”。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟源
    +关注

    关注

    0

    文章

    87

    浏览量

    15770
  • 时钟信号
    +关注

    关注

    4

    文章

    372

    浏览量

    28062
  • 异步时钟
    +关注

    关注

    0

    文章

    17

    浏览量

    9366
  • 时钟分频
    +关注

    关注

    0

    文章

    4

    浏览量

    5693
收藏 人收藏

    评论

    相关推荐

    时序分析的设计约束SDC

    使用SDC命令create_clock创建时钟,时钟周期20,占空比50%的时钟信号;
    的头像 发表于 11-08 09:12 5756次阅读

    聊聊ASIC设计约束SDC命令

    根据ASIC逻辑设计,优化的约束是速度和面积。在物理设计中,我们需要对面积、速度和功率进行优化设计。根据所需的技术节点和策略进行更好的功耗规划,总是有助于获得芯片的布局。
    发表于 07-11 09:31 386次阅读
    聊聊ASIC设计<b class='flag-5'>约束</b>与<b class='flag-5'>SDC</b><b class='flag-5'>命令</b>

    ASIC设计约束SDC命令介绍

    在数字IC设计中,重要的ASIC设计约束分为两类
    发表于 07-12 11:34 1007次阅读
    ASIC设计<b class='flag-5'>约束</b>与<b class='flag-5'>SDC</b><b class='flag-5'>命令</b>介绍

    时序约束 专版

    TimeQuest Timing Analyzer为各种各样的时钟配置和典型时钟提供许多SDC命令。 这个章节将介绍SDC可用的应用编程接口,以及描述指定的时钟特性。 时钟(Clocks
    发表于 05-16 18:51

    Linux系统中常见的压缩命令工具概述

    ,有必要对需要备份的数据进行归档和压缩。#其实归档相当于把多个文件打包一样。压缩着进一步降低打包好的归档文件占用的空间,充分提高备份介质的利用率。Linux系统中常见的压缩命令工具包括
    发表于 07-09 07:30

    常见约束命令有哪几种呢

    Design Compiler是什么?常见约束命令有哪几种呢?
    发表于 11-02 06:17

    总结嵌入式系统开发中常见的存储器及其特点

    总结嵌入式系统开发中常见的存储器及其特点
    发表于 12-17 06:11

    FPGA的reset信号需要加什么SDC约束呢?

    FPGA的reset信号需要加什么SDC约束呢?
    发表于 04-23 11:38

    请问时序约束文件SDC支持哪些约束

    时序约束文件SDC支持哪些约束
    发表于 08-11 09:27

    如何将Altera的SDC约束转换为Xilinx XDC约束

    了解如何将Altera的SDC约束转换为Xilinx XDC约束,以及需要更改或修改哪些约束以使Altera的约束适用于Vivado设计软件
    的头像 发表于 11-27 07:17 4664次阅读

    如何管理约束文件

    约束文件是FPGA设计中不可或缺的源文件。那么如何管理好约束文件呢? 到底设置几个约束
    的头像 发表于 12-08 13:48 945次阅读

    时序分析的设计约束SDC怎么写呢?

    使用SDC命令create_clock创建时钟,时钟周期20,占空比50%的时钟信号
    的头像 发表于 06-18 09:42 2662次阅读
    时序分析的设计<b class='flag-5'>约束</b><b class='flag-5'>SDC</b>怎么写呢?

    时序分析基本概念—SDC概述

    今天我们要介绍的时序概念是设计约束文件 **SDC** . 全称 ***Synopsys design constraints*** . SDC是一个设计中至关重要的一个
    的头像 发表于 07-03 14:51 4146次阅读
    时序分析基本概念—<b class='flag-5'>SDC</b>概述

    时序约束连载03~约束步骤总结

    本小节对时序约束做最终的总结
    的头像 发表于 07-11 17:18 384次阅读
    时序<b class='flag-5'>约束</b>连载03~<b class='flag-5'>约束</b>步骤<b class='flag-5'>总结</b>

    ASIC设计约束SDC命令

    根据ASIC逻辑设计,优化的约束是速度和面积。在物理设计中,我们需要对面积、速度和功率进行优化设计。根据所需的技术节点和策略进行更好的功耗规划,总是有助于获得芯片的布局。
    的头像 发表于 07-09 11:28 362次阅读
    ASIC设计<b class='flag-5'>约束</b>与<b class='flag-5'>SDC</b><b class='flag-5'>命令</b>