Entendiendo Verilog Netlist

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})

Respuestas (1)

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}.

:ok, eso está bien tomado. Una cosa más, cuando dibujamos manualmente este esquema, todos los demás puertos se utilizan junto con todos los cables, pero en el esquema usaremos BUF y GND
No estoy seguro de seguir exactamente, si el esquema es solo una representación, entonces se podría usar la conexión al suministro o a tierra. BUF, se puede perder un búfer que normalmente se agrega con la fuerza de transmisión correcta con fines ilustrativos, pero lo necesitará en sistemas más grandes para asegurarse de que su diseño cumpla con sus limitaciones de tiempo. Un búfer de alta potencia de transmisión no girará tanto en pistas largas. BUF y GND deben provenir de sus bibliotecas base, debe tener esquemas para estos.
ahora puedo validar la salida del sintetizador que estaba convirtiendo un archivo verilog a verilog netlist que había usado anteriormente. Ambos parecen validarse entre sí, por lo que mi caso de prueba es exitoso. Este enlace me ayuda a entender más.