Soy desarrollador de software en una pequeña tienda donde solo ha habido un responsable de EE para una serie de diseños de FPGA durante una década, casi todos los cuales se dirigen a la línea Spartan, específicamente al XC3S5000.
Estoy buscando la opinión de la comunidad sobre algunas de las afirmaciones de los tipos de EE que me resultan difíciles de creer:
1.) Muchas compilaciones deben crearse y probarse (sin cambiar los archivos de entrada) porque un binario en particular a menudo falla las pruebas debido a "problemas de tiempo". (literalmente)
Yo: ¿Se espera la falla frecuente de un diseño de FPGA y este proceso increíblemente lento se considera normal? No puedo imaginarme repetidamente compilando el mismo lenguaje de desarrollo de software tradicional y esperando que la salida sea la correcta * esta vez *. El HDL parece subespecificado si este es el caso.
2.) Debido a que el proceso de creación está sujeto a algoritmos "aleatorios" (supongo que esto es la colocación y el enrutamiento) es "muy difícil" recrear el binario solo desde la entrada HDL.
Yo: Seguramente hay una semilla inicial proporcionada a este algoritmo pseudoaleatorio que se puede consultar después de una compilación exitosa. El binario bueno exacto podría luego ser recreado usando la semilla más tarde. Esta semilla se puede registrar opcionalmente en el control de origen.
3.) Debido a que las herramientas provistas por Xilinx pueden cambiar (ser actualizadas, etc.) incluso si una recreación exacta es posible a partir de una buena semilla conocida y las herramientas antiguas, un nuevo conjunto de herramientas puede crear un binario que no prueba. . El tipo de EE no ve ningún uso en la investigación de cómo encontrar la semilla aleatoria utilizada para una compilación y cómo proporcionarla para una reconstrucción.
Yo: ¿Qué tan probable es que una compilación se rompa con la introducción de nuevas herramientas?
4.) El proceso de compilación binaria no permite ninguna manipulación posterior a la compilación de los bytes del binario debido a la suma de comprobación y la imposibilidad de escribir en un binario a un desplazamiento conocido.
Yo: ¿No puede incrustar información en un binario existente?
5.) Insiste en verificar tanto el producto final como los archivos NGC.
Yo: ¿Hay alguna razón para almacenar archivos NGC?
Notas :
* Los binarios de FPGA se almacenarán en un lugar diferente, pero definitivamente no en un sistema de control de versión centrado en texto.
* Utilizamos un esquema de versión frágil para consultar qué FPGA se está ejecutando actualmente en nuestro sistema. Es útil que el software solucione los errores de hardware al verificar si el FPGA es de una versión determinada. Podemos leer un número monótonamente de 16 bits y una fecha de compilación del FPGA, pero estos números no se sincronizan directamente con el sistema de control de versiones en el que se registra el binario.
* Ya he revisado las siguientes preguntas: Qué archivos / directorios se necesitan para recrear un proyecto de Xilinx PlanAhead?