本节目录
一、异步时钟组约束定义
二、一个异步时钟组set_clock_groups的案例详解
1、时序违例分析
2、Vivado中set_clock_groups步骤
3、set_clock_group优化后的时序报告
三、往期文章链接
本节内容
一、异步时钟组约束定义
异步时钟组,英文名称为Asynchronous Clock Groups,在vivado xdc约束命令为 set_clock_groups。需要注意的是,相比于常规时序约束, set_clock_groups约束命令具有更高的优先级。如果需要约束和报告异步时钟之间的某些路径,则必须只使用常规时钟约束,而不是设置_clock_组。
从字面上理解,两个时钟为异步时钟,不需要分析这两个时钟之间的所有路径,在分析过程中,忽略所有的时序路径。比如:两个时钟clk0和clk1,不论谁是源端时钟,或目的时钟,两者之间的所有逻辑路径不需要进行时序分析,此时可采用异步时钟组约束,来优化因分析某些路径所造成的时序违例。
具体的设置指令:
set_clock_groups -name async_clk0_clk1 -asynchronous \
-group [get_clocks -include_generated_clocks clk0] \
-group [get_clocks -include_generated_clocks clk1]
二、一个异步时钟组set_clock_groups的案例详解
1、时序违例分析
在Implementation实现之后,也就是把综合网表具体实现的过程,将综合后的电路具体映射到FPGA内部资源的过程。此时,时钟已经布线成功,通过点击Report Timing Summary来查看工程的时序报告,如下:
在时序报告中发现存在建立时间setup违例的情况,口语化描述时序爆红。需要对时序爆红的路径进行分析,然后结合具体情况再进行时序优化。从分析汇总看出,时序违例的路径,源端时钟Source Clock均为clk_out1_user_clk,目的端时钟为txoutclk,关注下这两路时钟,通过Clock Summary中clk_out1_user_clk为100M,txoutclk为312.5M,两种属于异步时钟。
在时序违例路径选中第一条,右键进行内部结构,逻辑等级Levels为3,CARRY8=1,LUT6=2。从一个FDRE的C端到另一个FDRE的D端,经过了1个CARRY8和2个LUT6,出现了时序违例,但是本意是开发者是不需要分析这条路径,其实也是这两个时钟之间的路径均不需要分析,若有需要的FPGA开发者做好时钟域的数据穿越即可,异步FIFO或者通过握手方式传递数据。
2、Vivado中set_clock_groups步骤
在Implementation实现中,打开时钟交叉报告Report Clock Interaction,时钟互相交叉作用如下,可以从图中看到源端时钟clk_out1_user_clk和目的端时钟txoutclk之间的交叉表格中呈现时序违例的情况。选中此处右键设置set_clock_groups,开发者定义一个名称,并将其复制到时钟约束xdc中,重新生成bit文件。
设置set_clock_groups,并对其命名,如下:
将set_clock_group复制到工程的约束文件xdc中,如下:
3、set_clock_group优化后的时序报告
三、往期文章链接
UltraScale+FPGA中Serdes的多lane对齐异常解决方案
vivado时序报告中slack是如何计算的?如何优化时序?
UltraScale+FPGA中GTY的TX路径时钟详解——以40G的ETH MAC IP为例
vivado时序优化——约束异步时钟组set_clock_groups
基于FDMA和AXI4接口的DDR4遍历读写测试
基于fpga的图像处理之3x3_5x5算子模板设计
基于fpga的图像处理之3x3_5x5算子模板中值排序
基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)
AXI协议之AXILite开发设计(一)
AXI协议之AXILite开发设计(二)
AXI协议之AXILite开发设计(三)
AXI协议之AXILite开发设计(四)
AXI协议之AXILite开发设计(五)
FPGA和Matlab的FFT功能验证(一)
FPGA和Matlab的FFT功能验证(二)
FPGA和Matlab的FFT功能验证(三)
跟小灰灰一起学vivado:7系列FPGA的MultiBoot和Fallback功能更新固件
跟小灰灰一起学vivado:7系列FPGA配置模式之配置数据文件格式和配置时序步骤
跟小灰灰一起学vivado:7系列FPGA配置模式之主SPI四路(x4)
跟小灰灰一起学vivado:PCIe XDMA实现远程更新FPGA固件
Xilinx UltraScale+DDR4项目开发(一)——DDR4 MIG的ip接口信号
Xilinx UltraScale+DDR4项目开发(二)——DDR4 MIG的时钟网络
Xilinx UltraScale+DDR4项目开发(三)——DDR4器件选型与MIG IP的配置
低速接口项目之串口Uart开发(一)——串口UART
低速接口项目之串口Uart开发(二)——FIFO实现串口数据的收发回环测试
低速接口项目之串口Uart开发(三)——串口发送模块和接收模块
低速接口项目之串口Uart开发(四)——UART串口实现FPGA内部AXILITE寄存器的读写控制
低速接口项目之串口Uart开发(五)——QT实现Uart串口寄存器读写工具
低速接口项目之串口Uart开发(六)——zynq系列ps-pl端uart实现共享Axilite内部寄存器的读写
低速接口项目之串口Uart开发(七)——如何在FPGA项目中实现自适应波特率串口功能
低速接口项目之串口Uart开发(八)——如何通过ps侧的串口实现zynq的在线升级(一)
低速接口项目之串口Uart开发(九)——如何通过ps侧的串口实现zynq的在线升级(二)
低速接口项目之串口Uart开发(十)——基于EMIO的自定义PL串口实现zynq的在线升级