最近在看S家某IP关于CDC处理的SDC约束中,看到了一些有用的知识点和SDC约束,这里做一下总结。

1.通常的认识中,我们期望综合工具不要去检查和优化异步时钟之间的时序路径,所以只在sdc中将其设置为async,例如,当clk_a和clk_b为异步时钟时,可以把进行如下设置:
set_clock_groups -asynchronous -group clk_a -group clk_b

但在实际的项目中,还需要对异步时钟路径加一些特殊约束。其中set_max_delay和set_min_delay是比较常用的做法,set_max_delay会用于目的寄存器(destination flop)的setup check,set_min_delay会用于目的寄存器(destination flop)的hold check。set_max/min_delay需要加上-ignore_clock_latency开关,保证在计算异步时钟路径的delay时,不考虑clock tree latency(只会在CTS之后存在)

2.为了使set_max/min_delay生效,需要注意以下两点:
1)设置set_max/min_delay的路径,不能加set_false_path,因为此设置的优先级更高
2)异步时钟之间不能像前面给的例子中,只设置async,而应该加入-allow_paths,完整命令如下:
set_clock_groups -asynchronous -allow_paths -group clk_a -group clk_b

以下是Synopsys Synthesis Commands中关于该选项的解释

-allow_paths
Enable the timing analysis between specified clock groups. If this option is not specified, the timing analysis among the defined clock groups are disabled. This option can be used with asynchronous clock groups only.

3.当异步时钟域之间传递格雷码数据,且目的时钟域用两级同步器(寄存器)采样数据时,应该set_max_delay为一个源时钟周期,set_min_delay为0。这样有两个好处:1.防止数据路径太长而导致较长的同步所需时间,引起电路性能下降 2.限制格雷码的多个bit之间的skew,防止多个bit在目的时钟域的寄存器输入端同时变化,使得传递的数据不再是格雷码

4.当异步时钟域之间传递Qualifier-based Data Bus Signal时,应该set_max_delay为(同步级数-0.5)*目的时钟周期,set_min_delay为0。这样可以保证目的时钟域只会采样到稳定的数据。

5.除3.4.中提到的两种数据外,其他的CDC路径应set_max_delay为一个目的时钟周期,set_min_delay为0。相关文档中解释此举的目的是(目前不太理解)

maintain the assumptions for a safe CDC implementation

6.某些准静态数据,例如上电后进行配置且之后不会变化的寄存器,可以认为是纯异步路径,可以set_false_path

7.异步FIFO中,可能会使用一些standard cell以保证关联路径的时序,我们不希望这些cell被综合工具进行逻辑优化,因而需要在sdc中加入set_size_only约束,以下是Synopsys Synthesis Commands中关于该命令的解释

When the set_size_only command is issued with the true value on a cell, optimization of that part is treated specially. In general, this command directs synthesis to perform only a sizing operation on a cell. The set_size_only command can be used only on leaf cell instances.

sdc中跨时钟域(CDC)路径的约束方式相关推荐

  1. FPGA中跨时钟域的信号处理--握手协议方式

    一种解决总线同步问题的方法是使用一个保持寄存器和握手信号",这也就是"先异步暂存,后同步写入"的方法 下面介绍握手方式进行异步时钟域的通信. 所谓握手,即通信双方使用了专 ...

  2. CDC:跨时钟域处理

    前言(还未整理好) CDC(clock domain crossing)检查(跨时钟域的检查)是对电路设计中同步电路设计的检查.非同步时钟没有固定的相位关系,这样Setup/Hold不满足而产生了亚稳 ...

  3. 异步时钟引起的亚稳态问题和跨时钟域电路设计

    本文总结由数字电路设计的异步时钟引起的亚稳态问题,并针对亚稳态问题提出的处理方法和跨时钟域电路设计方法.重点是分析由异步时钟引起的跨时钟域CDC问题,后续将会总结由复位引起的电路亚稳态问题. 一.亚稳 ...

  4. FPGA设计中,跨时钟域问题的处理

    FPGA设计中,跨时钟域问题的处理 今天和大侠简单聊一聊FPGA设计中跨时钟域问题的处理,话不多说,上货. 跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPG ...

  5. 漫谈时序设计(1)跨时钟域是设计出来的,而非约束出来的!

    目录 亚稳态(Metastability) 单比特信号同步 慢时钟域到快时钟域 快时钟域到慢时钟域 多比特信号同步 Handshake Mechanism 异步FIFO 参考链接 写在最后 这篇博文在 ...

  6. 【数字IC基础】跨时钟域(CDC,Clock Domain Crossing)

    文章目录 一.什么是跨时钟域? 二.跨时钟域传输的问题? 2.1 亚稳态(单bit:两级D触发器(双DFF)) 2.2 数据收敛(多bit亚稳态)(格雷码编码.握手协议.异步FIFO.DMUX) 2. ...

  7. FPGA CDC跨时钟域设计学习(一)亚稳态

    FPGA CDC跨时钟域设计学习(一) 亚稳态 MTBF - mean time before failure 同步器 理论 设计原则 学习资源主要来源于CummingsSNUG2008Boston_ ...

  8. 跨时钟域问题(CDC)

    跨时钟域问题(CDC) slow to fast 边沿检测同步器 脉冲同步器 fast to slow 脉冲同步器 展宽 跨时钟域问题分为单比特和数据流两种情况,数据流也就是多比特问题,采用异步FIF ...

  9. 跨时钟域(CDC)优秀文章汇总-持续收集

    本文主要收集自己看过的一些优秀的CDC文章,进行分享会一直持续更新,其中序号2是我看过讲的比较全面的,其他各有不同的侧重 1 CDC与亚稳态问题_王见王见的博客-CSDN博客 2 cdc处理 个人觉得 ...

最新文章

  1. QT的QMutableHashIterator类的使用
  2. Json串和java对象进行转时
  3. jzoj4637-大鱼海棠【博弈论】
  4. java midlet 是什么_编译JAVA游戏,MIDlet出错,急求大家帮助
  5. SpringCloud学习笔记018---SpringBoot前后端分离_集成_SpringSecurity_简单实现
  6. 抠图为什么要用绿布_逆天抠图,Photoshop 2020天神下凡
  7. Struts2标签实现for循环
  8. Logistic Regression分类器与softmax分类器
  9. IERS EOP 文件的解读
  10. 正大美欧4的主账户关注什么数据?
  11. 记最近一周的一个支线任务
  12. 中国石油大学远程教育《穿出你的职业感》
  13. Skip List(跳表)
  14. java word apache poi 操作word模板。
  15. Soapui报错There are currently 1 running SoapUI MockServices解决办法
  16. 科技兴盛下,传统银行该如何转型?
  17. 6.电报机与继电器qk
  18. NLP实战|如何用280多万条豆瓣影评预测电影评分?
  19. 90G图片分享图片批量压缩zip和解压unzip
  20. 计算斐波拉契数列中前n个数字的和,以n=10为例

热门文章

  1. 确认个人电脑外网ip,并设置阿里云服务器只允许该ip访问
  2. Java程序员涨薪必备技能(1-3年必看!)
  3. github copilot插件安装(vscode)
  4. 基于最小均方误差linear minimum mean square error(LMMSE)插值算法的图像超分辨重构研究-附Matlab代码
  5. websocket protocal
  6. 酒店管理系统php教程,Qt之酒店管理系统
  7. 红外视频——行人识别
  8. mac如何将word中的公式转为latex格式
  9. 微信秒借金融贷款类APP下载链接微信内无法打开或显示已停止访问的解决方案
  10. no.15 MobileViT