Artikel-ID: 000086754 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 10.02.2021

Warum sendet der Datenverkehr keinen Datenverkehr an die Kalibrierungs-IP, wenn das Simulationsdesignbeispiel Intel Agilex® 7 FPGA PHYLite verwendet wird, wobei die dynamische Neukonfiguration aktiviert ist?

Umgebung

  • Intel® Quartus® Prime Pro Edition
  • PHY Lite für parallele Schnittstellen Intel® Stratix® 10 FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Beschreibung

    Das Intel Agilex-7-FPGA-PHYLite-Simulationsbeispieldesign® mit aktivierter dynamischer Neukonfiguration sollte ein Beispiel für eine dynamische Neukonfiguration anzeigen, die funktioniert, indem die Verzögerung durch die Datenverkehrsverspätung geändert wird. Aufgrund eines Problems in der Intel® Quartus® Prime Pro Edition Software Version 20.4 sendet der Datenverkehr im Intel Agilex® 7 FPGA PHYLite Simulationsbeispiel-Design jedoch keinen Datenverkehr an die Kalibrierungs-IP, wenn die PHYLite-Gruppe auf Eingabe-Pin-Typ gesetzt ist, da die Entwicklungsphase auf einen festcodierten Wert gesetzt ist.

    Hinweis: Dieses Problem tritt nicht auf, wenn die PHYLite-Gruppe auf Output pin type oder Bidirectional pin type gesetzt ist.

    Lösung

    Um dieses Problem in der Intel® Quartus® Prime Pro Edition Software Version 20.4 zu beheben, darf es sich bei der Entwicklungsphase nicht um einen hardkodierten Wert handelt, der einige Änderungen an den phylite_tester.sv- und test_logic_iossm.sv-Dateien erfordert, damit der Datenverkehr die Lese-Phase lesen, den Lesewert erhöhen und dann die Verarbeitungsphase auf den neuen Wert ändern kann.

    Führen Sie die folgenden Änderungen an der Datei mit dem Namen "phylite_tester.sv" durch:

    1. Zeile 159: Entfernen Sie die Zustandserklärung PHASE DELAY und fügen Sie zwei Zustandserklärungen hinzu : CORE_PHASE_DELAY und IO_PHASE_DELAY

    2. Zeile 177: Ändern von

    assign iossm_test_start = (prbs_fsm == PHASE_DELAY);

    An

    assign iossm_test_start = (prbs_fsm == CORE_PHASE_DELAY);

    3. Zeile 323: Ändern Sie das prbs_fsm-Signal im INIT-Zustand von

    prbs_fsm <= (CHANNEL_PIN_TYPE == "EINGABE") ? IO_DRIVE: ((IOSSM_TEST_EN == 1) ? PHASE_DELAY: CORE_DRIVE);

    An

    prbs_fsm <= (IOSSM_TEST_EN == 1) ? (CHANNEL_PIN_TYPE == "INPUT" ? IO_PHASE_DELAY: CORE_PHASE_DELAY): (CHANNEL_PIN_TYPE == "INPUT" ? IO_DRIVE: CORE_DRIVE);

    4. Zeile 338: Ändern Sie das prbs_fsm signal in IO_CHECK Zustand von

    prbs_fsm <= (CHANNEL_PIN_TYPE == "AUSGABE") ? ((IOSSM_TEST_EN == 1) ? PHASE_DELAY: CORE_DRIVE): IO_DRIVE;

    An

    prbs_fsm <= (IOSSM_TEST_EN == 1) ? (CHANNEL_PIN_TYPE == "AUSGABE" ? CORE_PHASE_DELAY: IO_PHASE_DELAY): (CHANNEL_PIN_TYPE == "OUTPUT" ? CORE_DRIVE: IO_DRIVE);

    5. Zeile 338: Ändern Sie das prbs_fsm signal im CORE_CHECK Zustand von

    prbs_fsm <= (CHANNEL_PIN_TYPE == "EINGABE") ? IO_DRIVE: ((IOSSM_TEST_EN == 1) ? PHASE_DELAY: CORE_DRIVE);

    An

    prbs_fsm <= (IOSSM_TEST_EN == 1) ? (CHANNEL_PIN_TYPE == "INPUT" ? IO_PHASE_DELAY: CORE_PHASE_DELAY): (CHANNEL_PIN_TYPE == "INPUT" ? IO_DRIVE: CORE_DRIVE);

    6. Zeile #341: Entfernen

    PHASE_DELAY: beginnen

    wenn (core_checker_failed | io_checker_failed)

    prbs_fsm <= CHECKER_FAILED;

    else if (iossm_phase_shift_done)

    prbs_fsm <= CORE_DRIVE;

    Ende

    und ersetzen Sie durch diese beiden:

    IO_PHASE_DELAY: beginnen

    wenn (core_checker_failed | io_checker_failed)

    prbs_fsm <= CHECKER_FAILED;

    else if (iossm_phase_shift_done)

    prbs_fsm <= IO_DRIVE;

    Ende

    CORE_PHASE_DELAY: beginnen

    wenn (core_checker_failed | io_checker_failed)

    prbs_fsm <= CHECKER_FAILED;

    else if (iossm_phase_shift_done)

    prbs_fsm <= CORE_DRIVE;

    Ende

    Führen Sie die folgenden Änderungen in der Datei "test_logic_iossm.sv" durch:

    1. Zeile 43: Ändern Sie den Wert der IOSSM_INIT_PIN_DELAY auf 196.

    2. Nach Zeile 45: Lokale Parameterdeklaration hinzufügen :

    localparam WAIT_INTERVAL = 8;

    3. Zeile 59: Fügen Sie diese drei folgenden Zustandserklärungen nach IOSSM_WAIT_REQ

    IOSSM_PRE_READ,

    IOSSM_PRE_RDATA,

    IOSSM_PRE_WAIT,

    4. Zeile 72: Ändern von

    wenn (!reset_n) beginnen

    pin_dly_write < = IOSSM_INIT_PIN_DELAY;

    prev_pin_dly_write <= IOSSM_INIT_PIN_DELAY;

    end else, wenn (cal_debug_write && !cal_debug_waitrequest) beginnen

    prev_pin_dly_write <= pin_dly_write;

    pin_dly_write <= pin_dly_write IOSSM_DELAY_STEP;

    Ende

    An

    wenn (!reset_n) beginnen

    pin_dly_write < = 0;

    prev_pin_dly_write < = 0;

    end else, wenn (cal_debug_read_data_valid && iossm_fsm == IOSSM_PRE_RDATA) beginnen

    prev_pin_dly_write <= cal_debug_read_data[IOSSM_PIN_DELAY_WIDTH-1:0] IOSSM_DELAY_STEP;

    pin_dly_write <= cal_debug_read_data[IOSSM_PIN_DELAY_WIDTH-1:0] IOSSM_DELAY_STEP;

    Ende

    5. Zeile 85: Ändern von

    end else, wenn (cal_debug_read_data_valid) beginnen

    An

    end else, wenn (cal_debug_read_data_valid && iossm_fsm == IOSSM_RDATA) beginnen

    6. Zeile 108: Ändern iossm_fsm Signals im IOSSM_INIT Zustand von

    iossm_fsm <= IOSSM_WRITE;

    An

    iossm_fsm < = IOSSM_PRE_READ;

    7. Fügen Sie nach IOSSM_INIT Zustand die folgenden zwei Zustände hinzu :

    IOSSM_PRE_READ: beginnen

    wenn (!cal_debug_waitrequest)

    iossm_fsm < = IOSSM_PRE_RDATA;

    Ende

    IOSSM_PRE_RDATA: Beginnen

    wenn (cal_debug_read_data_valid)

    iossm_fsm < = IOSSM_WRITE;

    Ende

    8. Zeile 139: Ändern von

    zuweisen cal_debug_read = iossm_fsm == IOSSM_READ;

    An

    Zuweisen cal_debug_read = (iossm_fsm == IOSSM_READ) | | (iossm_fsm == IOSSM_PRE_READ);

    9. Zeile 146: Ändern von

    zuweisen wait_done = (req_wait_interval == 7) ? 1 : 0;

    An

    zuweisen wait_done = (req_wait_interval == WAIT_INTERVAL-1) ? 1: 0;

    Dieses Problem wird ab der Intel® Quartus® Prime Pro Edition Software Version 21.1 behoben.

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 1 Produkte

    Intel® Agilex™ FPGAs und SoC FPGAs

    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.