¿En qué se diferencia el diseño ASIC de la síntesis FPGA HDL?
42
He tenido cierta experiencia con los conjuntos de herramientas FPGA / HDL como Xilinx ISE, Lattice Diamond, etc. El flujo de trabajo general es escribir Verilog / VHDL, simulación, pruebas y luego programar el FPGA.
Escuché a un par de personas decir que el diseño ASIC es muy diferente. ¿Cuáles son los conjuntos de herramientas utilizados para los dos tipos principales de ASIC, ASIC de nivel de puerta y ASIC de nivel de transistor? He estado buscando herramientas de síntesis de alto nivel como Catapult C y Cadence C to Silicon, pero nunca he probado ninguna. ¿Puede explicar los diferentes tipos de herramientas disponibles en el campo ASIC / FPGA que pueden cambiar / acelerar el flujo de trabajo típico de HDL?
Por lo general, el diseño ASIC es un esfuerzo de equipo debido a la complejidad y cantidad de trabajo. Daré un orden aproximado de pasos, aunque algunos pasos se pueden completar en paralelo o fuera de orden. Enumeraré las herramientas que he usado para cada tarea, pero no serán enciclopédicas.
Construye una biblioteca celular. (Alternativamente, la mayoría de los procesos tienen bibliotecas de compuertas que están disponibles comercialmente. Lo recomendaría a menos que sepa que necesita algo que no está disponible). Esto implica diseñar múltiples compuertas de fuerza de accionamiento para tantas funciones lógicas como sea necesario, diseñar controladores / receptores de almohadilla, y cualquier macros como un multiplicador de matriz o memoria. Una vez que se diseña y verifica el esquema de cada celda, se debe diseñar el diseño físico. He utilizado Cadence Virtuoso para este proceso, junto con simuladores de circuitos analógicos como Spectre y HSPICE .
Caracterizar la biblioteca celular. (Si tiene una biblioteca de compuerta de terceros, esto generalmente se hace por usted). Cada celda de su biblioteca debe simularse para generar tablas de temporización para el Análisis de temporización estática (STA). Esto implica tomar la celda terminada, extraer los parásitos del diseño usando Assura , Diva o Calibre , y simular el circuito bajo diferentes condiciones de entrada y cargas de salida. Esto crea un modelo de temporización para cada puerta que es compatible con su paquete STA. Los modelos de temporización suelen estar en el formato de archivo Liberty . He usado Silicon Smart y Liberty-NCXpara simular todas las condiciones necesarias. Tenga en cuenta que probablemente necesitará modelos de temporización en el "peor de los casos", el "nominal" y el "mejor de los casos" para que la mayoría del software funcione correctamente.
Sintetiza tu diseño. No tengo experiencia con compiladores de alto nivel, pero al final del día, el compilador o la cadena de compiladores deben tomar su diseño de alto nivel y generar una lista de red de nivel de puerta. El resultado de la síntesis es el primer vistazo al rendimiento teórico del sistema, y donde se abordan por primera vez los problemas de resistencia de la unidad. He usado Design Compiler para el código RTL.
Coloca y enruta tu diseño. Esto toma la lista de nivel de puerta del sintetizador y la convierte en un diseño físico. Idealmente, esto genera un diseño de almohadilla a almohadilla que está listo para la fabricación. Es realmente fácil configurar su software de P&R para que cometa automáticamente miles de errores de DRC, por lo que tampoco todo es diversión y juegos en este paso. La mayoría del software gestionará los problemas de potencia de la unidad y generará árboles de reloj como se indica. Algunos paquetes de software incluyen Astro, IC Compiler, Silicon Encounter y Silicon Ensemble. El resultado final del lugar y la ruta es la lista final de la red, el diseño final y los parásitos de diseño extraídos.
Análisis de temporización estática posterior al diseño. El objetivo aquí es verificar que su diseño cumpla con sus especificaciones de sincronización y que no tenga problemas de configuración, retención o bloqueo. Si sus requisitos de diseño son estrictos, puede pasar mucho tiempo aquí arreglando errores y actualizando las correcciones en su herramienta P&R. La última herramienta STA que utilizamos fue PrimeTime .
Verificación física del diseño. Una vez que la herramienta P&R ha generado un diseño, debe verificar que el diseño cumpla con las reglas de diseño del proceso (Verificación de regla de diseño / DRC) y que el diseño coincida con el esquema (Diseño versus Esquema / LVS). Se deben seguir estos pasos para garantizar que el diseño esté cableado correctamente y sea fabricable. Una vez más, algunas herramientas de verificación física son Assura , Diva o Calibre .
Simulación del diseño final. Dependiendo de la complejidad, puede realizar una simulación a nivel de transistor usando Spectre o HSPICE , una simulación de "especia rápida" con HSIM o una simulación completamente digital con ModelSim o VCS . Debería poder generar una simulación con retrasos realistas con la ayuda de su herramienta STA o P&R.
Comenzar con una biblioteca de compuerta existente es un gran ahorro de tiempo, así como el uso de macros que beneficien su diseño, como memoria, un microcontrolador o bloques de procesamiento alternativos. La gestión de la complejidad del diseño también es una gran parte: un diseño de reloj único será más fácil de verificar que un circuito con múltiples dominios de reloj.
Como mencionó Virtuoso, Cadence proporciona una cadena de herramientas completa para el diseño (creo que se llama Opus), donde es posible comenzar desde los esquemas, colocar la celda única, evaluar los efectos parásitos, caracterizarlo y luego construirlo en el nivel superior .
clabacchio
1
Creo que cada proveedor importante ofrece una cadena de herramientas completa. Terminamos usando múltiples proveedores en nuestra cadena de herramientas, y de esa manera podríamos usar las herramientas con las que estábamos más familiarizados o con la mejor reputación de la industria.
W5VO
1
Elegir herramientas para la biblioteca o el kit de diseño es prácticamente un requisito. Si no está utilizando la versión compatible de un software en particular, algunas incompatibilidades pueden matar su diseño o darle lecturas falsas. Dicho esto, la gran mayoría de las herramientas EDA que he visto se ejecutan en sistemas Unix / Linux. La mayoría tiene curvas de aprendizaje empinadas.
W5VO
1
@ MartinThompson Absolutamente. Cuanto más empuje los límites de su tecnología (ASIC / FPGA), más críticos serán esos pasos. Dicho esto, las versiones ASIC de esas herramientas te dan mucha más cuerda para que te metas en problemas.
W5VO
1
Tenga en cuenta que 1 y 2 no son una parte general del diseño. Estos pasos son parte de la llamada "calificación del proceso", y los resultados (bibliotecas completamente caracterizadas) son proporcionados por el proveedor FAB. Pero algunas compañías están haciendo un "diseño personalizado completo" y deben completar 1 y 2 por su cuenta.
Ale..chenski
7
La respuesta de W5VO tiende a centrarse en el back-end, y esta es una diferencia importante entre los flujos ASIC y FPGA; pero se pierde la parte de verificación del diseño digital.
Cuando obtener un diseño en silicio puede costar un millón de dólares y más, y puede empacar muchas más puertas utilizables en un ASIC en comparación con un FPGA, entonces pasa mucho más tiempo lejos del laboratorio y los PCB frente a las estaciones de trabajo que ejecutan granjas de simuladores y emuladores y pruebas de escritura para verificar más completamente un diseño ASIC antes de lanzarlo para producción. Los diseñadores de FPGA tienden a realizar una gran parte de sus pruebas utilizando el FPGA en el sistema del que formará parte.
Agregaría que el flujo de trabajo básico para un diseñador digital no es muy diferente entre ASIC y FPGA, pero ASIC tiene mucha más flexibilidad en términos de elementos macro / micro disponibles, colocación y enrutamiento, mientras que FPGA está restringido a sus bloques lógicos prefabricados y limitado en la topología de interconexión. Por lo tanto, FPGA no puede alcanzar los niveles de rendimiento de ASIC y puede dictar soluciones de diseño ligeramente diferentes.
Ale..chenski
Hola Ali Chen Si se piensa que el diseño digital y la verificación digital están separados, entonces el flujo para el diseño puramente digital está más cerca de FPGA frente a ASIC, pero hay una gran separación en la verificación como mencioné. :-)
La respuesta de W5VO tiende a centrarse en el back-end, y esta es una diferencia importante entre los flujos ASIC y FPGA; pero se pierde la parte de verificación del diseño digital.
Cuando obtener un diseño en silicio puede costar un millón de dólares y más, y puede empacar muchas más puertas utilizables en un ASIC en comparación con un FPGA, entonces pasa mucho más tiempo lejos del laboratorio y los PCB frente a las estaciones de trabajo que ejecutan granjas de simuladores y emuladores y pruebas de escritura para verificar más completamente un diseño ASIC antes de lanzarlo para producción. Los diseñadores de FPGA tienden a realizar una gran parte de sus pruebas utilizando el FPGA en el sistema del que formará parte.
fuente