Identyfikator artykułu: 000086754 Typ materiałów: Rozwiązywanie problemów Ostatnia zmiana: 10-02-2021

Dlaczego przykładowy projekt symulacji Intel® Agilex PHYLite z włączoną dynamiczną rekonfiguracją nie wysyła żadnego ruchu do IP kalibracji?

Środowisko

  • Intel® Quartus® Prime Pro Edition
  • Układ FPGA Intel® Stratix® 10 IP interfejsu PHY Lite do interfejsów równoległych
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Opis

    Przykładowy projekt symulacji Intel® Agilex™ PHYLite z włączoną dynamiczną rekonfiguracją powinien wskazywać przykład dynamicznej rekonfiguracji, która działa poprzez zmianę opóźnienia interpolatora poprzez zmianę chyłonnego ruchu. Jednakże, z powodu problemu w oprogramowaniu® Intel Quartus Prime Pro Edition wersji 20.4, ruch w programie Intel Agilex PHYLite przykładowy projekt symulacji nie wysyła żadnego ruchu do IP kalibracji, jeśli grupa PHYLite jest ustawiona na typ pinu wejściowego, ponieważ faza interpolatora jest ustawiona na wartość hardcoded.

    Uwaga: ten problem nie występuje, jeśli grupa PHYLite jest ustawiona na typ pinu wyjściowego lub typu dwukierunkowego pinu.

    Rozdzielczość

    Aby obejść ten problem w oprogramowaniu Intel® Quartus® Prime Pro Edition w wersji 20.4, faza interpolatora nie może być wartością zakodowaną, która wymaga dokonania modyfikacji plików phylite_tester.sv i test_logic_iossm.sv, aby umożliwić chyłkocie ruchu na odczytanie etapu interpolatora, przyrost wartości odczytu, a następnie modyfikację fazy interpolatora na nową wartość.

    Wykonuj następujące zmiany w pliku o nazwie "phylite_tester.sv":

    1. Wiersz 159: Usuń opóźnienie etapu deklaracji państwowej i dodaj deklarację dwóch państw: CORE_PHASE_DELAY i IO_PHASE_DELAY

    2. Wiersz 177: Zmiana z

    przypisać iossm_test_start = (prbs_fsm == PHASE_DELAY);

    do

    przypisać iossm_test_start = (prbs_fsm == CORE_PHASE_DELAY);

    3. Wiersz nr 323: Zmień sygnał prbs_fsm w stanie INIT z

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

    do

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

    4. Wiersz 338: Zmień sygnał prbs_fsm w stanie IO_CHECK z

    prbs_fsm <= (CHANNEL_PIN_TYPE == "WYJŚCIOWY") ? ((IOSSM_TEST_EN == 1) ? PHASE_DELAY: CORE_DRIVE) : IO_DRIVE;

    do

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

    5. Wiersz 338: Zmień sygnał prbs_fsm w stanie CORE_CHECK z

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

    do

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

    6. Wiersz 341: Usuń

    PHASE_DELAY: zacznij

    jeśli (core_checker_failed | io_checker_failed)

    prbs_fsm < = CHECKER_FAILED;

    inaczej jeśli (iossm_phase_shift_done)

    prbs_fsm < = CORE_DRIVE;

    Końcu

    i wymienić na te dwa

    IO_PHASE_DELAY: zacznij

    jeśli (core_checker_failed | io_checker_failed)

    prbs_fsm < = CHECKER_FAILED;

    inaczej jeśli (iossm_phase_shift_done)

    prbs_fsm < = IO_DRIVE;

    Końcu

          

    CORE_PHASE_DELAY: zacznij

    jeśli (core_checker_failed | io_checker_failed)

    prbs_fsm < = CHECKER_FAILED;

    inaczej jeśli (iossm_phase_shift_done)

    prbs_fsm < = CORE_DRIVE;

    Końcu

     

    Wykonuj następujące zmiany w pliku o nazwie "test_logic_iossm.sv":

    1. Wiersz 43: Zmień wartość IOSSM_INIT_PIN_DELAY na 196

    2. Po wierszu 45: dodaj deklarację parametru lokalnego:

    WAIT_INTERVAL localparam = 8;

    3. Wiersz 59: Dodaj te trzy następujące deklaracje państw po IOSSM_WAIT_REQ

    IOSSM_PRE_READ,

    IOSSM_PRE_RDATA,

    IOSSM_PRE_WAIT,

    4. Wiersz 72: zmiana z

    jeśli (!reset_n) rozpocznie się

    pin_dly_write < = IOSSM_INIT_PIN_DELAY;

    prev_pin_dly_write < = IOSSM_INIT_PIN_DELAY;

    koniec, jeśli (cal_debug_write && !cal_debug_waitrequest)rozpocznie się

    prev_pin_dly_write < = pin_dly_write;

    pin_dly_write < = pin_dly_write IOSSM_DELAY_STEP;

    Końcu

    do

    jeśli (!reset_n) rozpocznie się

    pin_dly_write <= 0;

    prev_pin_dly_write <= 0;

    koniec, jeśli (cal_debug_read_data_valid && iossm_fsm == IOSSM_PRE_RDATA) rozpocznie się

    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;

    Końcu

    5. Wiersz 85: zmiana z

    koniec, jeśli (cal_debug_read_data_valid) rozpocznie się

    do

    koniec, jeśli (cal_debug_read_data_valid && iossm_fsm == IOSSM_RDATA) rozpocznie się

    6. Wiersz nr 108: Zmień sygnał iossm_fsm w stanie IOSSM_INIT z

    iossm_fsm < = IOSSM_WRITE;

    do

    iossm_fsm < = IOSSM_PRE_READ;

     

    7. Po IOSSM_INIT stanie dodaj następujące stany:

    IOSSM_PRE_READ: zacznij

    jeśli (!cal_debug_waitrequest)

    iossm_fsm < = IOSSM_PRE_RDATA;

    Końcu

    IOSSM_PRE_RDATA: zacznij

    jeśli (cal_debug_read_data_valid)

    iossm_fsm < = IOSSM_WRITE;

    Końcu

    8. Wiersz 139: zmiana z

    przypisz cal_debug_read = iossm_fsm == IOSSM_READ;

    do

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

    9. Wiersz 146: zmiana z

    przypisać wait_done = (req_wait_interval == 7) ? 1 : 0;

    do

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

     

    Ten problem został naprawiony począwszy od oprogramowania Intel® Quartus® Prime Pro Edition w wersji 21.1.

    Podobne produkty

    Ten artykuł dotyczy 1 prod.

    FPGA i FPGA SoC Intel® Agilex™

    Zastrzeżenie

    1

    Publikowanie treści i wykorzystanie zawartości tej witryny podlega Regulaminowi witryny Intel.com.

    Materiały zawarte na tej stronie są tłumaczeniem z języka angielskiego, wykonanym częściowo przez człowieka, a częściowo automatycznie. Materiały te są udostępnione dla Twojej wygody i należy je traktować jedynie jako ogólne źródło informacji. Nie ma jednak gwarancji, że są one kompletne bądź poprawne. Jeśli istnieje jakakolwiek rozbieżność między wersją angielską tej strony a jej tłumaczeniem, wersja angielska jest wersją obowiązującą i ma rozstrzygające znaczenie. Wyświetl anglojęzyczną wersję tej strony.