打印

关于OFFSET约束

[复制链接]
4234|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在altera的I/O约束中可以通过set_input_delay -max/-min来分别做setup check和hold check。比如指定不同的Tco,Tskew(board).
但在xilinx的OFFSET IN约束中似乎没有这个区分,只用一个数据来同时做setup check和hold check。
是我看漏了呢,还是OFFSET本身不支持这样做?又或者Trace自己在软件内部进行了修正?
谢谢!

相关帖子

沙发
edacsoft| | 2011-12-22 10:20 | 只看该作者
xilinx的OFFSET IN约束做hold check吗?
好像我的印象其他约束也不做。Xilinx是不是在工艺上保证了?
具体情况请帮主回答

使用特权

评论回复
板凳
XilinxUser|  楼主 | 2011-12-22 10:26 | 只看该作者
貌似是默认不做,但如果加了VALID选项就要做了。

使用特权

评论回复
地板
GoldSunMonkey| | 2011-12-22 11:49 | 只看该作者
我记得是可以自动区分,没有遇到兄弟你这种情况。

使用特权

评论回复
5
XilinxUser|  楼主 | 2011-12-22 13:41 | 只看该作者
因为OFFSET约束通过描述FPGA外部的走线情况指导FPGA内部的PAR,所以这些外部的行为如果不通过手动指定,软件应该挺难自动处理,我猜测是不是就视为一个固定值。。但又没找到官方文档的一个确切说法,因为官方的文档,比如ug612上几乎只讨论FPGA内部的事情。。

使用特权

评论回复
6
GoldSunMonkey| | 2011-12-22 14:14 | 只看该作者
我觉得不是固定值。因为我们会给出一个最大和最小供您参考。

使用特权

评论回复
7
XilinxUser|  楼主 | 2011-12-22 14:28 | 只看该作者
我觉得不是固定值。因为我们会给出一个最大和最小供您参考。
GoldSunMonkey 发表于 2011-12-22 14:14

参考?我目前对于xilinx UCF的使用不是很熟,能不能提供一个例子或者文档作为说明?谢谢!

使用特权

评论回复
8
edacsoft| | 2011-12-22 16:06 | 只看该作者
7# XilinxUser 貌似是默认不做,但如果加了VALID选项就要做了。以前cdg.pdf应该没有的,所以我印象中没有。 详见附件。

cgd.pdf

2.82 MB

使用特权

评论回复
9
XilinxUser|  楼主 | 2011-12-22 20:03 | 只看该作者
ug625的时序章节和ug612基本是重复的。所以问题还是文档中都只是分析FPGA内部。
如果设计如下:


altera的计算公式是这样的:
input delay (max) = Board Delay (max) - Board clock skew (min) + Tco(max)
                               = Tdata_PCB(max) + Tco(max) - (Tclk2ext(min) - Tclk1(max))
input delay (min) = Board Delay (min) - Board clock skew (max) + Tco(min)
                              = Tdata_PCB(min) + Tco(min) - (Tclk2ext(max) - Tclk1(min))
前者用来做setup check,后者做hold check,即对应两句:
set_input_delay -max
set_input_delay -min
而OFFSET IN BEFORE似乎对于一个IO管脚只能约束一个值。。。
限于我目前看到的资料,我唯一能想到的workaround方法只能是写两条OFFSET IN BEFORE,设置不同优先级,然后做两次TA。。

使用特权

评论回复
10
GoldSunMonkey| | 2011-12-22 23:16 | 只看该作者
我有点不明白,为什么可以一个管教约束两个值?
最终还不是一个值么??
他只是说让你在中间找一个值而已。

他说的可能是个范围,这可能只是给个数值而已。
我反而觉得一个更准确的。

使用特权

评论回复
11
XilinxUser|  楼主 | 2011-12-23 08:39 | 只看该作者
他是用理论上可能的最慢的情况来算建立时间,用理论上可能的最快的情况来算保持时间,用的思想是在最恶劣的条件下时序也需要收敛。

使用特权

评论回复
12
edacsoft| | 2011-12-23 11:09 | 只看该作者
我的观点,仍然是一句,不过因为有最快和最慢两种情况,valid时间不再是T-X——这种情况valid可省略
,而是要再减去一个delta,具体情况如下:
OFFSET = IN Xns VALID Yns After clock;
其中X=input delay (max)
      Y=T- X- delta
     delta= input delay (max) -input delay (min)

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
GoldSunMonkey + 2 我很赞同
13
XilinxUser|  楼主 | 2011-12-23 12:46 | 只看该作者
本帖最后由 XilinxUser 于 2011-12-23 13:07 编辑

12# edacsoft
谢谢edacsoft!你的这个解释似乎可以解释我的疑问,我再梳理一下。。等有结果了再来回复。。

使用特权

评论回复
14
GoldSunMonkey| | 2011-12-23 13:15 | 只看该作者
我的观点,仍然是一句,不过因为有最快和最慢两种情况,valid时间不再是T-X——这种情况valid可省略
,而是要再减去一个delta,具体情况如下:
OFFSET = IN Xns VALID Yns After clock;
其中X=input delay (max)
   ...
edacsoft 发表于 2011-12-23 11:09

我的意思也是如此,只不过,可能我没表达清楚

使用特权

评论回复
15
XilinxUser|  楼主 | 2011-12-23 13:30 | 只看该作者
OFFSET = IN Xns VALID Yns BEFORE clock;
以current launch edge为时间零点。
从current launch edge起算,经过最长的路径Tdelaymax,即X=Tperiod - Tdelaymax。
从next launch edge起算,经过最短的路径,即这时时间点为Tperiod + Tdelaymin。
而数据窗口(VALID)Y= Tperiod + Tdelaymin - Tdelaymax。
而在时序报告中,
Slack (hold path= (requirement - (clock path + clock arrival + uncertainty - data path))
此处的requirement为VALID - X = Tperiod + Tdelaymin - Tdelaymax - (Tperiod - Tdelaymax)
=Tdelaymin。
这便都ok了,和谐了。。
谢谢几位热心人士。。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
GoldSunMonkey + 2 精品文章
16
XilinxUser|  楼主 | 2011-12-23 14:49 | 只看该作者
两位仁兄继续哦。。我又有问题了,嘿嘿。。
这次是这样的,对于OFFSET OUT的slack是这样算的:
setup check:
Slack (slowest paths)=requirement - (clock arrival + clock path + data path + uncertainty)
hold check:
Delay (fastest paths)= clock arrival + clock path + data path - uncertainty

这里的Delay (fastest paths)只是给了一个Tdelay,是不是在下游ASSP上收敛,还是不清楚。
考虑到这个,为啥OFFSET OUT不同样适用VALID选项。

使用特权

评论回复
17
edacsoft| | 2011-12-23 15:56 | 只看该作者
OFFSET = IN Xns VALID Yns BEFORE clock;
以current launch edge为时间零点。
从current launch edge起算,经过最长的路径Tdelaymax,即X=Tperiod - Tdelaymax。
从next launch edge起算,经过最短的路径,即这时时 ...
XilinxUser 发表于 2011-12-23 13:30

我又仔细想了想,你是对的。
不知你OFFSET = IN Xns VALID Yns BEFORE clock;
其中Y你取哪个?(VALID)Y or VALID - X ?
手册上说the valid duration of the data to be captured

使用特权

评论回复
18
XilinxUser|  楼主 | 2011-12-23 16:02 | 只看该作者
本帖最后由 XilinxUser 于 2011-12-23 16:04 编辑

BEFORE和AFTER只是相对的沿不同,前者相对latch edge(在FPGA),后者相对launch edge(在ASSP)。OFFSET IN BEFORE和OFFSET IN AFTER区别应该只在X上,Xbefore + Xafter = Tperiod。
但是VALID是一个区间长度,应该和使用BEFORE和AFTER无关。从公式中也能体现这点:
Y= Tperiod + Tdelaymin - Tdelaymax。
即Y只和周期,最大/最小延时有关。

另外,只要有相应的PERIOD约束,无论是AFTER还是BEFORE都是等效的,反正就是那几个公式捣鼓来捣鼓去,总能捣鼓出来。。。
以上是我的理解。
PS:顺便帮我看看第二个新的问题吧。。就是16楼问的OFFSET OUT的那个。。

使用特权

评论回复
19
amini| | 2011-12-25 14:49 | 只看该作者
留个印慢慢看哈。

使用特权

评论回复
20
GoldSunMonkey| | 2011-12-25 16:05 | 只看该作者
:loveliness:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

12

帖子

1

粉丝