时序分析是建立在时序约束的基础之上。FPGA设计有4类时序路径的起点和终点:
一个完整的时序路径由源时钟路径、数据路径和目的时钟路径2部分构成。约束的目的则是为了验证下面公式是否成立:
Tco为发端寄存器时钟到输出时间;Tlogic为组合逻辑延迟;Trouting为两级寄存器之间的布线延迟;Tsu为接收端寄存器建立时间;Tskew为两级寄存器的时钟歪斜,其值等于时钟统一边沿到达两个寄存器时钟端口的时间差;Tclk为系统所能达到的最小时钟周期。在FPGA中,对于同步设计Tskew可忽略(认为值等于0)。由于Tco和Tsu取决于芯片工艺,因此,一旦芯片型号选定就只能通过Tlogic和Trouting来改善Tclk。其中,Tlogic和代码风格有很大关系,Trouting和布局布线策略有很大关系。
前面讲了FPGA内部常用的时序约束,为了对设计外部的时序情况进行精确建模,设计者必须设定输入和输出端口的时序信息。Vivado只能识别出FPGA器件范围内的时序,因此必须使用set_input_delay和set_output_delay命令来设置FPGA范围外的延迟值。两者在含义、约束命令等方面有很多地方是相似的,只不过一个是输入,一个是输出。
输入输出约束还是使用vivado 自带language来约束
System Synchronous Input
分析输入端口到FPGA内部时序单元的路径时,当source clock和destination clock来自同一个系统时钟时,称为系统同步输入(system synchronous input)。
源同步需要时钟和数据来自同一个源,系统同步中只要求source clock和destination clock来自同一个时钟网络即可。
如图1所示为系统同步输入,source clock是CLKA,destination clock是CLKB,其中CLKB通过输入端口引入FPGA内部(约束成主时钟),而CLKA引到了FPGA外部的板上芯片,并没有引入到FPGA内部,CLKB是采集输入端口的时钟。
Source Synchronous Input
分析输入端口到FPGA内部时序单元的路径时,当destination clock来自外部芯片,即与数据输入同源,称为源同步输入(source synchronous input)。
结构如图2所示,从板上芯片输入到FPGA除了有数据,还有一个随路时钟,是由板上芯片产生的。。
下述描述的公式中:
Tco ---- 外部芯片的 Tco,Tco的参数通常需要查外部芯片