La pregunta que hace que un sumador sea "rápido" es a menudo tecnológica. ¿Está implementando (o simulando) para ASIC, o algún FPGA específico?
En cualquier caso, tendrás "bloques de construcción" elementales que "conectarás"; Realmente no es como cuando se trata de componentes "Y" y "O" cuando se describe un diseño de CPU.
Como ejemplo, tome este módulo Verilog de sumador mínimo de 8 bits:
module add (clk, a, b, result);
input clk;
input [7:0]a;
input [7:0]b;
output [15:0]result;
always @(posedge clk)
result = a + b;
endmodule // add
Implementado para un FPGA ICE40, se vería así. Observe que los bloques aquí son los bloques de construcción elementales. No hay Y / O aquí, por lo que optimizar un sumador para la velocidad con esos no tiene ningún sentido:
compareesoconelmapatecnológico"general" más abstracto que yosys (que estoy usando para generar estos árboles) genera:
Verásusprimitivas"compuerta" AND, XOR, XNOR, NAND allí, pero también cosas como AOI (y / o-invertido) - que el software considera útil, ya que pueden corresponder a algo específicamente fácil y compacto para implementar en cualquier arquitectura dada, ya sea una FPGA o celdas ASIC.
Por lo tanto, en general, es importante para entender qué lógica constituye una operación compleja como "agregar". Sin embargo, tan pronto como optimice la velocidad, el tamaño y la potencia, deberá considerar lo que realmente implementará, ya sea un ASIC, ya sea algo creado a partir de 74xx o un FPGA, y una regla general. como "esta es una implementación rápida" deja de existir.