-
2022-03-21 00:03:33
(15)Vivado时钟组约束异步时钟域
1 文章目录
1)文章目录
2)时序约束引言
3)FPGA时序约束课程介绍
4)Vivado时钟组约束异步时钟域
5)技术交流
6)参考资料
2 时序约束引言
1)什么是静态时序分析?
通俗来说:在输入信号到输出信号中,因为经过的传输路径、寄存器、门电路等器件的时间,这个时间就是时序。开发工具不知道我们路径上的要求,我们通过时序约束来告诉开发工具,根据要求,重新规划,从而实现我们的时序要求,达到时序的收敛。
2)什么是时序收敛?
一个好的FPGA设计一定是包含两个层面:良好的代码风格和合理的约束。时序约束作为FPGA设计中不可或缺的一部分,已发挥着越来越重要的作用。毋庸置疑,时序约束的最终目的是实现时序收敛。时序收敛作为 FPGA设计的重要验证手段之一,是保证FPGA正常工作的必要条件。那么当时序无法收敛时我们应该采取怎样的措施呢?
3 FPGA时序约束课程介绍
1)FPGA时序基本约束方法;
2)建立时间;
3)保持时间;
4)亚稳态;
5)周期约束;
6)输入输出延迟约束方法;
7)时序例外约束方法;
8)异步时钟约束方法;
9)时钟服用约束方法;
更多相关内容 -
(10)Vivado 异步时钟约束
2022-03-20 23:27:54(10)Vivado 异步时钟约束 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)Vivado 异步时钟约束 5)技术交流 6)参考资料 2 时序约束引言 1)什么是静态时序分析? 通俗来说:在...(10)Vivado 异步时钟约束
1 文章目录
1)文章目录
2)时序约束引言
3)FPGA时序约束课程介绍
4)Vivado 异步时钟约束
5)技术交流
6)参考资料
2 时序约束引言
1)什么是静态时序分析?
通俗来说:在输入信号到输出信号中,因为经过的传输路径、寄存器、门电路等器件的时间,这个时间就是时序。开发工具不知道我们路径上的要求,我们通过时序约束来告诉开发工具,根据要求,重新规划,从而实现我们的时序要求,达到时序的收敛。
2)什么是时序收敛?
一个好的FPGA设计一定是包含两个层面:良好的代码风格和合理的约束。时序约束作为FPGA设计中不可或缺的一部分,已发挥着越来越重要的作用。毋庸置疑,时序约束的最终目的是实现时序收敛。时序收敛作为 FPGA设计的重要验证手段之一,是保证FPGA正常工作的必要条件。那么当时序无法收敛时我们应该采取怎样的措施呢?
3 FPGA时序约束课程介绍
1)FPGA时序基本约束方法;
2)建立时间;
3)保持时间;
4)亚稳态;
5)周期约束;
6)输入输出延迟约束方法;
7)时序例外约束方法;
8)异步时钟约束方法;
9)时钟服用约束方法;
10&#x
-
VIVADO异步时钟约束之实例演示
2021-07-27 18:27:22异步时钟约束首先需要对FPGA内部的时钟非常熟悉,然后,FPGA设计中,异步时钟之间已经经过异步时钟同步化处理,异步时钟约束可以提高编译器的编译效率,同时可实现FPGA布局布线的最优化。 示例演示 synthesis完成后...前言
vivado在synthesis之后,需要对工程中的时钟进行约束,其中包括异步时钟的约束。
异步时钟约束首先需要对FPGA内部的时钟非常熟悉,然后,FPGA设计中,异步时钟之间已经经过异步时钟同步化处理,异步时钟约束可以提高编译器的编译效率,同时可实现FPGA布局布线的最优化。示例演示
synthesis完成后,打开综合设计,点击flow navigator中的report clock interaction(也可在tcl对话框中输入“report_clock_interaction -delay_type min_max -significant_digits 3 -name timing_1”命令),打开时钟交互窗口,观察FPGA设计中内部时钟之间的交互关系。如下图所示:
时钟交互报告界面中红色部分即为存在异步时钟域交互,但未进行异步时钟约束,需要根据实际情况进行异步时钟约束。
如果FPGA设计中异步时钟之间均采取了异步时钟同步化处理,可将上述标红的区域都进行异步时钟约束.
建议FPGA设计中,异步时钟域下的信号均进行异步时钟同步化处理,可有效的减少电路实现中的亚稳态情况,同时提高FPGA运行的稳定性,异步时钟同步化可参考本人博客“单bit信号跨时钟域处理及时序约束”。 (https://blog.csdn.net/aaaaaaaa585/article/details/118093422?spm=1001.2014.3001.5501)
异步时钟域之间约束可以采用set_clock_groups命令,具体语法见博客“VIVADO异步时钟域约束(groups)”
(https://blog.csdn.net/aaaaaaaa585/article/details/116067981?spm=1001.2014.3001.5501)
常用的语法为:set_clock_groups -asynchronous -group [get_clocks -include_generated_clocks clock_name]
该语法下,约束clock_name的时钟以及由clock_name生成的时钟之间互为异步关系,且与设计中的其他时钟也均为异步时钟关系。
clock_name的获取,可以在TCL窗口中输入get_clocs获得;
其中每个时钟具体的信息,可以通过report_clocks命令得知。
对于产生的时钟,同一个master clock产生的时钟,可以使用-include_generated_clocks 只约束一次。
下述约束示例为结合上图中的时钟交互报告进行的时序约束:set_clock_groups -asynchronous -group virt_clk set_clock_groups -asynchronous -group [get_clocks ctrl_clk25m] set_clock_groups -asynchronous -group [get_clocks -include_generated_clocks clk_25m] set_clock_groups -asynchronous -group [get_clocks -include_generated_clocks Sodimms_sys_clk_p] set_clock_groups -asynchronous -group [get_clocks rxoutclk_out[0]_4] set_clock_groups -asynchronous -group [get_clocks txoutclk_out[0]_4] set_clock_groups -asynchronous -group [get_clocks rxoutclk_out[0]] set_clock_groups -asynchronous -group [get_clocks txoutclk_out[0]] set_clock_groups -asynchronous -group [get_clocks rxoutclk_out[0]_8] set_clock_groups -asynchronous -group [get_clocks txoutclk_out[0]_8]
约束后,打开时钟交互报告窗口,可以看到约束后的时钟交互报告:
可以看到异步时钟已全部约束。上述约束语法,相比较与set_false或者不使用-include_generated_clocks选项时的约束命令会少很多,代码简洁性更好。
-
VIVADO异步时钟域约束(groups)
2021-04-23 19:25:08如果工程中存在异步时钟域,且异步时钟域之间没有信号交互,或者有交互的信号之间已经通过异步时钟同步化处理,则可通过set_clock_groups或set_false_path命令,定义异步时钟域,禁止VIVADO分析异步时钟域之间的时序...前言
VIVADO默认情况下会对工程中的所有的时钟路径进行时序分析,包括同时钟域和异步时钟域。如果工程中存在异步时钟域,且异步时钟域之间没有信号交互,或者有交互的信号之间已经通过异步时钟同步化处理,则可通过set_clock_groups或set_false_path命令,定义异步时钟域,禁止VIVADO分析异步时钟域之间的时序关系,改善工程的布局布线,同时提高工具的布局布线效率。
一、同步时钟和异步时钟
同步时钟:两个是时钟之间的相位关系是可预测的,那么这两个时钟是同步时钟。通常同步时钟有一个共同的时钟源,并且有一个共同的周期。
异步时钟:无法判定两个时钟间相位关系时,则可以称这两个时钟为异步时钟(asynchronous clocks)。两个来自不同晶振的时钟,一定是异步时钟。通常情况下设计中不同的主时钟肯定是异步时钟,因此可以将这两个主时钟及其衍生时钟约束成不同的时钟组。
不可扩展时钟:当两个时钟无法保证在1000个时钟周期内重新对齐,则认为这两个时钟是不可扩展时钟。例如,有一个共同的时钟产生5.125 ns和6.666ns周期的两个时钟,这两个时钟在1000个时钟周期内上升沿不可重新对齐,则认为这两个时钟为不可扩展时钟。在进行时钟约束时,这两个时钟可以认为时异步时钟。
简单概括:两个时钟的源相同,即可认为是同步时钟,否则,即为异步时钟。
二、set_clock_groups与set_false_path的不同
set_clock_groups命令和set_false_path都是异步时钟域声明的语法,两者略有不同:
set_clock_groups命令是双向的,例如:set_clock_groups -name async_clk0_clk1 -asynchronous -group {clk0} -group {clk1}
该约束下,clk0到clk1、clk1到clk0都将不被分析。
set_false_path命令是单向的,例如:set_false_path -from [get_clocks CLKA] -to [get_clocks CLKB]
该约束下,CLKA到CLKB不被分析,但CLKB到CLKA仍然会被分析。
三、set_clock_groups语法
异步时钟和不可扩展时钟无法安全计时。 在分析过程中可以使用 set_clock_groups 命令忽略它们之间的时序路径。
set_clock_groups [-name <arg>] [-logically_exclusive] [-physically_exclusive] [-asynchronous] [-group <args>] [-quiet] [-verbose]
选项 含义 -name 对时钟分组的命名 -logically_exclusive 指定逻辑上互斥的时钟组 -physically_exclusive 指定物理独占时钟组 -asynchronous 指定异步时钟组 -group 时钟列表 -quiet 忽略命令错误 -verbose 命令执行期间暂停消息限制 注意:
1、-logically_exclusive、-physically_exclusive 和-asynchronous 是互斥的参数。
2、-group如果仅指定了一组时钟,则该组与设计中的所有其他时钟独占或异步。四、用法举例
1、将src_clk和sync_clk驱动的所有单元分为两个组,并且这两个时钟组相互异步。
set_clock_groups -group src_clk -group sync_clk -asynchronous
2、将src_clk和sync_clk以及他们各自产生的时钟,均为单独的时钟组,并且这些时钟组相互异步。
set_clock_groups -group [get_clocks -include_generated_clocks src_clk] \ -group [get_clocks -include_generated_clocks sync_clk] -asynchronous
注意:上述示例中,src_clk 和 sync_clk 以及它们所有生成的时钟都是异步的。 否则,生成的时钟将相互计时,并与另一个主时钟进行计时。
3、将src_clk和sync_clk组合在一起,成立一个时钟组,并且该时钟组与工程中的其他时钟异步。set_clock_groups -async -group [get_clocks {src_clk sync_clk}]
五、get_clocks参数
get_clocks命令用于获取当前工程中的时钟列表。工程中的时钟列表可通过report_clocks命令获取。
通过Flow Navigator窗口的Open Implementation Design打开工程实现,然后在Tcl Console窗口中输入report_clocks命令,即可获得工程中的时钟列表,选择对应的时钟即可。
注意:使用**-include_generated_clocks** 命令时,所使用的参数应该为Generated Clocks列表下的Master Clock对应的时钟。
更多关于get_clocks的使用,待后续的文章详解。 -
FPGA时序约束-设置伪路径和设置异步时钟
2021-03-24 09:37:52**什么是设置伪路径?**伪路径是指该路径存在,但该路径的电路功能不会发生或者无须时序约束。 创建伪路径的好处:可以减少工具运行优化时间,增强实现结果,避免在不需要进行...在异步时钟的位置右击选择设置伪路径即 -
时钟周期约束的方法
2022-02-07 13:18:16时钟约束和物理约束一般分为2个文件一目了然。 约束的属性告诉我们约束使用在综合还是实现。时序约束一般在综合和实现都需要用到,物理约束一般应用于实现。 一、primary clock primary clock来自端口或者gigabit... -
同源时钟/同步时钟/异步时钟/同源时钟之间时序约束/clk group
2019-10-21 11:13:531.何为同步时钟,何为异步时钟 当两个时钟间的相位是固定关系...因此可以将主时钟和与之对应的衍生时钟约束成同一个时钟组。 无法判定两个时钟间相位时,则可以称这两个时钟为异步时钟(asynchronous clocks)。两... -
SDC设计约束(1)——时钟相关约束
2021-08-03 00:47:59Synopsys(SDC)设计约束——时钟相关约束 -
异步跨时钟域握手处理(Verilog)
2021-08-23 17:21:21end //时钟域b同步时钟域a的req信号 always@(posedge clk_b or negedge rst_n)begin if(!rst_n) req_b ; else req_b [1:0],req}; end always@(posedge clk_b or negedge rst_n)begin if(!rst_... -
VIVADO时钟约束之get_clocks
2021-06-21 18:03:37在使用vivado做异步时序约束时,常常用到get_clocks命令,该命令用于获取当前工程中指定搜索模式匹配的时钟列表。 get_clocks语法 get_clocks [-regexp] [-nocase] [-filter <arg>] [-of_objects <args>... -
VIVADO使用误区与进阶之2:XDC约束技巧之时钟篇
2021-05-19 17:19:36XDC 的基本语法可以分为时钟约束、 I/O 约束以及时序例外约束三大类。根据 Xilinx 的 UltraFast 设计方法学中 Baseline 部分的建议( UG949 中有详细介绍),对一个设计进行约束的先后顺序也可以依照这三类约束依次... -
(32)物理管脚时钟设置异步约束
2022-03-25 10:04:37(32)物理管脚时钟设置异步约束 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)物理管脚时钟设置异步约束 5)技术交流 6)参考资料 2 时序约束引言 1)什么是静态时序分析? 通俗... -
【Vivado使用误区与进阶】XDC约束技巧——时钟篇
2015-01-09 17:20:42Xilinx 的新一代设计套件Vivado中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE中支持的UCF大不相同,给使用者带来许多额外挑战。Xilinx工具专家告诉你,其实用好XDC很容易,只需掌握几点核心技巧... -
Vivado时钟分组约束的三类应用
2018-01-27 22:12:21在Vivado中通过set_clock_groups来约束不同的时钟组,它...-asynchronous应用于异步时钟,如下图所示,CLKA和CLKB由两个外部独立的晶振提供,那么跨时钟域路径即REGA到REGB0之间的路径可采用如下约束: create_cl -
FPGA时钟约束
2016-08-22 18:01:14FPGA时钟约束 时钟约束 #************************************************************** # Create Clock #************************************************************** create_... -
异步时钟FIFO的基本原理
2020-05-23 21:55:17在现代大规模ASIC设计中,经常会遇到跨时钟域的数据传输,此时就需要用到异步时钟FIFO。既然是先进先出的fifo,那就有push端和pop端。假设push端时钟为clcok A,pop端时钟为clock B。clock A和clock B可能前者主频高... -
(08)Vivado时钟约束
2022-03-20 23:29:08(08)Vivado时钟约束 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)Vivado时钟约束 5)技术交流 6)参考资料 2 时序约束引言 1)什么是静态时序分析? 通俗来说:在输入信号到... -
【Vivado约束学习】 时钟约束
2019-08-22 10:31:15【Vivado约束学习】 时钟约束 1 时钟介绍 在数字设计中,时钟代表从寄存器(register)到寄存器可靠传输数据的时间基准。Xilinx Vivado集成设计环境(IDE)时序引擎使用ClocK特征计算时序路径要求,并通过松弛计算... -
(25)差分时钟约束
2022-03-23 08:27:41(25)差分时钟约束 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)差分时钟约束 5)技术交流 6)参考资料 2 时序约束引言 1)什么是静态时序分析? 通俗来说:在输入信号到输出... -
(78)Vivado设置时钟组约束
2022-04-09 17:20:26(78)Vivado设置时钟组约束 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)Vivado设置时钟组约束 5)技术交流 6)参考资料 2 时序约束引言 1)什么是静态时序分析? 通俗来说:在... -
quartus 时序约束之时钟约束基本步骤
2021-06-25 10:07:07FPGA quartus软件时序约束之时钟约束的步骤 -
FPGA时序约束之时钟约束(altera)
2017-08-14 17:11:13fpga 时钟约束 时序约束 -
时钟周期约束详细介绍
2020-08-24 12:23:04文章目录1.3 时钟周期约束**1. create_clock****2. create_generated_clock****3. set_clock_groups****4. 创建虚拟时钟** 本文摘抄自: ...微信公众号:Quant_times、Reading_...下面我们讲一些vivado中时钟约束指令。 -
FPGA时序约束之时钟约束
2021-05-29 18:54:02毋庸置疑,create_clock是最基本、最简单的时序约束命令,而且在...有三类时钟时钟需要用create_clock进行约束,分别是:从全局时钟管脚进来的主时钟(Primary Clock)7系列FPGA高速收发器输出时钟(RXOUTCLK/TXOUTC -
FPGA异步时钟组
2022-03-06 21:00:17想着约束个异步时钟组就能解决了吧,然后利用tcl指令,report_clocks查看时钟,对其进行约束(generated_clocks 使用master clock)。 如下是我的约束: 但是综合后会出现严重警告: 我以为命令写错了,所以用tcl查... -
(125)FPGA异步时钟域约束效果(vivado)
2022-03-18 18:11:37FPGA时序分析与约束 2022年2月15日 1 FPGA时序分析概念 1)静态时序分析是采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的 建立和保持时间是否满足时序要求,... -
9 FPGA时序约束实战篇之衍生时钟约束
2020-01-29 12:42:43约束衍生时钟 系统中有4个衍生时钟,但其中有两个是MMCM输出的,不需要我们手动约束,因此我们只需要对clk_samp和spi_clk进行约束即可。约束如下: create_generated_clock -name clk_samp -source [get_pins ... -
XDC约束技巧之I/O篇(下)
2021-06-23 18:07:10XDC约束技巧之CDC篇继《XDC 约束技巧之 I/O 篇(上) 》详细描述了如何设置 Input 接口约束后,我们接着来聊聊怎样设置 Output 接口约束,并分析 UCF 与 XDC ... -
DC0: 数字设计中的时钟与约束+comments
2021-07-10 15:02:04最近做完了synopsys的DC workshop,涉及到时钟的建模/约束,这里就来聊聊数字中的时钟(与建模)吧。主要内容如下所示: ·同步电路与异步电路; ·时钟/时钟树的属性:偏移(skew)与时钟的抖动(jitter)、延时...