1. 程式人生 > >Verilog中可綜合與不可綜合的語句

Verilog中可綜合與不可綜合的語句

 (1)所有綜合工具都支援的結構:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。
    (2)
所有綜合工具都不支援的結構:time,defparam,$finish,fork,join,initial,delays,UDP,wait。
    (3)
有些工具支援有些工具不支援的結構:casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。
 


建立可綜合模型的原則
    要保證Verilog HDL賦值語句的可綜合性,在建模時應注意以下要點:

    (1)不使用initial。
    (2)不使用#10。
    (3)不使用迴圈次數不確定的迴圈語句,如forever、while等。
    (4)不使用使用者自定義原語(UDP元件)。
    (5)儘量使用同步方式設計電路。
    (6)除非是關鍵路徑的設計,一般不採用呼叫門級元件來描述設計的方法,建議採用行為語句來完成設計。
    (7)用always過程塊描述組合邏輯,應在敏感訊號列表中列出所有的輸入訊號。
    (8)所有的內部暫存器都應該能夠被複位,在使用FPGA實現設計時,應儘量使用器件的全域性復位端作為系統總的復位。
    (9)對時序邏輯描述和建模,應儘量使用非阻塞賦值方式。對組合邏輯描述和建模,既可以用阻塞賦值,也可以用非阻塞賦值。但在同一個過程塊中,最好不要同時用阻塞賦值和非阻塞賦值。
    (10)不能在一個以上的always過程塊中對同一個變數賦值。而對同一個賦值物件不能既使用阻塞式賦值,又使用非阻塞式賦值。
    (11)如果不打算把變數推導成鎖存器,那麼必須在if語句或case語句的所有條件分支中都對變數明確地賦值。
    (12)避免混合使用上升沿和下降沿觸發的觸發器。
    (13)同一個變數的賦值不能受多個時鐘控制,也不能受兩種不同的時鐘條件(或者不同的時鐘沿)控制。
    (14)避免在case語句的分支項中使用x值或z值。

不可綜合verilog語句2009-04-14 19:33

1、initial                     只能在test bench中使用,不能綜合。(我用ISE9.1綜合時,有的簡單的initial也可以綜合,不知道為什麼)2、events                      event在同步test bench時更有用,不能綜合。3、real                        
    不支援real資料型別的綜合。
4、time                            
    不支援time資料型別的綜合。
5、force 和release       

    不支援force和release的綜合。
6、assign 和deassign       
 不支援對reg 資料型別的assign或deassign進行綜合,支援對wire資料型別的assign或deassign進行綜合。
7、fork join                 
    不可綜合,可以使用非塊語句達到同樣的效果。
8、primitives                 
    支援門級原語的綜合,不支援非門級原語的綜合。
9、table                     
    不支援UDP 和table的綜合。
10、敏感列表裡同時帶有posedge和negedge

 如:always @(posedge clk or negedge clk) begin...end
    這個always塊不可綜合。
11、同一個reg變數被多個always塊驅動

12、延時
    以#開頭的延時不可綜合成硬體電路延時,綜合工具會忽略所有延時程式碼,但不會報錯。
 如:a=#10 b;
    這裡的#10是用於模擬時的延時,在綜合的時候綜合工具會忽略它。也就是說,在綜合的時候上式等同於a=b;
13、與X、Z的比較
可能會有人喜歡在條件表示式中把資料和X(或Z)進行比較,殊不知這是不可綜合的,綜合工具同樣會忽略。所以要確保訊號只有兩個狀態:0或1。
    如:
1 module synthesis_compare_xz (a,b);
2 output a;
3 input b;
4 reg a;
5   
6 always @ (b)
7 begin
8   if ((b == 1'bz) || (b == 1'bx)) begin
9     a = 1;
10   end else begin
11     a = 0;
12   end
13 end 
14   
15 endmodule

相關推薦

Verilog綜合不可綜合語句

 (1)所有綜合工具都支援的結構:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,not

關於verilog綜合的過程,綜合不可綜合的理解

前言: 1):數位電路設計過程:         一:行為級:分析電路功能、效能以及其他相容性問題,只驗證設計功能,不考慮設計的任何時序資訊;         二:RTL級:暫存器級,只能使用可綜合語句結構進

verilog 綜合不可綜合語句

 (1)所有綜合工具都支援的結構:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,noti

關於Verilog的幾種賦值語句

變量數據類型 ril 存儲 函數的調用 能夠 兩種 sig 註意 調用 http://www.cnblogs.com/nanoty/archive/2012/10/21/2733017.html 1. 連續賦值語句(Continuous Assignments)

列舉不可列舉

先把總結寫在這裡: JavaScript物件的屬性可分為可列舉和不可列舉,它是由屬性的enumeration值決定的,true為可列舉,false為不可列舉 js中原型屬性一般是不可列舉的,而自己定義的屬性一般是可列舉的 可以通過propertylsEnumerable()方法

EditText編輯不可編輯。

--------------------------第一種-------------------------------------------- 在Xml設定 1,android:editable="false",如果該方法ok了就沒必要看下面的了。。。O(∩_∩)

塊元素,行內元素以及替換不可替換元素

顯示 表現級區分: 塊元素 有以下這些: <address><caption><dd><div><ol><ul><p><th><thead><tr>&

EditText編輯不可編輯

個人建議不要在xml里加android:enabled或android:focusable,那樣弄太麻煩了,這樣寫後半天我沒搞定 之後查了一下 在初始化介面的時候設定EditText.setEnabled(false);這樣edittext不可編輯。 然後當你需要的時候設定

css繼承和不可繼承的屬性

一、無繼承性的屬性 1、display:規定元素應該生成的框的型別 2、文字屬性: vertical-align:垂直文字對齊 text-decoration:規定新增到文字的裝飾 text-shadow:文字陰影效果 white-space:空白符

verilog 不可綜合語句 總結 彙總

(1)所有綜合工具都支援的結構:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,

JavaScript枚舉屬性不可枚舉屬性

lse struct 例子 UNC type java 包含 ima function https://www.cnblogs.com/kongxy/p/4618173.html 在JavaScript中,對象的屬性分為可枚舉和不可枚舉之分,它們是由屬性的enum

關於verilogifcase語句不完整產生鎖存器的問題

一、是什麼        鎖存器是一種在非同步時序電路系統中,對輸入訊號電平敏感的單元,用來儲存資訊。一個鎖存器可以儲存1bit的資訊,通常,鎖存器會多個一起出現,如4位鎖存器,8位鎖存器。         鎖存器在資料未鎖存時,輸出端的訊號隨輸入訊號變化,就像訊號通

VHDL的不可綜合語句有什麼用?

VHDL有很多不可綜合語句,以前總是想不通,既然不能綜合,要他們 幹啥? 比如說wait,wait on....等等, 後面終於想通了,你可以用來寫testbench啊,哈哈哈哈, 用來寫激勵檔案用,並不是用來用邏輯功能的,哈哈哈, 這些教科書真是的,沒有一本書提過這

android imageview diallog綜合應用猜牌遊戲

package training.android.com; import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.content.

css繼承屬性不可繼承屬性

不可繼承的:display、margin、border、padding、background、height、min-height、max-height、width、min-width、max-width、overflow、position、left、right、top、bottom、z-index、floa

JS列舉屬性不可列舉屬性

一、怎麼判斷屬性是否可列舉js中基本包裝型別的原型屬性是不可列舉的,如Object, Array, Number等,如果你寫出這樣的程式碼遍歷其中的屬性:var num = new Number(); for(var pro in num) { console.log

線性線性不可

net 分類算法 數據轉換 higher 依然 技術分享 無需 mon 學習分類 http://blog.csdn.net/u013300875/article/details/44081067 很多機器學習分類算法,比如支持向量機(svm),假設數據是要線性可分。 如果數

重入函數不可重入函數

如果 interrupt 信號量 發生 標準io 一個 i/o 可重入 規則 參考:http://blog.csdn.net/wenhui_/article/details/6889013 重入:重新進入 區別:多個任務能否同時調用一個函數,例如操作系統在進程調度過程中,或

phpMySQLajaxechart綜合

error: new ror cat val utf too pri div http://www.yinghualuowu.com/php/echart.html 創建table sex 有name num <?php in

VRRPVLAN綜合實驗

huawei vrrp;vlan 實驗要求:1. 使VLAN10中的PC1和VLAN20中的PC2能夠ping通主機PC3,且vlan10和valn20中的主機能夠互通。2. PC1和PC2的網關都使用虛擬網關(見拓撲圖),並且當交換機S3的GE0/0/3口出現故障時,PC1也能和PC2,