在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8288|回复: 3

[原创] 同步接口与异步接口约束

[复制链接]
发表于 2011-10-17 21:10:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
DC综合最重要的就是约束了,如果约束不恰当,还真是画蛇添足,约束使得结果错误。
同步接口的确要用同步方法约束,set_input_delay。而异步接口就该是set_max_delay。有的时候,一个输入被很多时钟域使用,这个时候该是同步还是异步呢?异步吧,因为这些时钟本就是异步。但问题就是,这个max_delay也不好设置,因为首先要大于所有时钟的最大delay,要小于最快时钟的周期,其实这根本不是最好的,那么有没有约束让每个时钟的路径针对自己的时钟,好像是对这个port设置add inputdelay。然后对这些时钟间设置false path。
做约束前必须要做的工作是,画出每个接口的时序图。比如SPI的时钟是下降沿输出,那么路径只有半个时钟的长度可以用。当然,SPI一般很慢,怎么设置好像都不会有问题。如果时钟在先,数据在后的,就是同步逻辑。而异步逻辑没有时钟概念,但也有上升沿,而设计中一般也是拿这个沿来采集数据。感觉好像跟同步逻辑没有区别。这个时候好像按照同步设计更合理,因为一般你会为这个不是时钟的端口设为时钟,那么就有时钟延时,你当然希望数据也能够有那么点延时了。这个时候的输入延时就很大了,因为一般数据比时钟不会提前一个周期那么长吧。同样,如果是同步逻辑设计,虽然有时钟,但这个时钟在内部被作为使能在使用,就有必要注意了,一般输入来的时钟要比数据晚那么一点,比如一个寄存器的延时那么多,即上升沿来后数据有效,问题是这个怎么看都像是异步时序,还是两个时钟域,因此,需要考虑好,对于同步时序,有使能和数据两部分。用同一个时钟去采一般不会有问题,因为有保持建立时间约束到的,时钟作为输出,ICC做时钟树的时候,一般不会平衡这一部分,因为你没有指定是这个时钟的输出来采集相应数据,因此,有可能pt分析时候没有问题,但实际上有问题,因为,实际的时钟延时要比pt的延时还要大,导致保持时间不满足。
说道DC,就多说两句:
1、如果if语句在时序电路中加了eles a <=a;面积要比不加这句多余的大,因为DC会映射出个mux来。
2、如果一个逻辑要DC自己解析,比如状态机等,如果你约束时钟很慢,你会发现有可能给你的电路还真的慢的可以,我记得我有个除法器,要用到DW库,我约束40ns的时钟,他给的电路还是40ns的,我还以为就这么慢了,我认为不可能,所以改为4ns试试,结果令我大吃一惊,居然给出个只要6ns的除法器,而且DRC没有违例的。
最怕的是一个异步电路,内部使用的时候上下沿都在用,当然从时序上看,的确没什么问题。关键是怎么约束。使得上升沿的路径可以尽量短的同时下降沿的路径尽量长。
发表于 2011-12-22 21:38:13 | 显示全部楼层
我觉得set_max_delay是用来设置内部组合逻辑的timing exception的,要是用来约束输入输出delay的时候有点不靠谱!我是做FPGA的,最近一直在研究STA,希望能够指教一下!对异步接口的约束也是差不多这样理解的!
发表于 2011-12-26 00:01:50 | 显示全部楼层
我今天刚看到set_max_delay。就是不知道什么时候用。如果是两个时钟域的话我觉得设置虚拟时钟就可以了。不知道楼主说的异步设计是指什么?异步设计DC是不能综合的!
发表于 2014-9-16 09:36:19 | 显示全部楼层
异步设计是指什么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-8 16:36 , Processed in 0.029594 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表