Kann Verilog-Variablen gegeben werden lokalen Bereich zu einem immer blockieren?

Ich manchmal es nützlich finden, verwenden Sie blockierende Zuweisungen für "lokale Variablen" innerhalb getaktet blockiert immer. Dies kann helfen, reduzieren auf wiederholte-code.

Nicht versehentlich in die gleiche variable in einem anderen immer blockieren (die kann nicht deterministisch sein für die simulation), möchte ich es im lokalen Bereich. Gibt es ein schönes synthetisierte Weg, 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 in Ordnung zu sein mit diesem, aber Synplify nicht scheinen es zu mögen.)

  • Hat Ihr code mehrere Fehler bei der Kompilierung mit 2 Simulatoren, die ich verwendet (VCS und Prägnant).
  • Bearbeitet beheben den Fehler bei der Kompilierung.
  • Feedback aus dem down-Wähler?
InformationsquelleAutor mksuth | 2014-09-15
Schreibe einen Kommentar