赞
踩
在不改变代码情况下,时序例外约束可以说是vivado中满足时序要求最有效的方法。因为vivado默认所有时钟路径之间都是同步的,会尝试分析和满足所有的路径。通过设置时序例外约束,告诉vivado软件不需要分析和满足某些时序路径(通常异步),vivado就会尽量去分析和满足真正的同步时序路径。不过一定要注意,在进行时序例外约束时,一定要确保做了亚稳态处理,比如打两拍、异步FIFO、双端口RAM等,或者能确定约束路径发生亚稳态也没关系(比如vio)
常用的时序例外约束包括三个命令
set_clock_groups
如
set_clock_groups -async -group clka -group clkb
这种方法简单快捷,但是会忽略两个时钟域中所有的时序路径,容易误伤。所以,我们一定要确保在两个时钟域之间做了正确的亚稳态处理,比如同步器、fifo、双端口ram等。这种方式有最高的优先级。
set_false_path
如
set_false_path -from [get_cells/a/b/c/*_meta*] -to [get_cells a/b/c/*_sync*]
这种方式针对性好,但效率低下,也是会导致xdc文件臃肿。同时也要注意约束优先级。
set_max_delay
如
set_max_delay 10 -datapath_only -from clka -to clkb
这里的10通常为clka周期,而且通常要加一个-datapath_only。需要留意是否约束过严格,比如clka过快,同时要防止约束冲突,比如set_falth_path比set_max_delay优先级高,会覆盖这条指令。
以上三条指令通常不需要自己输入,打开实现open implementation design后,
report clock interaction ,或者report timing summary ,在需要约束的地方右键即可选择约束方式。
report clock interaction后,选择相应的时序路径做约束。如果红色或者橙色的,基本是异步路径,vivado无法在一定时间内推断出时序关系,可以设置为异步时钟组。如果有共同时钟,但是频率不同,通常可以set_max_delay.
report timing summay,在intra_clock paths中红色的路径,完全可以设置为set_false_path,不过设置set_clock_groups要慎重。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。