一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)FPGA布局布線的報(bào)錯(cuò)問(wèn)題

FPGA研究院 ? 來(lái)源:數(shù)字站 ? 2024-10-24 14:05 ? 次閱讀

從最初學(xué)FPGA到現(xiàn)在,遇到過(guò)太多bug,但都沒(méi)有寫過(guò)博客記錄,因?yàn)槎鄶?shù)問(wèn)題都比較簡(jiǎn)單且網(wǎng)上有比較好的答案。

但最近發(fā)現(xiàn)一個(gè)布局布線的報(bào)錯(cuò),并不是因?yàn)檫壿媽?dǎo)致的,而是用戶不清楚布局布線導(dǎo)致的,且網(wǎng)上基本上相關(guān)的解答,因此把原因分析出來(lái)。

01 相關(guān)問(wèn)題報(bào)錯(cuò)

最近一些群友碰到了如下問(wèn)題,報(bào)錯(cuò)信息為:

[Place 30-719] Sub-optimal placement for a global clock-capable IO pin-IDELAY-BUFG pair. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.

< set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets dclk_r] >

u_IDELAYE2 (IDELAYE2.DATAOUT) is locked to IDELAY_X0Y78

and dclk_r_BUFG_inst (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y1。

03eb95aa-91ad-11ef-a511-92fbcf53809c.png

0403ca30-91ad-11ef-a511-92fbcf53809c.png

圖1 place 30-719報(bào)錯(cuò)

按照錯(cuò)誤提示,在xdc中添加如下約束,然后重新綜合、布局布線。

040f16c4-91ad-11ef-a511-92fbcf53809c.png

圖2 添加約束

然后出現(xiàn)如下錯(cuò)誤,很多人可能會(huì)直接出現(xiàn)下面的錯(cuò)誤,原因都是一樣的。 報(bào)錯(cuò)信息:

[Place 30-650] Non IO buffer dclk_IBUF_BUFG_inst{BUFG} is driving IDATAIN pin of IDELAY instance u_IDELAYE2. This will lead to unroutable situation. IDATAIN pin of IDELAY instance should always get signal from IO buffer or GND.

[Place 30-99] Placer failed with error: 'Implementation Feasibility check failed, Please see the previously displayed individual error or warning messages for more details.'

Please review all ERROR, CRITICAL WARNING, and WARNING messages during placement to understand the cause for failure.

[Common 17-69] Command failed: Placer could not place all instances

043c8b72-91ad-11ef-a511-92fbcf53809c.png

04409a46-91ad-11ef-a511-92fbcf53809c.png

圖3 報(bào)錯(cuò)信息

上述報(bào)錯(cuò)其實(shí)很奇怪,因?yàn)槌绦蛑衖delaye2的IDATAIN是連接到FPGA輸入管腳的,并沒(méi)有什么問(wèn)題,報(bào)錯(cuò)不是很準(zhǔn)確。

這個(gè)錯(cuò)誤在網(wǎng)上好像還沒(méi)有具體的講解,本文解析一下具體原因,以及如何避免。

02復(fù)現(xiàn)錯(cuò)誤

之所以出現(xiàn)這個(gè)問(wèn)題,是由于不了解信號(hào)進(jìn)入fpga的走線,錯(cuò)誤使用idelaye信號(hào)導(dǎo)致的。

提供如下例程,輸入時(shí)鐘dclk與輸入數(shù)據(jù)din對(duì)齊,為了穩(wěn)定采集輸入數(shù)據(jù),內(nèi)部使用idelaye2對(duì)dclk延時(shí)24.72ns。然后內(nèi)部使用兩個(gè)ila,分別查看dclk延時(shí)前后采集到的輸入數(shù)據(jù)是否一致。

//--###############################################################################################
//--#
//--# File Name    : top
//--# Designer    : 數(shù)字站
//--# Tool      : Vivado 2017.4
//--# Design Date  : 2024
//--# Description  : 
//--# Version    : 0.0
//--# Coding scheme  : GBK(If the Chinese comment of the file is garbled, please do not save it and check whether the file is opened in GBK encoding mode)
//--#
//--###############################################################################################
module top (
    input                  clk        ,//系統(tǒng)時(shí)鐘信號(hào);
    input                  rst        ,//系統(tǒng)復(fù)位信號(hào),高電平有效;
    input                               dclk        ,//串行時(shí)鐘輸入;
    input                        din        ,//輸入數(shù)據(jù);
    output reg                      dout       //輸出數(shù)據(jù)信號(hào);
);
    reg     [9 : 0]                     din_r       ;


    wire                                dclk_r      ;
    wire                                clk_200m    ;


    //例化鎖相環(huán),生成idelaye2需要的200MHz時(shí)鐘信號(hào);
    clk_wiz_0 u_clk_wiz (
        .clk_out1   ( clk_200m  ),// output clk_out1
        .reset      ( rst       ),// input reset
        .clk_in1    ( clk       ) // input clk_in1
    );


    (* IODELAY_GROUP = "IODELAY_0" *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL
    IDELAYCTRL u_IDELAYCTRL (
        .RDY    (           ),// 1-bit output: Ready output
        .REFCLK ( clk_200m  ),// 1-bit input: Reference clock input
        .RST    ( rst       ) // 1-bit input: Active high reset input
    );


    //例化idelaye2對(duì)時(shí)鐘信號(hào)進(jìn)行延時(shí)24*78+600=24.72ns;
    (* IODELAY_GROUP = "IODELAY_0" *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL
    IDELAYE2 #(
        .CINVCTRL_SEL           ("FALSE"    ),//Enable dynamic clock inversion (FALSE, TRUE)
        .DELAY_SRC              ("IDATAIN"  ),//Delay input (IDATAIN, DATAIN)
        .HIGH_PERFORMANCE_MODE  ("FALSE"    ),//Reduced jitter ("TRUE"), Reduced power ("FALSE")
        .IDELAY_TYPE            ("FIXED"    ),//FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
        .IDELAY_VALUE           (24         ),//Input delay tap setting (0-31)
        .PIPE_SEL               ("FALSE"    ),//Select pipelined mode, FALSE, TRUE
        .REFCLK_FREQUENCY       (200.0      ),//IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).
        .SIGNAL_PATTERN         ("CLOCK"    ) //DATA, CLOCK input signal
    )
    u_IDELAYE2 (
        .CNTVALUEOUT    (               ),//5-bit output: Counter value output
        .DATAOUT        ( dclk_r        ),//1-bit output: Delayed data output
        .C              ( clk_200m      ),//1-bit input: Clock input
        .CE             ( 1'b1          ),//1-bit input: Active high enable increment/decrement input
        .CINVCTRL       ( 'd0           ),//1-bit input: Dynamic clock inversion input
        .CNTVALUEIN     ( 'd0           ),//5-bit input: Counter value input
        .DATAIN         ( 'd0           ),//1-bit input: Internal delay data input
        .IDATAIN        ( dclk          ),//1-bit input: Data input from the I/O
        .INC            ( 'd0           ),//1-bit input: Increment / Decrement tap delay input
        .LD             ( 'd0           ),//1-bit input: Load IDELAY_VALUE input
        .LDPIPEEN       ( 'd0           ),//1-bit input: Enable PIPELINE register to load data input
        .REGRST         ( rst           ) //1-bit input: Active-high reset tap-delay input
    );


    //移位輸出數(shù)據(jù);
    always@(posedge dclk_r)begin
        {dout,din_r[9:0]} <= {din_r[9:0],din};
    end


    //ila使用延時(shí)前的時(shí)鐘采集din_r的數(shù)據(jù);
    ila_0 u_ila_0 (
        .clk    (dclk   ),// input wire clk
      .probe0 (din_r  ) // input wire [9:0] probe0
    );


    //ila使用延時(shí)后的時(shí)鐘采集din_r的數(shù)據(jù);
    ila_0 u_ila_1 (
        .clk    (dclk_r ),// input wire clk
      .probe0 (din_r  ) // input wire [9:0] probe0
    );


endmodule

上述例程的邏輯思路和代碼大家應(yīng)該都能夠理解,也沒(méi)有邏輯錯(cuò)誤。然后使用vivado創(chuàng)建工程,綜合,分配管教腳,最后布局布線。

綜合不會(huì)出現(xiàn)問(wèn)題,因?yàn)闆](méi)有邏輯和語(yǔ)法錯(cuò)誤,但布局布線后會(huì)出現(xiàn)圖3的錯(cuò)誤,如下圖所示。

044f5f40-91ad-11ef-a511-92fbcf53809c.png

圖4 復(fù)現(xiàn)問(wèn)題

03分析問(wèn)題

是不是覺得很離譜?邏輯沒(méi)問(wèn)題,為什么布局布線失敗。

需要通過(guò)正常的工程,才能分析出錯(cuò)誤的原因,因此先將兩個(gè)ila相關(guān)的代碼注釋掉,如下所示。

//--###############################################################################################
//--#
//--# File Name    : top
//--# Designer    : 數(shù)字站
//--# Tool      : Vivado 2017.4
//--# Design Date  : 2024
//--# Description  : 
//--# Version    : 0.0
//--# Coding scheme  : GBK(If the Chinese comment of the file is garbled, please do not save it and check whether the file is opened in GBK encoding mode)
//--#
//--###############################################################################################
module top (
    input                  clk        ,//系統(tǒng)時(shí)鐘信號(hào);
    input                  rst        ,//系統(tǒng)復(fù)位信號(hào),高電平有效;
    input                               dclk        ,//串行時(shí)鐘輸入;
    input                        din        ,//輸入數(shù)據(jù);
    output reg                      dout       //輸出數(shù)據(jù)信號(hào);
);
    reg     [9 : 0]                     din_r       ;


    wire                                dclk_r      ;
    wire                                clk_200m    ;


    //例化鎖相環(huán),生成idelaye2需要的200MHz時(shí)鐘信號(hào);
    clk_wiz_0 u_clk_wiz (
        .clk_out1   ( clk_200m  ),// output clk_out1
        .reset      ( rst       ),// input reset
        .clk_in1    ( clk       ) // input clk_in1
    );


    (* IODELAY_GROUP = "IODELAY_0" *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL
    IDELAYCTRL u_IDELAYCTRL (
        .RDY    (           ),// 1-bit output: Ready output
        .REFCLK ( clk_200m  ),// 1-bit input: Reference clock input
        .RST    ( rst       ) // 1-bit input: Active high reset input
    );


    //例化idelaye2對(duì)時(shí)鐘信號(hào)進(jìn)行延時(shí)24*78+600=24.72ns;
    (* IODELAY_GROUP = "IODELAY_0" *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL
    IDELAYE2 #(
        .CINVCTRL_SEL           ("FALSE"    ),//Enable dynamic clock inversion (FALSE, TRUE)
        .DELAY_SRC              ("IDATAIN"  ),//Delay input (IDATAIN, DATAIN)
        .HIGH_PERFORMANCE_MODE  ("FALSE"    ),//Reduced jitter ("TRUE"), Reduced power ("FALSE")
        .IDELAY_TYPE            ("FIXED"    ),//FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
        .IDELAY_VALUE           (24         ),//Input delay tap setting (0-31)
        .PIPE_SEL               ("FALSE"    ),//Select pipelined mode, FALSE, TRUE
        .REFCLK_FREQUENCY       (200.0      ),//IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).
        .SIGNAL_PATTERN         ("CLOCK"    ) //DATA, CLOCK input signal
    )
    u_IDELAYE2 (
        .CNTVALUEOUT    (               ),//5-bit output: Counter value output
        .DATAOUT        ( dclk_r        ),//1-bit output: Delayed data output
        .C              ( clk_200m      ),//1-bit input: Clock input
        .CE             ( 1'b1          ),//1-bit input: Active high enable increment/decrement input
        .CINVCTRL       ( 'd0           ),//1-bit input: Dynamic clock inversion input
        .CNTVALUEIN     ( 'd0           ),//5-bit input: Counter value input
        .DATAIN         ( 'd0           ),//1-bit input: Internal delay data input
        .IDATAIN        ( dclk          ),//1-bit input: Data input from the I/O
        .INC            ( 'd0           ),//1-bit input: Increment / Decrement tap delay input
        .LD             ( 'd0           ),//1-bit input: Load IDELAY_VALUE input
        .LDPIPEEN       ( 'd0           ),//1-bit input: Enable PIPELINE register to load data input
        .REGRST         ( rst           ) //1-bit input: Active-high reset tap-delay input
    );


    //移位輸出數(shù)據(jù);
    always@(posedge dclk_r)begin
        {dout,din_r[9:0]} <= {din_r[9:0],din};
    end


    //ila使用延時(shí)前的時(shí)鐘采集din_r的數(shù)據(jù);
    //ila_0 u_ila_0 (
    //    .clk    (dclk   ),// input wire clk
    //  .probe0 (din_r  ) // input wire [9:0] probe0
    //);


    //ila使用延時(shí)后的時(shí)鐘采集din_r的數(shù)據(jù);
    //ila_0 u_ila_1 (
    //    .clk    (dclk_r ),// input wire clk
    //  .probe0 (din_r  ) // input wire [9:0] probe0
    //);


endmodule
重新綜合、實(shí)現(xiàn)工程后,在“IMPLEMENTATION”界面下雙擊“open Implemented Design”,如下所示。045a1106-91ad-11ef-a511-92fbcf53809c.png

0472a00e-91ad-11ef-a511-92fbcf53809c.png

圖5 打開布局布線

在“Device”界面中找到DCLK引腳,如下圖所示。

047f9b10-91ad-11ef-a511-92fbcf53809c.png

圖6 Device界面

如下圖所示,首先點(diǎn)擊圖中1處,就能查看芯片內(nèi)部的實(shí)際走線了,如下圖所示,左邊為DCLK對(duì)應(yīng)的管腳,信號(hào)進(jìn)入管腳后,沿著綠色的走線,先到達(dá)idelaye2的輸入,經(jīng)過(guò)延時(shí)后輸出到ILOGICpYYBAGORftaABrbPAAAAjgjvZ2U927.jpg

04a0577e-91ad-11ef-a511-92fbcf53809c.png

圖7 DCLK輸入走線

將上圖中idelaye2和ilogic部分放大,如下圖所示,藍(lán)色走線是DCLK管腳輸入,紅色是idelaye2輸出繞過(guò)ilogic進(jìn)入FPGA內(nèi)部邏輯的走線。

wKgaomcZ5IaADRQuAAGVGU1WRgU324.jpg

圖8 信號(hào)走線

上述是輸入信號(hào)進(jìn)入FPGA管腳,經(jīng)過(guò)idelaye2延時(shí),繞過(guò)ilogic進(jìn)入FPGA內(nèi)部邏輯的走線。注意這部分是專用走線(固定不變的走線,只要使用idelaye2,不使用ilogic,走線就不會(huì)變),不是可編程的。

同時(shí)用戶需要知道,外部信號(hào)進(jìn)入FPGA管腳后,只有經(jīng)過(guò)ilogic(包括繞過(guò))才能被FPGA內(nèi)部邏輯所使用。

接下來(lái)分析不使用idelaye2的信號(hào)輸入走線,找到din信號(hào)對(duì)應(yīng)管腳,如下圖所示。

wKgZomcZ5IaAdA4pAADZmLQCvms443.jpg

pYYBAGORftaABrbPAAAAjgjvZ2U927.jpg

圖9 din進(jìn)入fpga走線

放大din在ilogic部分的走線,如下所示。din的管腳輸入信號(hào)不經(jīng)過(guò)idelaye2,同時(shí)繞過(guò)ilogic后輸入到FPGA內(nèi)部邏輯。

wKgaomcZ5IaASqRBAAEUqxpjNbE900.jpg

圖10 din的ilogic走線

對(duì)比圖8和圖10就能找到前文出現(xiàn)錯(cuò)誤的原因了。如果使用了經(jīng)過(guò)idelaye2延時(shí)前后的同一個(gè)管腳輸入信號(hào),該如何走線?

如下圖所示,在進(jìn)入內(nèi)部邏輯之前,都需要繞過(guò)ilogic。藍(lán)色和紫色為idelaye2延時(shí)前的信號(hào)進(jìn)入內(nèi)部邏輯的走線,而紅色和紫色為idelaye2延時(shí)后的信號(hào)進(jìn)入內(nèi)部邏輯的走線,紫色為兩個(gè)信號(hào)重合的走線。

一根線不能同時(shí)傳輸兩個(gè)信號(hào),因此布局布線失敗。

pYYBAGORftaABrbPAAAAjgjvZ2U927.jpg

wKgZomcZ5IWAWwY1AAEkFbHP4E0056.jpg

圖11 idelaye2延時(shí)前后的信號(hào)走線

回到前文的問(wèn)題,ila0使用了dclk沒(méi)有經(jīng)過(guò)idlaye2延時(shí)的信號(hào)作為時(shí)鐘信號(hào),而ila1使用dclk經(jīng)過(guò)idelaye2延時(shí)后的信號(hào)作為時(shí)鐘信號(hào)。

同時(shí)使用了dclk延時(shí)前后的信號(hào),最終導(dǎo)致布局布線失敗。

04解決辦法

上述問(wèn)題的原因就是內(nèi)部邏輯同時(shí)使用idelaye2延時(shí)前后的兩個(gè)信號(hào)導(dǎo)致的,最直接的方法就是不這么去用,始終只使用其中一個(gè)就可以避免。

如果實(shí)在要這么用,也有其他方法,只不過(guò)會(huì)導(dǎo)致管腳到idelaye2的走線比較長(zhǎng),而且不是專用走線(每次布局后如果idelaye2位置發(fā)生變化,則走線延時(shí)也會(huì)變),引入的延時(shí)不穩(wěn)定性會(huì)導(dǎo)致調(diào)試很麻煩,且不易于移植,一般不建議這么做。

具體實(shí)現(xiàn)思路是,既然內(nèi)部要同時(shí)使用idelaye2延時(shí)前后的信號(hào),而dclk引腳繞過(guò)ilogic的走線知有一條,那么就先讓不經(jīng)過(guò)idelaye2的信號(hào)進(jìn)入內(nèi)部邏輯,然后在使用其余管腳的idelaye2來(lái)對(duì)輸入的信號(hào)進(jìn)行延時(shí),這樣不就解決了?

對(duì)應(yīng)代碼如下所示,將兩個(gè)ila的注釋取消,同時(shí)將idelaye2的DELAY_SRC參數(shù)設(shè)置為DATAIN,輸入來(lái)自內(nèi)部邏輯。

//--###############################################################################################
//--#
//--# File Name    : top
//--# Designer    : 數(shù)字站
//--# Tool      : Vivado 2017.4
//--# Design Date  : 2024
//--# Description  : 
//--# Version    : 0.0
//--# Coding scheme  : GBK(If the Chinese comment of the file is garbled, please do not save it and check whether the file is opened in GBK encoding mode)
//--#
//--###############################################################################################
module top (
    input                  clk        ,//系統(tǒng)時(shí)鐘信號(hào);
    input                  rst        ,//系統(tǒng)復(fù)位信號(hào),高電平有效;
    input                               dclk        ,//串行時(shí)鐘輸入;
    input                        din        ,//輸入數(shù)據(jù);
    output reg                      dout       //輸出數(shù)據(jù)信號(hào);
);
    reg     [9 : 0]                     din_r       ;


    wire                                dclk_r      ;
    wire                                clk_200m    ;


    //例化鎖相環(huán),生成idelaye2需要的200MHz時(shí)鐘信號(hào);
    clk_wiz_0 u_clk_wiz (
        .clk_out1   ( clk_200m  ),// output clk_out1
        .reset      ( rst       ),// input reset
        .clk_in1    ( clk       ) // input clk_in1
    );


    (* IODELAY_GROUP = "IODELAY_0" *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL
    IDELAYCTRL u_IDELAYCTRL (
        .RDY    (           ),// 1-bit output: Ready output
        .REFCLK ( clk_200m  ),// 1-bit input: Reference clock input
        .RST    ( rst       ) // 1-bit input: Active high reset input
    );


    //例化idelaye2對(duì)時(shí)鐘信號(hào)進(jìn)行延時(shí)24*78+600=24.72ns;
    (* IODELAY_GROUP = "IODELAY_0" *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL
    IDELAYE2 #(
        .CINVCTRL_SEL           ("FALSE"    ),//Enable dynamic clock inversion (FALSE, TRUE)
        .DELAY_SRC              ("DATAIN"   ),//Delay input (IDATAIN, DATAIN)
        .HIGH_PERFORMANCE_MODE  ("FALSE"    ),//Reduced jitter ("TRUE"), Reduced power ("FALSE")
        .IDELAY_TYPE            ("FIXED"    ),//FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
        .IDELAY_VALUE           (24         ),//Input delay tap setting (0-31)
        .PIPE_SEL               ("FALSE"    ),//Select pipelined mode, FALSE, TRUE
        .REFCLK_FREQUENCY       (200.0      ),//IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).
        .SIGNAL_PATTERN         ("CLOCK"    ) //DATA, CLOCK input signal
    )
    u_IDELAYE2 (
        .CNTVALUEOUT    (               ),//5-bit output: Counter value output
        .DATAOUT        ( dclk_r        ),//1-bit output: Delayed data output
        .C              ( clk_200m      ),//1-bit input: Clock input
        .CE             ( 1'b1          ),//1-bit input: Active high enable increment/decrement input
        .CINVCTRL       ( 'd0           ),//1-bit input: Dynamic clock inversion input
        .CNTVALUEIN     ( 'd0           ),//5-bit input: Counter value input
        .DATAIN         ( dclk          ),//1-bit input: Internal delay data input
        .IDATAIN        ( 'd0           ),//1-bit input: Data input from the I/O
        .INC            ( 'd0           ),//1-bit input: Increment / Decrement tap delay input
        .LD             ( 'd0           ),//1-bit input: Load IDELAY_VALUE input
        .LDPIPEEN       ( 'd0           ),//1-bit input: Enable PIPELINE register to load data input
        .REGRST         ( rst           ) //1-bit input: Active-high reset tap-delay input
    );


    //移位輸出數(shù)據(jù);
    always@(posedge dclk_r)begin
        {dout,din_r[9:0]} <= {din_r[9:0],din};
    end


    //ila使用延時(shí)前的時(shí)鐘采集din_r的數(shù)據(jù);
    ila_0 u_ila_0 (
        .clk    (dclk   ),// input wire clk
      .probe0 (din_r  ) // input wire [9:0] probe0
    );


    //ila使用延時(shí)后的時(shí)鐘采集din_r的數(shù)據(jù);
    ila_0 u_ila_1 (
        .clk    (dclk_r ),// input wire clk
      .probe0 (din_r  ) // input wire [9:0] probe0
    );


endmodule

050c1c98-91ad-11ef-a511-92fbcf53809c.png

圖12 idelaye2對(duì)內(nèi)部信號(hào)延時(shí)

重新綜合、布局布線,然后打開“Device”界面,找到dclk引腳。如下圖所示DCLK進(jìn)入FPGA后,通過(guò)藍(lán)色走線到達(dá)bufg輸入,然后經(jīng)過(guò)粉色走線到達(dá)右上角的一個(gè)管腳的idelaye2,然后黃色走線是idelaye2輸出信號(hào)。

0521cc78-91ad-11ef-a511-92fbcf53809c.png

圖13 修改后的布局

由此可知采用這種方式時(shí)藍(lán)色、粉色、黃色走線都是很長(zhǎng)的,導(dǎo)致延時(shí)特別大,有興趣的用戶可以看下時(shí)序報(bào)告,這個(gè)延時(shí)可能會(huì)比idelaye2能夠調(diào)節(jié)范圍還大,因此不建議使用。

這種使用方式不同芯片的idelaye2布局也基本上不相同,所以移植其實(shí)也麻煩。

除了約束以外,可以利用某些手段(比如bufr)去限制idelaye2布局位置,來(lái)減小走線延時(shí),但相比專用走線,還是沒(méi)有優(yōu)勢(shì)。

這種問(wèn)題能夠體現(xiàn)對(duì)于底層器件的理解,平時(shí)有時(shí)間可以留意一下器件布局布線的方式。

來(lái)源: 本文轉(zhuǎn)載自數(shù)字站公眾號(hào)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1642

    文章

    21918

    瀏覽量

    611979
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1856

    瀏覽量

    132659
  • 布線
    +關(guān)注

    關(guān)注

    9

    文章

    786

    瀏覽量

    84786
  • 輸入信號(hào)
    +關(guān)注

    關(guān)注

    0

    文章

    471

    瀏覽量

    12797

原文標(biāo)題:輸入信號(hào)繞過(guò)ilogic布線沖突引發(fā)的問(wèn)題(idelaye2使用)

文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    菜鳥想請(qǐng)教關(guān)于布局布線和chipshope的問(wèn)題。

    小白剛?cè)腴TFPGA2個(gè)月。?!,F(xiàn)在我的工程經(jīng)過(guò)modelsim仿真后,數(shù)據(jù)初步驗(yàn)證是沒(méi)問(wèn)題的,然后添加了簡(jiǎn)單的全局約束,時(shí)序報(bào)告顯示slack都是正數(shù),沒(méi)有報(bào)錯(cuò)。接著系統(tǒng)自動(dòng)布線,但是
    發(fā)表于 09-02 13:51

    FPGA去耦電容如何布局布線

    `各位大神,請(qǐng)問(wèn)FPGA去耦電容如何布局、布線?1.根據(jù)文檔,般去耦電容的數(shù)量都少于電源引腳,那么去耦電容要放到哪些管腳旁邊呢?2.以下三種方案哪種好?2.1電容放在PCB top層
    發(fā)表于 08-22 14:57

    PCB布局布線求解!

    PCB布局布線時(shí),是先布局,還是邊布局布線,最近做了塊板子,
    發(fā)表于 04-03 09:00

    PCB布局布線的設(shè)計(jì)技巧

    和約束條件會(huì)影響布局設(shè)計(jì)。自動(dòng)布線工具次只會(huì)考慮個(gè)信號(hào),通過(guò)設(shè)置布線的約束條件以及設(shè)定可布信
    發(fā)表于 11-22 15:25

    利用飛線手工布局布線

    個(gè)印制板的布線是否能夠順利完成,主要取決于布局,而且,
    發(fā)表于 04-16 20:37 ?640次閱讀

    布局布線技術(shù)的發(fā)展

    布局布線技術(shù)的發(fā)展 摘要:隨著微孔和單片高密度集成系統(tǒng)等新硬件技術(shù)的應(yīng)用,自由角度布線、自動(dòng)布局和3D布局
    發(fā)表于 03-25 11:26 ?738次閱讀

    pcb布線心得(流程詳解、元件布局布線與EMC)

    pcb布線技巧,輕松搞定布線、布局,主要包括:、元件布局基本規(guī)則;二、元件布線規(guī)則;為增加系統(tǒng)
    發(fā)表于 11-03 17:02 ?4203次閱讀

    PCB布局布線的100個(gè)基本問(wèn)題解答

    在電子產(chǎn)品設(shè)計(jì)中,PCB 布局布線是最重要的步,PCB 布局布線的好壞將直接影響電路的性能?,F(xiàn)在,雖然有很多軟件可以實(shí)現(xiàn)PCB 自動(dòng)
    的頭像 發(fā)表于 03-20 10:03 ?9663次閱讀

    PCB設(shè)計(jì)布局布線技巧分享

    工程師往往更關(guān)注電路的設(shè)計(jì)、最新的元器件以及代碼,認(rèn)為這些才是個(gè)電子產(chǎn)品項(xiàng)目中的重要部分,卻忽略了PCB布局、布線這個(gè)關(guān)鍵的環(huán)節(jié)。如果PCB布局
    發(fā)表于 09-13 08:00 ?1.2w次閱讀

    FPGA設(shè)計(jì)的塑封式布局布線介紹

    個(gè)環(huán)境中實(shí)施從合成到塑封式布局布線以及比特流生成的全套 FPGA 設(shè)計(jì)。界面中內(nèi)置了用于運(yùn)行布局
    的頭像 發(fā)表于 05-17 06:06 ?3040次閱讀
    <b class='flag-5'>FPGA</b>設(shè)計(jì)的塑封式<b class='flag-5'>布局</b>和<b class='flag-5'>布線</b>介紹

    FPGA布局布線

    布局布線 PlaceRoute 1 布局 我們前面做的那些設(shè)計(jì)流程得到的LUT門級(jí)網(wǎng)表就好比個(gè)購(gòu)物清單,即LUT門級(jí)網(wǎng)表。網(wǎng)表里提供的僅僅
    的頭像 發(fā)表于 10-25 10:25 ?8528次閱讀
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>布局</b><b class='flag-5'>布線</b>

    FPGA設(shè)計(jì)的五個(gè)主要任務(wù)

    FPGA設(shè)計(jì)的五個(gè)主要任務(wù):邏輯綜合、門級(jí)映射、整體功能邏輯布局、邏輯資源互連布線,最后生成FPGA的bit流
    的頭像 發(fā)表于 04-06 09:39 ?1161次閱讀

    PCB布局布線技巧104問(wèn)

    在電子產(chǎn)品設(shè)計(jì)中,PCB布局布線是最重要的步,PCB布局布線的好壞將直接影響電路的性能?,F(xiàn)在,雖然有很多軟件可以實(shí)現(xiàn)PCB自動(dòng)
    發(fā)表于 05-05 15:34 ?0次下載

    fpga布局布線算法加速

    現(xiàn)代電子設(shè)備中,針對(duì)復(fù)雜的數(shù)字電路,FPGA(Field-Programmable Gate Array)是種非常優(yōu)秀的可編程邏輯器件。在FPGA的設(shè)計(jì)過(guò)程中,布局
    的頭像 發(fā)表于 12-20 09:55 ?1138次閱讀

    FPGA布局布線的可行性 FPGA布局布線失敗怎么辦

    隨著電子技術(shù)的進(jìn)步.FPGA邏輯電路能完成的功能越來(lái)越多,同樣也帶來(lái)了個(gè)很大的問(wèn)題,即邏輯電路的規(guī)模越來(lái)越大,這意味著RTL代碼到FPGA的映射、
    的頭像 發(fā)表于 03-18 10:57 ?1141次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>布局</b><b class='flag-5'>布線</b>的可行性 <b class='flag-5'>FPGA</b><b class='flag-5'>布局</b><b class='flag-5'>布線</b>失敗怎么辦