Error: especificación de puerto de salida de Verilog ilegal

-1

Estoy teniendo problemas con mi banco de pruebas verilog. Cada vez que intento ejecutarlo, aparece el error en el título anterior para mis cuatro registros de conmutación. He buscado esta pregunta varias veces, pero no puedo encontrar ninguna respuesta que resuelva mi problema. Gracias

// Module
module proj1 (A,B,C,D,a,b,c,d,e,f,g);

    input A,B,C,D;
    output a,b,c,d,e,f,g;
    wire w1,w2,w3;

    // For a/d/e/f/g outputs
    and(a , d , e , f , g , A , 1);

    // For a/d/e
    and(a , d , f , ~B , ~D);

    // For a
    and(a , C , 1);
    and(a , B , D);

    // For d
    xor(d , C , D);
    and(d , ~A , ~B);

    //For e/f   
    and(e , f , ~D , ~C);
    and(e , f , ~D , B);


    // For f/g
    and(f , g , B , ~C);

    // For f is above in the section For e/f
    and(g , C , ~D);
    and(g , C , ~A , ~B);




    // For b/c outputs
    and(b , c , ~B , ~C , ~D);

    // For b
    xnor(w2 , C , D);
    or(w3 , ~B , w2);
    and(b , w3 , ~A);

    // For c
    // w1 is the output of the below or expression so it can be used in the
    // following and expression
    or(w1 , ~C , D , B);
    and(c , ~A , w1);

endmodule 



// Test bench

module testbench4proj1();

    reg [3:0] switches;
    wire [6:0] leds;

    proj1 pr1(leds[6] ,leds[5] ,leds[4] ,leds[3] ,leds[2] ,leds[1] , leds[0], switches[3] , switches[2] , switches[1] , switches[0]);

        initial
            begin
                switches = 0000;
                $display("numbers:n     switches=ABCD   leds=abcdefg\n");
                #80 $finish;
            end

        always
            begin
                #10 $display("%h    " , switches , "%b  " , switches ,"     ", leds);
                switches = switches + 0001;
            end

endmodule
    
pregunta user71126

1 respuesta

0

Tiene un error al conectarse a su módulo proj1. No debe intentar controlar los puertos de salida de su módulo desde su banco de pruebas. Lo siguiente impulsará sus entradas desde el banco de pruebas:

proj1 pr1(switches[3] , switches[2] , switches[1] , switches[0], leds[6] ,leds[5] ,leds[4] ,leds[3] ,leds[2] ,leds[1] , leds[0]);

Es una mejor práctica usar la conexión por nombre en lugar de la conexión por orden. Consulte la IEEE Std 1800-2012 gratuita, 23.3.2.2 Conexión de puertos de instancia de módulo por nombre .

    
respondido por el toolic

Lea otras preguntas en las etiquetas