关于使用两个GTP/GTX出现[DRC RTSTAT-1]error([route 35-54] critical warning)的问题详解
目錄
- 1 概述
- 2 錯(cuò)誤具體描述
- 3 錯(cuò)誤分析
1 概述
本文用于記錄在用xilinx的FPGA時(shí),使用VIVADO編譯兩個(gè)GTP/GTX IP時(shí)出現(xiàn)的[DRC RTSTAT-1]錯(cuò)誤的問(wèn)題,并說(shuō)明問(wèn)題原因與解決思路。
使用的編譯軟件:vivado 2017.4
使用的GTP IP:
2 錯(cuò)誤具體描述
看error時(shí):
> [DRC RTSTAT-1] Unrouted nets: 4 net(s) are unrouted. The problem > bus(es) and/or net(s) are > gtp_top1_inst/gtwizard_0_support_i/common0_i/gt0_qplloutclk_in, > gtp_top2_inst/gtwizard_2_support_i/common0_i/gt0_qplloutclk_in, > gtp_top1_inst/gtwizard_0_support_i/common0_i/gt0_qplloutrefclk_in, and > gtp_top2_inst/gtwizard_2_support_i/common0_i/gt0_qplloutrefclk_in.看critical warning:
> [Route 35-54] Net: > gtp_top1_inst/gtwizard_0_support_i/common0_i/gt0_qplloutclk_in is not > completely routed.3 錯(cuò)誤分析
根據(jù)出現(xiàn)的錯(cuò)誤,我們看到是GTP中的common*i/gt**clk_in沖突,然而我們找到對(duì)應(yīng)的模塊gtwizard_0_common中并沒(méi)有錯(cuò)誤對(duì)應(yīng)的一模一樣的信號(hào),如下所示:
`default_nettype wire
timescale 1ns / 1psdefine DLY #1 //*****************************
 Entity Declaration **************************** module
 gtwizard_0_common # (
 // Simulation attributes
 parameter WRAPPER_SIM_GTRESET_SPEEDUP = “TRUE”, // Set to “true” to speed up sim reset
 parameter SIM_QPLLREFCLK_SEL = 3’b001 ) (
 input [2:0] QPLLREFCLKSEL_IN,
 input GTREFCLK0_IN,
 input GTREFCLK1_IN,
 output QPLLLOCK_OUT,
 input QPLLLOCKDETCLK_IN,
 output QPLLOUTCLK_OUT,
 output QPLLOUTREFCLK_OUT,
 output QPLLREFCLKLOST_OUT,
 input QPLLRESET_IN );
//***************************** Parameter Declarations
localparam QPLL_FBDIV_TOP = 16;localparam QPLL_FBDIV_IN = (QPLL_FBDIV_TOP == 16) ? 10'b0000100000 : (QPLL_FBDIV_TOP == 20) ? 10'b0000110000 :(QPLL_FBDIV_TOP == 32) ? 10'b0001100000 :(QPLL_FBDIV_TOP == 40) ? 10'b0010000000 :(QPLL_FBDIV_TOP == 64) ? 10'b0011100000 :(QPLL_FBDIV_TOP == 66) ? 10'b0101000000 :(QPLL_FBDIV_TOP == 80) ? 10'b0100100000 :(QPLL_FBDIV_TOP == 100) ? 10'b0101110000 : 10'b0000000000;
localparam QPLL_FBDIV_RATIO = (QPLL_FBDIV_TOP == 16) ? 1’b1 :
 (QPLL_FBDIV_TOP == 20) ? 1’b1 :
 (QPLL_FBDIV_TOP == 32) ? 1’b1 :
 (QPLL_FBDIV_TOP == 40) ? 1’b1 :
 (QPLL_FBDIV_TOP == 64) ? 1’b1 :
 (QPLL_FBDIV_TOP == 66) ? 1’b0 :
 (QPLL_FBDIV_TOP == 80) ? 1’b1 :
 (QPLL_FBDIV_TOP == 100) ? 1’b1 : 1’b1;
[63:0] tied_to_vcc_vec_i;
assign tied_to_ground_i = 1'b0; assign tied_to_ground_vec_i = 64'h0000000000000000; assign tied_to_vcc_i = 1'b1; assign tied_to_vcc_vec_i = 64'hffffffffffffffff;//_________________________________________________________________________ //_________________________________________________________________________ //_________________________GTXE2_COMMON____________________________________GTXE2_COMMON # (// Simulation attributes.SIM_RESET_SPEEDUP (WRAPPER_SIM_GTRESET_SPEEDUP),.SIM_QPLLREFCLK_SEL (SIM_QPLLREFCLK_SEL),.SIM_VERSION ("4.0"),//----------------COMMON BLOCK Attributes---------------.BIAS_CFG (64'h0000040000001000),.COMMON_CFG (32'h00000000),.QPLL_CFG (27'h06801C1),.QPLL_CLKOUT_CFG (4'b0000),.QPLL_COARSE_FREQ_OVRD (6'b010000),.QPLL_COARSE_FREQ_OVRD_EN (1'b0),.QPLL_CP (10'b0000011111),.QPLL_CP_MONITOR_EN (1'b0),.QPLL_DMONITOR_SEL (1'b0),.QPLL_FBDIV (QPLL_FBDIV_IN),.QPLL_FBDIV_MONITOR_EN (1'b0),.QPLL_FBDIV_RATIO (QPLL_FBDIV_RATIO),.QPLL_INIT_CFG (24'h000006),.QPLL_LOCK_CFG (16'h21E8),.QPLL_LPF (4'b1111),.QPLL_REFCLK_DIV (1)) gtxe2_common_i (//----------- Common Block - Dynamic Reconfiguration Port (DRP) -----------.DRPADDR (tied_to_ground_vec_i[7:0]),.DRPCLK (tied_to_ground_i),.DRPDI (tied_to_ground_vec_i[15:0]),.DRPDO (),.DRPEN (tied_to_ground_i),.DRPRDY (),.DRPWE (tied_to_ground_i),//-------------------- Common Block - Ref Clock Ports ---------------------.GTGREFCLK (tied_to_ground_i),.GTNORTHREFCLK0 (tied_to_ground_i),.GTNORTHREFCLK1 (tied_to_ground_i),.GTREFCLK0 (GTREFCLK0_IN),.GTREFCLK1 (GTREFCLK1_IN),.GTSOUTHREFCLK0 (tied_to_ground_i),.GTSOUTHREFCLK1 (tied_to_ground_i),//----------------------- Common Block - QPLL Ports -----------------------.QPLLDMONITOR (),//--------------------- Common Block - Clocking Ports ----------------------.QPLLOUTCLK (QPLLOUTCLK_OUT),.QPLLOUTREFCLK (QPLLOUTREFCLK_OUT),.REFCLKOUTMONITOR (),//----------------------- Common Block - QPLL Ports ------------------------.QPLLFBCLKLOST (),.QPLLLOCK (QPLLLOCK_OUT),.QPLLLOCKDETCLK (QPLLLOCKDETCLK_IN),.QPLLLOCKEN (tied_to_vcc_i),.QPLLOUTRESET (tied_to_ground_i),.QPLLPD (tied_to_vcc_i),.QPLLREFCLKLOST (QPLLREFCLKLOST_OUT),.QPLLREFCLKSEL (QPLLREFCLKSEL_IN),.QPLLRESET (QPLLRESET_IN),.QPLLRSVD1 (16'b0000000000000000),.QPLLRSVD2 (5'b11111),//------------------------------- QPLL Ports -------------------------------.BGBYPASSB (tied_to_vcc_i),.BGMONITORENB (tied_to_vcc_i),.BGPDB (tied_to_vcc_i),.BGRCALOVRD (5'b11111),.PMARSVD (8'b00000000),.RCALENB (tied_to_vcc_i)); endmodule但很明顯我們這里能知道是時(shí)鐘布線沖突,這里先看看兩個(gè)GTX的管腳約束情況,如下圖所示:
 
即數(shù)據(jù)線在相同的bank,時(shí)鐘在不同的bank。這個(gè)是根據(jù)硬件原理圖來(lái)的,如下所示:
再根據(jù)原理圖看,時(shí)鐘我可以調(diào)整到一個(gè)bank上即117上,進(jìn)行調(diào)整后如下所示,問(wèn)題依然存在,并沒(méi)有解決。
那么是否是說(shuō)同一個(gè)工程中不能使用兩個(gè)GTX呢?我翻看ug482_7Series_GTP_Transceivers手冊(cè)后發(fā)現(xiàn)并不是,比如手冊(cè)上是可以使用多個(gè)IP的,如下所示:
但是需要這個(gè)GTP分布在不同的Quad。而本設(shè)計(jì)硬件上是將兩個(gè)SFP設(shè)置在了同一個(gè)Quad上,因此報(bào)了錯(cuò)誤。
為了驗(yàn)證這個(gè)思路是否正常,我將一組GTP的信號(hào)管腳移植到BANK118如下所示,經(jīng)過(guò)編譯發(fā)現(xiàn)錯(cuò)誤消失了,即證明若需要兩個(gè)GTP時(shí)需要它們?cè)趦蓚€(gè)BANK上。
總結(jié)
以上是生活随笔為你收集整理的关于使用两个GTP/GTX出现[DRC RTSTAT-1]error([route 35-54] critical warning)的问题详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: ARINC818(FC-AV)协议详解
- 下一篇: inotify-tools、sersyn
