[英]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.