描述
我在Synplifys SDC文件中指定了define_input_delay。
Synplify如何在UCF中转发注释OFFSET约束?
解
这些约束在位置和路径工具的.ucf文件中作为偏移输入/输出正向注释。
但是,.sdc文件中指定的值与.ucf文件的正向注释值之间存在差异。
前缀注释到.ucf文件的偏移值与.sdc文件中指定的I / O延迟值不同。
类似地,偏移量可以定义为之前的偏移量和偏移量。
‘之前’表示在目标的捕获边缘之前。
在前/后定义偏移IN / OUT:
为了满足输入/输出的时间要求:
Oib + Oia =时钟周期 – (1)
Oob + Ooa =时钟周期 – (2)
输入到.sdc文件中的偏移值在(Oia)之后偏移,在(Oob)之前偏移。
转发到.ucf文件的值在(Oib)之前偏移,在(Ooa)之后偏移。
因此,Oib和Ooa的价值从Oia和Oob计算如下:
Oib =时钟周期 – Oia – (3)
Ooa =时钟周期 – Oob – (4)
这是输入到.sdc文件中的值与向前注释到.ucf文件的值不同的原因。
两者都是等价的,但以不同的方式表达。
注意,当输入/输出是上升沿触发时,上述情况属实。
define_input_delay -default 5.00 -route 0.00 -ref {clk:r}
define_output_delay -default 5.00 -route 0.00 -ref {clk:r}
OFFSET = OUT:7.000:clk之后;
OFFSET = IN:7.000:在clk之前;
现在,如果’Clk’被延迟或相移右移Y ns(Clk_dly),接收器处的触发边缘将从发送器的触发边缘移开Y ns,以便新的Oib变为Oib + Y ns。
Oib =时钟周期 – Oia – Y – (5)
现在,如果’Clk’被延迟或相移右移Y ns(Clk_dly),则发送器处的触发边缘移动Y ns接近接收器处的触发边缘,使得新的Ooa变为Ooa -Y ns。
Ooa =时钟周期 – Oob + Y – (6)
与正边沿触发输入/输出不同,正向注释的偏移计算对于负边沿触发输入/输出是不同的。
当输入或输出是下降沿触发时,偏移值计算如下:
Ooa =时钟周期 – Oob +(时钟周期/ 2) – (8)
半周期减法或相加的原因是因为在输入或输出触发器处引起的任何相位差也被考虑用于偏移计算。
因此,当向前注释到ucf文件时,减去或添加半个时钟周期以进行偏移和偏移。
define_input_delay -default 5.00 -route 0.00 -ref {clk:f}
define_output_delay -default 5.00 -route 0.00 -ref {clk:f}
OFFSET = IN:1.000:在clk之前;
OFFSET = OUT:13.000:clk之后;
没有回复内容