Was ist der Unterschied zwischen reg und wire nach der Synthese?

7

Angenommen, ich habe diese beiden Codes:

module wire_example( a, b, y);
  input a, b;
  output y;

  wire a, b, y;

  assign y = a & b;

endmodule

und der zweite ist:

module reg_combo_example( a, b, y);
input a, b;
output y;

reg   y;
wire a, b;

always @ ( a or b)
begin   
  y = a & b;
end

endmodule

Meine Frage ist, was ist der Unterschied in der Netzliste ? Beide haben ein Gate, aber hat das Modul mit reg yeinem Flip-Flop oder einem Latch, um die Daten zu speichern, während wire yes keinen Latch hat?

0x90
quelle

Antworten:

9

Keines Ihrer Beispiele enthält Latches oder Flip-Flops. Der alwaysBlock in Ihrem zweiten Beispiel ist kombinatorisch und nicht sequentiell (wenn ein Latch synthetisiert würde, welcher Takt würde diesen Latch steuern?). Sie müssen einen regTyp yeinfach verwenden, weil er auf der linken Seite einer Zuweisungsanweisung in einem alwaysBlock angezeigt wird . Viele Leute halten dies für einen Nachteil von Verilog, mit dem man nur schwer argumentieren kann. In VHDL signalwürde ein Typ anstelle von beidem wireund verwendet reg, um die Verwirrung zu beseitigen.

Dorn
quelle
3
.... weshalb Sie SystemVerilog verwenden und einfach eine "Logik" deklarieren
ThePopMachine
1

Draht: Es ist ein Netz, das die Verbindungen zwischen Komponenten darstellt. Es wird für die kontinuierliche Zuordnung verwendet, dh der Wert des Kabels wird kontinuierlich durch die Ausgänge der an ihn angeschlossenen Geräte bestimmt. Reg: Es wird für die prozedurale Zuordnung verwendet. Reg bedeutet nicht immer einen Flop. reg kann seinen Wert behalten, bis ein anderer Wert in die Register eingefügt wird.

user102458
quelle