Esta podría ser una pregunta fuera de lugar. Estoy tratando de entender una lista de conexiones de verilog para un sumador de 1 bit y hacer un esquema a partir de ella. Pero como soy muy nuevo en Verilog, aunque puedo entender algunos comandos básicos. Preferí leer esto , pero no me ayudó. A continuación se muestra la lista de conexiones requerida.
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
Bueno, la declaración de variables es comprensible. Pero no puedo entender
ADD2 synth_ADD(.in1({synth_net, in1}), .
in2({synth_net_0, in2}), .cin(synth_net_1), .out({synth_net_3, synth_net_4})
Su netlist ha creado celdas de enlace, efectivamente un buen 0 o 1 eléctrico.
Se han creado usando celdas GND y manejan sus cables de manera similar a synth_net.
{a,b}
es un operador de concatenación si a & b son de 1 bit cada uno, tendrá un valor de 2 bits que se parece a ab.
Por lo tanto {synth_net, in1}
, es efectivamente in1 con un 0 (GND) agregado al MSB.
El artículo al que se vinculó solo parecía mostrar conexiones ordenadas de la lista de puertos, prefiero usar la conexión con nombre como la que tiene en su lista de conexiones.
ADD2 synth_ADD(
.in1( {synth_net, in1} ),
.in2( {synth_net_0, in2}),
.cin( synth_net_1 ),
.out( {synth_net_3, synth_net_4})
);
Lo anterior es una instancia de ADD2, esta instancia se llama synth_ADD. synth_ADD tiene puertos in1, in2, cin y out. Si observamos la creación de instancias, podemos ver que in1 está siendo impulsado por {synth_net, in1}
.
shailendra
pre_aleatorizar
shailendra