A juzgar por tu otra pregunta, eres un tipo de Xilinx. Así que sugiero encarecidamente que obtenga la hoja de datos de su chip Xilinx y vaya al capítulo de Descripción funcional. Para el chip Spartan 3 que uso, es de 42 páginas de lectura divertida. Detalla exactamente qué componentes están dentro de un FPGA: los IOB, los CLB, los cortes, las LUT, las RAM de bloques, los Multiplicadores, el Administrador de reloj digital, la Red de reloj, la Interconexión 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, entonces puede 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, el Mapeador procesa los resultados de Síntesis, "mapeando" en las piezas disponibles de la arquitectura FPGA. Luego, el enrutador realiza la ruta y el lugar (PAR), que determina a dónde van esas piezas y cómo conectarlas. Finalmente, los resultados de PAR se convierten en un archivo BIT. Normalmente, este archivo BIT se transforma de alguna manera para que pueda cargarse en un chip Flash, de modo que el FPGA pueda programarse 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 segmentos, que están compuestos por LUT, que son solo SRAM de 16 direcciones de 1 bit. Entonces, una cosa que contendrá el archivo BIT es exactamente qué datos se incluyen en 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 de la RAM del bloque. Describirá lo que está conectado al conjunto y restablecerá los pines de cada flip flop en cada rebanada. 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 de 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 valida PROG_B). Una vez que se borra la memoria, INIT_B pasa a nivel alto para indicar que la fase se ha completado. Luego se carga el archivo BIT, ya sea a través de JTAG o la interfaz del chip Flash. Una vez que el programa está cargado, el Conjunto / Reinicio Global (GSR) se pulsa, restableciendo todos los flip flops a su estado inicial. El pin DONE luego se pone alto, para indicar que la configuración está completa. Exactamente un ciclo de reloj más tarde, se libera la señal global de tres estados (GTS), lo que permite que las salidas se activen. Exactamente un ciclo de reloj más tarde, se habilita la función de escritura global (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 se puede reordenar ligeramente dependiendo de los indicadores que se configuran en el archivo BIT.
EDITAR:
También debo agregar que la razón por la que el programa FPGA no es permanente es porque la estructura lógica está compuesta de memoria volátil (por ejemplo, SRAM). Así que cuando el FPGA pierde poder, el programa se olvida. Es por eso que necesitan por ej. Flash chips como almacenamiento no volátil para el programa FPGA, para que pueda cargarse cada vez que se enciende el dispositivo.