(本文参考xilinx官方文档,ug903)
本文讲解launch clk和capture clk在不同时钟域的情况。分两种情况讲解,slow to fast和fast to slow,即慢时钟到快时钟和快时钟到慢时钟域。
一、slow to fast
做如下假设:Tclk1 = 3Tclk2
在默认情况下,setup edge和hold edge的关系如下:
使用如下约束:
set_multicycle_path 3 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]
则setup edge和hold edge的关系如下:
由图可见,没有必要让hold从launch edge到2倍的Tclk2,如果这样做将会导致综合分析器的约束困难,消耗更多的面积和功耗。
所以,需要这样写:
set_multicycle_path 3 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path 2 -hold -end -from [get_clocks CLK1] -to [get_clocks CLK2]
此约束对应的关系图如下:
二、fast to slow
需要思考下fast to slow的约束如何表达?