Otimização do tempo de execução em algoritmos de roteamento global : explorando métricas e paralelismo - Schmitz Junior, Jacques de Jesus Figueiredo (2019)
Roteamento é a etapa do fluxo de síntese física de circuito integrados responsável pela geração das conexões do circuito após as células estarem posicionadas. A evolução na tecnologia dos transistores e, consequente evolução dos circuitos, trouxe consigo novos desafios para todas as etapas da síntese física. Rotear um circuito VLSI (Very Large Scale Integration) é uma tarefa de difícil resolução, tanto por possuir um grande volume de dados a ser processado, quanto por se tratar de um problema NP-completo, significando que não existe uma solução ótima que possa ser processada em tempo polinomial. Para resolver o problema, é necessária a utilização de algoritmos gulosos, heurísticas, aprendizado de máquina ou técnicas mais específicas para trabalhar com as estruturas de dados de forma mais intuitiva e obter melhores resultados. Apesar dos roteadores estado-da-arte gerarem resultados satisfatórios, ainda é possível realizar melhorias nestes. Este trabalho explora técnicas de otimização de programação aplicadas a um roteador estado-da-arte de código-fonte aberto. A partir das análises realizadas no roteador NTHU Route, apresentamos melhorias envolvendo parâmetros utilizados nos algoritmos, e aplicação de paralelismo em alguns dos estágios do roteador, buscando uma melhoria no desempenho e na qualidade dos resultados. Com a aplicação das estratégias envolvendo alteração nos parâmetros, mais especificamente com a aplicação de um limiar para aceitação de congestionamento na fase principal do roteador, foi possível diminuir o tempo de execução de todos benchmarks utilizados em média em 9%, sendo no melhor caso observada uma redução de aproximadamente 20% sem grandes impactos no comprimento total de fio. Com a aplicação de paralelismo no estágio de refinamento, foi possível melhorar o tempo tomado nesta fase em até 20%, com uma melhoria média de 10%. Com experimentos aplicando paralelismo na fase principal em conjunto com o aumento da caixa de expansão de busca para ligar dois pinos, o tempo de execução dobrou, devido ao comportamento de busca para achar as soluções nesta fase. Ao juntar as duas modificações, aplicando um limiar para aceitação de congestionamento na fase principal e paralelismo em blocos menores nas duas fases sem o aumento da caixa de expansão de busca, foi possível obter melhorias no tempo de execução de até 20%, sem impacto considerável no comprimento total de fio. Explorar estas técnicas de otimização nos algoritmos de roteamento mostrou bons resultados, que podem ser aplicados a diferentes ferramentas de roteamento e de outras etapas da síntese física.