ID de l'article: 000074042 Type de contenu: Dépannage Dernière révision: 08/10/2019

Pourquoi le comportement de simulation de la fonction est-il incorrect lorsqu’il y a plusieurs RAM : 2 ports Intel FPGA IP ?

Environnement

    Intel® Quartus® Prime Pro Edition
    FPGA Intel® IP RAM 2-PORT
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descriptif

En raison d’un problème dans la version 19.1 du logiciel Intel® Quartus® Prime Pro Edition, le comportement de simulation de la fonction peut être incorrect lorsque votre conception contient plusieurs IP de port RAM-2 permettant d'« émuler le mode double horloge TDP » et d’exécuter le script de simulation généré automatiquement. Les multiples IP de rames instantanées dcfifo_in et dcfifo_out sous-modèles portant le même nom de module. Mais les dcfifo_in et les fichiers dcfifo_out de chaque IP instantanéent différentes sous-modèles. Dans le script de simulation, tous les dcfifo_in, dcfifo_out et leurs fichiers de sous-modules de différents IP de RAM sont compilés dans la même bibliothèque de simulation. Par conséquent, les derniers fichiers compilés dcfifo_in et dcfifo_out remplacent les fichiers précédents. Toutes les IP de ram utilisent les mêmes dcfifo_in et les mêmes modules dcfifo_out et mènent à un comportement de simulation incorrect.

Résolution

Pour contourner ce problème, modifiez le script de simulation dans l’outil de simulation sim/common/_files.tcl pour créer différentes bibliothèques pour différentes IP de RAM et compiler des dcfifo_in et des instances de dcfifo_out dans différentes bibliothèques en conséquence.

  • Script d’origine :

proc get_design_libraries {} {
bibliothèques définies [dict create]
bibliothèques définies par dict fifo_191 1
bibliothèques définies par dict ram_2port_191 1
bibliothèques de dict set dpram32x512 1
bibliothèques de dict set dpram16x1024 1
$libraries de retour}

proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
lalognd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path « $QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_in.v"]\ » -travail ram_2port_191»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path « $QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_out.v"]\ » - travail ram_2port_191»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dpram32x512_ram_2port_191_6nqqinq.v]\ » - travail ram_2port_191»
lalog design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path « $QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/tdp_dpram32x512_ram_2port_191_6nqqinq.v]\ » -travail ram_2port_191»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_in.v] » -travail ram_2port_191»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_out.v]\ » - travail ram_2port_191»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path « $QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dpram16x1024_ram_2port_191_u7jjoxa.v"]\ » -travail ram_2port_191«
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/tdp_dpram16x1024_ram_2port_191_u7jjoxa.v] » -travail ram_2port_191»
retourner $design_files
}

  • Script modifié :

proc get_design_libraries {} {
bibliothèques définies [dict create] bibliothèques de dict set fifo_191 1
bibliothèques définies par dict ram_2port_191_0 1
bibliothèques définies par dict ram_2port_191_1 1
 
bibliothèques de dict set dpram32x512 1
bibliothèques de dict set dpram16x1024 1
$libraries de retour}

proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_in.v]\ » - travail ram_2port_191_1»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_out.v]\ » - travail ram_2port_191_1»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dpram32x512_ram_2port_191_6nqqinq.v]\ » - travail ram_2port_191_1»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path « $QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/tdp_dpram32x512_ram_2port_191_6nqqinq.v"]\ » -travail ram_2port_191_1«
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_in.v]\ » - travail ram_2port_191_0»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_out.v] » -work ram_2port_191_0»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dpram16x1024_ram_2port_191_u7jjoxa.v] » -travail ram_2port_191_0»
laïnd design_files « vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \ » [normalize_path « $QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/tdp_dpram16x1024_ram_2port_191_u7jjoxa.v] » -travail ram_2port_191_0»
retourner $design_files}

Ce problème est résolu à partir de la version 19.3 du logiciel Intel® Quartus® Prime Pro Edition.

Produits associés

Cet article concerne 1 produits

Circuits programmables Intel®

1

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.