【FPGA约束:多时钟域(九)】——多周期路径的处理
当我们设计的电路中存在多个时钟域时,就需要考虑多周期路径的约束和处理。在 FPGA 器件中,每一个时钟域都有其对应的时钟信号和时钟频率。时钟信号的边沿触发方式分为上升沿触发和下降沿触发。
在多时钟域设计中,时钟域之间的数据传输需要跨越时钟域边界,会产生多周期路径。因为不同的时钟域有可能存在时钟偏差,即两个时钟边缘到来的时间存在一定的误差。当数据在多个时钟域中传输时,就需要保证数据的正确性和时序的一致性。
在处理多周期路径时,需要使用 set_multicycle_path 命令来指定一个路径需要走多少个时钟周期才能完成数据传输。同时,也可以使用 set_false_path 命令来指定一条路径为 false path,不进行时序分析。
举例来说,如果有两个时钟域 clk1 和 clk2,其中 clk1 的时钟频率为100MHz,clk2 的时钟频率为50MHz。在这两个时钟域之间传输数据时,需要处理多周期路径。我们可以先将 clk2 的数据缓存到寄存器中,在下一次 clk1 时钟到来时才将数据从寄存器中提取出来传入 clk1 的时钟域。
我们可以使用以下代码实现上述的描述:
set_multicycle_path -setup 2 -from [get_clocks clk2] -to [get_clocks clk1]
set_multicycle_path -hol