亚稳态
跨时钟域
多级触发器同步技术

虚拟时钟(Virtual Clocks)
需要虚拟时钟是因为DUA的时钟和驱动DUA输入端口的时钟之间有延迟。
以下图为例,DUA(design under analysis)的时钟来自CLK_CORE,但是驱动输入端口(ROW_IN)的时钟是CLK_SAD。如何指定输入端口ROW_IN和输出端口STATE_O的IO约束?

定义没有源端口或源引脚的虚拟时钟。在这个例子里,为CLK_SAD和CLK_CFG定义虚拟时钟。
1 | create_clock -name VIRTUAL_CLK_SAD -period 10 -waveform {2 8} |
再相对于这些虚拟时钟定义IO约束(IO constraints)。2.7=CK->Q + Tc1;4.5=Tc2+Tsetup。
1 | set_input_delay -clock VIRTUAL_CLK_SAD -max 2.7 [get_ports ROW_IN] |


如上图所示,DUA的输入路径被约束为5.3ns,输出路径被约束为3.5ns。
虚拟时钟只是一种用来约束IO的方法。