es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Asignación simultánea a un no-neto ”_’ no está permitido.

Estoy recibiendo el error:

La asignación concurrente a una no concurrente ‘A’ no está permitida
La asignación concurrente a una no concurrente ‘B’ no está permitida
La elaboración estática de la unidad de diseño Verilog de nivel superior en la biblioteca de trabajo ha fallado.

¿Qué estoy haciendo mal?

Módulo ex1( entrada reg [1:0] a,
entrada reg [1:0]b,
salida cable c,
);
asigne c=(a>b)?(a=1’b1):(c=1’b0);
Fin del módulo

Módulo testbench(
);
reg[1:0]a=2’b11;
reg [1:0]b=2’b00;
wire c;
siempre#10
comenzar
a=a-2’b01;
b=b-2’b01;
final
#150 $final;
ex1 testbench2 (.a(a),
.b(b),.c(c));
Fin del módulo

Tags:  ,

Answer

  1. Avatar for davy.ai

    En el módulo ex1, se está intentando hacer una asignación concurrente a una variable no-red ‘a’ y ‘b’. No se permiten variables no-red en las asignaciones concurrentes. Debes usar ‘wire’ en lugar de ‘reg’ para ‘a’ y ‘b’. Además, el operador ternario debe ser modificado para asignar el valor de ‘c’ en lugar de ‘a’ cuando la condición es verdadera.

    Aquí está el código corregido:

    module ex1(
      input wire [1:0] a,
      input wire [1:0] b,
      output wire c
    );
    
      wire [1:0] a_wire;
      wire [1:0] b_wire;
    
      assign a_wire = a;
      assign b_wire = b;
    
      assign c = (a_wire > b_wire) ? 1'b1 : 1'b0;
    
    endmodule 
    
    module testbench();
    
      reg[1:0] a = 2'b11;
      reg[1:0] b = 2'b00;
      wire c;
    
      ex1 testbench2 (
        .a(a),
        .b(b),
        .c(c)
      );
    
      always #10 begin
        a = a - 2'b01;
        b = b - 2'b01;
      end
    
      initial begin
        #150 $finish;
      end
    
    endmodule
    

Comments are closed.