ID bài viết: 000086754 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 10/02/2021

Tại sao phylitei lưu lượng không gửi bất kỳ lưu lượng truy cập nào đến IP hiệu chỉnh khi sử dụng ví dụ thiết kế mô phỏng Intel Agilex® 7 FPGA PHYLite với khả năng cấu hình lại động?

Môi Trường

  • Intel® Quartus® Prime Phiên bản Pro
  • IP FPGA Intel® Stratix® 10 PHY Lite cho Giao diện song song
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Mô tả

    Thiết kế ví dụ mô phỏng Intel Agilex® 7 FPGA PHYLite với bật cấu hình lại động sẽ hiển thị một ví dụ về việc cấu hình lại động làm việc bằng cách thay đổi độ trễ nội suy thông qua configi lưu lượng. Tuy nhiên, do có vấn đề trong Phần mềm phiên bản Intel® Quartus® Prime Pro phiên bản 20.4, lưu lượng truy cập trong thiết kế mẫu mô phỏng Intel Agilex® 7 FPGA PHYLite không gửi bất kỳ lưu lượng nào đến IP hiệu chỉnh nếu nhóm PHYLite được đặt thành Loại chân đầu vào vì pha nội suy được đặt thành giá trị mã hóa cứng.

    Lưu ý: Sự cố này không xảy ra nếu nhóm PHYLite được đặt thành Loại chân đầu ra hoặc loại chân hai chiều.

    Độ phân giải

    Để giải quyết vấn đề này trong Phiên bản Phần mềm phiên bản Intel® Quartus® Prime Pro phiên bản 20.4, pha nội suy không được là giá trị mã hóa cứng, yêu cầu thực hiện một số sửa đổi đối với các tệp phylite_tester.sv và test_logic_iossm.sv để cho phép lưu lượng truy cập đọc giai đoạn nội suy, tăng giá trị đọc, sau đó sửa đổi giai đoạn nội suy sang giá trị mới.

    Thực hiện các thay đổi sau đây đối với tệp có tên "phylite_tester.sv":

    1. Dòng #159 : Xóa tuyên bố trạng thái PHASE DELAY thêm tuyên bố hai trạng thái: CORE_PHASE_DELAY và IO_PHASE_DELAY

    2. Dòng #177: Thay đổi từ

    gán iossm_test_start = (prbs_fsm == PHASE_DELAY);

    Để

    gán iossm_test_start = (prbs_fsm == CORE_PHASE_DELAY);

    3. Dòng #323: Thay đổi tín prbs_fsm hành ở trạng thái INIT từ

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

    Để

    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. Dòng #338: Thay đổi tín hiệu prbs_fsmtrạng IO_CHECK từ

    prbs_fsm <= (CHANNEL_PIN_TYPE == "ĐẦU RA") ? ((IOSSM_TEST_EN == 1) ? PHASE_DELAY: CORE_DRIVE) : IO_DRIVE;

    Để

    prbs_fsm <= (IOSSM_TEST_EN == 1) ? (CHANNEL_PIN_TYPE == "ĐẦU RA" ? CORE_PHASE_DELAY: IO_PHASE_DELAY) : (CHANNEL_PIN_TYPE == "ĐẦU RA" ? CORE_DRIVE: IO_DRIVE);

    5. Dòng #338: Thay đổi tín hiệu prbs_fsm trạng CORE_CHECK từ

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

    Để

    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. Dòng #341: Tháo ra

    PHASE_DELAY: bắt đầu

    nếu (core_checker_failed | io_checker_failed)

    prbs_fsm <= CHECKER_FAILED;

    khác nếu (iossm_phase_shift_done)

    prbs_fsm <= CORE_DRIVE;

    Cuối

    thay thế bằng hai:

    IO_PHASE_DELAY: bắt đầu

    nếu (core_checker_failed | io_checker_failed)

    prbs_fsm <= CHECKER_FAILED;

    khác nếu (iossm_phase_shift_done)

    prbs_fsm <= IO_DRIVE;

    Cuối

    CORE_PHASE_DELAY: bắt đầu

    nếu (core_checker_failed | io_checker_failed)

    prbs_fsm <= CHECKER_FAILED;

    khác nếu (iossm_phase_shift_done)

    prbs_fsm <= CORE_DRIVE;

    Cuối

    Thực hiện các thay đổi sau đây đối với tệp có tên "test_logic_iossm.sv":

    1. Dòng #43: Thay đổi giá trị của IOSSM_INIT_PIN_DELAY 196

    2. Sau dòng #45: Thêm khai báo tham số cục bộ:

    tỷ lệ WAIT_INTERVAL cục bộ = 8;

    3. Dòng #59 : Thêm ba tuyên bố ba trạng thái sau đây sau IOSSM_WAIT_REQ

    IOSSM_PRE_READ,

    IOSSM_PRE_RDATA,

    IOSSM_PRE_WAIT,

    4. Dòng #72: Thay đổi từ

    nếu (!reset_n) bắt đầu

    pin_dly_write <= IOSSM_INIT_PIN_DELAY;

    prev_pin_dly_write <= IOSSM_INIT_PIN_DELAY;

    đầu khác nếu (cal_debug_write && !cal_debug_waitrequest)bắt đầu

    prev_pin_dly_write <= pin_dly_write;

    pin_dly_write <= pin_dly_write IOSSM_DELAY_STEP;

    Cuối

    Để

    nếu (!reset_n) bắt đầu

    pin_dly_write <= 0;

    prev_pin_dly_write <= 0;

    end else if (cal_debug_read_data_valid && iossm_fsm == IOSSM_PRE_RDATA) bắt đầu

    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;

    Cuối

    5. Dòng #85: Thay đổi từ

    đầu khác nếu (cal_debug_read_data_valid) bắt đầu

    Để

    end else if (cal_debug_read_data_valid && iossm_fsm == IOSSM_RDATA) bắt đầu

    6. Dòng #108: Thay đổi tín iossm_fsmtrạng IOSSM_INIT từ

    iossm_fsm <= IOSSM_WRITE;

    Để

    iossm_fsm <= IOSSM_PRE_READ;

    7. Sau khi ở IOSSM_INIT , hãy thêm hai trạng thái sau:

    IOSSM_PRE_READ: bắt đầu

    nếu (!cal_debug_waitrequest)

    iossm_fsm <= IOSSM_PRE_RDATA;

    Cuối

    IOSSM_PRE_RDATA: bắt đầu

    nếu (cal_debug_read_data_valid)

    iossm_fsm <= IOSSM_WRITE;

    Cuối

    8. Dòng #139: Thay đổi từ

    gán cal_debug_read = iossm_fsm == IOSSM_READ;

    Để

    gán cal_debug_read = (iossm_fsm == IOSSM_READ) || (iossm_fsm == IOSSM_PRE_READ);

    9. Dòng #146: Thay đổi từ

    gán wait_done = (req_wait_interval == 7) ? 1: 0;

    Để

    gán wait_done = (req_wait_interval == WAIT_INTERVAL-1) ? 1: 0;

    Sự cố này được khắc phục bắt đầu với phiên Intel® Quartus® Prime Phiên bản Phần mềm Pro phiên bản 21.1.

    Các sản phẩm liên quan

    Bài viết này áp dụng cho 1 sản phẩm

    Intel® Agilex™ FPGA và SoC FPGA

    Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.