续上一篇进行输入端口到寄存器的setup时序分析
0赞上一篇博文对input delay max公式进行了分析。下面举一个实例,进一步的进行分析,以便加深理解。
对于源同步的clock setup slack的计算官方文档给出的公式如下图:
根据上一篇博文:
input delay max = Tclk1(max)+ Tco(max)+(Tdata_PCB(max)+Tcl) –Tclk2ext(min) 取项目中的一点进行分析,如下图:
SRAM_DQ[0]为一个输入端口,read_sram_logic:rdsm_logic|sram_data_rg[16]为内部一个寄存器。
在sdc文件中做了如下约束:
set_input_delay -clock c1 -max 2.5 [get_ports SRAM_DQ*]
即定义input delay max 等于2.5ns。
由timequest得到的data arrival path如下图所示:
上面路径中,clock path 为Clock Network Delay相当于前一篇博文图一中的OSC,只是这里的时钟为FPGA内部的PLL。iExt则就是input delay max,但是公式中的Tclk1(max),Tclk2ext(min)也移至到FPGA内部了。由SDC约束为2.5ns,这个2.5ns由上面公式可见可以通过外部器件的Tco和PCB延时进行初步计算。然后根据时序余量进行相应调整。data path为Pin_to_Register Delay时间。其中rdsm_logic|Selector30~0|datab 和rdsm_logic|Selector30~0|combout 为LE中组合逻辑的部分。这两个之间的传递,由于是在LE内部,路径非常短,所以传输时间非常短。而在不同单元中的传输,如SRAM_DQ[0]~input|o到rdsm_logic|Selector30~0|datab之间的传输,则用了很长时间。
对于Data Required Path如下图所示:
由图可见,clock path中,多了
all_build|altpll_component|auto_generated|wire_pll1_clk[1]~clkctrl|inclk[0]
all_build|altpll_component|auto_generated|wire_pll1_clk[1]~clkctrl|outclk
rdsm_logic|sram_data_rg[16]|clk
read_sram_logic:rdsm_logic|sram_data_rg[16]
这些路径是pll1|clk[1]最终到达寄存器时钟端口所需要的时间。即为clock network delay to distination register的时间。相对于上一篇博文,应该为Tclk2int。