VIVADO异步时钟约束之实例演示

前言

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选项时的约束命令会少很多,代码简洁性更好。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值