异步fifo设计中使用格雷码方案时时序约束问题
HELP,这里的人呢?
我觉得不需要特别的约束了吧,因为gray编码方案目的是为了async处理的问题。
在频率较低时,允许的gray bus的delay skew会比较大,而频率较高时,允许的gray bus的delay skew则变小。
for example, 写时钟频率500M,读时钟频率为500M,写时钟域向读时钟域传递gray code,序列如下:对应2次写
3'b000--->3'b001--->3'b011,如果不对bus delay skew作约束,会出现如下情况,graybus[0]的delay 12ns, 而graybus[1]的delay 1ns,这样, 写时钟域graycode从3'b000变化到3'b011需要2个cycle(4ns),而5ns处读时钟域采样的gray bus值为3'b010(即3),这样,读时钟域就可能读出错误的数据(读3次)。当然,这是一种比较极限的情况,通常不加约束,且频率较低时是不会出现上述问题。 个人觉得加上约束会更稳妥。
不知各位同学的意见如何?
你要是讨论这种极限情况,那基本上所有的跨时钟路径都需要约束
约束也是以软件运行时间为代价的
这种发生概率超级小的事件,除非仿真过程中发现它会发生,否则都不用管
在系统运行频率较低的情况下是小概率时间,但在频率较高时,存在的风险会较大。
跨时钟域信号一般没有组合逻辑,线延时很小,不会出现小编说的情况。FPGA里面可能连线延时较大,可能与ASIC有些不同吧(不过跑500M的FPGA……)
纯属探讨时序分析的严谨性问题,哈哈,大家伙明白有这么一回事就够了,实际过程中用不用大家依情况自己决定啊!
本讨论就此打住。
看看
的确需要约束路径延时
频率高的话 max delay check 一把,看看skew的情况。
一般来讲,频率超过300M,位宽超过256bit,答主都会进行bus delay skew约束。 这样稳妥些,尤其是在一些高性能企业及路由器交换机的设备上,约束是必要的。
时序是设计出来的,稳定性是良好的设计和追求卓越的约束精神才可以保证的。
