Manchmal finde ich es nützlich Blockierungszuweisungen für "lokale Variablen" in getakteten immer Blöcken zu verwenden. Dies kann helfen, wiederholten Code zu reduzieren.Können Verilog-Variablen lokalen Bereich zu einem immer blockieren?
Um zu vermeiden, dass Sie versehentlich dieselbe Variable in einem anderen always-Block verwenden (der für die Simulation nicht deterministisch sein kann), möchte ich einen lokalen Bereich angeben. Gibt es eine schöne synthetisierbare Art, dies zu tun?
Etwas wie:
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 scheint dies in Ordnung zu sein, aber Synplify scheint nicht zu mögen)
Ihr Code hat mehrere Kompilierungsfehler mit den 2 Simulatoren, die ich verwendet habe (VCS und Incisive). – toolic
Bearbeitet, um die Kompilierungsfehler zu beheben. – mksuth
Irgendwelche Rückmeldungen vom Downvoter? – mksuth