2011-04-01 65 views
2

我在一個例子遇到的輸入和輸出的module系統Verilog代碼decleration沒有說明它們的類型類型,例如logicwire ...投入而系統的Verilog

module mat_to_stream (
    input [2:0] [2:0] [2:0] a,b, 
    input newdata, 
    input rst, clk, 
    output [2:0] [7:0] A_out, B_out); 
    ...rest of code... 

是什麼說明logic與不說明任何類型之間的區別?

回答

9

說明logic並沒有說明任何類型。

input newdata, 

相當於

input logic newdata, 

的SystemVerilog的IEEE標準(1800年至2009年)描述了這種在部分: 「23.2.2.3規則用於確定端口種類,數據類型和方向」。

+3

實際上'input newdata'相當於'input wire logic newdata'。 'logic'是一種數據類型,'wire'是一種默認數據類型爲'logic'的信號類型。 – 2013-10-08 06:04:27

1

不分配輸入數據類型是很常見的,因爲它們應該幾乎總是wire

input [7:0] newdata 

名義上是等同於:

input wire [7:0] newdata 

它實際上是撿了`default_nettype wire這可以改口說uwire強制編譯器檢查獨特的驅動程序,這將與多個驅動器接線錯誤失敗。

使用logic作爲一種類型允許在wirereg之間的自動選擇,這對於輸出是有用的並且允許更容易折射。輸入不能是reg類型。

Stuart Sutherlands SNUG2013 paper,第12節介紹瞭如何使用uwire更好地暗示設計意圖,如果它被工具正確支持。