¿Cuál es la metodología adecuada para crear diseños de FPGA portátiles?

3

Los diseños FPGA pueden contener RTL junto con bloques IP. Estos bloques de IP probablemente serán del proveedor del FPGA. Los ejemplos de dichos bloques de IP son la creación de instancias de FIFO de reloj dual, bloques matemáticos de punto flotante y punto fijo, por lo que podemos establecer con precisión la latencia e.t.c, primitivas de bajo nivel, por ejemplo, buffers de E / S del dispositivo e.t.c. Tales cosas no se pueden inferir del código RTL.

Puede suceder que el desarrollo generalmente se lleve a cabo en una plataforma determinada, por ejemplo, Altera Quartus que tiene como objetivo el ciclón V. Sin embargo, puede ser que el diseño final se deba implementar en un dispositivo completamente diferente, por ejemplo, Microsemi Igloo 2.

¿Cuál es el método adecuado para crear diseños portátiles en este caso?

En teoría, el método adecuado requerirá:

  1. Un diseño donde existen archivos para las dos versiones de bloques de IP de los dos proveedores. Se puede utilizar una envoltura para crear una instancia de uno de los dos bloques de IP durante la simulación y la síntesis.

  2. La herramienta de síntesis para determinar qué archivos usar y cuáles excluir, ya que sintetiza el diseño. Por lo tanto, Quartus solo usará archivos que sean relevantes para él y Libero solo usará aquellos relevantes para él.

  3. La herramienta de simulación se puede configurar para compilar y simular el diseño utilizando uno de los dos IP de los proveedores.

Una suposición que se hace aquí es que existen bloques de IP con funciones similares de ambos proveedores.

    
pregunta quantum231

1 respuesta

0

La portabilidad HDL, como la portabilidad del software, es un ideal inalcanzable. Cada sintetizador tiene diferentes estrategias y diferentes errores, y las bibliotecas específicas de los proveedores entrarán en juego. Sin embargo, vale la pena esforzarse, ya que la portabilidad real es como la inmortalidad real ... nunca llegarás, pero más cerca siempre es mejor.

Los sintetizadores pueden inferir pestillos, y generalmente lo hacen de la misma manera: activados por un bloque con una lista de sensibilidad. La regla principal de RTL portátil es escribir procesos que se activan desde relojes comunes. Si está claro desde su RTL dónde están los pestillos, debería estar claro para el sintetizador.

La lógica combinatoria se puede incluir en sus procesos de enclavamiento para permitir que el sintetizador lo use en la entrada o salida. Manténgalo fuera del proceso de enclavamiento si desea asegurarse de que un valor interno específico esté enclavado.

En general, no particione bloques combinatorios si no tiene que ... el compilador puede encontrar optimizaciones que no encontrará. Sin embargo, si hay una opción arquitectónica clara y obvia (como un algoritmo altamente optimizado), es posible que desee imponer esa estructura implícitamente. Además, los bloques inusualmente grandes de lógica combinatoria pueden enviar algunos sintetizadores por un agujero de conejo; la repartición podría darle orientación.

    
respondido por el Cristobol Polychronopolis

Lea otras preguntas en las etiquetas