A volte mi sembra utile utilizzare assegnazioni di blocco per "variabili locali" all'interno di blocchi sempre funzionanti. Questo può aiutare a ridurre il codice ripetuto.Le variabili Verilog possono avere un ambito locale su un blocco sempre?
Per evitare di utilizzare accidentalmente la stessa variabile in un blocco sempre diverso (che può essere non deterministico per la simulazione), mi piacerebbe dargli un ambito locale. C'è un bel modo sintetico per farlo?
Qualcosa di simile:
module sum3(
input clk,
input [7:0] in1,
input [7:0] in2,
input [7:0] in3,
output reg [7:0] result,
output reg [7:0] result_p1);
begin :sum
reg [7:0] sum_temp; // local variable
always @(posedge clk) begin
sum_temp = in1 + in2 + in3;
result <= sum_temp;
result_p1 <= sum_temp + 1;
end
end
endmodule
(. Modelsim sembra essere a posto con questo, ma Synplify non sembra piacere)
Il codice presenta più errori di compilazione con i 2 simulatori utilizzati (VCS e Incisive). – toolic
Modificato per correggere gli errori di compilazione. – mksuth
Qualche commento da parte dell'elettore in basso? – mksuth