微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 多比特跨时钟域 sdc约束 求助

多比特跨时钟域 sdc约束 求助

时间:10-02 整理:3721RD 点击:
比如说有数据data[7:0] ,要从clka到clkb,sdc约束set_max_delay该怎么设置,保证clkb采到的数据是clka的同一拍的数据,不会造成比特之间延迟过大?

如果是异步时钟,要做同步处理,不能直接设置set_max_delay, 因为不能保证亚稳态。

伪命题,你都说是异步了,这个路径天然就是false path,无论怎么约束,都无法保证clkb采到clka下同一拍的多bit数据。这不是通过约束能解决的问题,这属于异步逻辑设计上的问题。


那有什么办法能发现多比特跨时钟时,比特之间是否有很大的延迟?

max delay怎么设也保证不了,max delay只是在false path的基础上加上了对路径传播延迟的最大值限制,防止用false path的时候无法约束传播延迟。用插reg的方法同步两个时钟域,逻辑上就不允许一个周期内完成同步



    我的意思是说各比特之间延迟相差很大(假设bit0在第m个cycle到目的clkb,bit1可能在第m+1个cycle到clkb),是不是可以用set_max_delay来约束?



    没法保证,用fifo


你如果为了减小多bit之间的延时差异,可以通过在每个bit的起点create clock,在各自终点设置stop pin,CTS时可以平衡它们之间的延时差。但是你如果想通过约束来实现clkb抓到clka下的同一拍多bit信号,不可能做到,缘木求鱼了;应该从设计上去解决!不是约束!



      怎么通过设计保证比特之间的延时不会相差太大呢?


好吧,你赢了,词穷

同问,如果慢时钟域中的一个信号传递到快时钟域,会遇到什么问题?需要做什么处理?



    set_max_delay xxx -from clka -to clkb, 这个设置必须在独立的模式进行检查,因为正常情况下clka和clkb是异步的,所以基于clock设置的max delay不会生效,需要在独立的模式下把clka和clkb的异步关系去掉后才可以检查,max delay的值可以是目的域的一个周期,半个周期,或者两者最快频率周期的一半。

设计握手协议,可以参考sram接口,或者用fifo

使用格雷码转换呢

如果不动netlist,就用set_data_check 验证bus的skew不要太大。



    谢谢你的回答。
你说的把异步关系去掉怎么理解?
比如说clka是create_clock,
clkb是create_clock,那异步关系怎么去掉?独立模式指的是什么?



    怎么去掉异步关系呢?

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

网站地图

Top