最近客户碰到一个问题“在vivado中带有高速收发器GTX的时钟约束的问题。之前用vivado做了一个数字信号处理的工程,系统工作频率为312.5MHz,共有64路并行输出,并且通过了时序约束。现在我要把这64路并行输出信号通过2个GTX发射出去,GTX的参考时钟频率为156.25MHz,现在产生64路并行信号的时钟采用GTX的输出信号TxOUTCLK时钟信号,可是现在时钟约束过不了了,不知道是我的时钟约束出了什么问题?”
XDC文件:
create_clock -period 6.400 [get_portsQ0_CLK1_GTREFCLK_PAD_P_IN] #收发器参考时钟
set_false_path -to [get_pins -hierarchical -filter {NAME =~*_txfsmresetdone_r*/CLR}]
set_false_path -to [get_pins -hierarchical -filter {NAME =~*_txfsmresetdone_r*/CLR}]
set_false_path -to [get_pins -hierarchical -filter {NAME =~*_txfsmresetdone_r*/D}]
set_false_path -to [get_pins -hierarchical -filter {NAME =~*_txfsmresetdone_r*/D}]
###### RefClk Location constraints 收发器参考时钟位置约束###########
set_property PACKAGE_PIN AK8 [get_ports Q0_CLK1_GTREFCLK_PAD_P_IN]
set_property PACKAGE_PIN AK7 [get_ports Q0_CLK1_GTREFCLK_PAD_N_IN]
## LOC constrain for DRP_CLK_P/N #收发器复位用时钟
#set_property LOC E19 [get_ports DRP_CLK_IN_P]
#set_property LOC E18 [get_ports DRP_CLK_IN_N]
####################### mgt wrapper constraints收发器位置约束###################
##---------- Set placement for gt0_gtx_wrapper_i/GTXE2_CHANNEL ------
set_property LOC GTXE2_CHANNEL_X1Y0 [get_cellsgtwizard_0_exdes_10g_2/gtwizard_0_support_i/gtwizard_0_init_i/inst/gtwizard_0_i/gt0_gtwizard_0_i/gtxe2_i]
##---------- Set placement for gt1_gtx_wrapper_i/GTXE2_CHANNEL ------
set_property LOC GTXE2_CHANNEL_X1Y1 [get_cellsgtwizard_0_exdes_10g_2/gtwizard_0_support_i/gtwizard_0_init_i/inst/gtwizard_0_i/gt1_gtwizard_0_i/gtxe2_i]
#收发器复位用时钟
create_clock -period 5.000 -name DRP_CLK_IN_P -waveform {0.000 2.500}[get_ports DRP_CLK_IN_P]
set_property PACKAGE_PIN E19 [get_ports DRP_CLK_IN_P]
set_property IOSTANDARD LVDS [get_ports DRP_CLK_IN_P]
# User Clock Constraints gtx IP内部产生的约束时钟文件
create_clock -period 3.2 [get_pins -hier -filter{name=~*gt0_gtwizard_0_i*gtxe2_i*TXOUTCLK}]
create_clock -period 3.2 [get_pins -hier -filter{name=~*gt1_gtwizard_0_i*gtxe2_i*TXOUTCLK}]
set_false_path -to [get_cells -hierarchical -filter {NAME =~ *data_sync_reg1}]
解决方法:
1. 首先工程师不要认为软核任何设置下满足timing;这一点大家可以在网站查看MIG(DDR控制器)的timing问题,有很多。
原因软核也是逻辑,需要和IO位置以及布局布线的结果一起来衡量,上面的timing问题就是通过设置Pblock的方式解决的,因为目前的器件太大了,对于一个小的设计一条线的不合理就会影响到整体的timing;
2. IP timing的解决办法:
A. 需要更改IP设置,包括IO的位置管脚约束;
B. 降低逻辑的时钟频率,比如上面设计中TXOUTCLK;
C. 有IP的timing问题也可以不用担心,当整个工程都实现后,有些Timing问题自然解决了。这和整个设计的布局布线都有很大关系。
注:版权归“FPGA那点事儿”运营团队,转载请注明出处。
联系客服