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

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

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

Git進行Vivado工程管理的教程分享

454398 ? 來源:科學計算technomania ? 作者:貓叔 ? 2020-11-16 14:59 ? 次閱讀

作者:貓叔

git有多好用我就不用多說了,可謂是程序員必備技能之一。對于一般的軟件代碼來說,只需把源文件進行git管理即可。但對于FPGA工程師來說,使用git多多少少有些蛋疼,主要有下面幾個問題:

① 有bd文件的工程中,只把bd文件加入git是不行的;

② 很多公司都會有一些積累下來的hdl文件,放到某個文件夾中,所有的工程目錄下都會有這個文件夾,因此這個文件中會有很多不是當前工程的文件,因此git的文件中,必須包含當前工程的files list,否則就得重新添加文件;

③ 如果把整個Vivado工程都放入git,非必要文件太多,既浪費git服務器的空間,Push和Pull的速度也會很慢;

④ 很多FPGA工程師有自己的一套git管理Vivado的流程,但每次push前和Clone后都需要做很多操作。

最近我也一直在研究Vivado工程git的管理方式,查了網(wǎng)上很多方法,但有些操作略復雜,有些方法完全不起效,但好在最終綜合整理出了一種相對簡單的方式進行,也許這種方式不是最合適的,如果你有更好的方法,希望能分享出來。

我們這篇文章只講Vivado的工程,不包括HLS或者Sdk工程,因為這這兩個工具都是純C/C++/TCL的,git管理起來比較簡單

1. 工程目錄

我們采用如下的目錄結構,這種方式也是Xilinx官網(wǎng)某個教程推薦的,

Work目錄:Vivado的工程全都放在Work目錄下,包括bd以及它的相關文件;

Src目錄:放hdl的源文件以及IP Core的源文件;

Doc目錄:放跟工程相關的文檔,如果沒有的話可以不加;

Mcs目錄:放工程生成的bit和mcs文件,這個文件也看個人用途,如果覺得bit文件太大不想放在git上也無所謂,但個人覺得在調試的時候經(jīng)常會用到之前測試好了某個bit;

Scripts目錄:也是進行git管理的關鍵,里面放各種Tcl腳本;

如果工程中有SDK/HLS/SsyGen,可以在該目錄下再增加文件夾專門放置對應的工程文件。

2. 操作步驟

1. 在打開的Vivado工程中,通過Tcl Console將目錄切換到Work目錄:

cd [get_property directory [current_project ]]

2. 生成新建工程的Tcl腳本,執(zhí)行:

write_project_tcl {./Scripts/s1_recreate_project.tcl}

3. 依次生成bd文件的tcl腳本,比如工程中有兩個bd文件aa.bd和bb.bd,打開aa.bd,并執(zhí)行:

write_bd_tcl {./Scripts/s2_aa_bd.tcl}

打開bb.bd,并執(zhí)行:

write_bd_tcl {./Scripts/s3_bb_bd.tcl}

這樣,在Scripts文件夾中,就會多出三個文件:

4. 在.gitignore文件中,把整個Work目錄全部ignore掉,Src文件夾中根據(jù)實際情況進行ignore即可,HDL文件都保留,IP Core只留.xci文件;Scripts目錄全部保留。

5. 到這一步,就可以進行Commit和Push了。

6. 把程序Clone下來后,首先要修改s1_recreate_project.tcl,需要修改的地方有兩個:一個是新建工程時的路徑,原始文件為:

替換為:

第二處需要更改的是刪除files list中的bd文件信息,如下圖中框起來的部分,這部分內(nèi)容是將文件添加到工程中,但此時我們的bd文件還沒有生成,因此這兩個要刪掉。bd文件是我們通過后面的tcl腳本添加進來的。

7. 切換到Scripts目錄

8. 依次執(zhí)行:

source ./s1_recreate_project.tcl
source ./s2_aa_bd.tcl
source ./s3_bb_bd.tcl

OK,到這里工程就Clone完成了?。?!

下面說一下我操作的過程中碰到的幾個問題:

1. 如果是DDR3的MIG IP Core,會有Configuration Files,如果我們修改了MIG,并重新生成后,就會經(jīng)常出現(xiàn)這個Configuration Files找不到的情況,像下面這樣:

這樣就要我們在導出s1_recreate_project.tcl前要先把這個文件替換成正確的文件。如果MIG是放在到bd中,那么在上述的第6步修改s1_recreate_project.tcl中,也要把mig_*.prj文件刪掉,因為這個文件是在新建MIG時自動生成的。

2. 有些朋友用bd的時候喜歡用wrapper.v的文件來封一層,這個wrapper.v是Vivado自動生成的,而且默認目錄就是在Work的工程目錄下,我們可以不用管這個wrapper.v的文件,等bd文件添加進去后,再手動生成一下即可;也可以不使用wrapper.v,直接例化bd文件。

3. 上面這種方法是在Vivado2017.2上進行的測試,如果是2017.4及以上的版本,write_project.tcl指令中需要增加-use_bd_files選項,也就是:

write_project_tcl -use_bd_files {./Scripts/s1_recreate_project.tcl}

如果不加這個選項,默認會把bd文件信息也導出,這樣在運行時會提示么有發(fā)現(xiàn)bd文件的錯誤。

4. 如果是低版本的工程進行git后,要用高版本的Vivado打開,我們可以在導出bd時去掉IP的版本信息,也就是:

write_bd_tcl -no_ip_version {./Scripts/s2_aa_bd.tcl}

總結

我嘗試了網(wǎng)上很多方法基本都不能直接使用,但他們既然把方法放到網(wǎng)上,說明是經(jīng)過測試的,但可能測試的并不是特別全面,就是MIG的IP一樣,如果我的工程中沒有這個IP,那我也不知道在git時會出現(xiàn)這種問題。我也不能保證在使用別的IP時不會出現(xiàn)問題,但思路都是一樣的,就是把工程的tcl腳本和bd的tcl腳本分開,先新建工程把非bd文件的內(nèi)容加進來,再把bd的文件內(nèi)容添加進來。

編輯:hfy


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

    關注

    0

    文章

    195

    瀏覽量

    15691
  • Vivado
    +關注

    關注

    19

    文章

    797

    瀏覽量

    65860
收藏 人收藏

    評論

    相關推薦

    如何在AMD Vivado? Design Tool中用工程模式使用DFX流程?

    本文介紹了在 AMD Vivado? Design Tool 中用工程模式使用 DFX 流程以及需要注意的地方。在使用 DFX 工程模式的過程中要把具體步驟映射到相應的 DFX 非工程
    的頭像 發(fā)表于 04-17 09:28 ?534次閱讀
    如何在AMD <b class='flag-5'>Vivado</b>? Design Tool中用<b class='flag-5'>工程</b>模式使用DFX流程?

    深入探索Vivado工程模式FPGA設計流程

    在設計過程的每個階段,設計者均可以打開Vivado集成開發(fā)環(huán)境,對存儲器中保存的當前設計進行分析和操作。
    發(fā)表于 04-03 09:36 ?626次閱讀
    深入探索<b class='flag-5'>Vivado</b>非<b class='flag-5'>工程</b>模式FPGA設計流程

    藍牙 | 軟件:Git管理高通的ChipCode項目

    處理卡住了,我們只能從git下手。Git有優(yōu)秀的項目管理,代碼管理的能力,所以學一學git管理
    的頭像 發(fā)表于 01-26 08:29 ?288次閱讀
    藍牙 | 軟件:<b class='flag-5'>Git</b><b class='flag-5'>管理</b>高通的ChipCode項目

    Git開發(fā)者關注內(nèi)存安全問題,探討引入Rust語言

    根據(jù)最新披露的郵件討論,Git開發(fā)團隊熱議在Git項目中引入Rust的可行性。作為一種開源的分布式代碼版本管理工具,廣泛運用于各種開發(fā)項目。盡管現(xiàn)在Git項目主要以C與Python為主
    的頭像 發(fā)表于 01-15 14:23 ?464次閱讀
    <b class='flag-5'>Git</b>開發(fā)者關注內(nèi)存安全問題,探討引入Rust語言

    如何禁止vivado自動生成 bufg

    定和可靠。Vivado在編譯設計過程中會自動檢測到時鐘信號,并自動生成BUFG來緩沖時鐘。然而,在某些情況下,我們可能希望手動管理時鐘信號。 要禁止Vivado自動生成BUFG,可以按照以下步驟
    的頭像 發(fā)表于 01-05 14:31 ?1458次閱讀

    GIT(分布式版本控制系統(tǒng))的工作原理

    都是完整的,功能更強大,自然而然操作更復雜一些。git在本地也是以git版本庫的形式管理,可以在本地做一些修改,然后commit到本地的版本庫,最后push到服務器。
    的頭像 發(fā)表于 12-21 16:09 ?718次閱讀
    <b class='flag-5'>GIT</b>(分布式版本控制系統(tǒng))的工作原理

    git切換遠程地址分支方式

    git remote set-url origin URL】 更換遠程倉庫地址,URL為新地址。
    的頭像 發(fā)表于 12-18 09:35 ?1781次閱讀

    Git命令之本地分支與遠程分支關聯(lián)和解除

    在實際的工作生活中,往往需要將本地的分支和遠程分支關聯(lián),這樣我們就可以使用git pull命令來更新拉取最新的代碼,并使用git push命令將自己本地的修改推送到遠程倉庫。但是如果此時你本地關聯(lián)
    的頭像 發(fā)表于 12-15 09:27 ?2235次閱讀
    <b class='flag-5'>Git</b>命令之本地分支與遠程分支關聯(lián)和解除

    git命令的基本使用

    git config 第一次使用git或者剛安裝的git時,使用此命令設置身份Name 和 Eamail 地址。并且每次提交時會使用此信息。
    的頭像 發(fā)表于 12-11 13:53 ?808次閱讀

    使用Vivado高層次綜合(HLS)進行FPGA設計的簡介

    電子發(fā)燒友網(wǎng)站提供《使用Vivado高層次綜合(HLS)進行FPGA設計的簡介.pdf》資料免費下載
    發(fā)表于 11-16 09:33 ?0次下載
    使用<b class='flag-5'>Vivado</b>高層次綜合(HLS)<b class='flag-5'>進行</b>FPGA設計的簡介

    Vivado2018版本中Modelsim的配置

    Vivado自帶的仿真工具在一些基本功能的仿真測試時是可以滿足的,但如果你的工程較為龐大,那么自帶的仿真工具將有些勉強,除了在數(shù)據(jù)輸出方面的卡頓,在仿真速度上也可能無法接受,這里可以借助第三方仿真工具進行
    的頭像 發(fā)表于 11-08 14:47 ?1510次閱讀
    <b class='flag-5'>Vivado</b>2018版本中Modelsim的配置

    Git是如何存儲文件的?Git的工作原理解析

    我以為我已經(jīng)對 Git 的工作方式了如指掌,但我以前從未真正涉及過打包文件,所以這次探索很有趣。我也很少思考當我讓 git log 跟蹤一個文件的歷史時,它實際上有多大的工作量,因此也很開心能深入研究這個。
    的頭像 發(fā)表于 10-31 15:36 ?489次閱讀

    Git中最常用的命令介紹

    git add命令用于將修改的文件添加到下一次提交的暫存區(qū)。你可以指定要添加的文件git add命令用于將修改的文件添加到下一次提交的暫存區(qū)。你可以指定要添加的文件,例如git add file1.txt file2.txt。
    發(fā)表于 10-26 10:27 ?182次閱讀
    <b class='flag-5'>Git</b>中最常用的命令介紹

    Git常用的超級實用命令

    Git作為最流行的代碼版本控制工具,基本上已經(jīng)成為了程序員的一個標配技能。無論使用GitHub,GitLib,Gitee等進行代碼托管,均基于Git。下面聊一聊開發(fā)人員必會的幾個Git
    的頭像 發(fā)表于 10-09 17:19 ?1065次閱讀
    <b class='flag-5'>Git</b>常用的超級實用命令

    如何在 Git 中恢復隱藏的修改記錄

    git stash 和 git stash pop 這樣的命令是用來擱置(藏匿)和恢復我們工作目錄中的變化的。在本教程中,我們將學習如何在 Git 中恢復隱藏的修改記錄。 在工作目錄中存儲更改
    的頭像 發(fā)表于 10-09 14:09 ?820次閱讀