系统verilog中没有类型的输入

时间:2011-04-01 14:43:34

标签: verilog system-verilog

我在一个示例中遇到了module的{​​{1}}输入和输出的系统verilog代码,但未说明其类型,例如logicwire ...

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与不陈述任何类型之间的差异是什么?

2 个答案:

答案 0 :(得分:9)

说明logic与不说明任何类型之间没有区别。

input newdata,

相当于

input logic newdata,

SystemVerilog IEEE Std(1800-2009)在以下章节中描述了这一点:“23.2.2.3确定端口类型,数据类型和方向的规则”。

答案 1 :(得分:1)

将输入分配为数据类型是很常见的,因为它们几乎总是wire

input [7:0] newdata

名义上相当于:

input wire [7:0] newdata

它实际上正在拾取`default_nettype wire,可以更改为uwire来强制执行独特驱动程序的编译器检查,这将导致多个驱动器的接线错误失败。

使用logic作为类型,可以在wirereg之间自动选择,这对输出非常有用,并且可以更轻松地进行折射。输入永远不能是reg类型。

Stuart Sutherlands SNUG2013 paper,第12节介绍如果工具正确支持,uwire如何更好地暗示设计意图。