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

看了一周PL端的大程序,甚是复杂。

所以来学学时序方面的基础知识。不然都不知道时序约束怎么通过。

参考内容:

正点原子FPGA静态时序分析与时序约束_V2.2.pdf

《Xilinx FPGA权威设计指南 ------Vivado 2014集成开发环境》

概念

时钟

时钟抖动

时钟偏差

Uncertainty

同步/异步电路

建立时间/保持时间

发起沿/捕获沿

1.时钟:理想的时钟模型是一个占空比为50%的方波。实际电路中输入给FPGA的晶振时钟是正弦波。

实际晶振产生的正弦波存在一些时钟抖动。

2.时钟抖动(Clock Jitter):相对于理想时钟沿,实际时钟存在不随时间积累的、时而超前、时而滞后的偏移。(时钟脉冲宽度发生暂时变化,T cycle 即Period或大或小)

3.时钟偏差(Clock Skew):同一个时钟域内的时钟信号到达数字电路各个部分(一般指寄存器)所用的时间差异

走线延时;组合逻辑;

时钟域;时钟树;

时序分析

时序分析的基本路径


管脚输入和寄存器之间的路径(即 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

建立裕量 = 数据锁存时间 - 数据到达时间

保持时间的裕量(Hold Slack):正值------保持关系合格;负值------保持关系不满足,会导致采样出错。

数据保持时间 = 启动沿 + Tclk1 + Tco + Tdata + 数据周期时间

数据锁存时间 = 锁存沿 + Tclk2 + Th

保持裕量 = 数据保持时间 - 数据锁存时间

多周期路径(Multicycle Paths)检查

有时:数据不需要在下一个时钟周期就稳定下来,可能在数据发送后的几个时钟周期之后才起作用;一些数据经过的路径较复杂,延时较大,无法在下一个时钟周期稳定下来,必须要在数据发送后数个时钟周期之后才能被采用。

e.g 乘法器


在多周期路径的建立时间(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开发工具需要读入布局布线后的网表才能进行时序分析。网表是由以下一系列的基本单元构成的:

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

时序约束的方法

时钟约束

时钟约束 + 时序例外约束

时钟约束 + 时序例外约束 + IO约束

Vivado时序分析设计

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 } [get_ports {clk}]
名称 周期 第一个上升沿&下降沿

约束PLL输出时钟:(vivado中工具会自动约束)

约束组合逻辑IO接口:set_max_delay det_min_delay

约束异步时钟组set_clock_groups -asynchronous ...

时序分析的优先级

约束越明确,优先级越高

时序优化:在长的路径中插入一些寄存器,简化逻辑运算;把相关的逻辑约束在一个区域中;etc

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

相关推荐
HIZYUAN1 小时前
AGM FPGA如何配置上拉或者下拉电阻
fpga开发
∑狸猫不是猫1 小时前
(13)CT137A- 简易音乐盒设计
fpga开发
ThreeYear_s7 小时前
基于FPGA 的4位密码锁 矩阵键盘 数码管显示 报警仿真
fpga开发·矩阵·计算机外设
Anin蓝天(北京太速科技-陈)13 小时前
252-8路SATAII 6U VPX高速存储模块
fpga开发
如何学会学习?16 小时前
2. FPGA基础了解--全局网络
fpga开发
Anin蓝天(北京太速科技-陈)16 小时前
271-基于XC7V690T的12路光纤PCIe接口卡
嵌入式硬件·fpga开发
碎碎思20 小时前
FPGA新闻速览-WiMi开发基于FPGA的数字量子计算机验证技术
fpga开发·量子计算
hi941 天前
Vivado - 远程调试 + 远程综合实现 + vmWare网络配置 + NFS 文件共享 + 使用 VIO 核
嵌入式硬件·fpga开发·vivado 远程开发·vmware网络配置
乘风~&2 天前
基于发FPGA 练手智能小车顶层文件
fpga开发
_Hello_Panda_2 天前
高云GW5AT系列FPGA在接口扩展和桥接领域的应用方向探讨分享
fpga开发·高云·gw5at