FPGA编程技巧系列之输入输出偏移约束详解

1. 偏移约束的作用
偏移约束(offset constraint)用来定义一个外部时钟引脚(pad)和数据输入输出引脚之间的时序关系,这种时序关系也被称为器件上的pad-to-setup或clock-to-out路径。这些约束对与外部元器件相连的接口十分重要,在这里,需要解释两个术语:
pad-to-setup:也被称为offset in before约束,是用来保证外部输入时钟和外部输入数据的时序满足fpga内部触发器的建立时间要求的。如下图tin_before约束使得fpga在进行data_in和clk_sys布线时努力保证data_in相对于clk_sys的延时小于tin_before。
clock-to-out:也被称为offset out after约束,是用来满足下游器件建立保持(setup/hold)要求或输出时钟和数据之间时序要求的。
offset in before 或offset out after约束允许用户指定外部输入或输出引脚相对于时钟边沿到内部数据的延时。
1‑1 输入偏移约束时序参考图
1‑2 输出偏移约束时序参考图
xilinx fpga有三个层次的约束:
global offset:为所有输入或输出指定相对某个特定时钟的约束;
group offset:为一组输入或者输出指定相对驱动他们的时钟的约束
net-specific offset:为某个特定的输入或者输出指定相对其驱动时钟的约束;
在进行约束的详细讲解之前,必须明确两个概念:
建立时间setup time
指在触发器始终上升沿到来之前,数据必须保持稳定的时间,如果建立时间不够,数据将不能被打入触发器;
保持时间hold time
指触发器的时钟上升沿到来之后数据必须稳定不变的时间,如果保持时间不够,数据不能被打入触发器;
1‑3 建立保持时间时序图
2. offset in约束
offset in约束用来设定pad-to-setup时序要求。offset in是对数据时钟关系的一种说明。它当分析建立时间要求(data_delay+setup-clock_delay-clock_arrival要求满足约束条件)的时候,需要考虑时钟延时(clock delay)、时钟边沿(clock edge)、dll/dcm引入的时钟相位。
2.1. offset in before 约束
offset in before约束限定了数据从引脚传播到同步元件并在同步元件建立起来的所需的时间。比如 “offset = in 2 ns before clock_pad”这个约束,限定数据必须在下一个时钟边沿到来之前2ns内读取,因此fpga会规划使得数据相对时钟边沿的超前2ns之内。
2‑1 offset in before约束带校准功能的电路
上图fpga在布线时会尽力去满足如下不等式:
tdata + tsetup - tclock 《= toffset_in_before;
2.1.1. valid约束
offset in约束往往和valid约束一起使用。offset in约束在建立时间分析中作为建立时间要求使用,而valid约束在保持时间约束中作为保持时间要求使用。valid约束指定了输入数据的持续时间。在默认情况下,fpga指定valid和offset的值相等,也即fpga在默认情况下认为保持时间为0。
2‑2 带有valid约束的输入偏移约束
2.1.2. offset in约束的一个简单例子
fpga的分析工具在综合时经常会用到一个词:slack,即松弛时间,当slack》0时,该路径设计满足时序要求;当slack《0时,该路径不满足时序要求。
slack = (requirement - (data path - clock path - clock arrival))
2‑3 offset in的简单例子时序
该约束为:
timespec ts_clock = period clock_grp 10 ns high 50%;
offset = in 3 ns before clock;
2‑4 offset in约束时序报告
从时序约束报告的slack的值可以看出,data不能被clock成功打入触发器ff0.
2.2. offset in after约束
offset in after和offset in before在本质上是一样的,只是形式上不一样,其约束效果是完全一样的。offset in after的约束公司如下:
tdata + tsetup - tclock 《= tperiod – toffset_in_after;
3. offset out约束
offset out约束用来定义clock-to-pad时序要求。offset out约束是对外部clock-to-data的说明并且必须考虑clock_delay、clock edge和dll/dcm时钟相位等。
3.1. offset out after约束
offset out after约束定义了数据从同步元件传播到管脚最长允许时间。可以形象地理解为时钟边沿到达器件边界时数据离开器件边界的时间。“offset = out 2 ns after clock_pad”约束意思是从fpga数据端口传输到下游器件的数据在参考时钟2ns之后一定可读。
3‑1 offset out after约束带校准功能的电路
下面公式规定了数据时钟的这种关系:
tq + tclock2out + tclock 《= toffset_out_after;
offset out after约束沿着参考时钟路径和数据路径的最大延时不超过偏移值。
3.1.1. offset out after约束的一个简单例子
同样的,offset out的slack也定义了输出约束的松弛时间:
slack = (requirement - (clock arrival + clock path + data path))
3‑2 offset out 约束的简单例子
其约束应写为:
timespec ts_clock = period clock_grp 10 ns high 50%;
offset = out 3 ns after clock;
3‑3 offset out 时序约束报告
时序报告中slack=-0.865ns,不满足时序约束要求。
3.2. offset out before约束
同样地,offset out before和offset out after约束本质上没有什么不同,只是形式上的不一样的,其约束效果完全一样。


温补振荡器的温度补偿原理及未来方向
线路充电保护原理 线路充电保护的作用
华为存储逆势高速增长,支持众多行业开展数字化转型
曝谷歌将于9月3日推出针对Pixel系列的AndroidQ正式版安全更新
Vega游戏显卡月底发布!为游戏而生 不用担心矿工跟你抢!
FPGA编程技巧系列之输入输出偏移约束详解
一图读懂中微半导体公司发展大事件
AMD为未来的显卡获得GPU芯片设计专利
谷歌或将正在研发一款采用无线技术的VR头显
iPhone4s使用教程_iPhone4s新手激活教程
看看魅蓝5s第一批用户如何评价?真有那么好用吗?
便携式交流电压峰值表实现
全网通路由器的工作原理、性能优势及适用范围
近日,弗迪电池长沙基地首条刀片电池生产线正式投产
5G信道选哪个好?5g信道36404448哪个好?
蘑菇云上线信息科技跨学科案例 — 无人自助收银系统
朱其罡:持续推进主流芯片代码进主干计划
RFID助推智慧医疗建设
碳翁科技推出的5G智能穿戴理疗服装引发了广泛热议和关注
生物传感器原理(biosensor)