Estoy tratando de optimizar un código verilog y encontré algo que no creo que sea correcto. Encontré un módulo que tiene una salida y utiliza ese valor de salida como condición en una declaración de caso. Hay un ejemplo:
module TT
(
output reg Busy = 1'b0
, output reg Finished = 1'b0
, input wire clk
, input wire rst
, input wire start
, input wire [ 5 - 1 : 0 ] freq
);
always @ (posedge clk)
begin
if(!rst)
begin
case(Busy)
1'b0:
begin
//do some logic...
if(something)
Busy = 1'b1;
end
1'b1:
begin
//do some logic...
if(something_else)
Busy = 1'b0;
end
endcase
end
end
endmodule
¿Es una buena práctica hacer esto? Si no, ¿por qué? Muchas gracias.