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

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

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

物理約束實(shí)踐:網(wǎng)表約束LOCK_PINS

FPGA快樂學(xué)習(xí) ? 來源:FPGA快樂學(xué)習(xí) ? 作者:特權(quán)同學(xué) ? 2022-11-28 15:24 ? 次閱讀

d1891198-6d3f-11ed-8abf-dac502259ad0.jpg

概述

話說網(wǎng)表約束中的CLOCK_DEDICATED_ROUTE、MARK_DEBUG和DONT_TOUCH,在實(shí)際工程中常常都可能遇上。MARK_DEBUG和DONT_TOUCH在設(shè)計(jì)和調(diào)試中可能常常要用到,CLOCK_DEDICATED_ROUTE偶爾能夠應(yīng)應(yīng)急。而這里要介紹的LOCK_PINS,筆者至今沒有碰過,估計(jì)大家在實(shí)踐中恐怕也很難有機(jī)會(huì)或必要用上它。但誰知道呢?存在即是合理,相信Xilinx把這樣一個(gè)非常底層的約束搬上臺(tái)面,也一定有它的用場,本著萬一哪天能夠應(yīng)應(yīng)急的想法,我們也來了解一下這個(gè)LOCK_PINS的使用吧。

原理探究

網(wǎng)表約束LOCK_PINS約束的對象是Xilinx FPGA器件中LUT物理輸入端口和邏輯輸入端口的映射關(guān)系。關(guān)于LUT結(jié)構(gòu),大家可以參考Xilinx的ug474文檔,該文檔詳細(xì)介紹了Artix-7系列FPGA器件的邏輯資源。當(dāng)然,文檔中對于LUT的結(jié)構(gòu)描述中,只提及輸入端口,并沒有所謂物理輸入端口和邏輯輸入端口的概念。筆者認(rèn)為,ug474所涉及的LUT結(jié)構(gòu)的輸入端口,其實(shí)是包括邏輯輸入端口和物理輸入端口的,它們之間的連接也是可以布線算法的需要進(jìn)行靈活調(diào)整的。

如圖所示,LUT6中的物理輸入端口有A1~A6,邏輯輸入端口有I0~I5。在邏輯輸入端口和物理輸入端口之間,存在著一塊布線池(官方?jīng)]有這方面的介紹,筆者根據(jù)自己的理解進(jìn)行描述,僅供參考)。

d1b0ff46-6d3f-11ed-8abf-dac502259ad0.jpg

也就是說,物理輸入端口和邏輯輸入端口并不是固定I0-A1、I1-A2……這樣規(guī)規(guī)矩矩的成對連接的,它們的一一對應(yīng)關(guān)系是可以根據(jù)布線需要進(jìn)行調(diào)整的。之所以提供這樣的配對靈活性,我相信很大程度上是基于最優(yōu)化外部輸入接口(即連接到I0~I5的走線)的布線而設(shè)計(jì)的。而一旦進(jìn)行工程的布局布線后,LUT的邏輯輸入端口和物理輸入端口之間的一一對應(yīng)關(guān)系便會(huì)被固定下來。當(dāng)然了,此時(shí),作為設(shè)計(jì)者的你,基于某些特定的優(yōu)化目的,可以通過網(wǎng)表約束LOCK_PINS來鎖定某對或某幾對邏輯和物理輸入端口的映射關(guān)系??梢哉f,LOCK_PINS約束相當(dāng)?shù)讓樱瑢τ谒^的特定的優(yōu)化目的,筆者只在ug903文檔中找到“物理輸入端口A5和A6是最快的LUT輸入端口,所以可以使用LOCK_PINS將時(shí)序關(guān)鍵路徑約束到該端口上”這樣的描述。而筆者在ug474中并沒有找到Artix-7的LUT有類似的描述。當(dāng)然,或許ug903的這個(gè)描述是針對其它某個(gè)FPGA系列器件的LUT。不管怎樣,大家先有個(gè)概念,知道有這么回事,將來真遇到類似這么細(xì)節(jié)的問題時(shí),可以快速在這個(gè)方向上做進(jìn)一步的探索,免去“眾里尋他千百度”的力氣。

工程實(shí)踐

好了,原理說明白了,接著就動(dòng)手實(shí)踐一把。以《Verilog邊碼邊學(xué)》教程sim_201工程為例,打開工程后,保證工程已經(jīng)做過編譯,然后點(diǎn)擊IMPLEMENTATION->Open Implemented Design->Schematic,打開原理視圖。

d1cba648-6d3f-11ed-8abf-dac502259ad0.jpg

此時(shí),可以在Netlist界面下展開具體的網(wǎng)表,找一個(gè)信號(hào)進(jìn)行實(shí)踐。當(dāng)然了,實(shí)際應(yīng)用中,需要哪個(gè)信號(hào),可能是根據(jù)具體的需要而定的,這里我們只是為了實(shí)踐一下如何使用LOCK_PINS約束,所以就隨便找到如圖所示的uut_m_image_capture->Nets下的i_image_sensor_href_IBUF這個(gè)信號(hào)。

d1ed3b5a-6d3f-11ed-8abf-dac502259ad0.jpg

在i_image_sensor_href_IBUF信號(hào)上右鍵單擊,在彈出菜單中再單擊Schematic選項(xiàng)。

d20db790-6d3f-11ed-8abf-dac502259ad0.jpg

此時(shí)可以看到,Schematic(2)定位到了i_image_sensor_href_IBUF信號(hào)在原理圖中的位置。由于該信號(hào)連接的r_fifo_wren_i_1這個(gè)LUT有5個(gè)輸入端口,因此我們可以繼續(xù)雙擊r_fifo_wren_i_1這個(gè)LUT查看它所有的輸入端口。

d232fb7c-6d3f-11ed-8abf-dac502259ad0.jpg

r_fifo_wren_i_1的所有5個(gè)輸入端口如圖所示。

d24f8346-6d3f-11ed-8abf-dac502259ad0.jpg

當(dāng)我們把鼠標(biāo)停留在LUT的某個(gè)邏輯輸入端口上,就可以看到該邏輯輸入端口的相關(guān)信息。如圖所示,I1的信息中顯示,它所對應(yīng)的BEL pin,即物理輸入端口是A2。這是默認(rèn)FPGA布局布線的結(jié)果。

d2691d06-6d3f-11ed-8abf-dac502259ad0.jpg

此時(shí)可以在r_fifo_wren_i_5這個(gè)LUT上右鍵單擊,彈出菜單中再點(diǎn)擊Cell Properties…打開它的屬性信息進(jìn)行查看。

d28d0e96-6d3f-11ed-8abf-dac502259ad0.jpg

在屬性的Cell Pins頁面中,可以看到Name(即LUT邏輯輸入端口)、BELPin(即LUT物理輸入端口)以及Net(實(shí)際設(shè)計(jì)中布線信號(hào)的網(wǎng)絡(luò)名稱)之間的映射關(guān)系。

d2b296de-6d3f-11ed-8abf-dac502259ad0.jpg

此時(shí),我們可以在Tcl Console中輸入以下腳本并回車運(yùn)行,使用LOCK_PINS約束將I1和A6映射在一起,也就是I1不再和A2連接,A6也不再和I0連接。

set_property LOCK_PINS I1:A6 [get_celluut_m_image_capture/r_fifo_wren_i_1]

d3003704-6d3f-11ed-8abf-dac502259ad0.jpg

好奇的你或許想知道腳本中g(shù)et_cell后接的一串路徑名稱從何而得?如圖所示,在屬性的General頁面中Name一欄,就是目標(biāo)LUT的名稱uut_m_image_capture/r_fifo_wren_i_1。

d322060e-6d3f-11ed-8abf-dac502259ad0.jpg

在約束后,I1一定與A6連接在一起了,至于I0和A2是否會(huì)連接在一起,或者會(huì)不會(huì)因?yàn)槲覀兊募s束而打亂了其它邏輯輸入端口和物理輸入端口之間的映射關(guān)系,就由Vivado的算法自己決定了。

如圖所示,對于當(dāng)前的實(shí)例,最終I1與A6連接在一起,而I0則連接到了A5,而不是A2。大家不用覺得奇怪,因?yàn)槲覀冎患s束了I1和A6,其它邏輯和物理端口之間任何的連接映射關(guān)系都是有可能出現(xiàn)的。

d3440cea-6d3f-11ed-8abf-dac502259ad0.jpg

與時(shí)序約束一樣,網(wǎng)表約束LOCK_PINS雖然是物理約束,但本質(zhì)上也是約束設(shè)計(jì),在Tcl Console中運(yùn)行后,需要點(diǎn)擊Save Constrains保存到.xdc約束腳本中才會(huì)最終生效。

d35a417c-6d3f-11ed-8abf-dac502259ad0.jpg

如果我們要約束多對LUT邏輯和物理端口的映射關(guān)系,則可以運(yùn)行類似如下的腳本。

set example_lut[get_cells uut_m_image_capture/r_fifo_wren_i_1]

set_property LOCK_PINS {I0:A5 I1:A2} $example_lut

get_property LOCK_PINS $example_lut

如圖所示,以上腳本將I0和A5、I1和A2分別映射連接在一起了。

d376b046-6d3f-11ed-8abf-dac502259ad0.jpg

審核編輯:湯梓紅

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

    關(guān)注

    1629

    文章

    21738

    瀏覽量

    603464
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    965

    瀏覽量

    32082
  • 約束
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    12733
  • 網(wǎng)表
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    7649

原文標(biāo)題:物理約束實(shí)踐:網(wǎng)表約束LOCK_PINS

文章出處:【微信號(hào):FPGA快樂學(xué)習(xí),微信公眾號(hào):FPGA快樂學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Xilinx FPGA管腳物理約束介紹

    引言:本文我們簡單介紹下Xilinx FPGA管腳物理約束,包括位置(管腳)約束和電氣約束
    發(fā)表于 07-25 10:13 ?4975次閱讀

    物理約束實(shí)踐:I/O約束

    I/O約束(I/O Constraints)包括I/O標(biāo)準(zhǔn)(I/OStandard)約束和I/O位置(I/O location)約束。
    的頭像 發(fā)表于 11-18 16:42 ?1121次閱讀
    <b class='flag-5'>物理</b><b class='flag-5'>約束</b><b class='flag-5'>實(shí)踐</b>:I/O<b class='flag-5'>約束</b>

    時(shí)序約束之時(shí)序例外約束

    數(shù)。 set_multicycle_path2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]2. 偽路徑約束 存在于設(shè)計(jì)中的拓?fù)浣Y(jié)構(gòu),但沒有起到作用
    發(fā)表于 09-21 12:55

    物理約束之布局約束

    1. 單元布局約束set_property BELGTHE2_CHANNEL[get_cellsswitch_v2_i/srio_0/srio_gen2_0_inst
    發(fā)表于 09-26 15:32

    請問物理約束文件ADC可做哪些約束?

    物理約束文件ADC可做哪些約束
    發(fā)表于 08-11 08:37

    Adam Taylor玩轉(zhuǎn)MicroZed系列74:物理約束

    : ?放置約束——定義元件位置 ?布線約束——定義信號(hào)布線 ?I/O腳約束——定義I/O腳位置和I/O腳參數(shù) ?配置約束——定義配置方法 按照慣例,有一些
    發(fā)表于 02-08 02:20 ?298次閱讀
    Adam Taylor玩轉(zhuǎn)MicroZed系列74:<b class='flag-5'>物理</b><b class='flag-5'>約束</b>

    XDC約束物理約束的介紹

    觀看視頻,了解和學(xué)習(xí)有關(guān)XDC約束,包括時(shí)序,以及物理約束相關(guān)知識(shí)。
    的頭像 發(fā)表于 01-07 07:10 ?6218次閱讀
    XDC<b class='flag-5'>約束</b>及<b class='flag-5'>物理</b><b class='flag-5'>約束</b>的介紹

    FPGA時(shí)序約束案例:偽路徑約束介紹

    。 這樣會(huì)在xdc中自動(dòng)生成如下約束: set_false_path -from [get_clocks -of_objects [get_pins clk_gen_i0/clk_core_i0
    的頭像 發(fā)表于 11-14 11:28 ?2998次閱讀
    FPGA時(shí)序<b class='flag-5'>約束</b>案例:偽路徑<b class='flag-5'>約束</b>介紹

    FPGA案例之衍生時(shí)鐘約束

    /out_ddr_flop_spi_clk_i0/ODDR_inst/C] -divide_by 1 -invert [get_ports spi_clk_pin] 這里需要注意的是,如果該約束中使用get_pins(即產(chǎn)生的時(shí)鐘并非輸出到管腳),那么無
    的頭像 發(fā)表于 11-17 16:28 ?2331次閱讀
    FPGA案例之衍生時(shí)鐘<b class='flag-5'>約束</b>

    簡述Xilinx FPGA管腳物理約束解析

    引言:本文我們簡單介紹下Xilinx FPGA管腳物理約束,包括位置(管腳)約束和電氣約束。
    的頭像 發(fā)表于 04-27 10:36 ?4544次閱讀
    簡述Xilinx FPGA管腳<b class='flag-5'>物理</b><b class='flag-5'>約束</b>解析

    Gowin設(shè)計(jì)物理約束用戶指南

    電子發(fā)燒友網(wǎng)站提供《Gowin設(shè)計(jì)物理約束用戶指南 .pdf》資料免費(fèi)下載
    發(fā)表于 09-15 16:07 ?0次下載
    Gowin設(shè)計(jì)<b class='flag-5'>物理</b><b class='flag-5'>約束</b>用戶指南

    物理約束實(shí)踐網(wǎng)約束DONT_TOUCH

    信號(hào),此時(shí)就可以使用DONT_TOUCH約束達(dá)到保留這些信號(hào)的目的。又如,有時(shí)在設(shè)計(jì)中會(huì)對一些高扇出的信號(hào)進(jìn)行手動(dòng)的邏輯復(fù)制,也可以使用DONT_TOUCH約束避免它們被優(yōu)化掉。 工程實(shí)踐 ? 下面有一個(gè)簡單的例子,看看DONT
    的頭像 發(fā)表于 11-12 14:14 ?3329次閱讀

    如何管理約束文件?

    的場景是:時(shí)序約束放在一個(gè)文件里,物理約束放在一個(gè)文件里。如下圖所示。圖中wave_gen_timing.xdc中寫的是時(shí)序約束,wave_gen_
    的頭像 發(fā)表于 12-08 13:48 ?1429次閱讀

    Xilinx Vivado LOCK_PINS屬性介紹

    LOCK_PINS 是 Xilinx Vivado 做物理約束的屬性之一。用來將LUT的邏輯輸入(I0,,I1,I2...)綁定到其物理輸入pin上(A6,A5,A4...)。
    的頭像 發(fā)表于 01-11 10:52 ?1156次閱讀

    約束、時(shí)序分析的概念

    的數(shù)據(jù)交換可靠?如何使用I/O邏輯單元內(nèi)部的寄存器資源?如何進(jìn)行物理區(qū)域約束,完成物理綜合和物理實(shí)現(xiàn)?為了解決大家的疑難,我們將逐一討論這些問題。(注:以下主要設(shè)計(jì)時(shí)序
    的頭像 發(fā)表于 05-29 10:06 ?802次閱讀
    <b class='flag-5'>約束</b>、時(shí)序分析的概念