|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1. 偏移约束的作用 O/ @1 x2 K2 l, y# y' Q
偏移约束(Offset Constraint)用来定义一个外部时钟引脚(Pad)和数据输入输出引脚之间的时序关系,这种时序关系也被称为器件上的Pad-to-Setup或Clock-to-Out路径。这些约束对与外部元器件相连的接口十分重要,在这里,需要解释两个术语:/ h7 ]8 e4 H# k- J
-Pad-to-Setup:也被称为OFFSET IN BEFORE约束,是用来保证外部输入时钟和外部输入数据的时序满足FPGA内部触发器的建立时间要求的。如下图TIN_BEFORE约束使得FPGA在进行DATA_IN和CLK_SYS布线时努力保证DATA_IN相对于CLK_SYS的延时小于TIN_BEFORE。! L, _5 ^5 k% J0 z
-Clock-to-Out:也被称为OFFSET OUT AFTER约束,是用来满足下游器件建立保持(setup/hold)要求或输出时钟和数据之间时序要求的。
& R& [& t4 H3 F" OOFFSET IN BEFORE 或OFFSET OUT AFTER约束允许用户指定外部输入或输出引脚相对于时钟边沿到内部数据的延时。# T G. F% g1 E! Q. J
/ O' e# X, z. w# ~
Xilinx FPGA有三个层次的约束:/ x" c- ]# Z" U& }5 |- W
-Global OFFSET:为所有输入或输出指定相对某个特定时钟的约束;( v9 R' v+ C) J! L; |* z
-Group OFFSET:为一组输入或者输出指定相对驱动他们的时钟的约束$ |4 `1 V' }" v- i9 k, z# w
-Net-SPECific OFFSET:为某个特定的输入或者输出指定相对其驱动时钟的约束;% |. n) |+ N4 J# z1 ?+ C
, i9 y$ Z. }/ e( T; r& v: Y9 |* u在进行约束的详细讲解之前,必须明确两个概念:
- J* Y3 P# |9 {% A+ A/ s: _-建立时间setup time
; n, {0 j; X$ @' |指在触发器始终上升沿到来之前,数据必须保持稳定的时间,如果建立时间不够,数据将不能被打入触发器;
k/ g3 @! o- V7 W: v: |: t# e: A-保持时间hold time
) _5 T+ ?1 U9 V2 ?# W3 \指触发器的时钟上升沿到来之后数据必须稳定不变的时间,如果保持时间不够,数据不能被打入触发器;
9 ^8 V* ^, W" E$ a2 R: P/ M4 I c) n: R6 B# |/ k0 }0 a0 W
2. OFFSET IN约束
0 h" a% H- e/ U' eOFFSET IN约束用来设定Pad-to-Setup时序要求。OFFSET IN是对数据时钟关系的一种说明。它当分析建立时间要求(data_delay+setup-clock_delay-clock_arrival要求满足约束条件)的时候,需要考虑时钟延时(clock delay)、时钟边沿(clock EDGE)、DLL/DCM引入的时钟相位。
/ E- f# V9 V7 P, c8 K6 J+ A
" V0 Z0 v7 A- W# D) L2.1. OFFSET IN BEFORE 约束5 ?7 r$ t8 V, S- r) p
OFFSET IN BEFORE约束限定了数据从引脚传播到同步元件并在同步元件建立起来的所需的时间。比如 “OFFSET = IN 2 ns BEFORE clock_pad”这个约束,限定数据必须在下一个时钟边沿到来之前2ns内读取,因此FPGA会规划使得数据相对时钟边沿的超前2ns之内。
# B& O# O* W3 _2 E. C" ] : x6 t* H% P: ?/ |
- |' w s) U, B8 e2.1.1. VALID约束8 _2 T F+ e( |0 o& m
OFFSET IN约束往往和VALID约束一起使用。OFFSET IN约束在建立时间分析中作为建立时间要求使用,而VALID约束在保持时间约束中作为保持时间要求使用。VALID约束指定了输入数据的持续时间。在默认情况下,FPGA指定VALID和OFFSET的值相等,也即FPGA在默认情况下认为保持时间为0。0 Y; l% f& B# V" k' C" T, `
$ v2 {) ]; y) p
4 |/ x- J6 c1 I5 x/ G: ` |
|