之前认为时钟约束完成后,基本上整个设计的约束也就做完了,从来没考虑过IO约束。那么IO约束的原因在哪里?
这段英文大概表达了这个意思:The TimeQuest analyzer reviews setup and hold relationships for designs in whichan external source interacts with a register internal to the design。
外部source和内部寄存器有交互,也就是说,FPGA的数据来源来自于另一个芯片,驱动他的时钟和FPGA内部接收他的时钟间关系未知。
如果要让FPGA对他做相关的时序优化,那么我们就应该提供输入和输出的外部模型(set_input_delay and set_output_delay)。
Input Constraints
md文档上说,需要给设计中的所有input ports都加上输入约束。
在约束外部输入延迟时,有一个逃不掉的东西就是虚拟时钟,虚拟时钟定义了输入端口数据的 launching clock;TimeQuest analyzer自动生成期间内部的latching clock,因为器件内的所有时钟都已经被定义过了。
下图是一个基于虚拟时钟设置input delay的例子: