fpga源同步输入时序约束(二)

时间:2024-03-30 07:28:01

下文主要介绍了源同步输入接口的输入最大最小延迟约束方法
输入约束指令格式是:
set_input_delay -clock -max (min) [get_ports “”] -add_delay
即给出 输入时钟跟输入数据间的时间关系。

对于源同步输入约束,有”System-centric” 和”FPGA-centric”两种方法。
1、”System-centric”:即以整个系统为中心进行输入约束,它以外部器件,fpga,它们间的走线构成一个整体,当以系统为中心进行约束时,需要考虑外部器件与fpga间 数据和时钟的走线延时,时钟到输出延时,以及外部器件的建立保持时间,Tco等参数,模型如下图所示:
fpga源同步输入时序约束(二)
对于”System-centric”有两种方式去获得输入最大最小延迟值:
–用外部器件的tco进行输入延迟约束;
–用外部器件的tsu,th进行输入延迟约束。
你可以根据你能查到的参数tco或者建立保持时间去计算输入延迟值。
1、1用外部器件的tco进行输入延迟约束
(1)如果外部器件的tco是跟输出时钟相关,如下图所示。那么就可以直接利用tco和tco min来计算输入延迟的最大最小值。
fpga源同步输入时序约束(二)
(2)如果外部器件的tco是跟输入时钟相关,如下图所示。那就需要通过计算来得到tco和tco min的值进而去计算输入的最大最小延迟值。
fpga源同步输入时序约束(二)
tco=tcoDATA-tcominCLOCK
tcomin=tcominDATA-tcoCLOCK.
当知道了tco和tcomin后就可以来计算输入的最大最小延迟值了,公式如下所示。
最大输入延迟 :即数据从外部器件到fpga的最大路径延迟+外部器件的tco-最小的时钟路径延迟
fpga源同步输入时序约束(二)
最小输入延迟:即数据从外部器件到fpga的最小路径延迟+外部器件的tco-最大的时钟路径延迟
fpga源同步输入时序约束(二)

最后写成sdc约束指令:
注意:下面约束的参考时钟都是虚拟时钟。
SDR:即单沿发送数据,一个时钟周期内的上升沿或者下降沿发送数据。下面Example 40 42是指上升沿发送数据,下降沿的话需在get ports前加上 -clock fall表示下降沿
fpga源同步输入时序约束(二)
fpga源同步输入时序约束(二)
DDR:即时钟上下沿都发送数据
fpga源同步输入时序约束(二)
fpga源同步输入时序约束(二)
1、2用外部器件的tsu,th进行输入延迟约束
如果知道外部器件的数据发送建立,保持时间则可以用建立保持时间去设置输入延迟
(1)输入最大延迟值计算:即数据信号最慢到达fpga,而时钟信号最快到达fpga。用数据路径延迟的最大值+UI-外部器件的建立时间-时钟的最小路径延迟
fpga源同步输入时序约束(二)
(2)输入最小延迟值计算:
fpga源同步输入时序约束(二)
同样最后用sdc约束指令描述输入最大最小延迟如下:
SDR:
fpga源同步输入时序约束(二)
fpga源同步输入时序约束(二)
DDR:
fpga源同步输入时序约束(二)
fpga源同步输入时序约束(二)

2、”FPGA-centric”:即以fpga为中心建立输入输出延迟约束。只需要知道FPGA的一些参数就能对输入时序进行约束,比如fpga的建立保持时间,或时钟数据偏斜。而不需要知道除FPGA外的任何参数可以用(1)建立保持时间;(2)最大数据偏斜 两种方式来得到输入最大最小延迟值。
(1)建立保持时间:当你的fpga源同步输入接口有建立保持时间要求,你可以根据建立保持时间要求计算出相应的最大最小输入延迟。
用输入fpga时钟作为参考进行输入延迟约束,当是SDR时,unit interval=时钟周期,当是DDR时,unit interval=时钟周期/2,下图是一个DDR输入时钟和数据关系:
fpga源同步输入时序约束(二)
写成SDC约束指令如下:
fpga源同步输入时序约束(二)
当输入时钟与数据是中心对齐时,可以用虚拟时钟作为参考时钟进行约束,时钟与数据关系如下图所示:

fpga源同步输入时序约束(二)
从图中可以看出:
输入时钟与输入数据是中心对齐方式;
输入时钟跟输入数据有一个90°的相位关系;
虚拟时钟没有相位偏斜。
由于虚拟时钟跟输入时钟有90°的相位差,所以用虚拟时钟作为约束的参考时钟时,其最大最小延迟值应加 上移相时间(如90°则值为时钟周期÷4)。
(2) 最大数据偏斜
fpga源同步输入时序约束(二)

用虚拟时钟作为输入延迟约束的参考时钟,使得“FPGA-centric”约束非常容易。因为输入最大最小延迟即等于数据相对于时钟的正负偏斜值
input Max Delay= UI(单元间隔)-Setup=正偏斜
input Min Delay= Hold=负 偏斜
SDC约束指令如下:
fpga源同步输入时序约束(二)
即使虚拟时钟或者输入fpga时钟有相位偏斜,输入最大最小延迟也还是等于正负skew,不会改变。

综上,给出了几种对源同步输入约束的方法,使用时根据你能获取到的参数来决定采用哪种方式。