Qual a diferença entre o design ASIC e a síntese FPGA HDL?

42

Eu tive alguma experiência com conjuntos de ferramentas FPGA / HDL, como Xilinx ISE, Lattice Diamond, etc. O fluxo de trabalho geral é escrever Verilog / VHDL, simulação, testar e depois programar o FPGA.

Ouvi algumas pessoas dizerem que o design ASIC é muito diferente. Quais são os conjuntos de ferramentas usados ​​para os dois principais tipos de ASICs, ASICs no nível da porta e ASICs no nível do transistor? Estive pesquisando ferramentas de síntese de alto nível, como Catapult C e Cadence C to Silicon, mas nunca tentei ainda. Você pode explicar os diferentes tipos de ferramentas disponíveis no campo ASIC / FPGA que podem alterar / acelerar o fluxo de trabalho típico de HDL?

Robinicks
fonte

Respostas:

39

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.

  1. 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 .

  2. 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.

  3. 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.

  4. 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.

  5. 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 .

  6. 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 .

  7. 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.

W5VO
fonte
2
Desde que você mencionou o Virtuoso, o Cadence fornece uma cadeia de ferramentas completa para o design (acho que se chama Opus), onde é possível começar pelos esquemas, colocar a célula em uma única célula, avaliar os efeitos parasitas, caracterizá-la e construí-la no nível superior. .
clabacchio
1
Eu acho que todos os principais fornecedores oferecem uma cadeia de ferramentas completa. Acabamos usando vários fornecedores em nossa cadeia de ferramentas e, dessa forma, poderíamos usar as ferramentas com as quais estávamos mais familiarizados ou com a melhor reputação do setor.
W5VO
1
As ferramentas de seleção para o suporte da biblioteca ou do kit de design são praticamente um requisito. Se você não estiver usando a versão suportada de um software específico, algumas incompatibilidades podem prejudicar o seu design ou fornecer leituras falsas. Dito isto, a grande maioria das ferramentas de EDA que eu vi foram executadas em sistemas Unix / Linux. A maioria possui curvas de aprendizado acentuadas.
W5VO
1
@MartinThompson Absolutely. Quanto mais você ultrapassa os limites de sua tecnologia (ASIC / FPGA), mais importantes são essas etapas. Dito isto, as versões ASIC dessas ferramentas oferecem muito mais corda para você ter problemas.
W5VO
1
Observe que 1 e 2 não fazem parte geral do design. Essas etapas fazem parte da chamada "qualificação do processo" e os resultados (bibliotecas totalmente caracterizadas) são fornecidos pelo fornecedor da FAB. Mas algumas empresas estão fazendo "design personalizado completo" e precisam concluir 1 e 2 por conta própria.
Ale..chenski 18/09/16
7

A resposta do W5VO tende a se concentrar no back-end, e essa é uma grande diferença entre os fluxos ASIC e FPGA; mas perde a parte de verificação do design digital.

Quando colocar um design em silício pode custar um milhão de dólares e muito mais, e você pode colocar muito mais portas utilizáveis ​​em um ASIC em comparação com um FPGA, então passa muito mais tempo longe do laboratório e dos PCBs em frente às estações de trabalho que executam farms de simuladores e emuladores e testes de gravação para verificar mais completamente um design ASIC antes de liberá-lo para produção. Os projetistas de FPGA tendem a fazer grande parte de seus testes usando o FPGA no sistema do qual ele fará parte.

Paddy3118
fonte
Eu acrescentaria que o fluxo de trabalho básico para um designer digital não é muito diferente entre ASIC e FPGA, mas o ASIC tem muito mais flexibilidade em termos de macro / micro elementos disponíveis, localização e roteamento, enquanto o FPGA é restrito a seus blocos lógicos pré-fabricados e limitado na topologia de interconexão. Portanto, o FPGA não pode atingir os níveis de desempenho do ASIC e pode ditar soluções de design ligeiramente diferentes.
Ale..chenski 18/09/16
Olá Ali Chen. Se o design digital e a verificação digital são considerados separados, o fluxo para o design puramente digital é mais próximo entre FPGA e ASIC, mas há uma grande separação na verificação, como mencionei. :-)
Paddy3118