¿En qué se diferencia el diseño ASIC del diseño FPGA? ¿Escribe HDL (Verilog, VHDL) para diseñar y ASIC de la misma manera que lo haría para un FPGA?

2

Desde mi entendimiento limitado, siento que uno podría simplemente tomar la salida de síntesis del código Verilog / VHDL y luego usar ese diseño para fabricar en silicona el mar de puertas.

    
pregunta spetty flakson

3 respuestas

3

1) no todos los ASIC son solo digitales. Algunos también tienen circuitos analógicos o incluso son solo analógicos.

Por lo tanto, su pregunta solo se aplica a los ASIC solo digitales o solo a la parte digital de un ASIC de señal mixta.

Sí, en teoría, pensarías que podrías:

1) Escribe tu VHDL

2) Generar la lista de redes (esto describe el circuito real)

3) Implemente esa lista de redes en FPGA o un ASIC.

Pero en el mundo real no es tan simple.

El Paso 1 es el mismo, pero la lista de red para un FPGA será diferente.

En un FPGA solo tendrá las puertas disponibles que se implementan en ese FPGA.

En un ASIC puede elegir cualquier puerta y tantas como desee de la biblioteca que describe el proceso de fabricación del ASIC.

Esta diferencia significa que es posible que se deban realizar diferentes optimizaciones en cualquiera de los diseños. Para el diseño de alta velocidad, es esencial simular la lista de redes para que se incluyan los retrasos reales. Esto revelará los problemas de tiempo que deben solucionarse.

Entonces, sí, el piont de inicio (VHDL, Verilog) podría ser el mismo, pero eso no significa que se pueda poner a ciegas en un ASIC o FPGA y esperar buenos resultados.

Lo que se hace en el mundo real es que primero se evalúa el VHDL o Verilog en un FPGA para una funcionalidad adecuada. Luego ese código depurado se usa para hacer un ASIC. Incluso entonces hay que hacer muchas simulaciones para asegurar una funcionalidad adecuada.

    
respondido por el Bimpelrekkie
2

Los FPGA y los ASIC tienen diferencias, por ejemplo, en el restablecimiento y el comportamiento del valor inicial. Aquí hay una lista no completa. La lista podría ser más específica si nos informa su proveedor de FPGA y / o la biblioteca ASIC usada.

FPGAs:

  • general
    • tener un reinicio de encendido
    • tiene una interfaz JTAG / debugging
  • chanclas
    • tiene reinicios asíncronos y síncronos
    • habilitar el reloj
    • tener un reinicio activo bajo o alto
    • tiene un valor de inicio
  • RAMs
    • tienen bloques de RAM dedicados con tamaños fijos
    • tiene un valor de inicio
  • DSP
    • tener unidades aritméticas para multiplicaciones y sumas con tamaños fijos

ASIC: 1/strong>

  • general
    • es necesario implementar el reinicio de encendido
    • JTAG / debugging necesita ser implementado
  • chanclas
    • restablecer, habilitar reloj, ... depende de la biblioteca primitiva
    • no tiene valor de inicio
  • RAMs
    • son generados por macros
  • DSP
    • los multiplicadores son generados por macros
    • se deben combinar varias macros y primitivas para obtener las características de una celda DSP
respondido por el Paebbels
2

Un FPGA no es más que un ASIC basado en RAM. Si bien HDL es "portátil" de un destino a otro, siempre debe tener en cuenta lo que ofrecen esas bibliotecas de destino.

Si crea un prototipo de un diseño ASIC (eventual) en un FPGA, nunca debe usar ninguna Macros duras que el FPGA ofrezca que no tenga un "equivalente" en la biblioteca de ASIC (por ejemplo, los retrasos de IO Tap pueden no estar disponibles en tu biblioteca ASIC mientras que están en Xilinx). Su FPGA debe tener límites muy distintos (capacidades "Black Box") para relojes y restablecimientos, memorias y un anillo de IO, que puede intercambiar fácilmente cuando se dirige al ASIC.

Sin embargo, normalmente, su HDL debería traducir fácilmente de FPGA a ASIC. Recomiendo encarecidamente dibujar su diseño en un programa como Visio para mostrar puertas, FF, FSM, etc. antes de escribir nada. Y para ayudar a garantizar que obtenga lo que planeó, trate de no ser "elegante" con su RTL ... OMI, ser lo más explícito posible es una buena práctica, incluso si requiere algunas líneas más de código.

    
respondido por el CapnJJ

Lea otras preguntas en las etiquetas