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

双时钟域时序约束问题

时间:10-02 整理:3721RD 点击:
spartan-6 ,ise环境,双时钟域,一个快时钟(100M),一个慢时钟(20M),慢时钟域把数据"收集"好后(存到若干寄存器,以后不会变化)再交快时钟域处理。因使用寄存器较多,未使用多时钟域同步的“寄存起链”“FIFO”等方法来双时钟域同步,而是用状态机强制延时N个周期后,快时钟域才能处理慢时钟域收到的寄存器数据,这样应该可保证双时钟域时序同步吧。但如何做时序约束呢?ise静态时序分析貌似仍然按两个时钟域的要求去做的分析(报告里显示的requirement 并不是10ns,而是大大小于10ns),这样时序就过不了。另外,也加了两个时钟域clk的tig约束。
    请问如何做时序约束,使ise不去分析这几个寄存器在两个时钟域的同步关心?但仍要分析快时钟域这些寄存器到下一级逻辑的setup/hold时序

麻烦高手解答一下

期待大神解答!

约束好各自时钟域的时钟就好了,数据路径不需要约束。这个跟FIFO的数据路径是FALSE PATH,不需要约束是一个道理。
两个时钟域的时钟是要各自做周期约束的,这样才能让ISE去分析各自时钟域内的信号。跨时钟域这条数据路径就TIG不要去分析了。
但是,你自己要确定后面的时钟几个cycle之后一定采样到这些数据。

如果用“寄存起链”来跨两个时钟域,则FROM慢速寄存器TO快速寄存器加TIG,则可使ISE不分析这个路径,但问题是我不想加这个“寄存起链”来跨,我用512 bit 寄存器,"寄存器链"消耗资源大。
因为我的设计“慢速时钟域存到若干寄存器,以后不会变化了”,直接想把慢速时钟“打”到寄存器的数据直接拿到快速时钟域来用。则如何加 FROM TO的约束?

"因为我的设计“慢速时钟域存到若干寄存器,以后不会变化了”,直接想把慢速时钟“打”到寄存器的数据直接拿到快速时钟域来用。"
在慢时钟域把数据写入寄存器,同时生成1个长度为1个慢时钟周期的脉冲信号作为标志,保证标志与数据对齐。在快时钟域去采样这个标志位。单比特信号跨时钟域,不需要我教你怎么做了吧? 快时钟域去采样这个信号的上升沿或者下降沿。再在这个沿到来的时刻,直接用快时钟域信号从数据寄存器里面把数据取出来,就OK了。
慢时钟域有新数据来的时候,同理,重复生成一个标志。在快时钟域一样,借用标志信号的沿去采样新的数据。如此往复。
上述是慢速率数据在跨时钟域时的标准做法。
约束方面,你只要把周期约束做好就可以了。FROM -- TO 这种是MULTI PATH,就是多周期约束,是在你没有办法保证快时钟域时钟一定能采样到满时钟域信号的时候做的。在你的这种情况下,不需要的,你只要在慢时钟域生成的标志信号长度保证1个周期,那快时钟域一定采样得到,所以没有任何问题,做好各自的周期约束,跨时钟域这里直接TIG就可以了。
如果你实在想加,就给标志位加FROM -- TO 好了。不过我觉得没有任何意义,TIG来得更干净。

FALSE PATH.

多谢catcat_2 !
  我问的关键是如何写“FROM -- TO ”TIG约束,加你说“标志”,但ISE不知道深意啊,仍然要分析双时钟域的数据寄存器组。
FROM 的FF是慢时钟域和快时钟域共用的数据寄存器?
这样不行啊,这样的话FROM到TO的路径就不分析了,因为这个FROM快时钟域寄存器也要用,必须要分析这个数据寄存器器组。
如果用标准的“寄存器链”,则寄存器链(假设2个)一个FF为FROM,一个FF为TO。 TO后面的路径为快时钟域路径会分析。这样约束就行了。
问题是现在为节约资源没有这个寄存器链,FROM是哪个FF?

求大神解答

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

网站地图

Top