En general, los diseños de FPGA comienzan de manera similar a los diseños de ASIC, todo está en el simulador. Puede obtener una mejor visibilidad para la depuración en un simulador de lo que nunca puede obtener en hardware. Sin embargo, sí es necesario crear bancos de pruebas y modelos funcionales, lo que lleva tiempo. Para implementaciones complejas es un requisito, ya que nunca resolverá todos los errores simplemente probando en el hardware. Una vez que el diseño está completamente depurado en el simulador, puede soltarlo en el tablero. Tenga en cuenta que para diseños muy grandes en FPGA muy grandes, la síntesis, el lugar y la ruta pueden llevar mucho tiempo. Un diseño en el que trabajé hace aproximadamente un año tomó aproximadamente el 40% de un Virtex 6 HXT 565 y tardó aproximadamente 7 horas en completar el lugar y la ruta. Esto no es algo que deba hacer regularmente para pequeños cambios.
En general, cualquier retraso en la placa es demasiado pequeño (mucho menos que un período de reloj) y se puede ignorar o son incógnitas que deberán ajustarse y compensarse con algún tipo de rutina de entrenamiento activo, ya que varían incluso dentro de un lote de tablas.
Los propios FPGA se someten a pruebas exhaustivas (de ahí el costo muy alto) para que se sepa que las variaciones del retardo están dentro de los límites especificados, y su diseño no debe depender del retardo de un chip individual para especificaciones. Si es así, entonces tiene problemas más grandes y necesita eliminar la dependencia o encontrar una manera de compensarla. Por ejemplo, consulte el tiempo del CERN para el núcleo digital: depende en gran medida del enrutamiento y tiene su propia rutina de calibración para caracterizar los retrasos que se ejecutan regularmente para corregir las variaciones a largo plazo y dependientes de la temperatura.
Es posible probar el código para un FPGA en un FPGA diferente. Si el código no interactúa con el mundo exterior, generalmente puede ponerlo en cualquier FPGA que desee. Si escribe código independiente del proveedor (evite los generadores de núcleo para RAM y ROM, en lugar de ello infiera todo en HDL puro), incluso es posible probar el código destinado a la producción en una FPGA Xilinx en una FPGA de Altera. Tenga en cuenta que esto no funciona si necesita utilizar características específicas de FPGA, como los transceptores de alta velocidad.
Si está diseñando para interactuar con el hardware, entonces necesitará el hardware y el cliente debería proporcionarlo a menos que también sea su trabajo construirlo. También será necesario contar con algunas herramientas de depuración de hardware, como un osciloscopio de señal mixta y un analizador lógico, para que pueda verificar las interfaces de hardware y asegurarse de que están haciendo lo que usted desea.