2016-11-12 2 views
0

je suis nouveau à verilog mais je ne comprends pas pourquoi est cette référence illégale à net pour le signal (subcounter_of_counter). Je veux dire qu'il est logique combinatoireverilog, pourquoi est cette référence illégale à net

merci à l'avance :)

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 

Répondre

2

A wire est un nettype et un nettype ne peut pas être attribué à un always blocs ou initial blocs.
Modifiez subcounter_of_counter de wire à reg pour résoudre le problème. reg est un mot clé pour un type logique et ne signifie pas explicitement qu'il sera synthétisé dans un registre.

+0

merci beaucoup pour votre réponse. M'a beaucoup aidé. :) –

+0

si vous pouvez également m'aider avec une autre sitouation avec le même code, ici: http://stackoverflow.com/questions/40578102/verilog-error-range-must-be-bounded-by-constant-expressions –