Como en estos dos casos:
wire [3:0] A, B;
wire [4:0] C, D;
assign A = C; // larger width to smaller width
assign D = B; // smaller width to larger width
¿Cómo deberían ser A y D en términos de C y B respectivamente?
Como en estos dos casos:
wire [3:0] A, B;
wire [4:0] C, D;
assign A = C; // larger width to smaller width
assign D = B; // smaller width to larger width
¿Cómo deberían ser A y D en términos de C y B respectivamente?
Las reglas de Verilog son:
Eso significa, en tu caso:
assign A = C[3:0];
assign D = { 1'b0, B };
Tenga en cuenta que la mayoría de las herramientas de síntesis emitirán una advertencia en estos casos. Y deberían hacerlo porque no está claro si estás haciendo las cosas correctamente.
Lea otras preguntas en las etiquetas verilog