多比特跨时钟域 sdc约束 求助
如果是异步时钟,要做同步处理,不能直接设置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,那异步关系怎么去掉?独立模式指的是什么?
怎么去掉异步关系呢?
