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