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.
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.