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

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

相关推荐
DS小龙哥3 小时前
基于Zynq FPGA的雷龙SD NAND存储芯片性能测试
fpga开发·sd nand·雷龙·spi nand·spi nand flash·工业级tf卡·嵌入式tf卡
上理考研周导师12 小时前
第二章 虚拟仪器及其构成原理
fpga开发
FPGA技术实战13 小时前
《探索Zynq MPSoC》学习笔记(二)
fpga开发·mpsoc
bigbig猩猩1 天前
FPGA(现场可编程门阵列)的时序分析
fpga开发
Terasic友晶科技1 天前
第2篇 使用Intel FPGA Monitor Program创建基于ARM处理器的汇编或C语言工程<二>
fpga开发·汇编语言和c语言
码农阿豪1 天前
基于Zynq FPGA对雷龙SD NAND的测试
fpga开发·sd nand·spi nand·spi nand flash·工业级tf卡·嵌入式tf卡
江山如画,佳人北望1 天前
EDA技术简介
fpga开发
淘晶驰AK1 天前
电子设计竞赛准备经历分享
嵌入式硬件·fpga开发
最好有梦想~1 天前
FPGA时序分析和约束学习笔记(4、IO传输模型)
笔记·学习·fpga开发