set_multicycle_path的语法:
set_multicycle_path
缺省情况下:setup path对应的计算起点是目的时钟,向前(从左到右)移动,可以用-start改称源时钟。
----- 对应的:hold path对应的计算起点是源时钟,向后(从右到左),可以用-end改成目的时钟。

在同一时钟域下,选择-end和-start没有啥作用。
set_multicycle_path
set_multicycle_path
set_multicycle_path
约束前
set_multicycle_path
约束后:
set_multicycle_path
setup check第二个capture沿,hold check自动移到第一个capture沿。默认情况下hold自动在setup的前一个周期。

设置命令:
set_multicycle_path
-end选项用于让hold相对于capture沿向后(backward)移动一个周期。
set_multicycle_path
对于一个setup是4周期的约束:
set_multicycle_path
下面是一个hold不加-end的例子:
set_multicycle_path
set_multicycle_path
set_multicycle_path

不加-end,属于默认情况,hold相对于源时钟向后移动4个周期。
set_multicycle_path
由于源时钟和目的时钟相同,所以图5-9和图5-10等价。

波形相同,但是相位偏移的两时钟域:
set_multicycle_path
默认情况下timing tool识别到的关系:
set_multicycle_path
set_multicycle_path

慢时钟域到快时钟域的multicycles:

set_multicycle_path
STA tool将按照下面的关系分析:
set_multicycle_path
set_multicycle_path
经过上面设置第一种multicycle之后:
set_multicycle_path
set_multicycle_path
经过上面设置第二种multicycle之后:
set_multicycle_path
上面的设置如果不加-end,hold将沿着发射沿向前(从左到右)移动2个周期,加上-end后hold沿着capture向后(从右往左)移动2个周期。

对于慢时钟域到快时钟域,当setup multicycle设置为N时,hold相应的应该设置为N-1(选-end),如下:
set_multicycle_path

***快时钟域到慢时钟域的multicycles:

set_multicycle_path
两时钟之间的关系:
set_multicycle_path
STA TOOL识别出的两者的关系:
set_multicycle_path
设置setup和hold的multicycle:
set_multicycle_path
setup选-start,表示setup check沿着发射沿向后(从右向左)移动3-1个周期。hold check从setup check沿着发射沿(默认)向前(从左向右)移动1+2个周期。
set_multicycle_path
对于慢时钟域到快时钟域,当setup(选-start) multicycle设置为N时,hold相应的应该设置为N-1,如下:
set_multicycle_path

set_multicycle_path

其他情况:

set_multicycle_path

set_multicycle_path 6 -setup -to [get_pins C_reg[*]/D]

这条命令设置了所有的前级寄存器时钟端口到C_reg寄存器的D端口路径都是多时钟周期路径,且都是6个周期。通过这条命令告诉工具,仅仅在第六个时钟周期进行建立分析。而set_multicycle_path 6 -setup -from A_reg/Clk -to [get_pins C_reg[*]/D],则是仅仅现在从A寄存器的时钟端口到C_reg寄存D端口的这一条路径而已。

这时允许的最大延迟时间为:60 - Tsu - Tuncertainty - Tco

从前面分析所知:保持时间的分析在建立分析的前一个周期,但是从默认这里开始分析保持时间会出问题,一般都是从发送沿开始分析。所以要从0时刻开始分析。因此:

set_multicycle_path

相关文章: