ID de l'article: 000091832 Type de contenu: Dépannage Dernière révision: 23/08/2023

Pourquoi le logiciel synthétise-t-il un très grand nombre de niveaux logiques pour une boucle for dans ma conception alors qu’une instruction if est imbriquée dans la boucle ?

Environnement

  • Intel® Quartus® Prime Pro Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descriptif

    Si votre design contient une boucle for comme celle-ci :

    entier i;

    for( i = ... ; ... ; ... ) commence

    a = expression de i ;

    si( ...... Instruction conditionnelle concernant un ) begin

    Déclaration;

    ......

    Fin

    Fin

    Le logiciel Intel® Quartus® Prime Pro Edition peut synthétiser un très grand nombre de niveaux logiques dans cette boucle for.

    Résolution

    Si une boucle for contient ces conditions, elle ne peut pas être optimisée pour la profondeur de la logique.

    • Expression d’affectation qui dépend de la variable de contrôle de boucle
    • Une instruction if imbriquée dans la boucle qui utilise le résultat de l’affectation comme condition select

    L’instruction d’affectation qui dépend de la variable de contrôle de boucle doit être déplacée hors du bloc de boucle for pour permettre une optimisation supplémentaire. Une fois en dehors de la boucle, l’instruction assignment peut être convertie en affectations parallèles à chaque bit d’un vecteur. Ensuite, le résultat de l’affectation de chaque cycle peut être indexé par la variable de contrôle de boucle dans ce vecteur nouvellement créé.

    Le code peut être modifié comme suit :

    vecteur[ N ] = ... ;

    ......

    vecteur[ 2 ] = ... ;

    vecteur[ 1 ] = ... ;

    entier i ;

    for( i = ... ; ... ; ... ) commence

    si( ...... instruction conditionnelle sur le vecteur[i] ) begin

    Déclaration;

    ......

    Fin

    Fin

    L’optimisation convient aux cas où le nombre de cycles est fixe et n’est pas très important. L’optimisation peut augmenter l’utilisation des ALUT tout en diminuant le nombre de niveaux logiques.

    Une future version du logiciel Intel® Quartus® Prime Pro Edition est prévue pour optimiser automatiquement le code original.

    Produits associés

    Cet article concerne 1 produits

    Circuits programmables Intel®

    Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.