在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Vivado中實現邏輯鎖定和增量編譯工程實例說明

FPGA之家 ? 來源:未知 ? 2019-07-06 10:32 ? 次閱讀

本文針對Vivado中實現的邏輯鎖定和增量編譯進行的工程實例介紹,文中有對應工程的下載地址。友情提示:(1)增量編譯只允許修改當前工程不超過5%的時候才有效,一般應用于較大工程添加修改chipscope監測信號使用;(2)邏輯模塊鎖定不是解決時序問題的最終辦法,僅用來確認某些FPGA管腳的時序問題,實際中常常采用原語例化BUFG之類的處理模塊來解決,而內部模塊的時序問題還是需要必須認真的修正的!

Quartus的邏輯鎖定

該部分引用本公眾號上一篇時序約束文章中的內容,在Quartus中采用邏輯鎖定的辦法來解決FPGA和外部接口的時序問題,也就是輸入輸出的寄存Rxd/Txd的寄存器到外部器件寄存器的時序問題。

GMII接收數據路徑分析

Tpcb是外部PCB板上數據的延時,Tdata_i是數據的輸入延時,Gmii_rx_interface相當于Rxd進入FPGA后的第一個寄存器模塊(可以專門寫一個接口模塊,將Rxd數據打一拍,用于接收數據)。如果Gmii_rx_interface距離接口Rxd較遠,Tdata_i的路徑較長,布局布線時Rxd的八根線時延相差可能就比較大,所以我們應讓這個模塊放在距離Rxd接口較近的地方。

Quartus軟件中有一個LogicLock(物理分區)功能,把Gmii_rx_interface模塊建立成一個LogicLock分區但并不對分區位置和大小進行固定,然后重新編譯工程。布局布線后就可以在chipplaner工具中看到這個分區的位置,如下圖所示(放大可以看清),Gmii_rx_interface模塊距離Rxd接口位置很遠,布局布線時,輸入信號要繞很長一段距離才會到達輸入的寄存器,資源占用很多時,Rxd的8根數據線長度不一,很容易造成時序問題。

未固定分區位置時布局布線結果

把Gmii_rx_interface模塊分區移動到Rxd接口附近進行固定然后重新編譯工程,布局布線后該邏輯分區就會在Rxd接口附近,從而保證輸入數據接口進入FPGA的第一個寄存器的時延在一定范圍內,保證時序要求。

采用LogicLock后,GMII寄存器接口位置

Vivado設計鎖定與增量編譯

1、研究目標

希望把之前驗證過的模塊固定在fpga上某個位置,然后再在這個基礎上添加其它代碼再進行增量編譯,不會影響之前已經固定好的模塊。

2、設計鎖定與增量編譯方法

為了實現對模塊的布局(place)、布線(route)的鎖定,僅適用增量編譯是不夠的,因為增量編譯的本質目的是為了實現編譯時間的縮短,還需要引入設計鎖定,設計鎖定的TCL命令是:

lock_design–level routing

下面舉例說明具體的操作方法。

(1)建立工程:建立一個工程,走完綜合實現的流程,如圖1所示,該工程將作為樣例工程(工程名:incre_compile_demo),將該工程備份一份(工程名:initial_project,后面對比要用到這個工程);

圖1 建好的工程

(2)找到dcp文件:增量編譯需要有一個參考文件,這個參考文件是“參考設計”實現之后生成的,后綴是“.dcp”,該文件的路徑一般在“..\project_1\project_1.runs\impl_1”路徑下,如圖2所示,新建一個文件夾(名字是dcp_file),將該文件復制到其中,如圖3所示;

圖2 dcp文件

圖3 新建文件夾,復制dcp文件

(3)鎖定設計:前面說道,簡單的增量編譯是不能保證模塊固定在某個位置的,為了實現這一點,需要對設計進行鎖定,方法是,打開一個新的Vivado界面,然后打開dcp_file文件夾下的dcp文件(注意選擇“open checkpoint”),如圖4所示;打開后,在TCL Console中輸入命令:“lock_design –level routing”,點擊左上角保存,如圖5所示,做完這一步后,設計就鎖定好了,dcp文件就可以用了;

圖4 vivado打開dcp界面

圖5 鎖定設計并保存

(4)增量編譯:

1)修改代碼,將頂層模塊(test_compare.v)line263-line266注釋取消,保存,如圖6所示;

圖6 改代碼

2)在主界面菜單欄處,點:Flow> Create Runs;

3)選both,點next,如圖7所示;

圖7 選both

4)勾選make active,點next,如圖8所示;

圖8 make active

5)選Do notlaunch now,點next,如圖9所示;

圖9 Do not launch now

6)完成后如圖10所示;

圖10 新的run已建好

7)在impl_2右鍵,選擇“Set Incremental Compile”,選擇步驟(3)中準備好的dcp文件,示意圖如圖11所示(注意這只是一個示意圖,圖中選的文件不是步驟(3)準備好的那個文件)

8)開始綜合、實現,完成增量編譯過程。

圖11 選擇參考dcp文件

3、正確性驗證

怎么證明增量編譯后,原始設計成功鎖定了呢?我們來做一個對照實驗。

樣本1:原始工程,名稱是: initial_project;

樣本2:增量編譯工程,名稱是: incre_compile_demo;

樣本3:原始工程復制一份出來,不進行增量編譯,直接修改代碼(見圖6),重新綜合實現,名稱是:modify_project。

打開三個工程,之后open implemented design,選取幾個模塊,觀察其在FPGA上的位置,發現樣本1和樣本2位置完全一樣,而樣本3和前兩個樣本不一樣,說明設計鎖定是成功的,如圖12、13、14所示。

圖12 樣本1位置觀察

圖13 樣本2位置觀察

圖14 樣本3位置觀察

上述實例工程百度網盤下載鏈接:

鏈接:https://pan.baidu.com/s/1EuRnBF3aPR3YFrBMCl2e-Q

提取碼:v1tr

Vivado下如何鎖定設計的模塊的布局布線

Xilinx官方論壇上也有相關問題的回答。

https://forums.xilinx.com/t5/Vivado/Vivado%E4%B8%8B%E5%A6%82%E4%BD%95%E9%94%81%E5%AE%9A%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%9D%97%E7%9A%84%E5%B8%83%E5%B1%80%E5%B8%83%E7%BA%BF/td-p/885693。

Vivado下如何鎖定設計模塊的布局布線

問題:

我現在設計了一個延時模塊,應用后需要把該模塊的布局和布線全部鎖定,然后在別的項目中直接調用?,F在布局沒有問題。可以通過約束文件來鎖定,就是布線不能大范圍鎖定,否則應用時會失敗。我已經嘗試過增量編譯(調用DCP文件)的功能,發現在增量編譯中布局布線并不是全部不變的,個別走線也是會變的。請問有辦法把布線也固定下來嗎?(Tool: Vivado17.3 Device: K7)

回答1:如果你用的是Ultrascale/Ultrascale+ , 我覺得PR是個不錯的選擇,你的目標模塊可以放在靜態部分,只占據很小的一塊面積,剩下大塊的動態部分.但是7系列有很多primitive不能放在動態,靜態的部分包含的邏輯過多,剩下供你修改的邏輯偏少,不太適合目前的應用場景.

回答2:關于鎖定某一個net的布線路徑,請參考以下步驟:

打開跑完布局布線的工程,Open Implemented Design

找到你要鎖定布線的net,選中,右鍵菜單點擊Fixed Routing,如下圖所示:

3. Tcl Console里面會打印出一些命令,然后在Tcl Console里面敲命令:write_xdc

4. 打開導出的xdc,在最下面的部分會有所有元件的位置鎖定以及FIXED_ROUTE,示例如下:

5. 另外還需注意的是,負載中有LUT的話需要將LUT的輸入pin也鎖住。以下圖的LUT2為例,在其property窗口中找到Cell pins,信號是連到LUT2的I0端,映射到BEL pin是A3。

因此上述導出的位置鎖定約束中還有一個LOCK_PINS的設置:

set_property LOCK_PINS {I0:A3} [get_cells clk_gen_i0/rst_meta_i_1]

6. 將這部分有關鎖定的約束拷貝到你工程的約束文件中,重新跑implementation,這條線會按照原先的結果布。

溫馨提示:

我們并不建議完全鎖死某個模塊的所有布線,當合入的工程比較復雜,用到的布線資源較密集時,工具沒有靈活性去調整和優化,有很大的概率會布線失敗。

劃分靜態區和動態區

除了上述的邏輯鎖定方法之外,Xilinx 的FPGA還提供了靜態區和動態區的劃分也可以實現邏輯的鎖定。只不過靜態區占據了大多數的空間,動態區是可以隨意修改的小部分空間。

FPGA提供了現場編程和重新編程的靈活性,無需通過改進的設計進行重新制造。部分重配置(PR)進一步提高了這種靈活性,允許通過加載部分配置文件(通常是部分BIT文件)來修改操作FPGA設計。在完整的BIT文件配置FPGA之后,可以下載部分BIT文件以修改FPGA中的可重配置區域,而不會影響在未重新配置的設備部分上運行的應用程序的完整性。

部分可重構的基本前提

如圖所示,通過下載幾個部分BIT文件A1.bit,A2.bit,A3.bit或A4.bit中的一個來修改在重新配置塊A中實現的功能。 FPGA設計中的邏輯分為兩種不同的類型,可重構邏輯和靜態邏輯。 FPGA塊的灰色區域表示靜態邏輯,標記為Reconfig Block“A”的塊部分表示可重配置邏輯。靜態邏輯仍然有效,并且不受加載部分BIT文件的影響??芍嘏渲眠壿嬘刹糠諦IT文件的內容替換。

為什么在單個FPGA器件上動態地對多個硬件進行時間復用的能力是有利的。這些包括:

?減小實現給定功能所需的FPGA器件尺寸,從而降低成本和功耗

?為應用可用的算法或協議選擇提供靈活性

?實現設計安全性的新技術

?提高FPGA容錯能力

?加速可配置計算

除了減小尺寸,重量,功耗和成本之外,部分重配置還可以實現沒有它的新型FPGA設計。

更詳細介紹請參考官方文檔:

UG909:Design Considerations and Guidelines for 7 Series and Zynq Devices

有關部分可重構部分的內容請繼續關注我們的公眾號后續內容,通過ICAP實現對單個LUT的在線實時修改,敬請期待。

實現不同模塊的物理隔離

我們還可以通過Xilinx分區技術,來實現不同模塊布局布線在同一塊FPGA芯片的不同位置,中間可以用隔離柵欄來隔離開。

使用CLB平鋪的水平和垂直隔離柵欄的PlanAhead工具視圖

通過Xilinx分區技術,可以在單個FPGA中開發出包含多個隔離功能的安全可靠的單芯片解決方案。在使用FPGA設計技術和編碼樣式時,只需對開發流程進行適度修改即可實現安全或安全關鍵的解決方案。 IDF開發要求設計人員在設計過程中更早地考慮布局規劃,以確保在邏輯,路由和I / O緩沖器(IOB)中實現適當的隔離。除了早期布局規劃之外,開發流程是基于分區的(即,用戶希望隔離的每個功能必須處于其自己的層次結構級別)。從這里開始,設計師可以采用兩種方法中的一種。如果設計者希望確保不會發生不必要的冗余優化,則必須獨立于其他分區來合成和實現每個隔離的功能。實現每個分區后,設計將合并為扁平FPGA設計,以進行器件配置。如果設計者希望使用其他技術來防止這種優化,他們可以合成完整的設計,同時小心維護至少一個層次結構,使得IDF約束可以應用于需要隔離的每個分區。雖然這種流程要求FPGA設計人員脫離傳統的FPGA開發流程,但分區方法確實具有一定的優勢。如果隔離分區在設計周期的后期需要更改,則僅修改該特定功能,而其余分區保持不變。

上圖示例設計包括兩個冗余高級加密標準(AES)加密模塊,其輸出發送到比較器(COMPARE)塊,以及用于緩沖和隔離數據和鍵輸入的I / O(INOUT)模塊。冗余AES加密模塊,比較功能和I / O(INOUT)模塊都在一個FPGA中實現隔離。該設計可以通過位于其中一個AES引擎上的按鈕注入錯誤。由比較塊驅動的LED指示AES模塊的輸出何時不匹配。

另外,在Zynq-7000系列FPGA內部帶有ARM硬核的FPGA內部也是實現了PS部分(ARM硬核)和PL部分(FPGA部分)的隔離。如下圖:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21773

    瀏覽量

    604669
  • 寄存器
    +關注

    關注

    31

    文章

    5359

    瀏覽量

    120805
  • Vivado
    +關注

    關注

    19

    文章

    815

    瀏覽量

    66710

原文標題:Vivado設計鎖定與增量編譯(附工程)

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    淺析可提升Vivado編譯效率的增量編譯方法

    增量編譯:使用增量編譯滿足最后時刻 HDL 變動需求,僅針對已變動邏輯進行布局布線,從而可節省時間。
    的頭像 發表于 12-13 10:14 ?5523次閱讀

    介紹一種設計鎖定增量編譯方法

    增量實現由哪幾個流程構成?增量實現流程有哪幾種模式?怎么證明增量編譯后,原始設計成功
    發表于 02-16 07:54

    Vivado的Incremental Compile增量編譯技術詳解

    Incremental Compile增量編譯Vivado提供的一項高階功能。目的旨在當設計微小的改變時,重用綜合和布局布線的結果,縮短編譯時間。
    的頭像 發表于 07-05 06:06 ?1.1w次閱讀

    Vivado Design Suite 2015.3的新功能介紹

    了解Vivado實現2015.3的新增量編譯功能,包括更好地處理物理優化和自動
    的頭像 發表于 11-20 06:55 ?2634次閱讀

    Vivado Design Suite 2015.3新增量編譯功能介紹

    了解Vivado實現2015.3的新增量編譯功能,包括更好地處理物理優化和自動
    的頭像 發表于 11-20 06:56 ?2881次閱讀

    引入增量編譯流程進行調試的好處與步驟

    了解使用Vivado 2016.1引入的增量編譯流程進行調試的好處,以及在使用增量編譯
    的頭像 發表于 11-30 06:19 ?3022次閱讀
    引入<b class='flag-5'>增量</b><b class='flag-5'>編譯</b>流程進行調試的好處與步驟

    Vivado 2015.3的新增量編譯功能介紹

    了解Vivado實現2015.3的新增量編譯功能,包括更好地處理物理優化和自動
    的頭像 發表于 11-29 06:32 ?3707次閱讀

    Vivado 2015.3的新增量編譯功能

    了解Vivado實現2015.3的新增量編譯功能,包括更好地處理物理優化和自動
    的頭像 發表于 11-30 19:24 ?4550次閱讀

    講述增量編譯方法,提高Vivado編譯效率

    當RTL代碼修改較少時,使用增量編譯功能可以提高工程編譯速度,Incremental Compile增量
    的頭像 發表于 01-22 17:27 ?1w次閱讀
    講述<b class='flag-5'>增量</b><b class='flag-5'>編譯</b>方法,提高<b class='flag-5'>Vivado</b><b class='flag-5'>編譯</b>效率

    淺析Vivado增量編譯與設計鎖定方法與驗證

    所謂增量實現,更嚴格地講是增量布局和增量布線。它是在設計改動較小的情形下參考原始設計的布局、布線結果,將其中未改動的模塊、引腳和網線等直接復用,而對發生改變的部分重新布局、布線。
    的頭像 發表于 04-14 12:01 ?2969次閱讀
    淺析<b class='flag-5'>Vivado</b><b class='flag-5'>中</b><b class='flag-5'>增量</b><b class='flag-5'>編譯</b>與設計<b class='flag-5'>鎖定</b>方法與驗證

    Vivadoz增量編譯與設計鎖定

    關于增量編譯所謂增量實現,更嚴格地講是增量布局和增量布線。它是在設計改動較小的情形下參考原始設計
    發表于 12-20 19:11 ?6次下載
    Vivadoz<b class='flag-5'>中</b><b class='flag-5'>增量</b><b class='flag-5'>編譯</b>與設計<b class='flag-5'>鎖定</b>

    Vivado設計鎖定增量編譯方法簡析

    增量實現由兩個流程構成:原始流程和增量流程,如圖所示。其中,原始流程提供網表。
    的頭像 發表于 10-10 14:16 ?1749次閱讀

    Quartus邏輯鎖定增量編譯

    邏輯鎖定功能可以將FPGA的代碼模塊在固定區域實現,優化時序性能,提升設計可靠性。 增量編譯
    的頭像 發表于 05-25 11:22 ?1748次閱讀
    Quartus<b class='flag-5'>中</b>的<b class='flag-5'>邏輯</b><b class='flag-5'>鎖定</b>與<b class='flag-5'>增量</b><b class='flag-5'>編譯</b>

    Vivado增量編譯的基本概念、優點、使用方法以及注意事項

    隨著FPGA設計的復雜度不斷提高,設計人員需要選擇更為高效的設計流程來保證開發效率和減少開發成本。其中,Vivado增量編譯是一種非常重要的設計流程。本文將介紹Vivado
    的頭像 發表于 05-25 18:25 ?4834次閱讀
    <b class='flag-5'>Vivado</b><b class='flag-5'>增量</b><b class='flag-5'>編譯</b>的基本概念、優點、使用方法以及注意事項

    Xilinx Vivado使用增量實現

    增量實現自從首次獲得支持以來,不斷升級演變,在此過程已添加了多項針對性能和編譯時間的增強功能。它解決了實現階段針對快速迭代的需求,顯著節省
    的頭像 發表于 09-04 10:07 ?908次閱讀
    Xilinx <b class='flag-5'>Vivado</b>使用<b class='flag-5'>增量</b><b class='flag-5'>實現</b>
    主站蜘蛛池模板: 欧美另类亚洲一区二区| 精品国产免费观看一区高清| 女bbbbxxxx毛片视频0| 人人福利| 国产亚洲精品久久久久久久软件| 国产福利精品视频| 欧美性色综合网| 亚洲 欧美 视频| 狠狠干精品| 亚州黄色网址| 日韩婷婷| 哪里可以看免费毛片| 欧美一级看片a免费观看| 国产午夜毛片v一区二区三区| se色成人亚洲综合| 一区二区三区免费| 在线免费色| 乱人伦的小说| 影音先锋ady69色资源网站 | 岛国毛片| 天天射久久| nxgx欧美| 久久久久国产一级毛片高清片| 校园激情综合网| 免费看黄色片的软件| 碰免费人人人视频| 国内精品一级毛片免费看| 夜夜操网| 国产精品午夜在线观看| 亚洲视屏一区| 天天射天天摸| 久久这里只有精品1| 午夜免费视频观看| 福利一区在线观看| 狂捣猛撞侍卫攻双性王爷受| 色婷婷影院| 国产欧美日韩电影| 欧美全免费aaaaaa特黄在线| 一区二区免费视频| 四虎国产精品4hu永久| 韩国三级日本三级在线观看|