FPGA内信号等长,怎么加约束?
请问该怎么加约束?
作为输入信号,可以使用PAD内的REG,这样延迟就相差无几了。
也可以尝试设置max delay/min delay约束.
这个是指IOB内的REG吗?
以前只知道有maxdelay约束,不知道还有mindelay约束,我先试下。
感觉min delay 被忽略了,时序分析并没有分析mindelay的路径,如果只设置maxdelay的话,设到1.0ns就不能满足了,设到1.5ns的话,max为1.431ns,min为0.554ns。
如果把第一级寄存器放到IOB中感觉还有点问题,从第一级寄存器到第二级寄存器的周期约束可能会满足不了,是不是因为IOB到CLB的连线太长了?
400M对于单端的信号,频率是很高的,一般都采用特殊协议。到这个频率和之上,我们一般是采用LVDS。这个有待研究。
“如果把第一级寄存器放到IOB中感觉还有点问题,从第一级寄存器到第二级寄存器的周期约束可能会满足不了”这个我觉得不会。
这个确实成了关键路径,我也很纳闷,而且我再中间多加了几级寄存器,以往来提高频率,效果也不理想,从IOB到第二级寄存器总是会成为关键路径。
如果频率很高,只加约束很难解决问题,还是扩展位宽比较简单。
你这个问题的条件太含糊。如果真的跑到很高的频率,那你的clk怎么来的?跟随data还是CDR?
用的接口标准是什么?容易处理的方法是用megafunction来串转并,这样FPGA内部的clk不至于跑的太高。
学习……
8错8错的
都是高手,我都没涉及过这些,都只是编个程序,做的都是皮毛!
接口是DDR3接口,400MHz时钟是直接从主板上引过来的。
问题已经解决,发现跟HDL代码的书写有一点关系。
我要求等长的那一组信号,在物理引脚上比较分散,如果我在引脚定义的时候就把它们定义为一组,并且其后的寄存器也定义为一组,那么布局布线的时候,就会尽量早的把它们汇聚到一次,这就导致了关键路径。
如果我在引脚定义的时候,不定义为一组,而分开单独定义,加了几级寄存器之后,再定义为一组,布局布线的时候,就会直到我定义为一组的时候才把它们汇聚起来,关键路径就消除了。
学习……
这个我没有想到。谢谢,学习了。
