当前位置:网站首页>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
边栏推荐
- MySQL is an optimization artifact to improve the efficiency of massive data query
- 2022.6.28
- Appx代码签名指南
- Hazel engine learning (V)
- How-PIL-to-Tensor
- Redis入门完整教程:客户端案例分析
- HDU ACM 4578 Transformation->段树-间隔的变化
- mos管实现主副电源自动切换电路,并且“零”压降,静态电流20uA
- Utilisation de la promesse dans es6
- 美国空军研究实验室《探索深度学习系统的脆弱性和稳健性》2022年最新85页技术报告
猜你喜欢
Redis入门完整教程:客户端管理
centerX: 用中国特色社会主义的方式打开centernet
[socket] ① overview of socket technology
上个厕所的功夫,就把定时任务的三种调度策略说得明明白白
Redis入门完整教程:复制原理
【基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建】
The first symposium on "quantum computing + application of financial technology" was successfully held in Beijing
硬件之OC、OD、推挽解释
Qt蓝牙:QBluetoothDeviceInfo
换个姿势做运维!GOPS 2022 · 深圳站精彩内容抢先看!
随机推荐
2022年信息安全工程师考试大纲
leetcode-02(链表题)
房费制——登录优化
凌云出海记 | 易点天下&华为云:推动中国电商企业品牌全球化
How to write test cases for test coupons?
cocos3——8.实现初学者指南
Error: could not find a version that satisfies the requirement xxxxx (from versions: none) solutions
oracle连接池长时间不使用连接失效问题
Leetcode 77: combination
Laravel php artisan 自动生成Model+Migrate+Controller 命令大全
杰理之在非蓝牙模式下,手机连接蓝牙不要跳回蓝牙模式处理方法【篇】
Cocos2d-x box2d physical engine compilation settings
应用程序启动速度的优化
MOS transistor realizes the automatic switching circuit of main and auxiliary power supply, with "zero" voltage drop and static current of 20ua
[secretly kill little partner pytorch20 days] - [Day1] - [example of structured data modeling process]
Examples of how to use dates in Oracle
A complete tutorial for getting started with redis: AOF persistence
Construction of knowledge map of mall commodities
Redis introduction complete tutorial: replication principle
Qt蓝牙:QBluetoothDeviceInfo