微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 时序约束求教

时序约束求教

时间:10-02 整理:3721RD 点击:
目前设计中存在两种情况,想请教一下大家应该如何处理。
1.与sdram通信的输出接口,此处有输出一个时钟信号,请问接口的时序约束应该怎样设置?
   目前查到的是在输出的时钟信号port上定义一个生成时钟(source为片上工作时钟),然后将其他输出数据的output delay以它为参考时钟设置。这里我想问一下,假设主时钟为clk1,生成时钟为clk2(未经过任何分频或反向处理),那么当数据输出时,若以clk1为参考时钟输出,那么在这个地方应该如何理解这些数据与clk2在输出到sdram时,两者间存在的延迟?对于这样的情况是无法去balance skew的吧?
2.假设输入时钟clk1在片内进行了分频产生了clk2,数据参考它输出到片外经过处理后,又输入到片内,那么这些数据能否仍用clk2来capture,并且应该怎样定义它们的输入延时?clk2是否也要输出到片外后再输入到片内?

纠结的头都大了,请各位指教!

1.clk1到clk2的是Launch Clock Path,clk1到寄存器ck端是Capture Clock Path,后者加上Data Path再和前者对比作时序分析。这里Balance Skew会跑不快,因为输入数据时序不好。最优的方法是输出的时钟路径短,到控制器寄存器的时钟路径长。
2.外部兜一圈的话如果片外SI不好(阻抗匹配不好),内部逻辑就乱了,是下策。



   感谢回复!
可能我说的不是太清楚。
关于第一点我不能理解的是:
假设clk2与clk1直连并输出到片外sdram作为其时钟(当然中间可能有buffer),而sdram的地址/数据信号在output时是clk1 launch的,这时如果按上述的定义方式,在port clk2处定义生成时钟,并将地址/数据信号的output delay参考它,这样的约束是否可行?
第二点中,clk2在外部是没有发生变化的,即若是将其输出后再输入,在chip级就是在两者pad上做一个短接。我也不太明白这个地方应该如何处理比较好,烦请指教。

1.可行。input/output delay参考clk2,全世界都是这样做的。你参考clk1 PT直接报错。
2.不建议这样做。clk2有没有变化,取决于PCB设计。PCB设计阻抗匹配不好,在Pad上的方波就会变成三角波或振铃等。如果把这个不干净的波形引回片内,是个很大的隐患。如果要把控制器时钟往后推,请在片内完成。



   在这种约束下,CTS中必须进行clk1驱动的reg与clk2 port之间的skew balance是吧?
   此外还想请教下您,某些guide上讲的通过定义虚拟时钟来约束IO delay的方式与使用real clock约束有什么差别?具体到这个设计里面,我本意是觉得应该定义一个virtual clock,然后将data/address信号这些的output delay参考它。

你可以选择Balance Skew,但上面说了,这样跑不快。高性能的做法是把内部寄存器时钟往后推。(当然最高性能是用PLL,不过我相信没有哪个ASIC芯片会为了个SDRAM控制器加PLL)
在Encounter里,Balance的话把输出Pad的输入Pin设为Leaf Pin就可以了,如果要把往后推再加个MacroModel。ICC我不熟。
这里和虚拟时钟没有一毛钱关系。



    好吧。似乎是我想多了。还想多嘴问下,您说的将内部寄存器时钟往后推是从设计上保证吗?

   后端实现时保证。前端看不见。
如果注重高性能,往后推时关注共同时钟路径。



   真心感谢您!学到了很多

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top