DC之Multiple-Clocks-Asynchronous
跨时钟域(异步时钟)定义:
- CLKA,CLKB为异步时钟(无固定相位关系),在不同时钟域间需进行同步处理。
- 无时钟的组合逻辑输出被时钟采样,如异步FLASH的Busy信号。
注:一般的同源时钟分频得到的不同时钟,用create_generated_clock约束后,是有固定的相位关系的,此情况可不属于异步时钟的范畴,可由设计决定timing问题。例如:需要单时钟读取外部RAM的设计时,需要在端口上面加上OFFSET约束,来保证在一个时钟内从ADDR的输出到DOUT的输入能满足timing要求。
异步时钟的设计:
- 单bit时用D触发器打两拍,防止信号不稳定导致后续逻辑错误
- 用handshakes设计
- 多数据量时,用异步双口FIFO做同步
异步时钟设计约束:
对于异步时钟间的信号,用set_false_path取消路径timing检查。因为异步时钟间的第一级D触发器不能保证其setup,hold时间。