Artikel-ID: 000080467 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 03.04.2019

Warum wird mein RAM-Attribut "no_rw_check" ab Intel® Quartus® Prime Software Version 16.0 ignoriert?

Umgebung

  • Intel® Quartus® Prime Pro Edition
  • Intel® Quartus® Prime Standard Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Beschreibung

    Aufgrund eines Problems in der Intel® Quartus® Prime Software Version 16.0 und neuer können Sie feststellen, dass das Attribut "no_rw_check" ignoriert wird, wenn Sie die Ausgabe des RAM an ein Zwischensignal anstelle des Ausgabeports senden. Dieses Problem tritt nicht in der Intel Quartus Prime Software Version 15.1 und früher auf.

    Wenn Sie ein Design auf die Version der Intel Quartus Prime Software 16.0 und neuer migrieren lassen, überprüfen Sie den Bericht unter Analyse und Synthese -> LPM_Parameter Settings -> RAM. Stellen Sie sicher, dass der Parameter READ_DURING_WRITE_MODE_MIXED_PORTS einen Wert von DON'T CARE hat, wenn das Attribut "no_rw_check" verwendet wird.

    Das Beispiel unten zeigt den Code des nicht erkannten Attributs "no_rw_check" ab Intel Quartus Prime Software Version 16.0:

    LIBRARY( IEEE);

    VERWENDEN SIE IEEE.STD_LOGIC_1164.ALL;

    ENTITY-RAM-IS

    PORT (

    Taktfrequenz: IN STD_LOGIC;

    Daten: IN STD_LOGIC_VECTOR (2 DOWNTO 0);

    write_address: IM INTEGERBEREICH 0 bis 31;

    read_address: IM INTEGER-BEREICH 0 bis 31;

    wir: IN STD_LOGIC;

    f: OUT STD_LOGIC_VECTOR (2 DOWNTO 0)

    );

    END-RAM;

    ARCHITEKTUR DES RAM-IS

    TYP MEM IST EIN ARRAY (0 BIS 31) VON STD_LOGIC_VECTOR (2 DOWNTO 0);

    SIGNAL-ram_block: MEM;

    ATTRIBUTE Ramstyle: string;

    ATTRIBUTE-Ramstyle ram_block: Signal ist "no_rw_check";

    SIGNAL read_address_reg: INTEGER-BEREICH 0 bis 31;

    SIGNAL q_reg: STD_LOGIC_VECTOR (2 DOWNTO 0);

    BEGINNEN

    PROZESS (Takt)

    BEGINNEN

    IF (event AND clock = '1') DANN

    WENN (wir = '1') DANN

    ram_block(write_address) <= Daten;

    END-IF;

    read_address_reg < = read_address;

    END-IF;

    Nicht erkannter Attributcode "no_rw_check" in Intel Quartus Prime Software Version 16.0 ab Version 16.0

    ------------------------------------------------------------------------------------

    IF (event AND clock = '1') DANN

    q_reg <= ram_block (read_address_reg);

    END-IF;

    q <= q_reg;

    ------------------------------------------------------------------------------------

    ENDPROZESS;

    ENDE RTL;

    Lösung

    Um dieses Problem zu umgehen, aktivieren Sie die Add Pass-Through Logic zu abgeleiteten RAMs in der

    Zuweisung - > -> Compiler-Einstellungen - > Vorherige Einstellungen (Synthese)

    Oder

    Setzen Sie das Ausgabesignal des RAM als Ausgabeport ein, ohne Zwischensignal zu verwenden, indem Sie den oben genannten snipped Code durch den unten stehenden Code ersetzen:

    ------------------------------------------------------------------------------------

    IF (event AND clock = '1') DANN

    q <= ram_block(read_address_reg);

    END-IF;

    ------------------------------------------------------------------------------------

    Dieses Problem wird voraussichtlich in einer zukünftigen Version 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.