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

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

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

Git進(jìn)行Vivado工程管理的教程分享

454398 ? 來源:科學(xué)計(jì)算technomania ? 作者:貓叔 ? 2020-11-16 14:59 ? 次閱讀

作者:貓叔

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

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

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

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

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

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

我們這篇文章只講Vivado的工程,不包括HLS或者Sdk工程,因?yàn)檫@這兩個(gè)工具都是純C/C++/TCL的,git管理起來比較簡單

1. 工程目錄

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

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

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

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

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

Scripts目錄:也是進(jìn)行g(shù)it管理的關(guān)鍵,里面放各種Tcl腳本;

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

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腳本,比如工程中有兩個(gè)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文件夾中,就會(huì)多出三個(gè)文件:

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

5. 到這一步,就可以進(jìn)行Commit和Push了。

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

替換為:

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

7. 切換到Scripts目錄

8. 依次執(zhí)行:

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

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

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

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

這樣就要我們在導(dǎo)出s1_recreate_project.tcl前要先把這個(gè)文件替換成正確的文件。如果MIG是放在到bd中,那么在上述的第6步修改s1_recreate_project.tcl中,也要把mig_*.prj文件刪掉,因?yàn)檫@個(gè)文件是在新建MIG時(shí)自動(dòng)生成的。

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

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

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

如果不加這個(gè)選項(xiàng),默認(rèn)會(huì)把bd文件信息也導(dǎo)出,這樣在運(yùn)行時(shí)會(huì)提示么有發(fā)現(xiàn)bd文件的錯(cuò)誤。

4. 如果是低版本的工程進(jìn)行g(shù)it后,要用高版本的Vivado打開,我們可以在導(dǎo)出bd時(shí)去掉IP的版本信息,也就是:

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

總結(jié)

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

編輯:hfy


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

    關(guān)注

    0

    文章

    201

    瀏覽量

    15793
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    815

    瀏覽量

    66718
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    飛凌嵌入式ElfBoard ELF 1板卡-git管理源碼之git安裝和使用

    第一種當(dāng)前代碼的管理。Ubuntu上安裝git執(zhí)行sudo apt-get install git 進(jìn)行git安裝elf@ubuntu:~/
    發(fā)表于 01-14 09:08

    云服務(wù)器 Flexus X 實(shí)例:部署 Gitea,擁有自己的 Git 倉庫,管理本地代碼

    、零售、金融、游戲等眾多領(lǐng)域的通用工作負(fù)載需求。本文旨在詳細(xì)闡述如何高效利用“云服務(wù)器 Flexus X 實(shí)例”,包括如何在其中從零開始,通過安裝相關(guān)依賴、安裝 Docker、安裝 Gitea 等步驟,實(shí)現(xiàn)自己的 Git 倉庫,管理本地代碼。精彩內(nèi)容,不容錯(cuò)過,快來一探究
    的頭像 發(fā)表于 01-07 16:59 ?99次閱讀
    云服務(wù)器 Flexus X 實(shí)例:部署 Gitea,擁有自己的 <b class='flag-5'>Git</b> 倉庫,<b class='flag-5'>管理</b>本地代碼

    Flexus X 實(shí)例 C#/.Net Core 結(jié)合(git 代碼管理、docker 自定義鏡像)快速發(fā)布部署 - 讓你的項(xiàng)目飛起來~

    與 Docker 容器化部署,實(shí)現(xiàn)代碼高效管理與無縫遷移。即刻行動(dòng),讓您的 Web 服務(wù)更加穩(wěn)定、高效,領(lǐng)跑數(shù)字化轉(zhuǎn)型之路! ???本實(shí)驗(yàn)深入演示了如何在 Ubuntu 環(huán)境中,利用 Git 進(jìn)行版本控制
    的頭像 發(fā)表于 12-25 21:15 ?180次閱讀
    Flexus X 實(shí)例 C#/.Net Core 結(jié)合(<b class='flag-5'>git</b> 代碼<b class='flag-5'>管理</b>、docker 自定義鏡像)快速發(fā)布部署 - 讓你的項(xiàng)目飛起來~

    Xilinx_Vivado_SDK的安裝教程

    完之后,就進(jìn)行解壓。(最好在解壓和安裝之前都關(guān)閉所有的殺毒軟件以防萬一) 解壓完之后,雙擊?xsetup.exe 進(jìn)行安裝...... 等待一會(huì)兒之后,就會(huì)跳出如下安裝界面: 點(diǎn)擊 Next: 全選
    的頭像 發(fā)表于 11-16 09:53 ?1457次閱讀
    Xilinx_<b class='flag-5'>Vivado</b>_SDK的安裝教程

    每次Vivado編譯的結(jié)果都一樣嗎

    很多FPGA工程師都有這種困惑,Vivado每次編譯的結(jié)果都一樣嗎? 在AMD官網(wǎng)上,有這樣一個(gè)帖子: Are Vivado results repeatable for identical
    的頭像 發(fā)表于 11-11 11:23 ?495次閱讀
    每次<b class='flag-5'>Vivado</b>編譯的結(jié)果都一樣嗎

    使用Vivado通過AXI Quad SPI實(shí)現(xiàn)XIP功能

    本博客提供了基于2023.2 Vivado的參考工程,展示如何使用Microblaze 地執(zhí)行(XIP)程序,并提供一個(gè)簡單的bootloader。
    的頭像 發(fā)表于 10-29 14:23 ?432次閱讀
    使用<b class='flag-5'>Vivado</b>通過AXI Quad SPI實(shí)現(xiàn)XIP功能

    Vivado使用小技巧

    有時(shí)我們對(duì)時(shí)序約束進(jìn)行了一些調(diào)整,希望能夠快速看到對(duì)應(yīng)的時(shí)序報(bào)告,而又不希望重新布局布線。這時(shí),我們可以打開布線后的dcp,直接在Vivado Tcl Console里輸入更新后的時(shí)序約束。如果調(diào)整
    的頭像 發(fā)表于 10-24 15:08 ?400次閱讀
    <b class='flag-5'>Vivado</b>使用小技巧

    智能記錄隱蔽工程管理系統(tǒng)

    ? ? ? 隱蔽工程管理是現(xiàn)代建筑工程中一個(gè)至關(guān)重要的環(huán)節(jié)。為了提高工程質(zhì)量和管理效率,智能記錄隱蔽工程
    的頭像 發(fā)表于 10-18 10:18 ?189次閱讀
    智能記錄隱蔽<b class='flag-5'>工程</b><b class='flag-5'>管理</b>系統(tǒng)

    Vivado編輯器亂碼問題

    我們在日常開發(fā)中經(jīng)常使用sublime、vim、vs code等第三方的編輯器,這些編輯器可以使用很多插件來提高我們的編碼效率,但是也往往會(huì)帶來亂碼的問題。我一般使用的是sublime來進(jìn)行編碼
    的頭像 發(fā)表于 10-15 17:24 ?932次閱讀
    <b class='flag-5'>Vivado</b>編輯器亂碼問題

    PMS系統(tǒng)是什么?PMS工程生產(chǎn)管理系統(tǒng)的功能

    企業(yè)實(shí)現(xiàn)生產(chǎn)過程的優(yōu)化、資源的有效配置、生產(chǎn)計(jì)劃的制定與執(zhí)行、生產(chǎn)進(jìn)度的監(jiān)控、生產(chǎn)質(zhì)量的保障等。 工程生產(chǎn)管理系統(tǒng)通常包括以下幾個(gè)核心組件: 1. 生產(chǎn)計(jì)劃管理:制定生產(chǎn)計(jì)劃,包括產(chǎn)品的生產(chǎn)順序、生產(chǎn)數(shù)量、生產(chǎn)時(shí)間等,確保生產(chǎn)按
    的頭像 發(fā)表于 06-12 11:23 ?4626次閱讀

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

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

    深入探索Vivado工程模式FPGA設(shè)計(jì)流程

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

    詳解Vivado工程模式的精細(xì)設(shè)計(jì)過程

    將設(shè)置設(shè)計(jì)的輸出路徑,設(shè)置設(shè)計(jì)輸出路徑的步驟如下所示。 第一步:如圖4.3所示,在“Vivado%”提示符后輸入命令“set outputDir ./gate_Created_Data/top_output”。
    發(fā)表于 04-03 09:34 ?1864次閱讀
    詳解<b class='flag-5'>Vivado</b>非<b class='flag-5'>工程</b>模式的精細(xì)設(shè)計(jì)過程

    藍(lán)牙 | 軟件:Git管理高通的ChipCode項(xiàng)目

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

    克服PLC編程的難題—基于Git的軟件

    Git是一種分布式版本控制系統(tǒng),它可以記錄文件的修改歷史和版本變化,并可以支持多人協(xié)同開發(fā)。
    的頭像 發(fā)表于 01-22 09:30 ?986次閱讀
    克服PLC編程的難題—基于<b class='flag-5'>Git</b>的軟件