• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      SVN在Verilog HDL開發(fā)過程中的應(yīng)用

      2014-01-16 09:21:36秦魯東貴州大學(xué)貴州貴陽550025
      電子設(shè)計(jì)工程 2014年5期
      關(guān)鍵詞:邏輯設(shè)計(jì)拷貝主干

      丁 晴,楊 晨,丁 召,秦魯東(貴州大學(xué) 貴州 貴陽 550025)

      隨著電子技術(shù)和計(jì)算機(jī)技術(shù)的不斷發(fā)展,計(jì)算機(jī)與電子應(yīng)用之間的聯(lián)系變得越來越重要,電子設(shè)計(jì)自動化取得了巨大的進(jìn)步。電子設(shè)計(jì)自動化技術(shù)以計(jì)算機(jī)為工作平臺,結(jié)合電子技術(shù)來幫助工程師開發(fā)新的電子產(chǎn)品,其主要采用硬件語言實(shí)現(xiàn)大規(guī)模的數(shù)字系統(tǒng)設(shè)計(jì)[1]。Verilog HDL是一種硬件描述語言可以進(jìn)行各種級別的數(shù)字邏輯設(shè)計(jì),如系統(tǒng)級邏輯設(shè)計(jì)、行為級邏輯設(shè)計(jì)、RTL級邏輯設(shè)計(jì)、門級邏輯設(shè)計(jì)。Verilog HDL的程序是由模塊(module)構(gòu)成的,通過模塊描述可以直接定義端口和信號,模塊具有多層次,每個模塊對應(yīng)特定的功能,多個模塊通過網(wǎng)表相連就可以形成一個大型設(shè)計(jì)[2]。對于一個大型設(shè)計(jì),編輯Verilog HDL代碼耗費(fèi)的時間比較長,可能會存在以下問題:

      1)新版本的程序引入了新的Bug,需要回到以前的版本去查找Bug的來源;

      2)同一程序由不同工程師編寫、維護(hù)與測試,不同工程師的工作可能產(chǎn)生沖突;

      3)當(dāng)需要撤銷某個新加功能 ,代碼被覆蓋后就無法與原有版本進(jìn)行對比,很難做到設(shè)計(jì)的可重性。

      由于在Verilog HDL項(xiàng)目開發(fā)中存在上述問題,代碼的版本管理與控制就非常必要。因此,本文提出了利用SVN的特性,對Verilog HDL項(xiàng)目代碼開發(fā)、版本控制等問題進(jìn)行研究,以提高開發(fā)的效率。

      1 SVN管理流程

      1.1 基本工作模型

      SVN是一個自由開源的版本控制系統(tǒng),其采用拷貝-修改—合并模型[3],在這種模型里,每一個客戶通過項(xiàng)目版本庫拷貝各自所需要的文件,進(jìn)行查看??蛻敉瑫r工作,修改各自的工作拷貝,最后,每個客戶提交各自的版本,并合并在一起成為最終的版本。

      基本過程為:檢出工作副本—編輯修改—合并服務(wù)器中的修改—提交修改,如圖1所示。

      1.2 工作拷貝

      一個SVN工作拷貝是用戶本地機(jī)器一個普通的目錄,保存著一些文件,用戶可以隨意編輯文件,在用戶完成修改之前,SVN不會把用戶的修改與其他人的合并,也不會把用戶的修改展示給別人。當(dāng)用戶在工作拷貝做了一些修改并且確認(rèn)它們工作正常之后,SVN提供了一個命令可以“發(fā)布”用戶的修改給項(xiàng)目中的其他人,如果別人發(fā)布了各自的修改,SVN提供了手段可以把這些修改與用戶的工作目錄進(jìn)行合并[4]。

      圖1 SVN工作流程圖Fig. 1 Flow chart of SVN

      1.3 修訂版本

      當(dāng)版本庫接收到一個修改后的版本,更新后版本庫發(fā)生了新的變化,這樣的一個過程就稱為修訂版本。SVN的特色之一就是原子提交[5],一個修訂版本要么全部提交,要么都保持不變,這樣可以防止部分文件未被提交的狀況發(fā)生。每次的提交都會產(chǎn)生一個新的獨(dú)一無二的修訂版本號,SVN版本庫會自動進(jìn)行數(shù)據(jù)傳輸,后修改過的版本也存有先前的內(nèi)容,不會互相沖突。

      1.4 分支與合并

      完成一個階段的工作后,工程師需要將分支上的修改合并到最新版本。一個分支就像一個拷貝的存在,并從那里離開,并具有自己的歷史。如圖2所示。

      圖2 分支示意圖Fig. 2 branch

      當(dāng)分支合并后,分支就失去意義。平時在進(jìn)行開發(fā)時,一般都會有多版本分支同時進(jìn)行,當(dāng)某一個版本具備上線條件后,需要在上一個已發(fā)布的版本基礎(chǔ)上進(jìn)行發(fā)布,才能夠避免出現(xiàn)版本相互覆蓋,因此往往需要對版本之間代碼進(jìn)行合并,合并的過程中網(wǎng)頁地址(URL)及版本需填寫起始的和結(jié)束的,這將影響合并后所得到的版本。假設(shè)這次分支是從主干版本3上創(chuàng)建的,而分支的起始版本是4,最終分支完成后的版本是7,主干版本8是分支版本4的差異和分支版本6的差異的合并,如圖3所示。那么在主干版本沒有更新的前提下,工程師把分支功能合并到主干上,在主干版本3的工作副本中點(diǎn)擊合并,在“起始URL 和版本”填寫主干的URL和版本3,在“結(jié)束的URL 和版本”填寫分支的URL和版本7即可。

      圖3 合并示意圖Fig. 3 merger

      2 Verilog HDL開發(fā)基于SVN平臺的工作流程

      Verilog HDL大型軟件的開發(fā)是一個非常繁瑣的過程。在軟件的開發(fā)過程中,很多時候需要團(tuán)隊(duì)協(xié)作來完成。若是多人完成一個程序時,需要頻繁查看別人的進(jìn)度或者代碼,交流起來十分不便,這時就需引入SVN強(qiáng)大的協(xié)作功能,方便開發(fā)者隨時了解他人進(jìn)度以便及時分享自己的工作。

      在本論文中工程師A和工程師B在兩個電腦分別完成Verilog HDL程序編程,工程師B的電腦通過查找工程師A電腦IP,設(shè)定與工程師A相同的IP192.168.1.107來連接兩臺電腦,工程師B可以共享工程師A電腦中SVN版本庫的資源,分步驟來說明其工作過程,如圖4所示是團(tuán)隊(duì)協(xié)作流程圖。

      圖4 團(tuán)隊(duì)協(xié)作流程圖Fig. 4 Flow chart of teamwork

      2.1 檢出Verilog HDL程序

      在處理一個需要多人協(xié)同修改的程序前,團(tuán)隊(duì)中的每個成員都要檢出(check out)SVN版本庫中現(xiàn)有的Verilog HDL程序文件目錄REV.1。在本文中假設(shè)工程師A和工程師B為同一個項(xiàng)目團(tuán)隊(duì)的成員,在進(jìn)行檢出后,工程師們都有了一份相同的Verilog HDL程序文件工作副本REV.1,然后才能開始修改Verilog HDL程序中自己負(fù)責(zé)的部分。如圖5所示,工程師B從服務(wù)器中的SVN版本庫檢出完成。

      圖5 檢出完成圖Fig. 5 Detection Complete

      2.2 程序修改

      假設(shè)工程師A和工程師B兩人對Verilog HDL多路選擇器(MUX)程序[6]進(jìn)行修改,代碼如下:

      工程師A在原有程序上添加“二進(jìn)制到BCD碼轉(zhuǎn)換”模塊,并將“VERSION 1.0”修改為“VERSION 1.1”,工程師A將修改后的程序提交,版本號更新為REV.2。代碼如下:

      工程師B在原有模塊上添加“二進(jìn)制到格雷碼轉(zhuǎn)換”模塊,在兩人各自獨(dú)立工作的情況下,工程師B同樣將“VERSION 1.0”修改為“VERSION 1.1”。代碼如下:

      由于兩人修改了程序的相同行,即“VERSION 1.0”一行,則工程師B在提交他的修改時,SVN程序會產(chǎn)生沖突警告,他將得到錯誤信息,提示其Verilog HDL工作副本已經(jīng)過期,他的提交失敗,如圖6所示。

      圖6 提交失敗圖Fig. 6 Commit failed

      2.3 解決沖突

      因?yàn)楣こ處烝與工程師B修改了相同的一行,并且工程師A先于工程師B提交,SVN無法決定如何將工程師B的修改與Verilog HDL版本庫已有的修改進(jìn)行合并,因此SVN產(chǎn)生沖突,需要工程師B來解決。工程師B需要先更新版本庫,檢出版本庫REV.2到本地,如圖7所示。

      圖7 更新圖Fig. 7 Updated

      2.4 完成程序

      工程師 B在解決沖突之后還要通過SVN Resolved命令通知SVN沖突已經(jīng)解決,最終工程師B可以提交他的修改形成一個新的Verilog HDL程序修訂版REV.3,如圖8所示。

      3 結(jié)束語

      圖8 提交完成圖Fig. 8 Submit completed

      SVN平臺已經(jīng)成為現(xiàn)代協(xié)同工作提高效率的一種非常有效的手段,并且在當(dāng)今網(wǎng)絡(luò)行業(yè)中已經(jīng)有許多成熟的產(chǎn)品。SVN平臺的開發(fā)潛力非常大,可以用于各行各業(yè)。本文介紹了SVN平臺在Verilog HDL開發(fā)中的工作原理及應(yīng)用方法,這種技術(shù)能極大地提高團(tuán)隊(duì)的工作效率,達(dá)到了設(shè)計(jì)要求。

      [1] 王長宏,陳朝陽,鄒雪城,等.Verilog HDL設(shè)計(jì)實(shí)例及其仿真與綜合[J].計(jì)算機(jī)應(yīng)用,2001,27(12):19-22.WANG Chang-hong,CHEN Chao-yang,ZOU Xue-cheng,et al.Verilog HDL design examples and simulation and synthesis[J].Computer Applications,2001,27(12):19-22.

      [2] 羅杰,康華光. 兩種硬件描述語言VHDL/Verilog的發(fā)展及其應(yīng)用[J]. 電氣電子教學(xué)學(xué)報,2002,24(4):1-4.LUO Jie,KANG Hua-guang.Two hardware description language VHDL / Verilog Development and Application[J]. Electrical Electronic Education,2002,24(4):1-4.

      [3] 高平,周磊.版本控制系統(tǒng)—Subversi0n技術(shù)及其在軟件開發(fā)庫的應(yīng)用[J].航空電子技術(shù),2012,44(1):24-28.GAO Ping,ZHOU Lei.Version control system—Subversi0n technology and its application in software development library[J].Avionics Technology,2012,44(1):24-28.

      [4] BenCollins-Sussman,BrianW.Fitzpatrick,C.MichaelPilato,Subversion book r3600 [EB/OL].(2002).http://creativecommons.org/licenses/by/2.0/.pdf.

      [5] 劉樂.軟件項(xiàng)目管理與SVN[J].科技信息,2011,21(1):77-78.LIU Le.Software Project Management and SVN[J].Technology Information,2011,21(1):77-78

      [6] 夏宇聞. Verilog語法的基本概念[J].電子產(chǎn)品世界,2002,21(1):76-79.XIA Yu-men.The basic concept Verilog Syntax[J].Electronic Products,2002,21(1):76-79.

      猜你喜歡
      邏輯設(shè)計(jì)拷貝主干
      全球首條1.2T超高速下一代互聯(lián)網(wǎng)主干通路
      軍事文摘(2024年2期)2024-01-10 01:58:34
      抓主干,簡化簡單句
      二代支架時代數(shù)據(jù)中糖尿病對無保護(hù)左主干患者不同血運(yùn)重建術(shù)預(yù)后的影響
      高齡無保護(hù)左主干病變患者血運(yùn)重建術(shù)的長期預(yù)后
      中國生殖健康(2018年1期)2018-11-06 07:14:38
      火電機(jī)組公用電泵系統(tǒng)介紹及邏輯設(shè)計(jì)
      電子制作(2018年12期)2018-08-01 00:47:44
      提高火力發(fā)電廠熱工保護(hù)可靠性方案與策略探討
      排課系統(tǒng)中數(shù)據(jù)庫表的設(shè)計(jì)
      科技資訊(2015年15期)2015-06-29 17:31:46
      可定制報表系統(tǒng)的設(shè)計(jì)與應(yīng)用
      文件拷貝誰最“給力”
      清流县| 麻阳| 陆良县| 吐鲁番市| 阿拉尔市| 洛阳市| 蓬莱市| 溧阳市| 蛟河市| 乌拉特前旗| 通江县| 莎车县| 西青区| 顺昌县| 延寿县| 大悟县| 康乐县| 普安县| 阿克陶县| 泽库县| 景洪市| 达孜县| 关岭| 玛曲县| 常德市| 岳池县| 丽江市| 沧源| 云浮市| 浦北县| 临邑县| 岑溪市| 双峰县| 永丰县| 观塘区| 泰和县| 余庆县| 崇信县| 普陀区| 萨迦县| 沾益县|