1. RTL的处理
a. 快时钟域到慢时钟域: double-clocking, metastable-hard寄存器
b. 慢时钟到快时钟域:使用handshaking
c. dual-port ram
2. 每个clock domain都要创建一个时钟
3. 时钟域之间的timing path要disable,以防止
3.1 在non-critical timing path上浪费运行时间
3.2 错过真正的critical timing path的时序优化
4. 举例
create_clock -period 3 [get_ports CLKA]
create_clock -period 3 [get_ports CLKB]
set_clock_groups -asynchronous -group CLKA -group CLKB
...
compile_ultra -scan -timing
5. -async在PT-SI的crosstalking分析也是需要的
PT-SI会把相邻的从属于两个异步时钟域的metal trace当作是具有"infinite arrival window"的overlap
也就是实际上是一种worst-case crosstalk延时效应
如果使用set_false_path, 在DC中结果是一样的,但post-layout crosstalk的分析可能会不符合实际(计算所得的crosstalk效应变小)
所以最好用set_clock_groups -asynchronous