駱傳慧
【摘要】硬件描述語言使FPGA(現(xiàn)場可編程門陣列)芯片開發(fā)具備軟件特征,編碼規(guī)范是軟件質(zhì)量的保證,能有效地提高軟件開發(fā)效率。從命名、排版格式、語句完整性、注釋、代碼結(jié)構(gòu)、代碼優(yōu)化則等幾個方面介紹了FPGA軟件編碼規(guī)范內(nèi)容,從提高工作效率、提高測試性、提高重用性、降低維護(hù)成本角度總結(jié)了開發(fā)過程中FPGA軟件編碼規(guī)范作用。
【關(guān)鍵詞】FPGA;軟件開發(fā);編碼規(guī)范;硬件描述語言
The FPGA Coding Standards in the Process of Software Development
LUO Chuan-hui
(No. 38 Research Institute, China Electronic Technology Group Corporation, Hefei Anhui 230088, China)
【Abstract】Hardware description language to make the FPGA (field programmable gate array) chip development with characteristics software, coding standards is software quality assurance, can effectively improve the efficiency of software development. From naming, typesetting format, statement integrity, annotation, the structure of the code, code optimization are introduced several aspects, such as the FPGA software coding standard content, improve the work efficiency, improve the testability, improve the reusability, lower maintenance cost Angle the FPGA software coding standard role in the development process are summarized.
【Key words】FPGA; Software development; Coding standard; Hardware description language
0引言
FPGA(現(xiàn)場可編程門陣列)芯片的出現(xiàn),大大壓縮了電子產(chǎn)品研發(fā)的周期和成本,它所具有的高密度、低功耗、高速、高可靠性等優(yōu)點,使其在航空、航天、通信、工業(yè)控制等方面得到了廣泛的應(yīng)用。隨著芯片規(guī)模加大,承擔(dān)任務(wù)的加重,開發(fā)周期縮短,如何高效、高質(zhì)量開展設(shè)計,成為FPGA芯片開發(fā)工作的重點。FPGA芯片的多樣化要求代碼具有超強的可移植能力。
硬件描述語言是當(dāng)前FPGA芯片開發(fā)過程中使用的最主要輸入方式,通過行為描述實現(xiàn)邏輯電路和系統(tǒng)的設(shè)計,使FPGA芯片開發(fā)具有了軟件設(shè)計的特征。為了實現(xiàn)FPGA設(shè)計需求,軟件開發(fā)單位需要制定相應(yīng)的編碼規(guī)范,對程序員的編程行為進(jìn)行約束,包括命名規(guī)則、排版格式、注釋、代碼結(jié)構(gòu)、代碼優(yōu)化等編碼過程中需要注意的編程細(xì)節(jié)。
FPGA編碼規(guī)范是行業(yè)中約定俗成的,是長期經(jīng)驗的總結(jié)和集體智慧的結(jié)晶,能夠指導(dǎo)設(shè)計工程師正確編寫代碼,提高代碼的整潔度,便于跟蹤、分析、調(diào)試,便于整理文檔,便于交流合作。從而達(dá)到提高設(shè)計效率、優(yōu)化電路、降低設(shè)計成本的效果。
1編碼規(guī)范內(nèi)容
FPGA軟件編碼規(guī)范是軟件開發(fā)單位制定的關(guān)于硬件描述語言編碼方面約定,主要包括命名規(guī)則、排版格式、語句的完整性、注釋的明確性、嵌套層次限制等方面需要注意的編程事項,以對設(shè)計人員的編程行為進(jìn)行約束。
1.1命名規(guī)則
能夠有助于閱讀者快速理解編碼,便于交流合作。命名規(guī)則規(guī)定在命名實體名、結(jié)構(gòu)體、端口、信號、變量等名稱時,必須采用具有確定意義并且相互之間存在一定的邏輯關(guān)系標(biāo)識,以及標(biāo)識字符的大小寫要求。例如,端口、信號或變量標(biāo)識通常包含諸如出處、有效狀態(tài)等基本含義。
1.2排版格式
能夠提高代碼的整潔度和可讀性,在一定程度上減少缺陷被引入的機會,降低維護(hù)成本。排版格式規(guī)定代碼統(tǒng)一縮進(jìn)格式,每行代碼的長度,端口、信號、變量、常量排列順序、表達(dá)式的書寫等方面的要求。例如,端口按輸入、輸出分類有序排列。
1.3語句完整性規(guī)則
能夠解決一致性問題,降低RTL代碼中引入的錯誤。語句完整性規(guī)定編碼過程中語句、狀態(tài)的完整性,時序電路的敏感量完整性,以及信號、變量的初始化、復(fù)位等要求。例如,條件語句IF中的ELSE、選擇語句CASE中的OTHERS不能被忽略。
1.4注釋規(guī)則
解決代碼的可讀性和可維護(hù)性。注釋規(guī)則約定編碼過程中注釋的內(nèi)容和排版位置,要求一個完整的軟件程序應(yīng)有明確的注釋,主要包括:序言性注釋、端口注釋、功能性注釋、軟件模塊注釋等。例如,代碼序言應(yīng)包括代碼的功能、代碼適用范圍、代碼的作者、代碼版本信息等等。
1.5代碼結(jié)構(gòu)規(guī)則
解決代碼可讀性、可重用性、可維護(hù)性問題。代碼結(jié)構(gòu)規(guī)則對代碼結(jié)構(gòu)、模塊劃分、模塊層次、參數(shù)化設(shè)計、條件語句多級嵌套的策略等提出要求。例如,所有產(chǎn)生時序控制的邏輯放在同一個模塊中。
1.6代碼優(yōu)化規(guī)則
解決代碼執(zhí)行效率、可靠性問題。代碼優(yōu)化規(guī)則對復(fù)位信號、時鐘信號的處理,輸出信號處理、模塊調(diào)用、狀態(tài)機編碼以及懸空管腳、跨時鐘域、數(shù)據(jù)類型、邊界條件等方面的約定。例如,每個模塊盡量用一個時鐘,禁止用門控時鐘。
2編碼規(guī)范的作用
2.1提高工作效率
超大規(guī)模FPGA芯片特別是SOC類的FPGA芯片出現(xiàn),使得FPGA芯片能夠用在大型電子系統(tǒng)中。多功能FPGA芯片軟件設(shè)計任務(wù)需要由多人共同承擔(dān),軟件開發(fā)由單打獨斗的個人行為變成團(tuán)隊活動。編碼規(guī)范能夠使所有團(tuán)隊成員遵守共同統(tǒng)一的全局決策,以清晰并且一致的風(fēng)格進(jìn)行編碼,成員之間可以輕松地閱讀對方的代碼,易于相互理解及交流,多人設(shè)計能夠無縫對接。
2.2提高測試性
為了減少FPGA軟件缺陷,提高設(shè)計質(zhì)量,在軟件開發(fā)的各個階段開展相應(yīng)的測試,F(xiàn)PGA軟件測試分為基于EDA工具和基于人工檢查兩種方式,基于 EDA工具檢查的方式需要先對RTL代碼進(jìn)行編譯,按照一定的規(guī)則轉(zhuǎn)換成能被工具識別的邏輯電路,再用已有的度量模型定量地評價軟件的內(nèi)在質(zhì)量。編碼規(guī)范能使輸入的RTL代碼被EDA工具正確識別,保證自動檢查能夠順利進(jìn)行?;谌斯z查方式,是由測試人員通過人工閱讀代碼的形式檢查軟件代碼,找出代碼其中存在的故障和違反開發(fā)標(biāo)準(zhǔn)之處以及其他一些問題。編碼規(guī)范讓代碼審查有據(jù)可查,大大提高了審查效率和效果。
2.3提高重用性
在FPGA軟件開發(fā)過程中,代碼或IP核重用是很常見的現(xiàn)象。代碼風(fēng)格的一致性,能使開發(fā)人員更迅速、更容易理解其他人的代碼;代碼結(jié)構(gòu)規(guī)則使代碼具有良好的擴展性和重用性,能夠快速、便捷移植;優(yōu)化規(guī)則總結(jié)了EDA工具對RTL代碼要求,能夠保證RTL代碼在任何EDA工具下仿真、編譯和綜合的正確性和一致性,消除代碼集成時邏輯綜合產(chǎn)生的風(fēng)險,順利實現(xiàn)在不同廠家以及不同系列芯片之間移植。
2.4提高可靠性
由于FPGA芯片能夠兼顧性能、成本以及靈活性等諸多方面,很多航空、航天設(shè)備開始使用這種芯片,其性能將直接影響整個系統(tǒng)的可靠性。完整性規(guī)則、優(yōu)化規(guī)則能夠有效減少RTL代碼引入的不確定因素,降低電源、環(huán)境溫度變化對可靠性影響,減少功能仿真與門級電路之間存在偏差。
2.5降低維護(hù)成本
FPGA軟件開發(fā)過程中的代碼質(zhì)量直接影響著維護(hù)的成本。維護(hù)工作不僅僅是讀懂原有代碼,而是需要在原有代碼基礎(chǔ)上做出修改。在沒有規(guī)范的情況下,設(shè)計人員、維護(hù)人員各自按自己的習(xí)慣命名和編碼,后續(xù)代碼維護(hù)人員很難讀懂和維護(hù)。因此,統(tǒng)一的風(fēng)格有利于長期的維護(hù)。代碼結(jié)構(gòu)規(guī)則對功能分類及代碼耦合性做出的約束,降低了代碼修改以及擴展的難度和工作量。
3結(jié)論
一部完善的FPGA軟件編碼規(guī)范能夠?qū)⒕幋a從個人行為變成組織行為,最大限度的實現(xiàn)經(jīng)驗共享,避免同樣錯誤重復(fù)出現(xiàn),提高團(tuán)隊開發(fā)的合作效率。能夠有效地增加代碼的可讀性,降低維護(hù)成本,提升代碼的運行效率,增強代碼的可重用性和可靠性,從而實現(xiàn)邏輯功能正確,綜合結(jié)果最優(yōu)的編碼目標(biāo)。
【參考文獻(xiàn)】
[1]孫曉東.FPGA軟件設(shè)計[J].電腦編程技巧與維護(hù),2010(12):5-6.
[2]張建飛.基于航空領(lǐng)域嵌入式軟件代碼審查的研究[J].科技創(chuàng)新與生產(chǎn)力, 2015(10):108-109.
[3]何成巨,郭薇.淺談軟件編程中的代碼規(guī)范問題[J].電腦知識與技術(shù),2011,7(26):6409-6410.
[4]楊冰娥.代碼規(guī)則自動化檢查系統(tǒng)的設(shè)計與實現(xiàn)[D].西南交通大學(xué),2014.
[5]李大勇.淺談軟件開發(fā)中代碼規(guī)范的問題[J].電子技術(shù)與軟件工程,2015(15):50-50.
[6]劉宇翔.軟件項目管理的流程設(shè)計分析[J].科技資訊,2010(36):33-33.
[7]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計[M].西安電子科技大學(xué)出版社,1999.
[8]喬廬峰,王志功.VHDL數(shù)字電路設(shè)計教程[M].電子工業(yè)出版社,2013.