默认情况下综合工具会把每条路径定义为单周期路径,即源触发器在时钟的任一边沿启动(launch)的数据都应该由目的触发器在时钟的下一上升沿捕获(capture)。
有的设计可能存在时序例外(timing exceptions),如多周期路径、虚假路径等。数据从起点到终点的传输时间需要一个时钟周期以上才能稳定的路径,这类路径被称为多周期路径。在设计中很多地方都有涉及多周期路径,比如当个两个触发器之间的逻辑如果一个周期执行不完,这种情况一般有两个解决方案:
①插入流水线使得组合逻辑打散 ;
②使用使能信号控制,几个周期读取一次数据。
方法2就需要设定multi-cycle path,方法2和1之间是有区别的。方法1数据的吞吐量更大,方法2牺牲了数据吞吐量,但是设计中有的地方对吞吐量没有要求是可以使用这种方法的。
一、set_multicycle_path命令
命令格式如下:
set_multicycle_path
path_multiplier
[-setup|-hold]
[-start|-end]
[-from from_list]
[-through through_list]
[-to to_list]
path_multiplier:默认值setup时为1,hold时为0;
setup|hold:表明多周期路径设置是对setup(max_delay)或者是hold(min_delay),setup时默认移动capture_clk,hold时默认移动launch_clk;
start:表示强制移动的为start c