Para aqueles que vão começar a programar em baixo nível, ou mais especificamente programar para hardware a "linguagem" predominante utilizada no vale do silício é o Verilog, ou suas derivadas parecidas como o System Verilog ou HDL.

Ainda não estou muito familiarizado com a questão de sínteses, modelagens comportamental, etc... mas a medida que for me familiarizando com esse mundo desafiador postarei novas descobertas :)

Para dar início a esse mundo obscuro irei começar por um intepretador/compilador. Nada mais justo para testarmos nossos "Good by world" :P

Segue o link para baixar o Icarus Verilog for Windows Download

Após instalar ir em executar e testar um simples exemplo encontrado na pasta samples da instalação. Iremos testar o hello.v

Procedimentos:

cmd (Windows)
iverilog -o hello hello.v

o "hello" será o arquivo saída da síntese depois de compilado
Algo como isso

:ivl_version "0.9.2 " "(v0_9_2)";
:vpi_time_precision + 0;
:vpi_module "system";
:vpi_module "v2005_math";
:vpi_module "va_math";
S_00671ED0 .scope module, "main" "main" 2 41;
.timescale 0 0;
.scope S_00671ED0;
T_0 ;
%vpi_call 2 45 "$display", "Hello, World";
%vpi_call 2 46 "$finish";
%end;
.thread T_0;
# The file index is used to find the file name in the following table.
:file_names 3;
"N/A";
"";
"hello.vl";


Após gerar o hello
Fazer o teste executando o comando vpp hello e o prompt irá mostrar a saída resultado.

Fonte: http://www.asic-world.com/verilog/intro1.html#Introduction