当前位置:网站首页>set_multicycle_path
set_multicycle_path
2022-07-28 05:24:00 【拾陆楼】
set_multicycle_path的常用场景及命令速记:
1、相同时钟或相同周期同步时钟
set_multicycle_path N -setup -from CLK1 -to CLK2
set_multicycle_path N-1 -hold -from CLK1 -to CLK2
2、同步分频时钟,快采慢
set_multicycle_path N -setup -start -from CLK1 -to CLK2
set_multicycle_path N-1 -hold (-start)-from CLK1 -to CLK2
3、同步分频时钟,慢采快
set_multicycle_path N -setup (-end)-from CLK1 -to CLK2
set_multicycle_path N-1 -hold -end -from CLK1 -to CLK2
在波形分析中,-start移动default launch edge(setup向左,hold向右),-end移动default capture edge(setup向右,hold向左)。
1 相同时钟或相同周期的同步时钟
在STA分析中一些data path长度超过一个时钟周期时,我们可以针对这条path使用multicycle path,改变捕获数据的周期数。
如下示例,setup check时发现UFF0/Q到UFF1/D的data path长度差不多三个时钟周期(如图1),设置multicycle path将每个时钟周期采集一次数据(Default capture)改为每三个周期采集一次数据(New capture edge)。
create_clock - name CLKM - period 10 [ get_ports CLKM]set_multicycle_path 3 - setup - from [ get_pins UFF0/Q] - to [ get_pins UFF1/D]

图1
Startpoint: UFF0 (rising edge-triggered flip-flop clocked by CLKM)
Endpoint: UFF1 (rising edge-triggered flip-flop clocked by CLKM)
Path Group: CLKM
Path Type: max
SCENARIO:FUNC_SLOW_CMAX-40
Point Incr Path
---------------------------------------------------------------
clock CLKM (rise edge) 0.00 0.00
clock network delay (propagated) 0.11 0.11
UFF0/CK (DFF ) 0.00 0.11 r
UFF0/Q (DFF ) <- 0.14 0.26 f
UNOR0/ZN (NR2 ) 0.04 0.30 r
UBUF4/Z (BUFF ) 0.05 0.35 r
... (...) 28.00 28.00
UFF1/D (DFF ) 0.00 28.35 r
data arrival time 28.35
clock CLKM (rise edge) 30.00 30.00
clock network delay (propagated) 0.12 30.12
clock uncertainty -0.30 29.82
UFF1/CK (DFF ) 29.82 r
library setup time -0.04 29.78
data required time 29.78
---------------------------------------------------------------
data required time 29.78
data arrival time -28.35
---------------------------------------------------------------
slack (MET) 1.43此时hold check沿默认在setup capture edge的前一个有效沿(这里是上升沿触发),但是这样hold check就无法met,所以还需要给hold check设置一个set_multicycle_path。让UFF1/CK的hold check提前两个周期(如图2)。
set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D]

图2
Startpoint: UFF0 (rising edge-triggered flip-flop clocked by CLKM)
Endpoint: UFF1 (rising edge-triggered flip-flop clocked by CLKM)
Path Group: CLKM
Path Type: min
SCENARIO:FUNC_FAST_CMIN125
Point Incr Path
---------------------------------------------------------------
clock CLKM (rise edge) 0.00 0.00
clock source latency 0.00 0.00
CLKM (in) 0.00 0.00 r
UCKBUF0/C (CKB ) 0.03 0.03 r
UCKBUF1/C (CKB ) 0.03 0.06 r
UFF0/CK (DFF ) 0.00 0.06 r
UFF0/Q (DFF ) <- 0.07 0.13 r
UNOR0/ZN (NR2 ) 0.01 0.14 f
UBUF4/Z (BUFF ) 0.03 0.17 f
... (...) 14.00 14.00
UFF1/D (DFF ) 0.00 14.17 f
data arrival time 14.17
clock CLKM (rise edge) 0.00 0.00
clock source latency 0.00 0.00
CLKM (in) 0.00 0.00 r
UCKBUF0/C (CKB ) 0.03 0.03 r
UCKBUF2/C (CKB ) 0.03 0.06 r
UFF1/CK (DFF ) 0.00 0.06 r
clock uncertainty 0.02 0.08
library hold time 0.01 0.09
data required time 0.09
---------------------------------------------------------------
data required time 0.09
data arrival time -14.17
---------------------------------------------------------------
slack (VIOLATED) 14.08总结来说,大多数设计中让setup check延迟到第N个周期采集数据,那么就需要让hold check提前N-1个周期,回到与launch edge同沿检查。(正常同步时钟setup check N=1,即capture edge在launch edge的下一个时钟周期有效沿,N-1=0,即hold check与launch edge同沿检查。)
还是上面的例子,如果只是让setup check延迟两个周期(N=3),不让hold check提前(N-1=2)两个周期会怎样?(如图3)hold check在setup check capture edge的前一个上升沿。hold check无法met。

图3
Startpoint: UFF0 (rising edge-triggered flip-flop clocked by CLKM)
Endpoint: UFF1 (rising edge-triggered flip-flop clocked by CLKM)
Path Group: CLKM
Path Type: min
SCENARIO:FUNC_FAST_CMIN125
Point Incr Path
---------------------------------------------------------------
clock CLKM (rise edge) 0.00 0.00
clock source latency 0.00 0.00
CLKM (in) 0.00 0.00 r
UCKBUF0/C (CKB ) 0.03 0.03 r
UCKBUF1/C (CKB ) 0.03 0.06 r
UFF0/CK (DFF ) 0.00 0.06 r
UFF0/Q (DFF ) <- 0.07 0.13 r
UNOR0/ZN (NR2 ) 0.01 0.14 f
UBUF4/Z (BUFF ) 0.03 0.17 f
... (...) 14.00 14.00
UFF1/D (DFF ) 0.00 14.17 f
data arrival time 14.17
clock CLKM (rise edge) 0.00 20.00
clock source latency 0.00 20.00
CLKM (in) 0.00 20.00 r
UCKBUF0/C (CKB ) 0.03 20.03 r
UCKBUF2/C (CKB ) 0.03 20.06 r
UFF1/CK (DFF ) 0.00 20.06 r
clock uncertainty 0.02 20.08
library hold time 0.01 20.09
data required time 20.09
---------------------------------------------------------------
data required time 20.09
data arrival time -14.17
---------------------------------------------------------------
slack (VIOLATED) -5.922 慢采快
data path从低速时钟到高速时钟,clock 定义如下示例, 默认的launch与capture edge如图5 。
create_clock -name CLKM \
-period 20 -waveform {0 10} [get_ports CLKM]create_clock -name CLKP \-period 5 -waveform {0 2.5} [get_ports CLKP]

图5
假设data path长度超过三个CLKP的周期,此时setup check过与紧张,设置muticycle path让capture edge向前三个周期。如图6 。
set_multicycle_path 4 -setup \-from [get_clocks CLKM] -to [get_clocks CLKP] -end

图6
此时hold check过与紧张,需要将hold check退回到launch edge位置。如图7。
set_multicycle_path 3 -hold \-from [get_clocks CLKM] -to [get_clocks CLKP] -end

图7
3 快采慢
data path从告诉时钟到低速时钟,clock定义示例如下,默认的setup、hold check如图8 。
create_clock -name CLKM \-period 20 -waveform {0 10} [get_ports CLKM]create_clock -name CLKP \-period 5 -waveform {0 2.5} [get_ports CLKP]

图8
setup check有四种情况,setup1、setup2、setup3和setup4,其中时序最紧的是setup4,对应setup check的四种launch edge,hold check 也有四种情况,最紧的是launch和capture clock都在20ns时刻,相当于0ns的时刻。
如上示例假设data path长度超过1个CLKP的时钟周期,那么就需要设置multicycle path让setup check的launch edge提前一个CLKP的时钟周期,如图9。
set_multicycle_path 2 -setup \-from [get_clocks CLKP] -to [get_clocks CLKM] -start

图9
此时对应hold check launch在15ns,capture clock在20ns,需要将hold check的launch edge延迟一个时钟周期,即launch clock和capture clock都在20ns处,相当于在0ns处进行hold check,如图10设置如下 。
set_multicycle_path 1 -hold \-from [get_clocks CLKP] -to [get_clocks CLKM] -start

图10
边栏推荐
- EIGamal cryptosystem description
- Addition and multiplication calculation of GF (2^8)
- Reversible digital watermarking method based on histogram modification
- 详解爬电距离和电气间隙
- Led selection - hardware learning notes 3
- CString to char[] function
- 端接电阻详解 信号完整系列 硬件学习笔记7
- 弹出消息对话框的方法
- Reversible watermarking method based on difference expansion
- 说说ESXi虚拟交换机和端口组的“混杂模式”
猜你喜欢

DSX2-8000如何校准?校准流程?

ASP. Net read database bound to treeview recursive mode

How does fluke dtx-1800 test cat7 network cable?

IMS-FACNN(Improved Multi-Scale Convolution Neural Network integrated with a Feature Attention Mecha

Apache log4j arbitrary code execution replication

Nanjing University of Posts and Telecommunications CTF topic writeup (II) including topic address

TCL and eltcl? Cdnext and CMRL?

1、 Speech synthesis and autoregressive model

Never leave its origin - bluecms1.6 vulnerability of the controller's shooting range

ConNeXt
随机推荐
VB OCX applied to Web
AEM testpro K50 and south Guangdong survey
浅谈误码仪的使用场景?
ESXi Arm Edition version 1.10更新
A NOVEL DEEP PARALLEL TIME-SERIES RELATION NETWORK FOR FAULT DIAGNOSIS
frameset 用法示例
Create a basic report using MS chart controls
ESXi on Arm 10/22 更新
Bag of Tricks训练卷积网络的技巧
Install visual studio 2019 steps and vs2019 offline installation package on win7
In asp Usage of cookies in. Net
Never leave its origin - bluecms1.6 vulnerability of the controller's shooting range
关于隔离电源断电瞬间MOSFET损坏问题分析
如何测试工业以太网线缆(利用FLUKE DSX-8000)?
CString to char[] function
Summary of common WAF interception pages
一个票据打印实例
3、 Openvino practice: image classification
Shuffle Net_v1-shuffle_v2
怎么看SIMULINK直接搭的模块的传递函数