Normalmente, o design do ASIC é um esforço da equipe devido à complexidade e quantidade de trabalho. Vou dar uma ordem aproximada de etapas, embora algumas etapas possam ser concluídas em paralelo ou fora de ordem. Vou listar as ferramentas que usei para cada tarefa, mas não serão enciclopédicas.
Construa uma biblioteca de células. (Como alternativa, a maioria dos processos tem bibliotecas de portas disponíveis comercialmente. Eu recomendaria isso, a menos que você saiba que precisa de algo que não está disponível.) e quaisquer macros, como um multiplicador de matriz ou memória. Depois que o esquema de cada célula é projetado e verificado, o layout físico deve ser projetado. Eu usei o Cadence Virtuoso para esse processo, juntamente com simuladores de circuitos analógicos como Spectre e HSPICE .
Caracterize a biblioteca de células. (Se você possui uma biblioteca de gateways de terceiros, isso geralmente é feito para você.) Cada célula da sua biblioteca deve ser simulada para gerar tabelas de tempo para a STA (Static Timing Analysis). Isso envolve pegar a célula finalizada, extrair os parasitas de layout usando Assura , Diva ou Calibre e simular o circuito sob condições variáveis de entrada e cargas de saída. Isso cria um modelo de tempo para cada porta que é compatível com o seu pacote STA. Os modelos de cronometragem geralmente estão no formato de arquivo Liberty . Eu usei o Silicon Smart e o Liberty-NCXpara simular todas as condições necessárias. Lembre-se de que você provavelmente precisará de modelos de temporização no "pior dos casos", "nominal" e "melhor dos casos" para que a maioria dos softwares funcione corretamente.
Sintetize seu design. Não tenho experiência com compiladores de alto nível, mas no final do dia, o compilador ou a cadeia de compiladores deve ter seu design de alto nível e gerar uma lista de rede no nível do portão. O resultado da síntese é a primeira espiada que você obtém no desempenho teórico do sistema e onde os problemas de força da unidade são abordados pela primeira vez. Eu usei o Design Compiler para código RTL.
Coloque e direcione seu design. Isso pega a netlist no nível do portão do sintetizador e a transforma em um design físico. Idealmente, isso gera um layout pad-to-pad pronto para a fabricação. É realmente fácil configurar seu software P&R para cometer automaticamente milhares de erros de DRC, portanto, nem todos os jogos e diversão nesta etapa também. A maioria dos softwares gerencia problemas de força da unidade e gera árvores de relógio conforme as instruções. Alguns pacotes de software incluem Astro, IC Compiler, Silicon Encounter e Silicon Ensemble. O resultado final do local e da rota é a lista final líquida, o layout final e os parasitas de layout extraídos.
Análise de tempo estático pós-layout. O objetivo aqui é verificar se o seu design atende às suas especificações de tempo e se não há problemas de configuração, retenção ou bloqueio. Se seus requisitos de design forem rigorosos, você poderá gastar muito tempo aqui corrigindo erros e atualizando as correções em sua ferramenta de P&R. A ferramenta STA final que usamos foi o PrimeTime .
Verificação física do layout. Depois que um layout é gerado pela ferramenta P&R, é necessário verificar se o design atende às regras de design do processo (Design Rule Check / DRC) e se o layout corresponde ao esquema (Layout versus Schematic / LVS). Essas etapas devem ser seguidas para garantir que o layout esteja conectado corretamente e seja fabricável. Novamente, algumas ferramentas de verificação física são Assura , Diva ou Caliber .
Simulação do desenho final. Dependendo da complexidade, você poderá fazer uma simulação em nível de transistor usando Spectre ou HSPICE , uma simulação "fast spice" usando HSIM ou uma simulação totalmente digital usando ModelSim ou VCS . Você poderá gerar uma simulação com atrasos realistas com a ajuda da sua ferramenta STA ou P&R.
Começar com uma biblioteca de gateways existente economiza muito tempo e também usa macros que beneficiam seu design, como memória, um microcontrolador ou blocos de processamento alternativos. Gerenciar a complexidade do projeto também é uma parte importante - um design de relógio único será mais fácil de verificar do que um circuito com vários domínios de relógio.