Dies könnte eine ungewöhnliche Frage sein. Ich versuche, eine Verilog-Netzliste für 1-Bit-Addierer zu verstehen und daraus einen Schaltplan zu erstellen. Da ich jedoch sehr neu bei Verilog bin, kann ich einige grundlegende Befehle verstehen. Ich hatte es vorgezogen, dies zu lesen . aber es hat mir nicht geholfen. Unten ist die erforderliche Netzliste
module test(in1, in2, out);
input in1;
input in2;
output [1:0] out;
wire synth_net;
wire synth_net_0;
wire synth_net_1;
wire synth_net_2;
wire synth_net_3;
wire synth_net_4;
ADD2 synth_ADD(.in1({synth_net, in1}), .
in2({synth_net_0, in2}), .cin(synth_net_1), .out({synth_net_3, synth_net_4})
, .cout(synth_net_2));
GND synth_GND(.out(synth_net));
GND synth_GND_0(.out(
synth_net_0));
GND synth_GND_1(.out(synth_net_1));
BUF synth_BUF(.in(
synth_net_3), .out(out[1]));
BUF synth_BUF_0(.in(synth_net_4), .out(out[0])
);
endmodule
Nun, die Variablendeklaration ist verständlich. Aber ich kann es nicht verstehen
ADD2 synth_ADD(.in1({synth_net, in1}), .
in2({synth_net_0, in2}), .cin(synth_net_1), .out({synth_net_3, synth_net_4})
Ihre Netzliste hat Verbindungszellen erstellt, effektiv eine gute elektrische 0 oder 1.
Sie wurden mit GND-Zellen erstellt und treiben Ihre Drähte ähnlich wie synth_net.
{a,b}
ist ein Verkettungsoperator, wenn a & b jeweils 1 Bit sind, haben Sie einen 2-Bit-Wert, der wie ab aussieht.
Daher {synth_net, in1}
wird effektiv in1 mit einer 0 (GND) zum MSB hinzugefügt.
Der Artikel, auf den Sie verlinkt haben, schien nur geordnete Portlistenverbindungen zu zeigen, ich bevorzuge benannte Verbindungen, wie Sie sie in Ihrer Netzliste haben.
ADD2 synth_ADD(
.in1( {synth_net, in1} ),
.in2( {synth_net_0, in2}),
.cin( synth_net_1 ),
.out( {synth_net_3, synth_net_4})
);
Das Obige ist eine Instanz von ADD2, diese Instanz heißt synth_ADD. synth_ADD hat Ports in1, in2, cin und out. Wenn wir uns die Instanziierung ansehen, können wir sehen, dass in1 von gesteuert wird {synth_net, in1}
.
Shailendra
pre_randomize
Shailendra