是否允许在端口中使用 struct packed?

Is a struct packed allowed to be used in ports?

我使用的大多数工具都允许这样做,但有一个不允许。我已经阅读了规范,IEEE1800-2017 我找不到它。

module mymod (
  input   logic           clk,
  input   logic           reset,
  input   struct packed {  
                            logic [1:0]  var0;
                            logic [1:0]  var1;
                            logic [8:0]  var2;
                        } addr,

...

我在这里和那里看到了一些示例,甚至在端口中使用了 typedef 结构。

比照。 7.2 Structures7.2.1 Packed structures

端口可以是任何数据类型。 (第 23.2.2 节)对于该数据类型是否可以由与端口方向交互的变量或网络信号表示有一些限制。

但我强烈反对使用匿名类型(在您的示例中为 struct),而是在公共包中声明一个带有 typedef 的用户定义类型,并在声明该端口时使用该 typedef。这消除了尝试连接解压缩的结构和枚举时的类型兼容性问题。