【vivado约束学习四】跨时钟域路径分析

云雀叫了一整天

咱们还未像朋友一样当面说一句话,却也许就先有了文字往来,似乎平添了一些郑重的气氛。许多的事,许多的话,从我找到你,从此处到别处...


vivado约束学习四】跨时钟域路径分析

若要查看跨时钟域路径分析报告,可选择以下内容之一来查看:

A, Reports > Timing > Report Clock Interaction

B, Flow Navigator > Synthesis > Report Clock Interaction

C, Flow Navigator > Implementation > Report Clock Interaction

D,Tcl command: report_clock_interaction -name clocks_1

如图1所示,点击Synthesis-->Report Clock Interaction.

图1 Report Clock Interaction

跨时钟域路径分析报告分析从一个时钟域(源时钟)跨越到另一个时钟域(目标时钟)的时序路径。跨时钟域路径分析报告有助于识别可能存在数据丢失或亚稳态问题的情况.

运行“Report Clock Interaction”命令后,结果将在“时钟交互”窗口中打开。如下图2所示,时钟交互报告显示为时钟域矩阵,源时钟位于垂直轴,目标时钟位于水平轴。

图2 跨时钟域路径分析报告

A,No Path --用黑色框来表示:没有从源时钟到目标时钟的定时路径。在这种情况下,没有时钟交互,也没有任何报告。

B,Timed -- 用绿色框来表示:源时钟和目标时钟具有同步关系,并安全地被约束在一起。当两个时钟具有共同的主时钟和简单的周期比时,该状态由定时引擎确定。

C,User Ignored Paths--用深蓝色框来表示:用户定义的假路径或时钟组约束涵盖从源时钟到目标时钟的所有路径。

D,Partial False Path--用淡蓝色框来表示:用户定义的伪路径约束覆盖了从源时钟到目标时钟的一些时序路径,其中源时钟和目标时钟具有同步关系。

E,Timed (Unsafe)--用红色框来表示:源时钟和目标时钟具有异步关系。在这种情况下,没有共同的主时钟或没有可扩展的时段。

F,Partial False Path (Unsafe)--用橘橙色框来表示:此类别与Timed(Unsafe)相同,只是由于伪路径异常,从源时钟到目标时钟的至少一条路径被忽略。

G,Max Delay Datapath Only --用紫色框来表示:set_max_delay -datapath_only约束涵盖从源时钟到目标时钟的所有路径。

Report_clock_interaction呈现的报告并不是根据时序约束生成的,但是和时序约束有关,它反映出用户定义的伪路径。

例:以wavegen工程为示例,点击Report Clock Interaction,如图3所示。

图3  wavegen跨时钟域路径分析报告

wavegen跨时钟域路径分析报上半部分已经讲过,下面来讲下半部分,如图4。

图4 时钟交互报告下半部分内容

A,ID: 正在显示的源/目标时钟对的数字ID。

B,Source Clock: 路径源时钟域。

C,Destination Clock: 路径终端的时钟域。

D,Edges (WNS):用于计算最大延迟分析(设置/恢复)的最差裕度的时钟边缘。

E,WNS (Worst Negative Slack):为跨越指定时钟域的各种路径计算的最差裕度时间。负裕量时间表示路径违反了所需的建立(或恢复)时间的问题。

F,TNS (Total Negative Slack):属于跨越指定时钟域的路径的所有端点的最差松弛违规的总和。

G,Failing Endpoints (TNS): 交叉路径中的端点数量无法满足时序要求。违规的总和对应于TNS。

H,Total Endpoints (TNS):交叉路径中端点的总数。

I,Path Req (WNS):定时路径要求对应于WNS列中报告的路径。如果两个时钟中的至少一个时钟的上升沿和下降沿都有效,则在任何时钟对之间可能存在若干路径要求,或者在两个时钟之间的路径上应用了一些时序异常。本专栏中报告的值并不总是最具挑战性的要求。

J,Clock Pair Classification: 提供有关公共节点和时钟对之间的公共周期的信息。从最高优先级到最低优先级:忽略,虚拟时钟,无公共时钟,无公共周期,部分公共节点,无公共节点和清除。

K,Inter-Clock Constraints: 显示源时钟和目标时钟之间所有路径的约束摘要。


往期推荐

【Vivado约束学习一】时钟约束
【vivado约束学习二】 IO延时约束
【vivado约束学习三】时钟网络分析
更多精彩推荐,请关注我们
  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vivado中,异步时钟的约束需要特殊的处理,因为异步时钟间存在时序不确定性。下面是异步时钟约束的一般步骤: 1. 定义异步时钟:首先,需要在约束文件中定义异步时钟,并指定其输入引脚和时钟域。例如,假设有两个异步时钟信号 `clk_async1` 和 `clk_async2`,可以使用以下约束语句进行定义: ``` create_clock -period <async1_period> [get_pins <input_pin_of_clk_async1>] create_clock -period <async2_period> [get_pins <input_pin_of_clk_async2>] ``` 其中,`<async1_period>` 和 `<async2_period>` 分别是异步时钟的周期,`<input_pin_of_clk_async1>` 和 `<input_pin_of_clk_async2>` 是异步时钟信号的输入引脚。 2. 创建异步时钟域:接下来,需要创建异步时钟域,并将相关的时序路径分配给相应的时钟域。可以使用以下约束语句创建异步时钟域: ``` create_clock -period <async1_period> [get_pins <input_pin_of_clk_async1>] -name <async1_clk_domain> create_clock -period <async2_period> [get_pins <input_pin_of_clk_async2>] -name <async2_clk_domain> ``` 其中,`<async1_clk_domain>` 和 `<async2_clk_domain>` 是异步时钟域的名称。 3. 添加时序约束:对于与异步时钟相关的时序路径,需要通过时序约束来定义其时序要求。例如,如果有一个时序路径需要从异步时钟域 `<async1_clk_domain>` 到主时钟域 `<main_clk_domain>`,可以使用以下约束语句: ``` set_false_path -from [get_clocks <async1_clk_domain>] -to [get_clocks <main_clk_domain>] ``` 这将告诉综合器和布局布线工具忽略异步时钟域到主时钟域的时序路径分析。 需要注意的是,异步时钟的约束需要谨慎处理,确保时序分析的准确性和设计的可靠性。在实际设计中,还可能需要考虑信号同步和异步复位等相关问题。建议参考Xilinx官方文档和手册,详细了解异步时钟约束的使用和最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LEEE@FPGA

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值