資源描述:
《verilog語言代碼設(shè)計規(guī)范》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、代碼設(shè)計規(guī)范verilog語言代碼設(shè)計規(guī)范2011年12月30代碼設(shè)計規(guī)范目錄一、規(guī)范適用范圍41.1項目適用范圍41.2人員適用范圍41.3編碼設(shè)計的成果形式4二、代碼書寫規(guī)范52.1模塊說明書寫規(guī)范52.1模塊注釋書寫規(guī)范52.3變量名稱書寫規(guī)范62.4代碼結(jié)構(gòu)書寫規(guī)范7三、使用verilog語言的語法范圍83.1設(shè)計RTL代碼的語法范圍83.2設(shè)計仿真代碼的語法范圍10四、使用verilog語言的結(jié)構(gòu)范圍114.1系統(tǒng)設(shè)計文件的形式與使用方法114.2模塊結(jié)構(gòu)劃分的標(biāo)準(zhǔn)124.3組合邏輯的代碼風(fēng)格134.4時序
2、邏輯的代碼風(fēng)格214.5仿真代碼的代碼風(fēng)格27五、使用受限范圍內(nèi)的語法或結(jié)構(gòu)要進(jìn)行的申請過程325.1受限的語法與結(jié)構(gòu)325.2批準(zhǔn)使用的程序3230代碼設(shè)計規(guī)范二、代碼書寫規(guī)范2.1模塊說明書寫規(guī)范在開始子模塊設(shè)計時,必須對子模塊的基本信息給予說明。說明的位置一般在設(shè)計的開頭,使用注釋的形式用(/**/)說明該設(shè)計的作者、編寫日期、版本號、在系統(tǒng)中的層次位置、基本功能描述等。其形式如下所示:/*********************************************************autho
3、r:abc**date:2005-5-12**version:1.0**hiberarchy:mcu-alu-adder**describe:16bitadder*********************************************************/說明的內(nèi)容要簡潔清晰。使用/**/對將說明部分括起來是為了與普通注釋相區(qū)別。2.1模塊注釋書寫規(guī)范注釋對項目團隊關(guān)于設(shè)計的交流至關(guān)重要,好的設(shè)計總是會在恰當(dāng)?shù)牡胤綄φZ句或變量予以說明,沒有注釋的設(shè)計不是真正的工業(yè)級設(shè)計,通篇的注釋同沒有注釋一樣
4、糟糕,會將代碼淹沒在無用的注釋之中。這一節(jié)給出書寫注釋的規(guī)范。如果設(shè)計中出現(xiàn)了一個新的變量,那么必須對這個新變量給予注釋,對變量的注釋應(yīng)該放在變量的定義之前,注釋應(yīng)該說明變量的物理意義或作用。其形式如下:………//inputport//clearresetsingalofsystem//Accontrolsingalofaccumulationinputclear,Ac;………30代碼設(shè)計規(guī)范如果設(shè)計中的某塊結(jié)構(gòu)屬于作者的創(chuàng)新或設(shè)計中很關(guān)鍵的部分,作者應(yīng)該對這種結(jié)構(gòu)的物理含義予以簡要說明。注釋在語句或結(jié)構(gòu)的前一行開始
5、寫如:………//wallacetreemultiplication………2.3變量名稱書寫規(guī)范verilog語言規(guī)定了各種類型的標(biāo)志符的格式,作為規(guī)范我們對用戶自定義的各種變量的命名方法及書寫格式加以約束。變量一般指模塊(或設(shè)計)名、端口名、連線名、參照名、單元名以及內(nèi)部寄存器名。首先變量名必須能表達(dá)實際的物理意義,如果需要幾個單詞來表示,那么單詞之間用一個“_”分隔。變量名不宜過長,一般不要超過16個字符否則書寫的效率會下降,因此變量名應(yīng)該盡量使用單詞的縮略寫法,完整的含義應(yīng)在注釋中給予說明。我們規(guī)定常量參數(shù)一律使
6、用大寫字母表示,變量的名稱一律用小寫字母a~z、數(shù)字0~9或下劃線_表示,變量首字符一律用字母。模塊名(或設(shè)計名)應(yīng)該與文件名一致,一個文件只應(yīng)包含一個模塊。它是模塊功能的縮略表達(dá)。端口名應(yīng)與該端口實際的物理意義相一致。連線是對內(nèi)部單元(實例)引腳間進(jìn)行連接的物理線或是對組合邏輯輸出端口、組合邏輯單元輸出端進(jìn)行賦值運算的輸入線。連線名應(yīng)該有確定的連接對象或是有確定的信號物理意義,所以針對單元引腳連接的連線它的名稱應(yīng)該表明所連接單元的名稱,如timing_alu表示時序發(fā)生器發(fā)出的控制信號連接ALU部件的控制端。針對為
7、輸出端做賦值運算的輸入連線它的名字應(yīng)該表達(dá)相應(yīng)的物理意義,絕不要使用通用名如:a,b,c這樣的名字。這類連線適當(dāng)?shù)拿Q如:add_a,add_b。參照名就是一個單元或?qū)嵗齾⒖嫉膸鞓?biāo)準(zhǔn)單元或原始設(shè)計名,所以它的名字與庫單元或模塊名相同。單元與實例在synopsys的DC工具中是不加區(qū)分的,這里也等同看待,它的名字可以用參照名為頭后加數(shù)字予以標(biāo)識。如alu1、acc1等。如果設(shè)計的內(nèi)部有中間級寄存器,那么寄存器以實際的物理意義進(jìn)行命名,比如在乘法器中為分割關(guān)鍵路徑引入的中間級寄存器可以命名為pipeline1_out等。
8、30代碼設(shè)計規(guī)范2.4代碼結(jié)構(gòu)書寫規(guī)范好的代碼結(jié)構(gòu)可以清晰的看出設(shè)計的層次關(guān)系,進(jìn)而使結(jié)構(gòu)與設(shè)計者所要表達(dá)的邏輯意圖一致,方便糾錯和交流。代碼最基本的結(jié)構(gòu)有平行結(jié)構(gòu)和層次結(jié)構(gòu),他們反映了代碼的隸屬關(guān)系,我們規(guī)定注釋語句與語句塊是一個層次的,這意味著對模塊的注釋行(以//開頭)必須在一行的頂頭開始寫。其他語句的層次低于模塊定義和注釋,那么其他語句