Vivado时钟约束互斥实现方法分享(一)
在FPGA设计中,时钟约束是非常重要的一环,其能够保证时序的正确性并避免时序问题的产生。然而,在实际项目中,多个时钟频率之间互斥的情况下,如何合理地使用时钟约束成为了一个难题。本文将介绍Vivado时钟组逻辑约束互斥的实现方法。
首先,我们来了解一下什么是时钟组。时钟组是具有相同时钟源和时钟分频倍数的所有时钟信号的集合。因此,时钟组中所有时钟信号的相对相位关系是不变的,这有利于时序分析和优化。
那么,如何实现时钟组的逻辑约束互斥呢?下面我们就以一个例子为说明:
假设在一个设计中,存在两个时钟组;分别为时钟组A和时钟组B。在时序分析过程中,我们想要让这两个时钟组之间互斥,即如果时钟组A起作用,则时钟组B必须暂停等待。
实现方法如下:
create_clock -name clk_A -period [expr 1000000000/$freq_A] [get_ports {clk_A}]
create_clock -name clk_B -period [expr 1000000000/$freq_B] [get_ports {clk_B}]
# 添加互斥约束
set_property ASYNC_REG true [get_clocks clk_A]
set_property ASYNC_REG true [get_clocks clk_B]
# 互