当前位置:网站首页>input_ delay
input_ delay
2022-07-07 03:12:00 【qq_ thirty-two million seven hundred and fifty-two thousand eig】
0 Preface
Fundamentals of time series analysis , The underlying principle :
The timing should meet latch Of setup&hold Time . The data cannot change within the required stable window .
Basic timing model
Stack(setup)= T-Tsu-Tco-Tdata adjacent 2 A clock
Stack(hold )= Tco + Tdata - Thd Same as 1 A clock
If Tco and Tdata The delay gets bigger , Retention time Stack (hold) More margin
When there is a hold Violation , Can increase Tdata Routing length to eliminate .
If Tco and Tdata The delay gets bigger , Set up time Stack (setup) The less margin
1 input delay analysis
FPGA Pin From the perspective of
input delay Describe the data port stay latch Look at the edge of the clock , How long did it take for the data to stabilize .
max_delay( analysis setup)
min_delay( analysis hold )
1.1 input delay The classification of
System synchronization is divided into 3 Kind of :(SDR Rising edge 、SDR Falling edge 、DDR)x( Edge alignment )
Source synchronization is divided into 6 Kind of :(SDR Rising edge 、SDR Falling edge 、DDR)x( Center alignment 、 Edge alignment )
External devices may provide Tco\setup\hold\shew
Hidden points needing attention :
- The source synchronization edge alignment is on the receiving side by default (FPGA) In memory PLL Phase shift 180 degree .
- System synchronization only has edge alignment , No center alignment .
1.2 Tdly The definition of
It's going on intput delay The delay of clock path and data path should be considered when calculating ,
and FPGA Look at , You only need to know the delay of the data relative to the clock , Then the clock delay can be regarded as 0,
And the clock path delay is compensated to the data path delay to get Tdly,Tdly= Data path - Clock path . This can reduce the variables of analysis .
1.3 summary
- Rising edge does not add -clock_fall , The default is the rising edge . The difference between the falling edge and the rising edge is to add -clock_fall .
- DDR There are more constraints -clock_fall -add_delay
- It describes the coordinate time , The second part is the absolute difference . With latch by 0 moment .
2 The specific content
2.1 System synchronization
The data synchronized by the system appears in launch Along the back ,latch Is the next edge
2.1.1 SDR Rising edge
It is known that :
Clock name : clk_in
data port : din
T =10ns
Tco =1~2ns
Tdly=0.3~0.4ns
obtain :
set_input_delay -clock clk_in -max 2.4 [get_ports din]
set_input_delay -clock clk_in -min 1.3 [get_ports din]
It's important to note that -max 2.4 instead of -max_delay 2.4
2.1.2 SDR Falling edge
It is known that :
Clock name : clk_in
data port : din
T =10ns
Tco =1.5~2ns
Tdly=0.3~0.4ns
obtain :
set_input_delay -clock clk_in -max 2.4 [get_ports din] -clock_fall
set_input_delay -clock clk_in -min 1.8 [get_ports din] -clock_fall
2.1.2 DDR
It is known that :
Clock name : clk_in
data port : din
T =10ns
Tco =1.0~2ns Rising edge
Tco =1.5~2ns Falling edge
Tdly=0.3~0.4ns
obtain :
set_input_delay -clock clk_in -max 2.4 [get_ports din]
set_input_delay -clock clk_in -min 1.3 [get_ports din]
set_input_delay -clock clk_in -max 2.4 [get_ports din] -clock_fall -add_delay
set_input_delay -clock clk_in -min 1.8 [get_ports din] -clock_fall -add_delay
// There is a point of knowledge : The data initiated by the falling edge is sampled on the next rising edge . therefore data path It's from 5 Start .
2.2 Source synchronization
2.2.1 Source synchronization Center alignment
Center aligned latch Edge is the next rising edge of the rising edge in the figure . You can see input_delay The range is [dv_are,T-dv_bre], Because the clock is periodic .
2.2.1.1 Rising edge
set_input_delay -clock [get_clocks clk_in] -min -add_delay 1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 9.0 [get_ports din]
2.2.1.2 Falling edge
set_input_delay -clock [get_clocks clk_in] -clock_fall -min -add_delay 1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -clock_fall -max -add_delay 9.0 [get_ports din]
2.2.1.3 DDR
set_input_delay -clock [get_clocks clk_in] -clock_fall -min -add_delay 1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -clock_fall -max -add_delay 4.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -min -add_delay 1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 4.0 [get_ports din]
2.3.2 Source synchronization edge MMCM alignment
MMCM It has the function of adjusting clock phase .latch Edge is the rising edge in the figure ,ltach The data of is the data after the rising edge .
2.3.2.1 Rising edge
set_input_delay -clock [get_clocks clk_in] -min -add_delay -1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 1.0 [get_ports din]
2.3.2.2 Falling edge
-clock_fall
2.3.2.3 DDR
set_input_delay -clock [get_clocks clk_in] -clock_fall -min -add_delay -1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -clock_fall -max -add_delay 1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -min -add_delay -1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 1.0 [get_ports din]
2.3.3 Source synchronization Align the edges directly
2.3.3.1 Rising edge
set_input_delay -clock [get_clocks clk_in] -min -add_delay 9.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 11.0 [get_ports din]
2.3.3.2 Falling edge
-fall_clock
2.3.3.3 DDR
set_input_delay -clock [get_clocks clk_in] -clock_fall -min -add_delay 4.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -clock_fall -max -add_delay 6.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -min -add_delay 4.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 6.0 [get_ports din]
experiment
Unconstrained input_delay Compiled results of
No constraints added ,slack = infinite , That is, unable to analyze .
add to DDR input delay constraint
vivado Analyze the worst path ( Rising edge and falling edge hold Can be satisfied ) That is, the falling edge sends data , Rising edge sampling .
data path The starting point of the launch Along is 5.0ns It indicates that the data analyzed is the data initiated by the falling edge . entered 3.091ns arrive reg.D
from destination clock path The window sees ,latch Along is 10.0ns, Just in line with the falling edge to send data , Rising edge sampling .
Clock from clk_in port after bufg Wait for the delay , subtracting setup You can get required time. You can see setup It's very small. It's just 0.007ns.
contrast
use MMCM edge Source synchronization
set_input_delay -clock [get_clocks clk_in] -min -add_delay -1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 1.0 [get_ports din]
direct edge Source synchronization
set_input_delay -clock [get_clocks clk_in] -min -add_delay 9.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 11.0 [get_ports din]
What's the difference between the two ? It feels like there is a cycle difference .
Use the following constraints , Don't add MMCM Will report a mistake hold See the screenshot below , See that the clock path is too long
set_input_delay -clock [get_clocks clk_in] -min -add_delay -1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 1.0 [get_ports din]
When using the following constraints , Yes setup Report errors
set_input_delay -clock [get_clocks clk_in] -min -add_delay 9.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 11.0 [get_ports din]
contrast
## constraint 1:
set_input_delay -clock [get_clocks clk_in] -min -add_delay -1.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 1.0 [get_ports din]
## constraint 2:
set_input_delay -clock [get_clocks clk_in] -min -add_delay 9.0 [get_ports din]
set_input_delay -clock [get_clocks clk_in] -max -add_delay 11.0 [get_ports din]
constraint 1 And constraints 2 Compare , What's the difference between the two ? It feels like there is a cycle difference 10ns.
Conclusion :
Use constraints 1,vivado Default latch The clock along is 0ns Of , The clock path is from 0ns Start accumulation . At present launch Is the current latch,
Use constraints 2,vivado Default latch The clock along is 10ns Of , The clock path is from 10ns Start accumulation .
Of the two latch The clock differs by one cycle T=10ns.
Reference resources
https://my.oschina.net/msxbo/blog/3122304
边栏推荐
- 掘金量化:通过history方法获取数据,和新浪财经,雪球同用等比复权因子。不同于同花顺
- How does C language (string) delete a specified character in a string?
- How-PIL-to-Tensor
- Matlab Error (Matrix dimensions must agree)
- How to write test cases for test coupons?
- MOS transistor realizes the automatic switching circuit of main and auxiliary power supply, with "zero" voltage drop and static current of 20ua
- Change your posture to do operation and maintenance! GOPs 2022 Shenzhen station highlights first!
- 2022 information security engineer examination outline
- Another million qubits! Israel optical quantum start-up company completed $15million financing
- A complete tutorial for getting started with redis: AOF persistence
猜你喜欢
How to verify accesstoken in oauth2 protocol
Redis introduction complete tutorial: client case analysis
Es6中Promise的使用
Qt蓝牙:QBluetoothDeviceInfo
Redis入门完整教程:问题定位与优化
知识图谱构建全流程
A complete tutorial for getting started with redis: AOF persistence
How-PIL-to-Tensor
又一百万量子比特!以色列光量子初创公司完成1500万美元融资
Unity uses maskablegraphic to draw a line with an arrow
随机推荐
MySQL is an optimization artifact to improve the efficiency of massive data query
Examples of how to use dates in Oracle
尚硅谷JVM-第一章 类加载子系统
Redis getting started complete tutorial: replication topology
Andrews - multimedia programming
QT Bluetooth: qbluetooth DeviceInfo
Redis getting started complete tutorial: replication configuration
Redis introduction complete tutorial: replication principle
C language string sorting
Matlab Error (Matrix dimensions must agree)
Metaforce force meta universe fossage 2.0 smart contract system development (source code deployment)
Detailed explanation of 19 dimensional integrated navigation module sinsgps in psins (filtering part)
换个姿势做运维!GOPS 2022 · 深圳站精彩内容抢先看!
The annual salary of general test is 15W, and the annual salary of test and development is 30w+. What is the difference between the two?
leetcode
Utilisation de la promesse dans es6
Redis getting started complete tutorial: common exceptions on the client
Redis入门完整教程:AOF持久化
input_delay
LeetCode 77:组合