CDC限制
关于CDC约束
时钟域交叉(CDC)约束适用于具有不同启动和捕获时钟。根据发布和捕获时钟关系以及在CDC路径上设置的定时异常。例如同步时钟之间但被错误路径约束覆盖的CDC路径不定时,并且因此被视为异步CDN。异步CDC路径可以是安全的,也可以是不安全的。安全和不安全的术语异步CDC路径与用于时钟间时序分析的术语不同请参见report_clock_interaction)。异步CDC路径在使用同步电路,以防止捕获顺序单元的亚稳态。有关更多信息,请参阅Vivado Design Suite用户指南中的此链接:设计分析和闭合技术(UG906)。
使用set_false_pathset_clock_groups约束,或通过使用set_max_delay进行部分分析-仅数据路径。此外,多位CDC路径捕获时间分布可能受到限制使用set_bus_skew约束。
约束总线倾斜
关于母线倾斜约束总线偏斜约束用于设置几个之间的最大偏斜要求异步CDC路径。总线偏斜不是与定时相关联的传统时钟偏斜路径相反,它对应于所有路径上的最大捕获时间差由相同的set_bus_skew约束覆盖。总线偏斜要求适用于两个Fast和慢速拐角,但不会跨拐角进行分析。
总线偏斜约束的目的是限制可以启动的源时钟边沿的数量数据,并由单个目的地时钟边沿捕获。容忍度取决于疾病控制与预防中心用于受约束路径的同步方案。通常使用总线偏斜约束对于以下CDC拓扑结构:
?格雷码总线传输,如异步FIFO
?使用CE、MUX或MUX Hold电路实现的多位CDC
?配置寄存器
尽管set_bus_skew命令不会阻止在安全定时的同步CDC,不需要这样的约束。设置和保持检查已经确保了在两个安全定时的同步CDC路径之间的安全传输。总线偏斜约束的CDC场景为:
总线偏斜约束的CDC场景为:
?覆盖了set_clock_groups的异步CDC
?异步CDC完全覆盖了set_false_path和/或set_max_delay-仅数据路径
?覆盖有set_false_path和/或set_max_delay的同步CDC路径-仅数据路径
总线偏斜约束不是定时例外;相反,这是一个时间断言。因此,它不干扰定时异常(set_clock_group、set_false_path、set_clock_group),set_max_delay、set_max_delay-datapath_only和set_multipcycle_path)和他们的优先权。总线偏斜约束仅通过route_design命令进行优化。报告set_bus_skew约束,使用命令行中的report_bus_skew命令或报告?→?时间安排?→?从GUI报告总线倾斜。未报告总线偏斜约束在Timing Summary报告(report_Timing_Summary)中。
set_bus_skew命令的语法
带有基本选项的set_bus_skew命令的语法为:
-from选项的对象列表应该是有效起点的列表。的有效起点set_bus_skew是顺序元件的时钟引脚,如寄存器或RAM,或单元它本身set_bus_skew不支持输入(或inout)端口。-to选项的节点列表应该是有效端点的列表。的有效终结点set_bus_skew是顺序单元格或单元格本身的数据引脚。输出(或输入输出)端口不是由set_bus_skew支持。
through选项的节点列表应该是有效引脚或网络的列表。总线偏斜值必须现实合理。AMD建议使用更大的值超过源时钟和目标时钟的最小周期的一半。的建议值总线偏斜还取决于CDC拓扑结构,如以下示例所示。
set_bus_skew示例一
在本例中,CDC是握手机制的一部分。源时钟域生成当数据可用于采样时发送信号。目标时钟域使用4阶段用于发送信号的同步器。在4级同步器之后,信号驱动时钟启用CDC目标寄存器的引脚。在这种时钟使能控制CDC结构中总线偏斜必须根据CE路径上的级数进行调整,因为它代表数据有效的目标时钟周期数。
如果源时钟周期为5ns,而目标时钟周期为2.5ns,则总线在CDC路径应设置为10 ns(4×2.5 ns)。
set_bus_skew示例二
在这个例子中,疾病控制与预防中心在一辆灰色编码的公交车上。系统必须确保只有一个目的时钟域同时捕获灰度编码总线的转变。如果源时钟周期为5ns,而目标时钟周期为2.5ns,则总线在CDC路径应设置为2.5 ns(目标时钟周期)。