首页 文章

系统verilog中没有类型的输入

提问于
浏览
2

我在一个例子中遇到了一个系统verilog代码对 module 的输入和输出的decleration没有说明它们的类型,例如 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 回答

  • 9

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

    input newdata,
    

    相当于

    input logic newdata,
    

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

  • 1

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

    input [7:0] newdata
    

    名义上相当于:

    input wire [7:0] newdata
    

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

    使用 logic 作为类型允许在 wirereg 之间自动选择,这对输出很有用,并且允许更容易折射 . 输入永远不能是 reg 类型 .

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

相关问题