
Empacotei a suite Alliance para o Arch Linux. Trata-se de uma suite completa de software livre para criar circuitos integrados.
Com a suite Alliance, você pode projetar um chip desde sua descrição em VHDL até o layout pronto para ser produzido em uma fábrica.
O pacote pode ser baixado no AUR. Você também pode obter um pacote binário pre-compilado para i686 aqui.
Se gostar, não se esqueça de se cadastar no AUR e votar no pacote, para que ele possa ser incluído nos repositórios oficiais do Arch Linux.
O restante deste artigo contém um tutorial para você que não entende nada de circuitos integrados, mas está morrendo de curiosidade sobre como o layout de um chip é produzido. Mostrarei passo-a-passo como sintetizar o layout de um processador MIPS, que vem como exemplo no pacote.
Copie o diretório de exemplos para a sua home.
cp -R /opt/alliance-5.0/examples/alliance-examples ~
Entre no diretório do processador MIPS.
cd ~/alliance-examples/mipsR3000/sce
Carregue as variáveis de ambiente necessárias para o correto funcionamento da suite Alliance.
source /opt/alliance-5.0/etc/alc_env.sh
Execute o make para chamar todas as ferramentas necessárias para o processo de sintetização do chip.
make
Esse processo vai demorar alguns minutos. O que está sendo feito basicamente é interpretar a descrição do processador em VHDL, otimizá-la, mapeá-la em componentes eletrônicos dentre uma lista de standard cells (células-padrão), posicionar essas células ao longo da pastilha e achar rotas entre as mesmas.
Entre certas etapas, também são aplicados casos de teste para verificar se o processador está se comportando corretamente. Ao final do processo, é executado um verificador DRC, que verifica se algumas regras básicas (para evitar problemas físicos no chip) estão sendo cumpridas.
Para visualizar o layout do chip depois de pronto, chame o dreal na linha de comando, passando as variáveis de ambiente adequadas.
MBK_WORK_LIB=.; export MBK_WORK_LIB; RDS_TECHNO_NAME=local-cmos-035.rds; \ export RDS_TECHNO_NAME; RDS_IN=cif; export RDS_IN; RDS_OUT=cif; export RDS_OUT; \ MBK_IN_PH=ap; export MBK_IN_PH; MBK_OUT_PH=ap; export MBK_OUT_PH; \ MBK_CATA_LIB=/opt/alliance-5.0/cells/sxlib; \ export MBK_CATA_LIB; MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME; \ /opt/alliance-5.0/bin/dreal -l mips_chip
Para visualizar todos os layers, vá ao menu Tools -> Flatten.
Outro exemplo mais simples para entender o que ocorre no processo de sintetização do chip é o adder4. Trata-se de um circuito integrado que soma dois números de 4 bits e fornece o resultado. No diretório desse exemplo, existe um arquivo README que explica o que cada ferramenta faz, e quais os arquivos gerados em cada etapa intermediária. Você pode, por exemplo, visualizar o esquemático eletrônico do circuito usando a ferramenta xsch.