ID do artigo: 000091832 Tipo de conteúdo: Solução de problemas Última revisão: 23/08/2023

Por que o software sintetiza um número muito grande de níveis lógicos para um for-loop no meu projeto quando uma declaração if é aninhada no loop?

Ambiente

    Intel® Quartus® Prime Pro Edition
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrição

Se o seu projeto contém um for-loop como este:

inteiro i, i;

para( i = ... ; ... ; ... ) comece

a = expressão de i;

se(...... declaração condicional sobre a ) começar

Declaração;

......

Final

Final

O Intel® Quartus® Software Prime Pro Edition pode sintetizar um número muito grande de níveis lógicos neste for-loop.

Resolução

Se um for-loop contiver essas condições, ele não pode ser otimizado para a profundidade lógica

  • uma expressão de atribuição que depende da variável de controle de loop
  • uma declaração de if aninhada no loop que usa o resultado de atribuição como a condição selecionada

A declaração de atribuição que depende da variável de controle de loop deve ser transferida para fora do bloco em loop para permitir otimização adicional. Uma vez fora do loop, a declaração de atribuição pode ser convertida para atribuições paralelas para cada bit de um vetor. Em seguida, o resultado da atribuição de cada ciclo pode ser indexado pela variável de controle de loop neste vetor recém-criado.

O código pode ser modificado como:

vetor[ N ] = ... ;

......

vetor[ 2 ] = ... ;

vetor[ 1 ] = ... ;

inteiro i;

para( i = ... ; ... ; ... ) comece

se(...... declaração condicional sobre o vetor[i] ) começam

Declaração;

......

Final

Final

A otimização é adequada para casos em que o número de ciclos é fixo e não é muito grande. A otimização pode aumentar o uso de ALUTs enquanto diminui o número de níveis lógicos.

Uma versão futura do software Intel® Quartus® Prime Pro Edition está programada para otimizar automaticamente o código original.

Produtos relacionados

Este artigo aplica-se a 1 produtos

Dispositivos programáveis Intel®

1

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês governará e será a controle. Exibir a versão em inglês desta página.