Lors de l’utilisation du Intel® FPGA IP de chargement flash parallèle, les contraintes de synchronisation pour les fpga_data et les fpga_dclk sont décrites dans le Guide de l’utilisateur de Limiter la synchronisation PFL dans le chargeur flash parallèle Intel® FPGA IP guide de l’utilisateurdu cœur . Cependant, les contraintes de la version 2019.02.19 du document et des versions antérieures ne sont pas correctes.
Pour limiter correctement la synchronisation des fpga_data et des fpga_dclk, utilisez l’une des contraintes de synchronisation suivantes en fonction du rapport entre l’horloge d’entrée et la sortie DCLK.
[ Quand le rapport entre l’horloge d’entrée et la sortie DCLK = 1 ]
# Créer de l’horloge
create_clock -nom {pfl_clk} -période de -forme d’ondes { 0,000 /2 } [get_ports {pfl_clk}]
# Créer l’horloge générée
create_generated_clock -nom {fpga_dclk} -source [get_ports {pfl_clk}] -master_clock {pfl_clk} -invert [get_ports {fpga_dclk}]
# Définir le délai de sortie
set_output_delay -add_delay -max-clock [get_clocks {fpga_dclk}] [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {fpga_dclk}] < Retenir la contrainte de temps> [get_ports {fpga_data*}]
[ Quand le rapport entre l’horloge d’entrée et la sortie DCLK > 1 ]
# Créer de l’horloge
create_clock -nom {pfl_clk} -période de -forme d’ondes { 0,000 /2 } [get_ports {pfl_clk}]
# Créer l’horloge générée
create_generated_clock -nom {} -source [get_ports {pfl_clk}] -divide_by -master_clock {pfl_clk} [get_registers {} ]
create_generated_clock -nom {} -source [get_registers {}] -master_clock {} [get_ports {fpga_dclk}]
# Définir le délai de sortie
set_output_delay -add_delay -max-clock [get_clocks {}] -reference_pin [get_ports {fpga_dclk}] [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {}] -reference_pin [get_ports {fpga_dclk}] [get_ports {fpga_data*}]
# Définir le chemin d’accès multicycle
set_multicycle_path -setup -start -from [get_clocks {pfl_clk}] -à [get_clocks {}] < Ratio < entre l’horloge d’entrée et la sortie DCLK>/2
set_multicycle_path -hold -start -de [get_clocks {pfl_clk}] à [get_clocks {}] -1
• Dans ces exemples, les noms de ports PFL Intel FPGA IP cœur sont utilisés.
• Le registre DCLK est un registre qui divise les pfl_clk. Le nom du registre est généralement « fpga_dclk_reg ». Vous pouvez trouver le registre en traçant la destination source à partir de fpga_dclk port à l’aide de l’outil Technology Map Viewer.
• Intel recommande d’utiliser la GUI Timing Analyzer pour valider les constratrains.
[Exemple]
• État
o période pfl_clk = 20 ns (50 MHz)
rapport entre l’horloge d’entrée et la sortie DCLK = 2
• Contraintes de synchronisation
# Créer de l’horloge
create_clock -nom {pfl_clk} -période 20.000 -waveform { 0.000 10.000 } [get_ports {pfl_clk}]
# Créer l’horloge générée
create_generated_clock -nom {fpga_dclk_gen} -source [get_ports {pfl_clk}] -divide_by 2 -master_clock {pfl_clk} [get_registers {pfl:inst|altparallel_flash_loader:altparallel_flash_loader_component|alt_pfl:\PFL_CFI:pfl_cfi_inst|alt_pfl_cfg3:\CFG3:cfg|alt_pfl_cfg_fpga:alt_pfl_cfg_fpga|fpga_dclk_reg}]
create_generated_clock -nom {fpga_dclk_pin} -source [get_registers {pfl_top:pfl_top_inst|altera_parallel_flash_loader:parallel_flash_loader_0|altparallel_flash_loader:altparallel_flash_loader_component|alt_pfl:\PFL_CFI:pfl_cfi_inst|alt_pfl_cfg3:\CFG3:cfg|alt_pfl_cfg_fpga:alt_pfl_cfg_fpga|fpga_dclk_reg}] -master_clock {fpga_dclk_gen} [get_ports {fpga_dclk}]
# Définir le délai de sortie
set_output_delay -add_delay -max-clock [get_clocks {fpga_dclk_gen}] -reference_pin [get_ports {fpga_dclk}] 5,500 [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {fpga_dclk_gen}] -reference_pin [get_ports {fpga_dclk}] -1,000 [get_ports {fpga_data*}]
# Définir le chemin d’accès multicycle
set_multicycle_path -setup-start -from [get_clocks {pfl_clk}] -à [get_clocks {fpga_dclk_pin}] 1
set_multicycle_path -hold-start -de [get_clocks {pfl_clk}] à [get_clocks {fpga_dclk_pin}] 1