Czasami przydaje się użycie blokujących przypisań dla "zmiennych lokalnych" w taktowanych zawsze blokach. Pomoże to ograniczyć liczbę powtarzających się kodów.Czy zmienne Verilog mogą mieć zakres lokalny na zawsze blok?
Aby uniknąć przypadkowego użycia tej samej zmiennej w innym bloku zawsze (który może być niedeterministyczny w przypadku symulacji), chciałbym nadać mu zasięg lokalny. Czy istnieje ładny syntezowalny sposób robienia tego?
Coś jak:
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 wydaje się być w porządku z tym, ale Synplify nie wydaje się to podoba)
Twój kod zawiera wiele błędów kompilacji z dwoma używanymi przeze mnie symulatorami (VCS i Incisive). – toolic
Edytowane, aby naprawić błędy kompilacji. – mksuth
Jakieś opinie od niedziałających wyborców? – mksuth