Aufgrund eines Problems in der Intel® Quartus® Prime Pro Edition Software Version 19.1 kann das Funktionssimulationsverhalten falsch sein, wenn Ihr Design mehrere RAM-2-Port-IPs enthält, die den "Emulate TDP Dual Clock Mode" aktivieren und das automatisch generierte Simulationsskript ausführen. Die mehreren RAM-IPs instanziieren alle dcfifo_in und dcfifo_out Untermodule mit dem gleichen Modulnamen. Aber die dcfifo_in und dcfifo_out Dateien jeder IP instanziieren verschiedene Submodule. Im Simulationsskript werden alle dcfifo_in, dcfifo_out und ihre Submoduls-Dateien verschiedener RAM-IPs in derselben Simulationsbibliothek kompiliert. Aus diesem Grund überschreiben die später kompilierten dcfifo_in und dcfifo_out Dateien die vorherigen Dateien. Alle RAM-IPs verwenden die gleichen dcfifo_in und dcfifo_out Module und führen zu falschem Simulationsverhalten.
Um dieses Problem zu beheben, ändern Sie das Simulationsskript im sim/common/_files.tcl, um verschiedene Bibliotheken für verschiedene RAM-IPs zu erstellen und dcfifo_in und dcfifo_out Instanzen entsprechend in verschiedenen Bibliotheken zu kompilieren.
- Originalskript:
proc get_design_libraries {} {
Set Libraries [dict create]
Diktiersatzbibliotheken fifo_191 1
Diktiersatzbibliotheken ram_2port_191 1
Diktiersatzbibliotheken Dpram32x512 1
Diktiersatzbibliotheken dpram16x1024 1
$libraries} zurücksende
proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
lappend 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"]\" -work ram_2port_191"
lappend 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"]\" -work ram_2port_191"
lappend 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"]\" -work ram_2port_191"
lappend 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"]\" -work ram_2port_191"
lappend 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"]\" -work ram_2port_191"
lappend 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"
lappend 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"]\" -work ram_2port_191"
lappend 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"]\" -work ram_2port_191"
rückgabe $design_files
}
- Modifiziertes Skript:
proc get_design_libraries {} {
Set Libraries [dict create] dict set libraries fifo_191 1
Diktiersatzbibliotheken ram_2port_191_0 1
Diktiersatzbibliotheken ram_2port_191_1 1
Diktiersatzbibliotheken Dpram32x512 1
Diktiersatzbibliotheken dpram16x1024 1
$libraries} zurücksende
proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
lappend 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"]\" -work ram_2port_191_1"
lappend 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"]\" -work ram_2port_191_1"
lappend 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"]\" -work ram_2port_191_1"
lappend 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"]\" -work ram_2port_191_1"
lappend 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"]\" -work ram_2port_191_0"
lappend 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"
lappend 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"]\" -work ram_2port_191_0"
lappend 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"]\" -work ram_2port_191_0"
rückgabe $design_files}
Dieses Problem wird ab Version 19.3 der Intel® Quartus® Prime Pro Edition Software behoben.