A julgar pela sua outra pergunta, você é um cara da Xilinx. Portanto, sugiro que você obtenha a folha de dados do seu chip Xilinx e vá para o capítulo Descrição Funcional. Para o chip Spartan 3 que eu uso, são 42 páginas de leitura divertida. Ele detalha exatamente quais componentes estão dentro de um FPGA - IOBs, CLBs, fatias, LUTs, RAM de bloco, multiplicadores, Digital Clock Manager, Clock Network, Interconnect e algumas informações básicas de configuração. Você precisa entender essas informações se quiser saber como é um "HDL compilado".
Quando você estiver familiarizado com a arquitetura do seu FPGA, poderá entender esse processo. Primeiro, seu design de HDL é executado no mecanismo de síntese, que transforma seu HDL em basicamente RTL. Em seguida, o Mapper processa os resultados do Synthesis, "mapeando-os" para as partes disponíveis da arquitetura FPGA. Em seguida, o roteador coloca e direciona (PAR), que descobre onde essas peças vão e como conectá-las. Finalmente, os resultados do PAR são transformados em um arquivo BIT. Normalmente, esse arquivo BIT é transformado de alguma forma para que possa ser carregado em um chip Flash, para que o FPGA possa ser programado automaticamente quando ele é ligado.
Este arquivo de bit descreve o programa FPGA inteiro. Por exemplo, os CLBs em um Spartan 3 são compostos por fatias, que são compostas por LUTs, que são apenas SRAMs de 1 bit e 16 endereços. Portanto, uma coisa que o arquivo BIT conterá é exatamente quais dados serão inseridos em cada endereço da SRAM. Outra coisa que o arquivo BIT contém é como cada entrada do LUT é conectada à matriz de conexão. O arquivo BIT também conterá os valores iniciais que vão dentro do bloco RAM. Ele descreverá o que está conectado ao conjunto e redefinirá os pinos de cada flip-flop em cada fatia. Ele descreverá como a cadeia de transporte está conectada. Ele descreverá a interface lógica para cada IOB (LVTTL, LVCMOS, LVDS, etc). Ele descreverá todos os resistores pull-up ou pull-down integrados. Basicamente, tudo.
Para o Xilinx, a memória do FPGA é apagada quando a configuração é iniciada (isto é, PROG_B é afirmado). Uma vez que a memória está limpa, INIT_B fica alto para indicar que a fase está concluída. O arquivo BIT é então carregado, através da interface do JTAG ou do chip Flash. Depois que o programa é carregado, o Global Set / Reset (GSR) é pulsado, redefinindo todos os chinelos para o estado inicial. O pino DONE fica alto, para indicar que a configuração está concluída. Exatamente um ciclo de clock mais tarde, o sinal global de três estados (GTS) é liberado, permitindo que as saídas sejam acionadas. Exatamente um ciclo de clock mais tarde, o Global Write Enable (GWE) é lançado, permitindo que os flip-flops comecem a mudar de estado em resposta às suas entradas. Observe que mesmo esse processo final de configuração pode ser ligeiramente reordenado, dependendo dos sinalizadores definidos no arquivo BIT.
EDITAR:
Devo acrescentar também que a razão pela qual o programa FPGA não é permanente é porque a estrutura lógica é composta de memória volátil (por exemplo, SRAM). Então, quando o FPGA perde energia, o programa é esquecido. É por isso que eles precisam, por exemplo, de chips Flash como armazenamento não volátil para o programa FPGA, para que ele possa ser carregado sempre que o dispositivo estiver ligado.