ID de l'article: 000074260 Type de contenu: Dépannage Dernière révision: 11/09/2012

Pourquoi mon Nios II compilateur C-to-Hardware (C2H) génère-t-il un timing de défaillance de l’accélérateur lorsque le code source contient des opérateurs de transfert variable ?

Environnement

  • Processeur Intel® Nios® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descriptif

    Si la conception ne répond pas au timing, c’est qu’elle contient un ou plusieurs changements de canon en série avec d’autres logiques combinatoires. Chaque fois qu’un opérateur de transfert est utilisé avec un a = b << c;. Nios® II C2H génère une logique de symétrie. La logique de l’entêtetérisée générée par C2H met en œuvre un grand nombre de multiplexeurs combinatoires qui peuvent avoir une incidence significative sur la synchronisation de la conception.  Les deux exemples suivants montrent le code source qui peut entraîner une dégradation du timing en raison des changements de canon.


    Entrée de changement combinatoire:

    Vous trouverez ci-dessous un exemple d’entrée de changement combinatoire dans le décalage du canon qui peut entraîner une dégradation du timing.

    int a, b, c, d, result, shift_distance;
    result = (a b c d) >> shift_distance;

    Le résultat d’ajout est utilisé comme le luxation de l’opérateur de décalage, de sorte qu’un long chemin de synchronisation est créé entre l’une des entrées d’ajout et le « résultat ». Pour augmenter la quantité de tuyauterie, attribuez le résultat d’ajout à une variable temporaire comme illustré ci-dessous :

    int a, b, c, d, addition_result, shift_distance;
    addition_result = a b c d;
    result = addition_result >> shift_distance;


    Sortie de changement combinatoire:

    Vous trouverez ci-dessous un exemple de décalage combinatoire du décalage du canon qui peut entraîner une dégradation du timing.

    int a, b, c, d, result, shift_distance;
    result = (a >> shift_distance) b c d;

    Le résultat de décalage est utilisé comme un luxation vers un opérateur d’ajout, de sorte qu’un long chemin de synchronisation est créé entre « a » et « result » (résultat). Pour augmenter la quantité de tuyauterie, attribuez le résultat de transfert à une variable comme illustré ci-dessous :

    int a, b, c, d, result, shift_result, shift_distance;
    shift_result = a >> shift_distance;
    result = shift_result b c d;

    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.