ID de l'article: 000080391 Type de contenu: Information et documentation de produit Dernière révision: 15/11/2017

Comment compenser la gigue de la PLL en cascade ou le chemin d’horloge non dédié pour Arria l’horloge de référence 10 PLL ?

Environnement

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

    Si vous connectez l’horloge de référence PLL à partir d’une sortie PLL ou d’une broche d’horloge non dédiée dans votre conception Arria® 10, une gigue supplémentaire sera introduite. Cette gigue peut être compensée par l’ajout d’une contrainte d’incertitude d’horloge de 100ps aux horloges de sortie de la PLL aval dans la conception.

    Reportez-vous au document suivant pour obtenir des détails sur l’application de la contrainte d’incertitude d’horloge.

    Directives decontournement du chemin d’horloge Arria®10 PLL en cascade ou non dédiées 

    Lors de la mise à niveau de la conception vers le logiciel Quartus Prime v17.1 ou une version ultérieure, les contraintes précédemment ajoutées doivent être modifiées :

    a) si l’incertitude existante concernant l’horloge ne provient que de derive_clock_uncertainty set_clock_uncertainty -add-to-to- -du 0.1

    b) si l’incertitude existante concernant l’horloge provient de derive_clock_uncertainty « set_clock_uncertainty-add » supplémentaire v17.0 : set_clock_uncertainty -add-to -de [expr 0.1] v17.1 ou une version ultérieure : set_clock_uncertainty -add-to- -à partir de

    c) si derive_clock_uncertainty est écrasée par « set_clock_uncertainty » (sans ajout) - Sans modification, besoin de conserver la contrainte existante set_clock_uncertainty -à -de [expr 0.1]

     

    Si la PLL aval affectée est Arria 10 PHYLite IOPLL, reportez-vous aux étapes suivantes pour obtenir les détails de l’application de la contrainte d’incertitude d’horloge.

    À partir de la version 17.0 du logiciel Quartus Prime, la connexion « Utiliser le cœur de l’horloge de référence PLL » n’est plus visible dans l’éditeur de paramètres IP PHYLite 10 Arria 10 Altera. La manière recommandée est d’utiliser une broche d’horloge dédiée pour la connecter à l’horloge de référence PHYLite IOPLL. Si votre conception nécessite d’utiliser cette fonctionnalité, veuillez lire attentivement les directives suivantes et les respecter.

    Pour activer la « connexion d’horloge de référence PLL du cœur » (versions 17.0 et ultérieures du logiciel Quartus Prime), ajoutez l’inI ci-dessous dans le fichier quartus.ini.

    ip_altera_phylite_en_pll_core_ref_ck = activé

    a2t_allow_cascaded_pll_in_cpa_compensation=activé

    Lors de la connexion de l’horloge de référence PLL à partir d’un débit PLL ou d’une broche d’horloge non dédiée, une gigue supplémentaire sera introduite.

    Pour la conception implémentée avec Arria 10 Altera PHYLite version 17.0 et antérieures, cette gigue peut être compensée par l’ajout d’une contrainte d’incertitude d’horloge de 100ps aux horloges de sortie de la PLL aval dans la conception.

    Ajoutez les contraintes suivantes pour l’incertitude d’horloge dans le fichier SDC PHYLite généré pour la version 17.0 et antérieure du logiciel Quartus Prime. Vous devrez apporter les modifications suivantes chaque fois que vous le faites de la même Altera PHYLite IP.

    1. Attribuez une valeur de 100ps à la gigue supplémentaire du nom variable.

    définir additional_jitter 0,000

    # Déterminez d’abord si une horloge de référence a déjà été créée (c’est-à-dire le partage de l’horloge de référence)

    si {$var(PLL_USE_CORE_REF_CLK) == « faux » } {

    définir ref_clock_exists [ phy_altera_phylite_arch_nf_171_flagyzi_does_ref_clk_exist $pins(pll_ref_clock)]

    si {$ref_clock_existe == 0 } {

    # Il s’agit de l’horloge de référence utilisée par la PLL pour tirer toute autre horloge dans le cœur

    create_clock -period $ref_period -waveform [ list 0 $ref_half_period ] $pins(pll_ref_clock) -add -name ${inst}_ref_clock

    }

    } d’autre {.

    définir additional_jitter 0,100

    }

    2. Ajoutez une incertitude supplémentaire sur l’horloge FIFO à écrire :

    définir i_wf_clock 0

    foreach_in_collection wf_clock $write_fifo_clk_neg {

    définir vco_clock_id [phy_altera_phylite_arch_nf_171_flagyzi_get_vco_clk_id $wf_clock var]

    si {$vco_clock_id == -1} {

    critical_warning de type post_message « Impossible de trouver l’horloge du VCO »

    } d’autre {.

    définir local_wf_clk_grp_${i_grp_idx}_${i_wf_clock} [ phy_altera_phylite_arch_nf_171_flagyzi_get_or_add_generated_clock \

    -cible [get_node_info -nom $wf_clock] \

    -nom « ${inst}_wf_clk_grp_${i_grp_idx}_${i_wf_clock}_neg » \

    -source [get_node_info -nom $vco_clock_id] \

    -multiply_by 1 \

    -divide_by [expr $var(PLL_VCO_TO_MEM_CLK_FREQ_RATIO)] \

    -phase 180 ]

    }

    i_wf_clock incr

    }

    contrainte #new :

    si {$additional_jitter != 0} {

    set_clock_uncertainty -à [get_clocks ${inst}_wf_clk_grp_*] -ajouter $additional_jitter

    }

    3. Ajoutez une incertitude supplémentaire sur l’horloge sur le chemin d’écriture :

    si {[llength $write_clocks]>0} {

    # Nous n’avons pas besoin de numéros derive_clock_uncertainty car nous avons inclus FLS JITTER dans set_output_delay

    set_clock_uncertainty à [get_clocks $write_clocks] [phy_altera_phylite_arch_nf_170_zul23qq_round_3dp [expr 0.5*($var,WR_SSO) $var(WR_JITTER_SCALED)) $additional_jitter ]].

    }

    4. Aucune modification sur le read_clocks

    si {[llength $read_clocks]>0} {

    # Nous n’avons pas besoin de numéros derive_clock_uncertainty car nous avons inclus FLS JITTER dans set_input_delay

    set_clock_uncertainty -à [get_clocks $read_clocks] 0.0

    }

    5. Ajouter une incertitude supplémentaire sur l’horloge sur les transferts c2p/p2c (phy_clk usr_clock)

    si {$i_phy_clock > $same_tile_index} {

    Nb. C2P/P2C où la tuile très serdique != VIGNETTE QUE L’on trouve ICI.

    # Pour ces transferts, la DDC remplace explicitement les valeurs d’incertitude concernant l’horloge.

    # Par conséquent, lors d’une surconsodation, nous ne devons pas utiliser l’option « ajout ».

    définir add_to_derived « »

    définir c2p_su [expr {$p 2c_c2p_multi_tile_clock_uncertainty [$periphery_overconstraints 0] [$periphery_clock_uncertainty 0]} additional_jitter]

    définir c2p_h [expr {$p 2c_c2p_multi_tile_clock_uncertainty [$periphery_overconstraints 1] [$periphery_clock_uncertainty 1]} additional_jitter]

    définir p2c_su [expr {$p 2c_c2p_multi_tile_clock_uncertainty [$periphery_overconstraints 2] [$periphery_clock_uncertainty 2]} additional_jitter].

    définir p2c_h [expr {$p 2c_c2p_multi_tile_clock_uncertainty [$periphery_overconstraints 3] [$periphery_clock_uncertainty 3] additional_jitter].

    } d’autre {.

    Nb. C2P/P2C où la vignette dentelément == VIGNETTE QUE L’ONF

    # Pour ces transferts, il est sûr d’utiliser l’option -add car nous comptons sur

    Nb. derive_clock_uncertainty pour la valeur de base.

    définir add_to_derived « ajout »

    set c2p_su [expr [l’expr [$periphery_overconstraints 0] [$periphery_clock_uncertainty 0] additional_jitter/2]

    définissez c2p_h [expr [xxxex $periphery_overconstraints 1] [$periphery_clock_uncertainty 1] additional_jitter/2]

    set p2c_su [expr [l'$periphery_overconstraints 2] [$periphery_clock_uncertainty 2] additional_jitter/2]

    définir p2c_h [expr [l'$periphery_overconstraints 3] [$periphery_clock_uncertainty 3] additional_jitter/2]

    }

    6. Ajouter une incertitude supplémentaire sur l’horloge du transfert du cœur (usr_clock/horloge du cœur supplémentaire usr_clock/horloge du cœur supplémentaire)

    définissez c2c_same_su [expr [$core_overconstraints 0] [$core_clock_uncertainty 0] additional_jitter].

    définissez c2c_same_h [expr [$core_overconstraints 1] [$core_clock_uncertainty 1]]

    définissez c2c_diff_su [expr [$core_overconstraints 2] [$core_clock_uncertainty 2] additional_jitter].

    set c2c_diff_h [expr [l'$core_overconstraints 3] [$core_clock_uncertainty 3] additional_jitter].

    foreach src_core_clock_local $core_clocks_local {

    si {$src_core_clock_local != « »} {

    foreach dst_core_clock_local $core_clocks_local {

    si {$dst_core_clock_local != « »} {

    si {$src_core_clock_local == $dst_core_clock_local} {

    Nb. De transferts réseau avec la même horloge

    set_clock_uncertainty -de $src_core_clock_local -à $dst_core_clock_local -setup -add $c 2c_same_su

    set_clock_uncertainty -de $src_core_clock_local -à $dst_core_clock_local -hold-enable_same_physical_edge -add $c 2c_same_h

    } d’autre {.

    Nb. Transferts entre différents réseaux d’horloge du cœur

    set_clock_uncertainty -de $src_core_clock_local -à $dst_core_clock_local -setup -add $c 2c_diff_su

    set_clock_uncertainty -de $src_core_clock_local -à $dst_core_clock_local -hold -add $c 2c_diff_h

    }

    }

    }

    }

    }

    7. Pour la logique utilisateur qui implique l’horloge de sortie user_created_clock et PHYLite, l’utilisateur devra ajouter l’incertitude d’horloge de 100ps supplémentaire sur ce chemin de transfert d’horloge dans le fichier sdc de l’utilisateur.

    8. Reportez la SDC et vérifiez dans le rapport SDC Assignments>Set Clock Uncertainty (L’incertitude de l’horloge en jeu), assurez-vous que les 100ps supplémentaires sont ajoutés aux chemins de transfert d’horloge affectés.

    9. Resynchronisez ou recompilez la conception et assurez-vous la fermeture du timing

    10. Effectuez des tests matériels rigoureux pour s’assurer que la conception fonctionne correctement avant de lancer la production

    Lors de la mise à niveau de la conception vers le logiciel Quartus Prime v17.1 ou une version ultérieure :

    a) Lancer l’outil de mise à niveau IP pour mettre à niveau l’IP PHYLite Arria 10 Altera à v17.1

    b) Toute l’incertitude d’horloge nécessaire sera ajoutée au fichier PHYLite SDC généré lors de l’utilisation de l’horloge de référence PLL du cœur.

    c) L’incertitude supplémentaire de l’horloge de 100ps ajoutée pour le chemin logique de l’utilisateur qui implique user_created_clock et l’horloge de sortie PHYLite précédemment nécessitera de rester dans le fichier sdc de l’utilisateur.

    d) Réalisez une compilation complète sur la conception et assurez la fermeture du timing.

    Produits associés

    Cet article concerne 1 produits

    FPGA et FPGA SoC Intel® Arria® 10

    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.