2011-04-01 67 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更好地暗示设计意图,如果它被工具正确支持。