繁体   English   中英

在 SystemVerilog 中使用“typedef logic”而不是“wire”时会生成一个寄存器吗?

[英]Will 'typedef logic' generate a register when using it instead of a 'wire', in SystemVerilog?

具有以下 SystemVerilog 代码:

module my_module(
  input  wire [31:0] my_net
);
  ...
endmodule
...
...
wire [31:0] my_net;

assign my_net = ...;

my_module m(my_net);

通过以下方式更改my_net声明的后果是什么(在综合时):

typedef logic [31:0] my_net_t; // This is actually no longer a net, but a variable.

module my_module(
  input  my_net_t my_net
);
  ...
endmodule

my_module m(my_net);
...
...
wire [31:0] my_net;

assign my_net = ...;

my_module m(my_net);

我的意思是, logic是一个变量,而不是一个网络,因此,合成器会为my_net生成一个寄存器吗?

不。
连续分配使用

assign my_net = RHS;

不推断寄存器。

不正确。 logic是一种可以应用于变量网络的数据类型。

input  wire [31:0] my_net
input  my_net_t my_net

隐含地与

input  wire logic [31:0] my_net
input  wire my_net_t my_net

在模块内部时

logic v;
wire w;

隐含地

var logic v;
wire logic W;

但无论my_net是变量还是网络,对my_net的连续赋值都不会创建寄存器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM