东湖之滨 发表于 2024-6-15 02:31:39

FPAG之静态时序分析与时钟约束(1)

看了一周PL端的大程序,甚是复杂。
所以来学学时序方面的基础知识。不然都不知道时序约束怎么通过。

参考内容:
正点原子FPGA静态时序分析与时序约束_V2.2.pdf
《Xilinx FPGA权威设计指南 ——Vivado 2014集成开发情况》

概念

   时钟
时钟抖动
时钟偏差
Uncertainty
同步/异步电路
创建时间/保持时间
发起沿/捕获沿
1.时钟:理想的时钟模型是一个占空比为50%的方波。实际电路中输入给FPGA的晶振时钟是正弦波。
实际晶振产生的正弦波存在一些时钟抖动。
2.时钟抖动(Clock Jitter):相对于理想时钟沿,实际时钟存在不随时间积聚的、时而超前、时而滞后的偏移。(时钟脉冲宽度发生临时变革,T cycle 即Period或大或小)
https://img-blog.csdnimg.cn/direct/003c655675c94f10a4c24a0ddba700a2.png
3.时钟偏差(Clock Skew):同一个时钟域内的时钟信号到达数字电路各个部分(一样平常指寄存器)所用的时间差异
走线延时;组合逻辑;


时钟域;时钟树;
时序分析

时序分析的根本路径

https://img-blog.csdnimg.cn/direct/c9d26adb843c4b3b99349b6b27667fd8.png
   管脚输入和寄存器之间的路径(即 pin2reg):   从 device A 的时钟到 FPGA 的第一级寄存器的输入端口,这个部分包括 3 个耽误,分别是 Tco(时钟到寄存器输出延时),Input Delay(PCB 板子的输入走线耽误)和 Internal Delay(FPGA 内部的输入走线耽误)。    
   寄存器和寄存器之间的路径(即 reg2reg):   两个同步元件之间的路径(rega 到 regb 蓝色),这个部分包括 2 个耽误,分别是 Tco(时钟到寄存器输出延时)和 Data Path Delay(FPGA 内部的组合逻辑和数据走线延迟)。    
   寄存器和管脚输出之间的路径(即 reg2pin):   最后一级寄存器到 device B 数据端口的路径(黄色),这个部分包括 3 个耽误,分别是 Tco(时钟到寄存器输出延时),Internal Delay(FPGA 内部的输入走线耽误)和   Output Delay(PCB 板子的输出走线耽误)。    
   管脚输入和管脚输出之间的路径(即 pin 2pin):    端口到端口的路径(dinb 到 dinb 绿色),这个部分包括 1 个耽误,即 Data Path Delay(FPGA 内部的组合逻辑和数据走线耽误)。 
时序分析的根本公式

数据到达时间:数据在发送沿发送后,经过T会到达接收寄存器的数据端口。
时钟到达时间:时钟到达接收寄存器的时钟端口(发送数据的下一个采样沿开始)。

   创建时间的裕量(Setup Slack):正值——说明创建关系合格;负值——不合格,会导致采样出错。
数据到达时间 = 启动沿时间 + Tclk1 + Tco + Tdata(reg2)
数据锁存/读取时间 = 锁存沿时间 + Tclk2 - Tsu
创建裕量 = 数据锁存时间 - 数据到达时间
https://img-blog.csdnimg.cn/direct/025bbbee242c4dd3bfab1460f9e6ba04.png

   保持时间的裕量(Hold Slack):正值——保持关系合格;负值——保持关系不满足,会导致采样出错。
https://img-blog.csdnimg.cn/direct/f392977c7d2247d190d638270788f944.png
数据保持时间 = 启动沿 + Tclk1 + Tco + Tdata + 数据周期时间
数据锁存时间 = 锁存沿 + Tclk2 + Th
保持裕量 = 数据保持时间 - 数据锁存时间

   多周期路径(Multicycle Paths)检查
有时:数据不必要在下一个时钟周期就稳固下来,大概在数据发送后的几个时钟周期之后才起作用;一些数据经过的路径较复杂,延时较大,无法在下一个时钟周期稳固下来,必须要在数据发送后数个时钟周期之后才能被接纳。
e.g 乘法器
https://img-blog.csdnimg.cn/direct/8f852b9cb5bb468389b5f2d72c7240f0.png
   在多周期路径的创建时间(Setup Time)检查中,时序分析软件会按照用户指定的周期数延长Data Required Time,放松对相应数据路径的时序约束,从而得到正确的时序余量盘算结果;      在保持时间(Hold Time)检查中,时序分析软件也会相应地延长Data Required Time,不再按照单周期路径的分析方式实验(不再接纳launch edge近来的时钟沿,而是接纳latch    edge近来的时钟沿),这就必要用户指定保持时间对应的多周期个数。            多周期路径是为相识决信号流传太慢的题目,慢到一个周期都不敷,所以要把Setup Time的检查往后推几个周期——    扩大Setup Time检查的时间窗口    。而    Hold Time检查信号是否流传得太快    ,假如把检查时候往后推,就缩小了Hold Time检查的时间窗口。         FPGA器件时序模型

   PVT
根本单元 & paths
PVT:指芯片工艺(Process)、电压(Voltage)、温度(Temperature)。
不同的PVT参数,芯片的时序模型是有差异的。

一样平常时序分析会涉及到三种情况:
最好的条件——速率最快时;BCF(fast process,lowest temp,high voltage)
最坏的条件——速率最慢是;WCS(slow process, high temp,lowest voltage)
典型的条件——介于两者;TYP(typical process,nominal temp,nominal voltage)

时序分析工具通过Worst corner来保证创建时间的时序,通过Best corner来保证保持时间的时序。
由于一样平常情况下设计以创建时间违例为主,所以时序分析工具默认利用slow corner。

根本单元与paths
FPGA开发工具必要读入布局布线后的网表才能进行时序分析。网表是由以下一系列的根本单元构成的:
https://img-blog.csdnimg.cn/direct/eb6e07dbfc1e41819999afc0eb53260f.png
Cells:器件的根本结构单元(如,LUTs,Reg,IO单元,PLL,存储器块,etc)
Pins:Cell的输入输出端口(不包括器件的输入输出引脚)
Nets:同一个Cell中,从输入pin到输出pin经过的逻辑。(网表中毗连两个相邻Cell的连线不被看做Net,而被看作同一个点,等价于Cell的pin——等价于FPGA器件中的一段布线逻辑)
Ports:顶层逻辑的输入输出端口,对应已经分配的器件引脚

Paths:
Clock paths——从clock port或内部生成的clock pin到寄存器Cell的时钟输入Pin
Data paths——从输入port到寄存器Cell的数据输入pin,或从寄存器Cell的数据输出pin到另一个寄存器Cell的数据输入pin
Asynchronous paths——从输入port到寄存器Cell的异步输入pin,或从寄存器Cell的数据输出pin到另一个寄存器Cell的异步输入pin
https://img-blog.csdnimg.cn/direct/16f7a601954642269a6f8ae64e340940.png
时序约束的方法

   时钟约束
时钟约束 + 时序破例约束
时钟约束 + 时序破例约束 + IO约束
https://img-blog.csdnimg.cn/direct/3582a4a452e24cf5a8cd96e89d7be5b6.png
https://img-blog.csdnimg.cn/direct/65f9468ae2aa468787bd2fe4034e3a18.png
Vivado时序分析设计

https://img-blog.csdnimg.cn/direct/cb684bcc9a504a27beb29c7cd7c897f8.png
https://img-blog.csdnimg.cn/direct/d977e6e97a0d48ab9aec4f97f0c4b439.png
Edit Timing Constrains编辑时序约束按钮

create_clock(clk:时钟周期、占空比)
(差分时钟只约束p端)
set_clock_uncertainty设置时钟不确定性(该clk全部时钟间路径的裕量)
set_false_path设置为伪路径(时序分析工具不再分析这些路径,这种约束我们称之为exceptions)
set_input_delay   set_output_delay指定输入输出耽误值

   时钟:
根本时钟
虚拟时钟
生成时钟        create_generated_clock        (分频 -divide_by2\;倍频-multiply_by 2\ )
       create_clock -name {clk} -period 20.000 -waveform { 0.000 10.000 }                                       名称                周期                第一个上升沿&下降沿    约束PLL输出时钟:(vivado中工具会自动约束)
约束组合逻辑IO接口:set_max_delay        det_min_delay
约束异步时钟组set_clock_groups -asynchronous ...

https://img-blog.csdnimg.cn/direct/32c02c16ddee427a82b0395ef0e8d7ce.png
   时序分析的优先级
约束越明确,优先级越高
https://img-blog.csdnimg.cn/direct/f8bf22babc1d4864a591d2ec38a55cfc.png
时序优化:在长的路径中插入一些寄存器,简化逻辑运算;把相干的逻辑约束在一个地区中;etc

那么时序约束不通过(出现违例)要怎么解决呢?

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: FPAG之静态时序分析与时钟约束(1)