Artikel-ID: 000083380 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 15.12.2012

U. U. verwenden DIE SP-Filter keine DSP-Block-Eingaberegister

Umgebung

  • Intel® Quartus® II Anmeldungs-Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    Kritisches Problem

    Beschreibung

    Einige DER FOLGENDEN FILTER, die vom COMPILER II erzeugt werden, versagen um alle entsprechenden DSP-Block-Eingaberegister zu verwenden. Zeitquest analysiert diese IMMERS-Filter nicht korrekt, und sie scheinen das Timing kennenlernen. In Wirklichkeit sind die nicht registrierten Pfade genau der richtige Zeitpunkt nicht analysiert, und diese "THEA"-Filter führen wahrscheinlich zu zeitlichen Auswirkungen Fehler bei der Implementierung in der Hardware. Das Problem betrifft Stratix V, Arria V (sowohl GX als auch GZ) und Cyclone V-Geräte. Das Problem betrifft OFN-Filter, die:systolischer Modus verwendenNeed eine ungerade Anzahl von MultiplikatorenDiese das Problem wirkt sich nicht auf DIE FILTER von "ALLE" aus, die eine gleichmäßige Anzahl von Multiplikatoren. Odd und bezieht sich sogar auf die Anzahl der physischen Multiplikatoren die den "FIREWALL"-Filter implementieren, nicht die Anzahl der Wasserhähne, die Sie ursprünglich nutzen Angeben. Ein "VERhörfilter" mit einer geraden Anzahl von Wasserhähnen benötigt möglicherweise ein Ungerades Anzahl der physischen Multiplikatoren und Vice-Ton. Um festzustellen, ob mein FIREWALL-Filter ist betroffen. Führen Sie die folgenden Schritte durch:Untersuchen der generierten VHDL-Code, um festzustellen, ob er einen Dummy-Multiplikator enthält. Eine systolic"-FILTER (SYSTLIC-FILTER) enthält eine Reihe von CHAINMMISCHADD-Kommentaren. Wenn Ihr-Filter keine ähnlichen Kommentare wie die Wenn Sie Kommentare folgen, ist Ihr ""-Filter kein systolischer","-" und ist nicht betroffen: --u0_m0_wo0_cma0(CHAINMLOCKADD,33)@13

    Überprüfen Sie, ob IhrN einen oder mehrere CHAINMLOCKADD-Kommentare enthält, den VHDL-Code, der jedem solchen Kommentar folgt. Einige Zeilen danach den CHAINMCHAINADD-Kommentar, finden Sie einen chainm gleichzeitigen Prozess, der ähnlich ist wie den folgenden Code:u0_m0_wo0_cma0_chainmultadd: PROCESS (clk, areset) BEGIN IF (areset = '1') UND dann u0_m0_wo0_cma0_a <= (andere => (andere => '0')); u0_m0_wo0_cma0_b <= (andere => (andere => '0')); u0_m0_wo0_cma0_c <= (andere) => (andere => '0')); u0_m0_wo0_cma0_anl <= "0"; u0_m0_wo0_cma0_s <= (andere => (andere => '0')); ELSIF(clk'EVENT AND clk = '1') UND DANN IF (d_u0_m0_wo0_compute_q_13_q = "1") DANN u0_m0_wo0_cma0_a(0) <= SIGNED(RESIZE(SIGNED(u0_m0_wo0_wi0_delayr0_q),17)); u0_m0_wo0_cma0_a(1) <= SIGNED(RESize(SIGNED(u0_m0_wo0_wi0_split1_b),17)); u0_m0_wo0_cma0_a(2) <= SIGNED(RESize(SIGNED(u0_m0_wo0_wi0_split1_c),17)); u0_m0_wo0_cma0_a(3) <= (andere => '0'); u0_m0_wo0_cma0_b(0) <= SIGNED(RESIZE(SIGNED(u0_m0_wo0_wi0_split4_c),17)); u0_m0_wo0_cma0_b(1) <= SIGNED (RESIZE(SIGNED(u0_m0_wo0_wi0_split4_b),17)); u0_m0_wo0_cma0_b(2) <= VORZEICHEN (GRÖßE ÄNDERN (UNTERZEICHNET(u0_m0_wo0_cma0_mux_2_q),17)); u0_m0_wo0_cma0_b(3) <= (andere => '0'); u0_m0_wo0_cma0_c(0) <= UNSIGNED(RESIZE(UNSIGNED(u0_m0_wo0_ca2_q),3)); u0_m0_wo0_cma0_c(1) <= UNSIGNED(RESIZE(UNSIGNED(u0_m0_wo0_ca2_q),3)); u0_m0_wo0_cma0_c(2) <= UNSIGNED(RESIZE(UNSIGNED(u0_m0_wo0_ca2_q),3)); u0_m0_wo0_cma0_c(3) <= (andere => '0'); u0_m0_wo0_cma0_anl <= nicht(u0_m0_wo0_aseq_q(0)); END-IF; WENN (d_u0_m0_wo0_compute_q_14_q = "1") DANN u0_m0_wo0_cma0_s(0) < = u0_m0_wo0_cma0_z(0) u0_m0_wo0_cma0_y(0); u0_m0_wo0_cma0_s(1) <= u0_m0_wo0_cma0_y(1); u0_m0_wo0_cma0_s(2) <= u0_m0_wo0_cma0_y(2); u0_m0_wo0_cma0_s(3) <= u0_m0_wo0_cma0_y(3); END-IF; END-IF; ENDPROZESS; Die fettgedruckten Zeilen beide Eingaben des gleichen Multiplikators zu Null, was ein Dummy-Multiplikator ist, und Ihr FIREWALL-Filter ist betroffen. Wenn keiner der chainmlockadd-Prozesse einen Dummy-Multiplikator enthält, ist Ihr "NACH- und nach"-Ton nicht betroffen.

    Lösung

    Um dieses Problem zu beheben, erhöhen Sie die von Ihnen angegebene Länge für den "LUFTfilter". Wenn Sie die richtige Länge wählen, wird die Implementierung benötigt keine Dummy-Multiplikatoren. Alternativ können Sie auch manuell bearbeiten die VHDL, die vom COMPILER II von COMPILER II generiert wurde, um das Quartus II Preserve hinzuzufügen Attribut zu den DSP-Eingaberegistern. Die Quartus-II-Synthese funktioniert Entfernen Sie die Dummy-Multiplikator-Eingaberegister und den Quartus nicht II packt alle DSP-Block-Eingaberegister korrekt. An Manuelles Bearbeiten der VHDL, führen Sie die folgenden Schritte durch:Suchen Sie nach den Deklarationen der Eingaberegister, die dem folgenden Code ähnlich aussehen: Typ u0_m0_wo0_cma0_a_type ist ein Array (0 bis 3) von SIGNED (16 bis 0); Signal u0_m0_wo0_cma0_a: u0_m0_wo0_cma0_a_type; Geben Sie u0_m0_wo0_cma0_b_type ein ist Array(0 bis 3) von SIGNED(16 downto 0); Signal u0_m0_wo0_cma0_b : u0_m0_wo0_cma0_b_type; Geben Sie u0_m0_wo0_cma0_c_type array(0 bis 3) von UNSIGNED (2 zu 0); signal u0_m0_wo0_cma0_c: u0_m0_wo0_cma0_c_type;Wenn der SPS-Filter verwendet die Preadder des DSP-Blocks, das \'b\'-Signal nicht ist nicht vorhanden. Fügen Sie den folgenden Code hinzu: attribute preserve: alle Optionen; Attribut u0_m0_wo0_cma0_a beibehalten: Signal ist wahr; Attribut beibehalten u0_m0_wo0_cma0_b: Signal ist wahr; Attribut beibehalten von u0_m0_wo0_cma0_c : signal is true; Nur add the preserve attribute sollte erklärt werden nur einmal.

    Dieses Problem wurde in DSP Builder v13.1 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.