【ug903】FPGA时序约束学习(4)-如何约束跨时钟域(Clock domain crossing,CDC)

本文详细解析了时钟约束的各个方面,包括如何管理主时钟、虚拟时钟和多时钟组,以及如何处理输入输出延迟、时序例外和跨时钟域的总线偏斜。特别关注了CDC约束的分类、总线偏斜的设置语法和实例,为设计者提供了实操指导。

时序约束系列:

  1. 如何约束时钟
    主时钟、虚拟时钟、生成时钟、时钟组、时钟不确定性
  2. 如何约束输入输出延迟
    输入延迟、输出延迟
  3. 如何约束时序例外
    多周期路径、输入输出延迟、虚假路径、最大最小延迟
  4. 如何约束跨时钟域
    总线偏斜

1 关于CDC约束

跨时钟域(Clock Domain Crossing,CDC)约束适用于具有不同启动(launch)和捕获(capture)时钟的时序路径。

根据启动和捕获时钟关系以及在CDC路径上设置的时序例外(timing exception),分为同步CDC和异步CDC。

例如,被虚假路径(false path)约束覆盖的同步时钟之间的CDC路径是不进行时序分析的,因此被视为异步CDC。

异步CDC路径可以是安全(safe)的也可以是不安全(unsafe)的。异步CDC路径的安全和不安全的术语不同于用于时钟间时序分析的术语(参阅report_clock_interaction)。当异步CDC路径使用一个同步电路,以防止捕获时序单元出现亚稳态时,异步CDC路径被认为是安全的。

可以使用 set_false 或 set_clock_groups 约束完全忽略CDC路径的时序分析,也可以使用 set_max_delay -datapath_only 进行部分分析。此外,可以使用 set_bus_skew 约束约束多bit CDC 路径捕获时间。

2 约束总线偏斜(Bus Skew)

2.1 关于总线偏斜约束

总线偏斜约束用于设置多个异步CDC路径之间的最大偏斜要求。总线偏斜不是与时序路径相关的传统时钟偏斜。相反,它对应于被同一 set_bus_skew 约束覆盖的所有路径上的最大捕获时间差。总线偏斜要求适用于 Fast 和 Slow 边界条件,但未对跨边界条件进行分析。

总线偏斜约束的目的是限制可以 launch数据 并被 单个目标时钟边沿捕获的 源时钟边沿的数量。容差取决于用于受约束路径的CDC同步方案。总线偏斜约束通常用于以下CDC拓扑:

  • 格雷码(Gray-code)总线传输,如异步fifo
  • 用CE、MUX或MUX保持电路实现的多bit CDC
  • 配置寄存器

set_bus_skew 命令可以在 时序已经确保安全的同步CDC上 设置总线偏斜约束,虽然不需要这样的约束。因为 setup 和 hold 检查已经确保了两个安全时序的同步CDC路径之间的安全传输。

总线偏斜约束的CDC场景为:

  • 使用 set_clock_groups 覆盖的异步CDC
  • 完全由 set_false_path 和/或 set_max_delay -datapath_only 覆盖的异步CDC
  • 完全由 set_false_path 和/或 set_max_delay -datapath_only 覆盖的同步CDC

总线偏斜约束不是时序例外;相反,这是一种时序断言(timi

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChipWeaver

觉得有用的话点个赞吧 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值