Avec les commandes synopsys® design constraint (SDC) set_multicycle_path et les commandes get_fanouts, vous pouvez créer une exception multicycle basée sur un registre d’activation.
La Figure 1 présente un circuit simple dans lequel le registre enable_reg est utilisé pour créer un signal enregistré activé pour les registres din_a_reg[7.0], din_b_reg[7.0], din_x_reg[7.0], din_y_reg[7.0], a_times_b et x_times_y.
Le registre d’activation enable_reg génère une impulsion d’activation qui est deux fois la période d’horloge du registre et, à cause de cela, une exception au multicycle doit être appliquée pour l’analyse correcte. Une configuration multicycle de 2 et une prise multicycle de 1 doivent être appliquées au registre axé sur l’activation alimenté par le registre enable_reg. L’exception au multicycle est appliquée uniquement aux chemins d’inscription où le registre de destination est contrôlé par enable_reg.
Pour y parvenir, vous pouvez appliquer l’exception set_multicycle_path à tous les registres axés sur les activer. Cette méthode peut généralement être une marque de marque , car tous les registres axés sur l’activation doivent être spécifiés. Vous pouvez autrement utiliser la combinaison de set_multicycle_path et de get_fanouts comme suit :
#Setup multicycle de 2 registres de destination compatibles
set_multicycle_path 2 -to [get_fanouts [get_pins enable_reg|q*] \
-through [get_pins -hierarchical *|*ena*]] -end -setup
#Hold multicycle de 1 aux registres de destination axés sur l’activation
set_multicycle_path 1 -to [get_fanouts [get_pins enable_reg|q*] \
-through [get_pins -hierarchical *|*ena*]] -end –hold
L’objectif de l’exception set_multicycle_path se limite à tous les ventilateurs du registre reg_en qui alimentent le port d’activation d’un registre, ce qui se fait avec l’option suivante :
[get_fanouts [get_pins enable_reg|q*] -through [get_pins -hierarchical *|*ena*]]
Le Tableau 1 présente les nouvelles relations d’activation et de prise en charge de tous les chemins de registre à enregistrer axés sur l’activation dans la conception après l’application des exceptions au multicycle.
Tableau 1. Configurer et maintenir des relations pour les registres axés sur les fonctionnalités actives
Registre source |
Registre des destinations |
Relation de configuration |
Relation de maintien |
---|---|---|---|
din_a[*] |
din_a_reg[*] |
2x (temps de périphérie de loquet) |
1x (temps de périphérie de loquet) |
din_x[*] |
din_x_reg[*] |
2x (temps de périphérie de loquet) |
1x (temps de périphérie de loquet) |
din_b[*] |
din_b_reg[*] |
2x (temps de périphérie de loquet) |
1x (temps de périphérie de loquet) |
din_y[*] |
din_y_reg[*] |
2x (temps de périphérie de loquet) |
1x (temps de périphérie de loquet) |
fast_mult:m |* |
a_times_b[*] |
2x (temps de périphérie de loquet) |
1x (temps de périphérie de loquet) |
fast_mult:m |* |
x_times_y[*] |
2x (temps de périphérie de loquet) |
1x (temps de périphérie de loquet) |
enable_reg |
din_a_reg[*],din_b_reg[*], a_times_b[*],x_times_y[*] |
2x (temps de périphérie de loquet) |
1x (temps de périphérie de loquet) |
Dans le Tableau 1, notez que la configuration et les relations qui commencent à l’enable_reg et qui se terminent à tout registre axé sur l’activation sont respectivement 2 et 1. Si ces chemins ne nécessitent pas la modification de la relation de configuration et de maintien, vous pouvez appliquer les exceptions multicycle suivantes pour appliquer les relations d’origine :
set_multicycle_path 1 -from [get_pins enable_reg|q*] –end -setup
set_multicycle_path 0 -from [get_pins enable_reg|q*] –end –hold
Téléchargez l’exemple de circuit clock_enable_multicycle.qar.