ID Artikel: 000086754 Jenis Konten: Pemecahan Masalah Terakhir Ditinjau: 10/02/2021

Mengapa stimulasi lalu lintas tidak mengirimkan lalu lintas ke IP kalibrasi saat menggunakan contoh desain simulasi Intel Agilex® 7 FPGA PHYLite dengan rekonfigurasi dinamis diaktifkan?

Lingkungan

  • Intel® Quartus® Prime Edisi Pro
  • PHY Lite untuK Antarmuka Paralel Intel® Stratix® 10 FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Deskripsi

    Desain contoh simulasi Intel Agilex® 7 FPGA PHYLite dengan rekonfigurasi dinamis yang diaktifkan harus menunjukkan contoh rekonfigurasi dinamis yang bekerja dengan mengubah penundaan interpolator melalui stimulus lalu lintas. Namun, karena masalah di Intel® Quartus® Perangkat Lunak Prime Edisi Pro versi 20.4, stimulus lalu lintas dalam desain contoh simulasi Intel Agilex® 7 FPGA PHYLite tidak mengirim lalu lintas apa pun ke IP kalibrasi jika grup PHYLite diatur ke Jenis pin Input karena fase interpolator diatur ke nilai hardcoded.

    Catatan: Masalah ini tidak terjadi jika grup PHYLite diatur ke Jenis pin Output atau jenis pin dwiarah.

    Resolusi

    Untuk mengatasi masalah ini di Intel® Quartus® Prime Pro Edition Software versi 20.4, fase interpolator tidak boleh berupa nilai hardcoded, yang mengharuskan membuat beberapa modifikasi pada file phylite_tester.sv dan test_logic_iossm.sv untuk memungkinkan stimulus lalu lintas membaca fase interpolator, menambah nilai baca, kemudian memodifikasi fase interpolator ke nilai baru.

    Lakukan perubahan berikut pada berkas dengan nama "phylite_tester.sv":

    1. Baris #159: Hapus penundaan FASE deklarasi status dan tambahkan dua deklarasi negara: CORE_PHASE_DELAY dan IO_PHASE_DELAY

    2. Baris #177: Ubah dari

    alokasikan iossm_test_start = (prbs_fsm == PHASE_DELAY);

    Untuk

    alokasikan iossm_test_start = (prbs_fsm == CORE_PHASE_DELAY);

    3. Baris #323: Ubah sinyal prbs_fsm dalam status INIT dari

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

    Untuk

    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. Baris #338: Ubah sinyal prbs_fsm dalam keadaan IO_CHECK dari

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

    Untuk

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

    5. Baris #338: Ubah sinyal prbs_fsm dalam keadaan CORE_CHECK dari

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

    Untuk

    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. Baris #341: Hapus

    PHASE_DELAY: mulai

    jika (core_checker_failed | io_checker_failed)

    prbs_fsm <= CHECKER_FAILED;

    lain jika (iossm_phase_shift_done)

    prbs_fsm <= CORE_DRIVE;

    Akhir

    dan ganti dengan kedua:

    IO_PHASE_DELAY: mulai

    jika (core_checker_failed | io_checker_failed)

    prbs_fsm <= CHECKER_FAILED;

    lain jika (iossm_phase_shift_done)

    prbs_fsm <= IO_DRIVE;

    Akhir

    CORE_PHASE_DELAY: mulai

    jika (core_checker_failed | io_checker_failed)

    prbs_fsm <= CHECKER_FAILED;

    lain jika (iossm_phase_shift_done)

    prbs_fsm <= CORE_DRIVE;

    Akhir

    Lakukan perubahan berikut pada berkas dengan nama "test_logic_iossm.sv":

    1. Baris #43: Ubah nilai IOSSM_INIT_PIN_DELAY ke 196

    2. Setelah baris #45: Tambahkan deklarasi parameter lokal:

    localparam WAIT_INTERVAL = 8;

    3. Baris #59: Tambahkan tiga pernyataan status berikut setelah IOSSM_WAIT_REQ

    IOSSM_PRE_READ,

    IOSSM_PRE_RDATA,

    IOSSM_PRE_WAIT,

    4. Baris #72: Ubah dari

    jika (!reset_n) dimulai

    pin_dly_write <= IOSSM_INIT_PIN_DELAY;

    prev_pin_dly_write <= IOSSM_INIT_PIN_DELAY;

    berakhir di lain waktu jika (cal_debug_write &&&cal_debug_waitrequest)mulai

    prev_pin_dly_write <= pin_dly_write;

    pin_dly_write <= pin_dly_write IOSSM_DELAY_STEP;

    Akhir

    Untuk

    jika (!reset_n) dimulai

    pin_dly_write <= 0;

    prev_pin_dly_write <= 0;

    jika (cal_debug_read_data_valid && iossm_fsm == IOSSM_PRE_RDATA) dimulai

    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;

    Akhir

    5. Baris #85: Ubah dari

    jika (cal_debug_read_data_valid) dimulai

    Untuk

    jika (cal_debug_read_data_valid && iossm_fsm == IOSSM_RDATA) dimulai

    6. Baris #108: Ubah sinyal iossm_fsm dalam keadaan IOSSM_INIT dari

    iossm_fsm <= IOSSM_WRITE;

    Untuk

    iossm_fsm <= IOSSM_PRE_READ;

    7. Setelah status IOSSM_INIT , tambahkan dua status berikut:

    IOSSM_PRE_READ: mulai

    jika (!cal_debug_waitrequest)

    iossm_fsm <= IOSSM_PRE_RDATA;

    Akhir

    IOSSM_PRE_RDATA: mulai

    jika (cal_debug_read_data_valid)

    iossm_fsm <= IOSSM_WRITE;

    Akhir

    8. Baris #139: Ubah dari

    alokasikan cal_debug_read = iossm_fsm == IOSSM_READ;

    Untuk

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

    9. Baris #146: Ubah dari

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

    Untuk

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

    Masalah ini telah diperbaiki dimulai dengan Intel® Quartus® Perangkat Lunak Prime Edisi Pro versi 21.1.

    Produk Terkait

    Artikel ini berlaku untuk 1 produk

    FPGA dan SoC FPGA Intel® Agilex™

    Isi halaman ini adalah kombinasi terjemahan manusia dan komputer dari konten berbahasa Inggris. Konten ini diberikan hanya untuk kenyamanan Anda serta sebagai informasi umum dan tidak bisa dianggap sebagai lengkap atau akurat. Jika terdapat kontradiksi antara versi bahasa Inggris halaman ini dan terjemahannya, versi bahasa Inggris akan didahulukan. Lihat versi bahasa Inggris halaman ini.