Eficiente Learning-Driven Otimização na Síntese de Circuitos Integrados
Author:
Rocha, Kauan Baiense
Abstract:
O projeto digital seguindo o fluxo de síntese de standard cells é um tópico frequentemente
ausente nos currículos de graduação em ciência da computação e engenharia de computação.
O aprendizado do fluxo de síntese digital é uma atividade desafiadora para os estudantes
devido ao grande número de parâmetros a serem configurados nas diferentes etapas do fluxo
de síntese. O recente acesso aberto ao fluxo de trabalho completo de síntese pelo Projeto
OpenROAD possibilitou que estudantes começassem a aprender e praticar as etapas de
síntese. Este trabalho é uma pesquisa exploratória com o objetivo principal de mostrar como o
número de células é impactado pelos parâmetros de densidade, utilização do core e frequência
de operação. Os resultados são apresentados para um conjunto de open designs e discutidos,
demonstrando que a densidade e a utilização do core afetam as células de preenchimento (fills
cells) mais do que as células combinacionais e sequenciais.O desenvolvimento deste trabalho considerou os passos necessários para o aprendizado do fluxo de síntese digital, visando otimizar a utilização do espaço e a densidade do chip para projetos que utilizam a arquitetura de 45 nanômetros (Nangate45).Foram utilizados três projetos benchmark bem conhecidos na literatura, disponibilizados como OpenCores junto com a distribuição do OpenROAD: GCD, IBEX e JPEG. Para otimizar a utilização do chip, acessamos o arquivo de configuração e modificamos dois parâmetros: core utilization e density. Em seguida, executamos o fluxo de síntese lógica e física do OpenROAD para verificar os resultados da otimização.
Após a execução de cada rodada de síntese, dois resultados são possíveis: 1) finalização
bem-sucedida, onde os arquivos de resultado e relatório são retornados; ou 2) falha, indicando
a ocorrência de um erro durante os testes de verificação do OpenROAD, os quais incluem o
DRV. Todos os resultados foram organizados em um banco de dados. Durante os testes de
otimização, o procedimento padrão consistia em fixar a placement density em 20% e aumentar
a core utilization até o seu limite operacional. A partir desse ponto, a densidade era aumentada
progressivamente para aproximar o fluxo o máximo possível do limiar de falha. Nos casos
em que a utilização do core ultrapassava o limite máximo em 0,05, aplicamos uma redução
de 5% na densidade para viabilizar os testes em densidades maiores. Essa abordagem nos
permitiu atingir uma core utilization extremamente próxima da exigida por essas densidades
mais elevadas, evitando que o fluxo caísse no cenário de erro (Caso 2).