xdc约束技巧-cdc篇1.1

上传人:小** 文档编号:93320077 上传时间:2019-07-19 格式:PDF 页数:8 大小:947.47KB
返回 下载 相关 举报
xdc约束技巧-cdc篇1.1_第1页
第1页 / 共8页
xdc约束技巧-cdc篇1.1_第2页
第2页 / 共8页
xdc约束技巧-cdc篇1.1_第3页
第3页 / 共8页
xdc约束技巧-cdc篇1.1_第4页
第4页 / 共8页
xdc约束技巧-cdc篇1.1_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《xdc约束技巧-cdc篇1.1》由会员分享,可在线阅读,更多相关《xdc约束技巧-cdc篇1.1(8页珍藏版)》请在金锄头文库上搜索。

1、Page 1 XDC 约束技巧约束技巧之之 CDC 篇篇 上一篇XDC约束技巧之时钟篇介绍了 XDC的优势以及基本语法,详细说明了如 何根据时钟结构和设计要求来创建合适的时钟约束。我们知道 XDC与 UCF 的根本区别之 一就是对跨时钟域路径(CDC)的缺省认识不同,那么碰到 FPGA设计中常见的 CDC路 径,到底应该怎么约束,在设计上又要注意些什么才能保证时序报告的准确性? CDC 的的定义与定义与分类分类 CDC是 Clock Domain Crossing的简称,CDC时序路径指的是起点和终点由不同时钟 驱动的路径。在电路设计中对这些跨时钟域路径往往需要进行特别的处理来避免亚稳态的 产

2、生,例如使用简单同步器、握手电路或是 FIFO来隔离。 安全的安全的 CDC 路径路径 所谓安全的 CDC路径是指那些源时钟和目标时钟拥有相同的来源,在 FPGA内部共 享部分时钟网络的时序路径。这里的安全指的是时钟之间的关系对 Vivado来说是全透明 可分析的。 不安全的不安全的 CDC 路径路径 不安全的 CDC路径则表示源时钟和目标时钟不同,且由不同的端口进入 FPGA,在 芯片内部不共享时钟网络。这种情况下,Vivado的报告也只是基于端口处创建的主时钟在 约束文件中所描述的相位和频率关系来分析,并不能代表时钟之间真实的关系。 Page 2 在在 Vivado 中中分析分析 CDC

3、在 ISE中想要快速定位那些需要关注的 CDC路径并不容易,特别是要找到不安全的 CDC 时,因为 ISE 缺省认为所有来源不同的时钟都不相关且不做分析,要报告出这类路径, 需要使用 ISE Timing Analyzer (TRCE) ,并加上 “-u” (表示 unconstrained)这个选项。 在 Vivado中则容易许多,我们可以使用 report_clock_interaction 命令(GUI支持)来 鉴别和报告设计中所有的时钟关系。执行命令后会生成一个矩阵图,其中对角线上的路径 表示源时钟与目标时钟相同的时钟内部路径,其余都是 CDC路径。 Vivado还会根据网表和已读入的

4、约束分析出 CDC路径的约束情况,并分颜色表示。 例如绿色代表有时序约束,红色代表不安全的 CDC路径但是没有约束时序例外,橙色表 示有部分路径已约束为 false path的不安全 CDC路径。 Page 3 矩阵下方是时钟关系表格,可以就各种条件进行筛选和排序,方便定位 CDC路径。 建议的做法是:首先,对“Common Primary Clock”排序(显示为 Yes 或 No),这么做 可以快速鉴别出那些安全和不安全的 CDC 路径,接着观察对应的“Inter-Clock Constraints” 栏内的内容,判断已读入的 XDC中是否对这类路径进行了合理的约束。 第二步,可以对“Pa

5、th Req (WNS)”由小到大进行排序,找到那些数值特别小(例如 小于 100ps)或是显示为“Unexpanded”的 CDC路径,结合是否共享“Common Primary Clock”来鉴别此类路径,作出合理的约束。 过小的 Path Req (WNS)一般都表示此类跨时钟域路径缺少异步时钟关系或其它时序 例外的约束,如果两个时钟连“Common Primary Clock”也不共享,则 100%可以确认为 异步时钟,应该加上相应的时钟关系约束。 显示为“Unexpanded”的时钟关系,表示 Vivado 在一定长度(缺省为 1000)的周期 内都没有为两个时钟的频率和相位找到固定

6、的关系,则无法推导出相应的 Path Req 约束值。 此类 CDC需要特别留意,也要加上异步时钟关系约束。 这个矩阵还支持交互式的时序分析,选中任意一个方框,右键显示下拉菜单:选择 Report Timing,会报告出这一格代表的时钟域(本时钟域或是跨时钟域)内最差的时序路 径;选择 Set Clock Groups 则可以设置时钟关系约束并添加到 XDC文件中。 Page 4 set_property ASYNC_REG TRUE get_cells list sync0_reg sync1_reg CDC 的设计与约束的设计与约束 CDC路径在 FPGA设计中普遍存在,在设置相应的约束前

7、,必须了解设计中采取了 怎样的方法来处理跨时钟域路径。 简单同步器简单同步器 对于单根跨时钟域路径,一般采用简单同步器(Simple Synchronizer),就是由至少 两级 CE端和 Reset/Clear端接死的寄存器序列来处理。 这种情况下,为了更长的平均无故障时间 MTBF(Mean Time Between Failures),需 要配合一个 ASYNC_REG的约束,把用作简单同步器的多个寄存器放入同一个 SLICE, 以降低走线延时的不一致和不确定性。 Page 5 在 XDC中,对于此类设计的 CDC路径,可以采用 set_clock_groups 来约束。 用用 FIFO

8、 隔离隔离 CDC 在总线跨时钟域的设计中,通常会使用异步 FIFO 来隔离。根据 FIFO的实现方式不 同,需要加入不同的 XDC约束。 Build-in 硬核硬核 FIFO 这种 FIFO实际上就是用 FPGA内部的 BRAM来搭建,所有控制逻辑都在 BRAM 内 部,是推荐的 FIFO实现方式。其所需的 XDC也相对简单,只要像上述简单同步器的时钟 关系约束一样用 set_clock_groups 将读写时钟约束为异步即可。 带有格雷码控制的带有格雷码控制的 FIFO 为了在亚稳态下做读写指针抽样也能正确判断空满状态,设计中也常用一种带有格 雷码控制的 FIFO来实现异步时钟域的隔离。计

9、数器和读写指针等需要用 BRAM 外部的逻 辑搭建,这样的结构就不能简单约束 set_clock_groups,还要考虑这些外部逻辑如何约束。 如下图所示 FIFO,在存储器外部有一些用 FPGA逻辑搭建的写指针和读指针控制, 分属不同的时钟域,存在跨时钟域的时序路径。 此时如果仅将读写时钟用 set_clock_groups约束为异步时钟,相当于设置从 A到 B和 从 B到 A的路径全部为 false path。根据XDC约束技巧之时钟篇所列,false path 的优 先级最高,很显然这么做会导致所有跨读写时钟域的路径全部不做时序分析,读写指针和 相关控制逻辑也就失去了存在的意义。 set

10、_clock_groups -asynchronous -group get_clocks -include_generated_clocks clk_oxo -group get_clocks -include_generated_clocks clk_core Page 6 set_max_delay $delay from get_cells cell1 to get_cells cell2 datapath_only 所以建议的做法是不设 set_clock_groups约束,转而采用 set_max_delay来约束这些跨 时钟域路径。以写入侧举例,一个基本的原则就是约束从 cell

11、1到 cell2的路径之间的延时 等于或略小于 cell2的驱动时钟一个周期的值。读出侧的约束同理。 如果用户使用 Vivado 的 IP Catalog来产生此类 FIFO,这样的 XDC会随 IP 的源代码 一起输出(如下所示),使用者仅需注意确保这个 FIFO的读写时钟域没有被用户自己的 XDC约束为 false path或是异步 clock groups 。 自 2013.4开始,Vivado中还提供一个称作 methodology_checks的 DRC检查,其中包 含有对此类异步 FIFO的 max delay约束与时钟域 clock groups约束的冲突检查。 set_max_

12、delay -from get_cells /rd_pntr_gc_reg* -to get_cells /Q_reg_reg* -datapath_only get_property PERIOD $rd_clock set_max_delay -from get_cells /wr_pntr_gc_reg* -to get_cells /Q_reg_reg* -datapath_only get_property PERIOD $wr_clock Page 7 CDC 约束方案的对比约束方案的对比 CDC 路径在 FPGA 设计中普遍存在,不少公司和研发人员都有自己偏爱的约束方式, 这些方

13、式通常有各自适用的环境,当然也各有利弊。 全部忽略的约束全部忽略的约束 最大化全部忽略 CDC路径的约束,即采用 set_clock_groups 或是 set_false_path 对时 钟关系进行约束,从而对跨时钟域的路径全部忽略。 示例:set_clock_groups -asynchronous -group clkA -group clkB 优势:简单、快速、执行效率高。 劣势:会掩盖时序报告中所有的跨时钟域路径,容易误伤,不利于时序分析。 使用使用 datapath_only 约束约束 datapath_only是从 ISE时代的 UCF中继承过来的约束,在 XDC中必须作为一个选

14、项 跟 set_max_delay配合使用,可以约束在时钟之间,也可以对具体路径进行约束。 示例:set_max_delay 10 -datapath_only -from clkA -to clkB 优势:简便、执行效率较高。 劣势:1) 需要特别留意是否设置了过于严格的约束,因为使用者经常会使用较快 的时钟周期来约束跨时钟域路径 。2) 注意约束优先级的关系,是否跟设计中其它 的约束有冲突。3) set_max_delay而没有配套设置 set_min_delay的情况下,同一 路径只做 setup分析而不做 hold分析。 逐条进行时序例外约束逐条进行时序例外约束 对设计中的 CDC 路

15、径分组或逐条分析,采用不同的时序例外约束,如 set_false_path, set_max_delay和 set_multicycle_path 等来约束。 示例:set_false_path -from get_cells a/b/c/*_meta* -to get_cells a/b/c/*_sync* 优势:灵活、针对性好、便于时序分析和调试。 劣势:1) 逐条约束会占用大量时间来调试和分析,效率低下。2) 时序例外的优先 级比较复杂,多种时序例外约束共存的情况下,很容易产生意想不到的冲突,进 一步增加调试时间,降低效率。3) 这么做极容易产生臃肿的 XDC约束文件,而 且时序例外的执行更耗内存,直接导致工具运行时间变长。 Page 8 小结小结 CDC路径的分析和约束不仅在 FPGA设计中至关重要,也是数字电路设计领域一个 非常重要的命题。IP提供商、EDA公司都有不少关于 CDC的技术文档。Vivado 相比于 Xilinx上一代产品 ISE,已经在 CDC 的鉴别和分析方面有了很大改进,XDC 相比于 UCF, 在 CDC路径的约束上也更为高效,覆盖率更高。 希望本篇短文可以帮助 Vivado的用户快速掌握对 FPGA设计中 CDC路径的鉴别、分 析和约束方法,提高设计效率。 Ally Zhou 2014-9-28 于 Xilinx上海 Office

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号