freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

verilog編碼規(guī)范方案-在線瀏覽

2025-06-09 22:14本頁面
  

【正文】 的繼續(xù)。用縮進來提高續(xù)行和嵌套循環(huán)的可讀性。避免使用TAB鍵。有一些工具可以將TAB替換成空格。注釋應(yīng)該放在它所描述的代碼的附近。避免注釋雜亂。注釋關(guān)鍵是說明設(shè)計意圖。文件頭至少應(yīng)包含下列信息:文件名、作者、模塊的功能描述和關(guān)鍵特征的列表、文件產(chǎn)生的日期、更改記錄(日期、更改者、更改的內(nèi)容)。s 端口聲明時每行聲明一個端口,并有注釋(最好在同一行),也可對同一類型的一組端口加注釋。//INPUTsclocks , // posedge activeresets , // active highenables , // active highother control signals ,Data and address lines ,//OUTPUTsclocks ,resets ,enables ,other control signals ,datas 在輸入和輸出兩類端口之間留一個空行來提高可讀性。s 端口列表之后,使用parameter定義內(nèi)部信號寬度以及其他參數(shù)化設(shè)置。b0;(2)常數(shù)位寬不可缺省;如:Bad: if ((rst_n == 0) amp。 (t_addr == 15))Good:if ((rst_n == 139。amp。d15))例:reg[15:0] mem[0:255]。 //temp gets data at addr 333_bit_reg = temp[8:6]。 運算符及表達式(1)表達式(a)用括號來表示執(zhí)行的優(yōu)先級,盡管操作符本身有優(yōu)先順序,但用括號表示優(yōu)先級對讀者更清晰,更有意義如:Bad: A + B ? C : D。(b)適當(dāng)使用括號適當(dāng)使用括號可以控制生成的電路結(jié)構(gòu),如Z = A + B + C + D,綜合結(jié)果可能為三級加法器,而變換為Z = (A + B) + (C + D),綜合結(jié)果則可能為兩級加法器;(c)注意資源共享需要資源共享的部分一定要放在同一個模塊的同一個always語句中,不同模塊不同always語句之間的代碼不能實現(xiàn)資源共享。else d0 = C + D。條件算子中不存在資源共享如:z = (cond==1’b1)? (a+b) : (c+d)。elsez = (c+d)。(d)盡量采用公共子表達式如 :x=a+b+cy=d+a+b改為:z=a+bx=z+cy=d+z(2)算符(a)條件運算符r1 = gate? r2 : r3。 orr1 = {aa,bb} == 0? r2: {aa,bb} == 0? r3: {aa,bb} == 0? R4:r4。如:wire x,A,B。b1) ? A:B If(Aamp。amp。(c)乘法運算符“*”對于一個變量data與常數(shù)constant相乘data * constant,如果常數(shù)不是2的整數(shù)次冪,建議先將其分解,如constant= 53 = 32 + 16 + 4 + 1 = 2^5 + 2^4 + 2^2 + 2^0,這樣乘積就可以表示為變量data移位結(jié)果的相加。e)。 c=damp。(2)BLOCK賦值和NONBLOCK賦值的使用(a)組合邏輯采用BLOCK賦值(=)如: always (dat) i_dat = dat。(3)在同一塊語句中不允許同時出現(xiàn)阻塞賦值和非阻塞賦值 reg [3:0] def。b0,def}) begin ....... if (abc == 839。b01。b10。b10。b11。b00。b00。b00。 循環(huán)語句(1)forever語句(2)repeat語句(3)while語句(4)for語句在可以用其它語句描述電路時,建議不要采用循環(huán)語句來描述。 initial語句不要在RTL代碼中出現(xiàn)initial 塊綜合會將initial塊忽略,使前仿真和后仿真不一致initial begin......endRule:Combinational sensitivity lists should include1)Any signal on right hand side of assignment2)Any signal in if or case expressionFor example:......module sense_list_ex( b, c, d )。input c。//OUTPUTS//INOUTS//SIGNAL DECLARATIONSwire b。wire d。//ASSIGN STATEMENTS//MAIN CODE always (b or c or d) if (b==1’b1) a = c amp。 else if (c==1’b1) a = d。b0) //此處統(tǒng)一采用rst_n == 139。b1) nxt_state = W_BLOCK。b1) nxt_state = W_DSCD。 end W_BLOCK: begin if (have_space == 139。 else nxt_state = cur_state。b1) nxt_state = STDBY。 end default: nxt_state = STDBY。 else cur_state = `DLY nxt_state。最好是能夠有單一的全局時鐘,所有寄存器都在上升沿觸發(fā)。s 設(shè)計中包含內(nèi)部產(chǎn)生的時鐘時,必須將所有需要的時鐘在一個單獨的模塊中生成。同時確保把假定的占空比寫入用戶手冊。使用Core的芯片設(shè)計者必須檢查實際的占空比能夠滿足Core的要求,也應(yīng)該了解怎樣改變綜合和時序分析的策略以使得Core能夠滿足實際的條件。如果必須使用大量的上升沿和下降沿觸發(fā)的寄存器,將上升沿和下降沿觸發(fā)的寄存器分到不同的模塊中是很有用的。s (建議)避免在RTL級手工實例化時鐘Buffer。在可綜合的RTL代碼中,時鐘網(wǎng)絡(luò)通常被認(rèn)為是理想的網(wǎng)絡(luò),沒有延時。一個例外情況是在頂層模塊中可以插入廠家提供的偽時鐘Buffer,用于指明時鐘樹的源頭和時鐘樹的參數(shù)。門控時鐘電路依賴于具體的工藝和時序。不同局部時鐘SKEW還會導(dǎo)致保持時間沖突(violation)。多數(shù)低功耗的電路需要門控時鐘,但它們不應(yīng)該出現(xiàn)在RTL級的編碼中,象Power Compiler這類工具可以自動去做。它將違反編碼規(guī)范的地方限制在一個小的范圍內(nèi),有利于對這些產(chǎn)生電路開發(fā)特殊的測試策略。 復(fù)位s (建議)確保所有寄存器只被簡單的復(fù)位信號所控制。因為組合邏輯的輸出會帶有毛刺,對于異步復(fù)位電路,則會引起觸發(fā)器的異常。通常模塊內(nèi)所有寄存器應(yīng)在同一時間內(nèi)被復(fù)位。s (建議)如果需要條件復(fù)位,設(shè)置一個單獨的復(fù)位信號,并且將產(chǎn)生邏輯隔離于一個單獨的模塊。s 如果需要內(nèi)部產(chǎn)生異步復(fù)位信號,必須保證所產(chǎn)生的異步復(fù)位信號沒有毛刺,最好的辦法是保證異步復(fù)位信號最后為1bit觸發(fā)器的輸出,例如當(dāng)計數(shù)器達到一個預(yù)設(shè)值時,產(chǎn)生異步復(fù)位信號:bad: wire reset。better: reg reset。 避免LATCH描述組合邏輯的always塊中,如果if語句缺乏else子句、case語句中各個條件所處理的變量不同都會在綜合時推斷出LATCH。s 保證always塊敏感列表完備。 s 在最終優(yōu)先級的分支上使用else子句,而不用elsif。s 避免使用LATCH,除非能清楚地分析相關(guān)電路的時序以及毛刺帶來的影響 避免組合反饋s 在設(shè)計中避免組
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1