A juzgar por tu otra pregunta, eres un chico Xilinx. Por lo tanto, le recomiendo que obtenga la hoja de datos para su chip Xilinx y vaya al capítulo Descripción funcional. Para el chip Spartan 3 que uso, son 42 páginas de lectura divertida. Detalla exactamente qué componentes están dentro de un FPGA: los IOB, CLB, sectores, LUT, Bloque RAM, Multiplicadores, Digital Clock Manager, Clock Network, Interconnect y alguna información de configuración muy básica. Debe comprender esta información si desea saber cómo es un "HDL compilado".
Una vez que esté familiarizado con la arquitectura de su FPGA, podrá comprender este proceso. Primero, su diseño HDL se ejecuta a través del motor de síntesis, que convierte su HDL en básicamente RTL. Luego, Mapper procesa los resultados de Synthesis, "mapeándolos" en las piezas disponibles de la arquitectura FPGA. Luego, el enrutador hace lugar y ruta (PAR), que determina dónde van esas piezas y cómo conectarlas. Finalmente, los resultados de PAR se convierten en un archivo BIT. Por lo general, este archivo BIT se transforma de alguna manera para que se pueda cargar en un chip Flash, de modo que el FPGA se pueda programar automáticamente cuando se enciende.
Este archivo de bits describe todo el programa FPGA. Por ejemplo, los CLB en un Spartan 3 están compuestos por sectores, que están compuestos por LUT, que son solo SRAM de 16 bits y 1 dirección. Entonces, una cosa que contendrá el archivo BIT es exactamente qué datos van a cada dirección de la SRAM. Otra cosa que contiene el archivo BIT es cómo cada entrada de la LUT está conectada a la matriz de conexión. El archivo BIT también contendrá los valores iniciales que van dentro del bloque RAM. Describirá lo que está conectado al conjunto y restablecerá los pines de cada flip flop en cada segmento. Describirá cómo se conecta la cadena de transporte. Describirá la interfaz lógica para cada IOB (LVTTL, LVCMOS, LVDS, etc.). Describirá cualquier resistencia integrada pull-up o pull-down. Básicamente todo.
Para Xilinx, la memoria del FPGA se borra cuando se inicia la configuración (es decir, se confirma PROG_B). Una vez que la memoria está limpia, INIT_B sube para indicar que la fase está completa. El archivo BIT se carga, ya sea a través de JTAG o la interfaz de chip Flash. Una vez que se carga el programa, se activa el Global Set / Reset (GSR), restableciendo todos los flip flops a su estado inicial. El pin HECHO se pone alto para indicar que la configuración se ha completado. Exactamente un ciclo de reloj más tarde, se libera la señal global de tres estados (GTS), lo que permite controlar las salidas. Exactamente un ciclo de reloj más tarde, se libera Global Write Enable (GWE), lo que permite que los flip flops comiencen a cambiar de estado en respuesta a sus entradas. Tenga en cuenta que incluso este proceso de configuración final puede reordenarse ligeramente dependiendo de los indicadores que se establecen en el archivo BIT.
EDITAR:
También debo agregar que la razón por la cual el programa FPGA no es permanente es porque la estructura lógica está compuesta de memoria volátil (por ejemplo, SRAM). Entonces, cuando el FPGA pierde potencia, el programa se olvida. Es por eso que necesitan, por ejemplo, chips Flash como almacenamiento no volátil para el programa FPGA, de modo que pueda cargarse cada vez que se enciende el dispositivo.