1. 程式人生 > >Vivado使用技巧(10):編輯與改寫IP核原始檔

Vivado使用技巧(10):編輯與改寫IP核原始檔

有些時候,根據設計需求可能會想要修改IP核生成的原始檔(只能修改未加密檔案),包括HDL檔案和XDC約束檔案。 這種修改不能直接修改原始檔,因為在後續設計流程中,IP可能會復位或重新生成,導致修改操作被複原。本文將介紹編輯與改寫IP核原始檔的方法,不過仍然需要注意兩點:

  • 某些IP核包含其它的層次化子IP核,這類IP核原始檔不可修改;
  • IP核的Core Cotainer特性必須被禁用。

改寫IP約束檔案

IP核生成時會生成相應的約束檔案,包括物理約束(physical constraint)和時序約束(timing constraint)。可能需要修改的物理約束有LOC、PACKAGE_PIN等;部分時序約束可以修改,但是在*_ooc.xdc中定義的系統工作時鐘頻率強烈建議不要修改。

修改IP約束有兩種方法:(1).使用下文描述的特殊方法編輯IP的XDC檔案;(2).XDC檔案有一個編譯順序屬性,IP核的XDC檔案該屬性為EARLY,較早執行;使用者自定義的頂層約束檔案該屬性為NORMAL,較晚執行。因此可以通過使用者約束檔案(或Tcl檔案)來重新約束某一物件,達到改寫的效果。

在綜合IP核時,物理約束會被忽略,因此改寫物理約束的效果只會在實現階段才能看見;而時序約束的改寫在綜合和實現階段都會使用。但是有如下兩種特例:

  • XDC命令通常按順序執行,但是對於時序約束而言並不總是如此。比如假設一個時序路徑設定已經失敗,之後又對該路徑的max_delay做了約束,這樣並不會改變路徑的失敗狀態,因為路徑失敗有更高的優先順序,這種情況下必須通過編輯IP原始檔來實現修改;

  • 某些操作和命令不能再XDC檔案中執行,必須通過Tcl檔案來實現。比如想要改變BUFG_GT單元的LOC屬性,設計者必須刪除當前的設定後才能設定新的LOC。執行該操作用到的reset_property命令只能在Tcl檔案中執行。

設定IP約束適用範圍

生成的IP核要在設計中例項化,將IP約束應用到IP的例項化單元中有兩個屬性可以控制:

  • SCOPED_TO_REF:規定XDC檔案應用到哪些模組;
  • SCOPED_TO_CELLS:規定XDC檔案應用到模組中的哪些單元。

在Tcl Console中輸入“report_compile_order -constraints”命令可以檢視這兩個屬性及XDC檔案的編譯順序,如下圖:
這裡寫圖片描述


SCOPED_TO_REF屬性通常是IP核的使用者設定名稱;SCOPED_TO_CELLS屬性通常在Verilog中為inst,在VHDL中為U0。最好的設計方法是建立一個新的XDC或Tcl檔案,將所有的XDC/Tcl命令放在該檔案中,用來改寫IP的XDC檔案,並且設定相應的SCOPED_TO_REF和SCOPED_TO_CELLS屬性。具體步驟如下:

1.建立一個新的XDC或Tcl檔案並新增到狀態為Active的約束集中;
2.將所有需要改寫IP XDC的XDC或Tcl命令放在新檔案中;
3.使用set_property命令設定新檔案的兩個屬性,相關語句如下:

set_property SCOPED_TO_REF <REF> [get_files <new XDC/Tcl file>]
set_property SCOPED_TO_CELLS <CELL> [get_files <new XDC/Tcl file>]

4.將XDC/Tcl檔案標記為僅用於實現:

set_property USED_IN IMPLEMENTATION [get_files <netw XDC/Tcl file>]

編輯IP原始檔

編輯IP之前需要先生成所有的IP核相關檔案,包括DCP設計檢查點檔案。使用下面命令將XCI檔案的ISMANAGED屬性設定為False:

set_property IS_MANAGED false [get_files <IP_NAME>.xci]

如果IP核是一個複雜的子系統,會提示如下錯誤:

ERROR: [IP_Flow 19-3666] The is_managed property cannot be directly modified for hierarchical IP.

如果IP核啟用了Core Cotainer,會提示如下錯誤:

ERROR: [IP_Flow 19-4671] The is_managed property cannot be directly modified for IP in a core container.

這也是本文開頭提到的兩點限制。經過上述設定,IP核的IS_LOCKED屬性會變為TRUE,且IP圖示改變,如下圖:
這裡寫圖片描述
點選Tools->Report->Report IP Status報告IP狀態,可以檢視到IP核狀態為“User-managed IP”,該狀態下即可對IP核的未加密HDL檔案和XDC檔案進行修改:
這裡寫圖片描述
完成需要的編輯之後,必須在Tcl控制檯中復位IP,使用“reset_run _synth_1”命令,之後使用“launch_run _synth_1”使用修改後的HDL或約束檔案重新執行IP。這樣便完成了對IP原始檔的編輯。

雖然IP子系統的IS_MANAGED屬性不允許修改,但可以通過如下途徑完成對IP子系統的原始檔修改:其餘步驟都相同,只是設定屬性步驟替換為將Vivado的編輯器設定為其它編輯器(不用預設文字編輯器),在磁碟中直接編輯IP核的RTL原始檔。需要注意,相關狀態不會顯示在Vivado中,因此設計者需要自己明白檔案的狀態。

總而言之,修改IP核的原始檔是一件很危險的事,因為可能會導致IP核不能正常工作。修改之前要確保自己的設計目標;修改後要驗證IP核的功能準確性。

相關推薦

Vivado使用技巧10編輯改寫IP原始檔

有些時候,根據設計需求可能會想要修改IP核生成的原始檔(只能修改未加密檔案),包括HDL檔案和XDC約束檔案。 這種修改不能直接修改原始檔,因為在後續設計流程中,IP可能會復位或重新生成,導致修改操作被複原。本文將介紹編輯與改寫IP核原始檔的方法,不過仍然需要注

解讀ASP.NET 5 & MVC6系列10ControllerAction

我們知道在MVC5和之前的版本,兩個框架的生命週期是不一樣的,在新版MVC6中,MVC Controller/Web API Controller已經合二為一了,本章我們主要講解Controller和Action的定義與使用,以及在MVC框架中,如何根據路由查詢相應的Controller和Action。 Co

Vivado使用技巧29約束功能概述

設計約束概述 設計約束就是定義編譯過程中必須滿足的需求,只有這樣才能保證在板子上工作時功能正確。但不是全部約束在所有過程中都會使用,比如物理約束只用在佈局和佈線過程中。Vivado工具的綜合和實現演算法時時序驅動型的,因此必須建立合適的時序約束。我們必須根據應用

Vivado使用技巧27RAM編寫技巧

Vivado綜合可以理解多種多樣的RAM編寫方式,將其對映到分散式RAM或塊RAM中。兩種實現方法在向RAM寫入資料時都是採取同步方式,區別在於從RAM讀取資料時,分散式RAM採用非同步方式,塊RAM採用同步方式。使用RAM_STYLE屬性可以強制規定使用哪種方

大資料求索10 解決ElasticSearch中文搜尋無結果------ik分詞器的安裝使用

大資料求索(10): 解決ElasticSearch中文搜尋無結果-----IK中文分詞器的安裝與使用 問題所在 在中文情況下,ES預設分詞器會將漢字切分為一個一個的漢字,所以當搜尋詞語的時候,會發現無法找到結果。 解決辦法 有很多其他的分詞器外掛可以替代,這裡使用最常用

Vivado使用技巧32IO延遲的約束方法

上一篇講述了對時鐘的約束方法,時鐘不僅對設計很重要,約束情況也很多、很複雜,需要一定的經驗。本文將講述另一種重要的約束:I/O延遲,但與時鐘約束相比就簡單的多,本文篇幅也相對較少。 為了對設計外部的時序情況進行精確建模,設計者必須設定輸入和輸出埠的時序資訊。Vi

Vivado使用技巧1使用Tcl在Shell中進行FPGA開發

概述   通常我們使用的是Vivado IDE進行FPGA的開發,IDE提供了圖形化的介面和自動化管理方案,我們只需要點選幾個按鈕就會得到結果。有時候還會用到另外一種開發方式:在Vivado Tcl Shell中使用Tcl命令的方式控制開發設計流程。使用Tcl

Vivado使用技巧9COE檔案使用方法

COE檔案 在某些IP核的配置中,需要使用COE(Coefficient)檔案來傳遞引數,正如《FPGA數字訊號處理系列》中我多次使用MATLAB自動生成FIR濾波器所需的濾波係數檔案。 COE檔案是一種ASCII文字檔案,檔案頭部定義資料基數(Radix)

Vivado使用技巧34路徑分割現象

上文提到,進行最小/最大延遲約束時,set_max_delay和set_min_delay命令要設定-from和-to選項。但是如果起點和終點設定的不合理(具體見第33篇),便會導致出現路徑分割(Path Segmentation)。 非法的起點 下面舉一個例

Vivado使用技巧2封裝自己設計的IP

概述   Vivado在設計時可以感覺到一種趨勢,它鼓勵用IP核的方式進行設計。“IP Integrator”提供了原理圖設計的方式,只需要在其中呼叫設計好的IP核連線。IP核一部分來自於Xilinx官方IP;一部分來自於第三方IP,其中有的是在網路上開源的;

Vivado使用技巧25Block Synthesis技術

本系列第22~24篇介紹了Vivado綜合技術中的各個方面,這裡先概述一下:Vivado綜合支援使用多種策略(Strategy)和全域性設定(Setting)。在RTL或XDC檔案中,可以用綜合屬性來改寫某些設定選項。目前設計越複雜,全域性設定方式限制了設計的潛

Vivado使用技巧26HDL編寫技巧

在Vivado中進行HDL程式碼設計,不僅需要描述數字邏輯電路中的常用功能,還要考慮如何發揮Xilinx器件的架構優勢。目前常用的HDL語言有三種。VHDL語言的優勢有: 語法規則更加嚴格; 在HDL原始碼中初始化RAM元件更容易; 支援package; 自

Vivado使用技巧19使用Vivado Simulator

Vivado Simulator基本操作 Vivado Simulator是一款硬體描述語言事件驅動的模擬器,支援功能模擬和時序模擬,支援VHDL、Verilog、SystemVerilog和混合語言模擬。點選執行模擬後,工具欄中顯示了控制模擬過程的常用功能按

Python 影象處理 OpenCV 10影象處理形態學之頂帽運算黑帽運算

![](https://cdn.geekdigging.com/opencv/opencv_header.png) 前文傳送門: [「Python 影象處理 OpenCV (1):入門」](https://www.geekdigging.com/2020/05/17/5513454552/) [「Pyt

Windows Phone開發10常用控件

androi chm att size near grid txt idt inf Windows Phone的控件有幾個來源,和傳統的桌面應用程序開發或Web開發一樣,有默認提供的控件和第三方開者發布的控件。一般而言,如果不是過於復雜的界面布局,使用默認控件就足矣。相比之

藍的成長記——追逐DBA10飛刀防身,熟絡而非專長擺弄中間件Websphere

native 歷程 server 業界 http 由於 虛擬機 基礎 fill 原創作品,出自 “深藍的blog” 博客。歡迎轉載,轉載時請務必註明出處。否則追究版權法律責任。 深藍的blog:http://blog.csdn.net/huangyanlong/ar

初識vue 2.02路由組件

組件化 script -128 watch css image 暫時 效果 默認 1,在上一篇的創建工程中,使用的的模版 webpack-simple 只是創建了一個簡單的demo,並沒有組件和路由功能,此次采用了webpack模版,自動生成組件和路由。^_^ 在模版初始

java學習10求最接近點對問題

sta poi span exti ++ null @override over max 1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.List

Git 教程倉庫分支

ide 不但 clas version span 右上角 director discard pre 遠程倉庫 到目前為止,我們已經掌握了如何在Git倉庫裏對一個文件進行時光穿梭,你再也不用擔心文件備份或者丟失的問題了。 可是有用過集中式版本控制系統SVN的童鞋會站出來說,這

Java開發小技巧配置文件敏感信息處理

加載 gem 加密解密 -i false valid ges enc factory 前言 不知道在上一篇文章中你有沒有發現,jdbc.properties中的數據庫密碼配置是這樣寫的: jdbc.password=5EF28C5A9A0CE86C2D231A526ED5