Cómo estimar el área de chips desde el diseño de Verilog

2

Puedo sintetizar el diseño de Verilog en Xilinx Vivado (Webpack) y obtener el uso de LUT / FF del informe de síntesis. Sin embargo, me gustaría estimar el área del chip (en mm2) según ciertas especificaciones de ASIC (no FPGA) (por ejemplo, en un proceso de 22 nm).

Algunos artículos afirman que obtuvieron el área con Synopsys Design Compiler, al que no puedo acceder.

Entonces, ¿hay alguna herramienta que pueda usar para estimar el área de chips del diseño de verilog (sintetizado)?

Actualizar:

Después de algunas investigaciones, probé qflow 1.1 con osu035 standard cell library para el siguiente código de verificación:

module test(
    input a,
    input b,
    output c
);

assign c = a + b;

endmodule

Después de qflow synthesize place , synth.log da los siguientes datos de área:

----------------------------
Total stdcells     :4
Total cell width   :2.08e+03
Total cell height  :8.00e+03
Total cell area    :4.16e+06
Total core area    :4.16e+06
Average cell height:2.00e+03

Pero no tengo idea de cuál es la unidad del resultado. El osu035_stdcells.lef contiene las siguientes líneas:

UNITS
  DATABASE MICRONS 1000 ;
END UNITS

Por lo tanto, mi mejor conjetura es que el área del chip es 4.16e+06/1000/1000=4.16 micron^2 o 4.16e-6 mm2 . Es eso correcto?

    
pregunta lyu

2 respuestas

4

La única forma de obtener una estimación realmente buena es ejecutar el diseño a través del flujo ASIC adecuado para el proceso en cuestión. Sí, esto requiere software extremadamente costoso, bibliotecas de componentes, datos de fab de propiedad, etc., etc.

Es posible que pueda obtener una estimación aproximada del estadio sintetizando puertas (no LUT) con alguna otra cadena de herramientas (tal vez incluso una de código abierto) y luego multiplicando el conteo de puertas por el tamaño de celda para el proceso en el que está interesado. Sin embargo, tenga en cuenta que ciertas optimizaciones para utilizar las LUT de FPGA y otras funciones no funcionarán necesariamente bien en absoluto en un ASIC. Esto tampoco funcionará para los diseños que utilizan el bloque de FPGA RAM o las tablas de búsqueda de ROM grandes sin hacer un trabajo adicional para excluir las RAM / ROM de síntesis como puertas y luego trabajar el área de cada RAM / ROM individualmente y agregarlo todo .

    
respondido por el alex.forencich
2

Estás en el camino correcto. Una vez que qflow ha generado un archivo .def para usted, puede ver ese archivo DEF en cualquier visor de diseño capaz de leer archivos en formato DEF ("magic" es el editor / visor de diseño usado por qflow). Un visor de diseño hace que sea mucho más fácil encontrar el tamaño en unidades físicas. Pero sí, el archivo DEF está en micrones, y puede averiguar el tamaño del diseño de la línea DIEAREA en la parte superior del archivo DEF (que tiene formato (llx, lly) (urx, ury)).

Pero, para obtener un valor para un proceso de 22 nm, debe configurar qflow para un proceso de 22 nm, lo que significa que debe tener varios formatos de archivo para un conjunto de celdas estándar en el proceso de destino, principalmente la libertad (.lib) archivos y archivos LEF (.lef) (información tecnológica y macros de células estándar, que pueden estar en archivos separados). Suponiendo que puede configurar eso en qflow, todavía debe asegurarse de que qflow pueda enrutar el diseño, porque si la lógica es demasiado densa, el diseño tendrá que completarse con algún porcentaje de celdas de relleno, y eso aumentará el área de diseño.

También hay otras consideraciones, como la cantidad de unidades que desea que tengan las salidas (según la longitud de la ruta desde la fuente hasta el receptor y la capacitancia de entrada en el destino), si desea que las entradas y salidas se almacenen en búfer o doble buffer. Sin embargo, cuanto mayor sea el diseño, menor será el porcentaje del área dedicada a la E / S, por lo tanto, el menor efecto de este tipo de consideraciones tendrá en la estimación del área de diseño.

Si puede hacer llamadas razonables sobre cargas y fanout, puede obtener un estimado de área razonable. Pero lo principal es que debe tener un conjunto de celdas estándar, ya que el área puede cambiar fácilmente por un factor de dos, solo en función de la forma compacta de las celdas estándar y las funciones lógicas disponibles en el conjunto.

    
respondido por el R. Timothy Edwards

Lea otras preguntas en las etiquetas