verilog,为什么这是对网络的非法引用

verilog,为什么这是对网络的非法引用,verilog,hdl,digital,digital-logic,Verilog,Hdl,Digital,Digital Logic,我是verilog新手,但我不明白为什么这个非法引用net for signal(计数器的子计数器)。我是说这是组合逻辑 提前感谢:) wire[n-1:0]计数器的子计数器; 注册[n-1:0]掩码,免费; 始终@(*)开始//命令或id或掩码或计数器的空闲或子计数器 如果(命令==增量)开始 对于(int i=0;i

我是verilog新手,但我不明白为什么这个非法引用net for signal(计数器的子计数器)。我是说这是组合逻辑

提前感谢:)

wire[n-1:0]计数器的子计数器;
注册[n-1:0]掩码,免费;
始终@(*)开始//命令或id或掩码或计数器的空闲或子计数器
如果(命令==增量)开始
对于(int i=0;i如果(iA
wire
是一个nettype,并且不能在
始终
块或
初始
块中分配nettype。

将计数器的
subcounter\u
wire
更改为
reg
,以解决您的问题。
reg
是逻辑类型的关键字,并不明确表示它将合成为寄存器。

a
wire
是网络类型,不能在
始终
块或
初始
中分配网络类型块。

将计数器的
subcounter\u
wire
更改为
reg
,以解决您的问题。
reg
是逻辑类型的关键字,并不明确表示它将合成为寄存器。

如果您还可以帮助我处理具有相同代码的另一个位置,请在此:如果您还可以帮助我处理具有相同代码的另一个位置相同的代码,在这里:
wire [n-1:0] subcounter_of_counter;
reg [n-1:0] mask,free;     
always @(*) begin //command or id or mask or free or subcounter_of_counter
        if (command==increment) begin
            for (int i = 0; i < n; i=i+1)begin
                if (i<id) begin
                    subcounter_of_counter[i]=1'b0;
                end else if (i==id) begin
                    subcounter_of_counter[i]=1'b1;
                end else begin
                    if( (|mask[id+1:i]) || (|free[id+1:i]) ) begin
                        subcounter_of_counter[i]=1'b0;
                    end else begin
                        subcounter_of_counter[i]=1'b1;
                    end
                end
            end
        end
        end