Verilog: ¿es posible la conexión sin cables?

1

Lamento hacer esta pregunta, que creo que es muy básica, pero no puedo encontrar una respuesta. El siguiente ejemplo funciona claramente. Pero me gustaría omitir la declaración de los cables ay by.

module sub(output reg y);
endmodule

module top(input wire sel,output wire x);
wire ay,by;


sub a(.y(ay));
sub b(.y(by));

assign x= sel ?ay:by;

endmodule

Los módulos tienen un nombre. ¿Es posible abordar sus puertos directamente? Si es así, ¿cuál es la sintaxis correcta? Esto no funciona (en Quartus)

module sub(output reg y);
endmodule

module top(input wire sel,output wire x);


sub a();
sub b();

assign x= sel ?a.y:b.y;

endmodule
    

2 respuestas

6

No, no es posible hacer esto.

La sintaxis module.wire funciona en algunos sistemas, pero todas las herramientas de síntesis requerirán que uses los puertos correctamente.

    
respondido por el pjc50
1

Se pueden omitir las declaraciones de cableado y en la mayoría de los casos se implicará un cable de 1 bit de ancho. Esto generalmente se considera una mala práctica, ya que terminará con desajustes de ancho si olvida declarar los más anchos que 1 bit.

module sub(output reg y);
endmodule

module top(input wire sel,output wire x);
//wire ay,by; No wire declaration

sub a(.y(ay)); //1 bit wide wire implied
sub b(.y(by));

assign x= sel ?ay:by;

endmodule

Las salidas no conectadas se optimizarán por síntesis.

    
respondido por el pre_randomize

Lea otras preguntas en las etiquetas