啟用動態重新配置的 Intel Agilex® 7 FPGA PHYLite 模擬範例設計,應該會顯示動態重新配置的範例,可透過流量刺激改變插接器延遲。然而,由於 Intel® Quartus® Prime Pro Edition Software 版本 20.4 中出現問題,如果 PHYLite 群組設定為輸入針腳類型,則 Intel Agilex® 7 FPGA PHYLite 模擬範例設計的流量刺激不會傳送任何流量到校準 IP。如果 PHYLite 組設定為輸入針腳類型,因為插值相設定為硬編碼值。
注意:如果 PHYLite 群組設為 輸出針腳類型或雙向針腳類型,則不會出現此問題。
若要在 Intel® Quartus® Prime Pro Edition Software 版本 20.4 中解決這個問題,插接器階段不能是硬碼值,這需要對 phylite_tester.sv 和 test_logic_iossm.sv 檔案進行一些修改,以允許流量刺激讀取插接器階段、增加讀取值,然後修改插接器階段以達到新值。
對名為「phylite_tester.sv」的檔執行下列變更:
1. 第 159 行: 移除 狀態宣告 階段延遲 ,並 新增 兩種狀態宣告: CORE_PHASE_DELAY與IO_PHASE_DELAY
2. 第 177 行: 變更 自
指派iossm_test_start = (prbs_fsm == PHASE_DELAY);
自
指派iossm_test_start = (prbs_fsm = CORE_PHASE_DELAY);
3. 第 323 行:從INIT狀態變更 prbs_fsm訊號
prbs_fsm <= (CHANNEL_PIN_TYPE == 「輸入」)?IO_DRIVE:(IOSSM_TEST_EN =1)?PHASE_DELAY:CORE_DRIVE);
自
prbs_fsm <= (IOSSM_TEST_EN =1) ?(CHANNEL_PIN_TYPE == 「輸入」?IO_PHASE_DELAY:CORE_PHASE_DELAY):(CHANNEL_PIN_TYPE == 「輸入」?IO_DRIVE:CORE_DRIVE);
4. 第 338 行:從IO_CHECK狀態變更prbs_fsm訊號
prbs_fsm <= (CHANNEL_PIN_TYPE == 「輸出」)?(IOSSM_TEST_EN == 1) ?PHASE_DELAY:CORE_DRIVE):IO_DRIVE;
自
prbs_fsm <= (IOSSM_TEST_EN == 1) ?(CHANNEL_PIN_TYPE == 「輸出」?CORE_PHASE_DELAY:IO_PHASE_DELAY):(CHANNEL_PIN_TYPE == 「輸出」?CORE_DRIVE:IO_DRIVE);
5. 第 338 行:從CORE_CHECK狀態變更prbs_fsm訊號
prbs_fsm <= (CHANNEL_PIN_TYPE == 「輸入」)?IO_DRIVE:(IOSSM_TEST_EN =1)?PHASE_DELAY:CORE_DRIVE);
自
prbs_fsm <= (IOSSM_TEST_EN =1) ?(CHANNEL_PIN_TYPE == 「輸入」?IO_PHASE_DELAY:CORE_PHASE_DELAY):(CHANNEL_PIN_TYPE == 「輸入」?IO_DRIVE:CORE_DRIVE);
6. 第 341 行: 移除
PHASE_DELAY:開始
如果 (core_checker_failed | io_checker_failed)
prbs_fsm <= CHECKER_FAILED;
如果 (iossm_phase_shift_done)
prbs_fsm <= CORE_DRIVE;
結束
並 以 以下兩種替換:
IO_PHASE_DELAY:開始
如果 (core_checker_failed | io_checker_failed)
prbs_fsm <= CHECKER_FAILED;
如果 (iossm_phase_shift_done)
prbs_fsm <= IO_DRIVE;
結束
CORE_PHASE_DELAY:開始
如果 (core_checker_failed | io_checker_failed)
prbs_fsm <= CHECKER_FAILED;
如果 (iossm_phase_shift_done)
prbs_fsm <= CORE_DRIVE;
結束
對名為「test_logic_iossm.sv」的檔執行以下變更:
1. 第 43 行:將IOSSM_INIT_PIN_DELAY的價值變更為 196
2. 行後 #45: 新增 本機參數宣告:
localparam WAIT_INTERVAL = 8;
3. 第 59 行:在IOSSM_WAIT_REQ之後新增以下三種狀態宣告
IOSSM_PRE_READ,
IOSSM_PRE_RDATA,
IOSSM_PRE_WAIT,
4. 第 72 行: 變更 自
如果 (!reset_n) 開始
pin_dly_write <= IOSSM_INIT_PIN_DELAY;
prev_pin_dly_write <= IOSSM_INIT_PIN_DELAY;
如果 (cal_debug_write & cal_debug_waitrequest) 開始,則結束其他功能
prev_pin_dly_write <= pin_dly_write;
pin_dly_write <= pin_dly_write IOSSM_DELAY_STEP;
結束
自
如果 (!reset_n) 開始
pin_dly_write <= 0;
prev_pin_dly_write <= 0;
如果 (cal_debug_read_data_valid & iossm_fsm == IOSSM_PRE_RDATA) 開始,則結束其他功能
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;
結束
5. 第 85 行: 變更 自
如果 (cal_debug_read_data_valid) 開始,則結束其他
自
如果 (cal_debug_read_data_valid & iossm_fsm == IOSSM_RDATA) 開始,則結束其他功能
6. 第 108 行:從IOSSM_INIT狀態變更iossm_fsm訊號
iossm_fsm <= IOSSM_WRITE;
自
iossm_fsm <= IOSSM_PRE_READ;
7. IOSSM_INIT 狀態後, 新增 以下兩種狀態:
IOSSM_PRE_READ:開始
如果 (!cal_debug_waitrequest)
iossm_fsm <= IOSSM_PRE_RDATA;
結束
IOSSM_PRE_RDATA:開始
如果 (cal_debug_read_data_valid)
iossm_fsm <= IOSSM_WRITE;
結束
8. 第 139 行: 變更 自
指派cal_debug_read = iossm_fsm == IOSSM_READ;
自
指派cal_debug_read = (iossm_fsm =IOSSM_READ) ||(iossm_fsm == IOSSM_PRE_READ);
9. 第 146 行: 變更 自
指派wait_done = (req_wait_interval =7) ? 1 :0;
自
指派 wait_done = (req_wait_interval = WAIT_INTERVAL-1) ? 1:0;
此問題已從 Intel® Quartus® Prime Pro Edition 軟體版本 21.1 開始修復。