1.定义
和set_max_delay/set_min_delay一样属于时序例外的一种。
时序例外在之前的文章中讲过,如果不去约束的话,可能会造成时序资源的浪费,不因该分析的分析了,不应该优化的优化了,不应该这么严格去分析的也这么严格的去分析了,跑这样的程序浪费电脑资源,同样也会增加运行时间。
时序例外有几种:
(1)set_false_path:直接设置不分析
(2)set_max_delay/set_min_delay:直接覆盖默认requirement
(3)set_case_analysis:设置pin或port为常数或特定跳变沿,相当于设置palse_path
(4)set_multicycle_path:相对于源时钟或者目的时钟去调整requirement
针对set_multicycle_path,其定义为:根据源时钟或目的时钟,通过修改路径requirement倍数,改变路径requirement,来放松该路径的setup或hold分析要求,以满足时序收敛。
这里再解释一下什么是requirement,vivado工具默认进行的是单周期的时序分析,一般一条时序路径默认对应了一个requirement,是根据时钟周期来确定的,也就是一般情况下setup的requirement是一个时钟周期(默认单周期分析,当前时钟launch,下个时钟周期capture),hold的requirement就是0;
2.语法及说明
set_multicycle_path <path_multiplier> [-setup|-hold] [-start|-end] [-from <start_point>] [-to <endpoint>] [-through <pins|cells|nets>]
其中:
[-setup|-hold]表明是调整建立时间的还是保持时间的;
[-start|-end]表明是相对于源时钟还是相对于目的时钟来调