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á:
-
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.
-
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.
-
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.