Artikel-ID: 000074042 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 08.10.2019

Warum ist das Funktionssimulationsverhalten falsch, wenn mehrere RAM vorhanden sind: 2-Port-Intel FPGA-IPs?

Umgebung

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

    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.

    Lösung

    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.

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 1 Produkte

    Intel® programmierbare Geräte

    Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.