ID บทความ: 000086754 ประเภทข้อมูล: การแก้ไขปัญหา การตรวจสอบครั้งล่าสุด: 10/02/2021

ทําไมมาตรการกระตุ้นการรับส่งข้อมูลจึงไม่ส่งการรับส่งข้อมูลไปยัง IP การปรับเทียบเมื่อใช้การออกแบบตัวอย่างการจําลอง Intel® Agilex PHYLite ที่มีการเปิดใช้งานการกําหนดค่าใหม่แบบไดนามิก

สิ่งแวดล้อม

  • Intel® Quartus® Prime Pro Edition
  • IP เอฟพีจีเอ Intel® Stratix® 10 PHY Lite สำหรับอินเทอร์เฟซแบบขนาน
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    คำอธิบาย

    การออกแบบตัวอย่างการจําลอง Intel® Agilex™ PHYLite ที่เปิดใช้งานการกําหนดค่าใหม่แบบไดนามิกควรแสดงตัวอย่างของการกําหนดค่าใหม่แบบไดนามิกที่ทํางานโดยการเปลี่ยนความล่าช้าของ interpolator ผ่านมาตรการกระตุ้นการรับส่งข้อมูล อย่างไรก็ตาม เนื่องจากปัญหาในซอฟต์แวร์ Intel Quartus® Prime Pro Edition เวอร์ชั่น 20.4 ปัญหาการรับส่งข้อมูล Intel Agilexในการออกแบบตัวอย่างการจําลอง PHYLite ไม่ได้ส่งการรับส่งข้อมูลไปยัง IP การปรับเทียบหากกลุ่ม PHYLite ถูกตั้งค่าเป็นประเภทพินอินพุต เนื่องจากเฟส interpolator ถูกตั้งค่าเป็นค่าฮาร์ดโค้ด

    หมายเหตุ: ปัญหานี้จะไม่เกิดขึ้นหากกลุ่ม PHYLite ถูกตั้งค่าเป็นประเภทพินเอาต์พุตหรือประเภทพินสองทิศทาง

    ความละเอียด

    เพื่อแก้ไขปัญหานี้ในซอฟต์แวร์ Intel® Quartus® Prime Pro Edition เวอร์ชั่น 20.4 เฟส interpolator ต้องไม่ใช่ค่าแบบ Hardcoded ซึ่งจําเป็นต้องทําการแก้ไขไฟล์ phylite_tester.sv และ test_logic_iossm.sv เพื่อให้ค่ากระตุ้นการรับส่งข้อมูลสามารถอ่านเฟส interpolator เพิ่มมูลค่าในการอ่าน แล้วจึงปรับเปลี่ยนเฟสตัวกลางเป็นค่าใหม่

    ดําเนินการเปลี่ยนแปลงต่อไปนี้ในไฟล์ที่ชื่อ "phylite_tester.sv":

    1. Line #159: ลบ State Declaration PHASE DELAY และเพิ่มการประกาศสองสถานะ: CORE_PHASE_DELAYและIO_PHASE_DELAY

    2. บรรทัดที่ #177: เปลี่ยนจาก

    มอบหมายiossm_test_start = (prbs_fsm == PHASE_DELAY);

    ถึง

    มอบหมายiossm_test_start = (prbs_fsm == CORE_PHASE_DELAY);

    3. Line #323: เปลี่ยนสัญญาณprbs_fsmในสถานะ INIT จาก

    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. Line #338: เปลี่ยนสัญญาณprbs_fsmในสถานะ IO_CHECK จาก

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

    ถึง

    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. Line #338: เปลี่ยนสัญญาณprbs_fsmในสถานะ CORE_CHECK จาก

    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. Line #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. After line #45: เพิ่มการประกาศพารามิเตอร์ภายในเครื่อง:

    WAIT_INTERVAL localparam = 8;

    3. Line #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. Line #108: เปลี่ยนสัญญาณiossm_fsmในสถานะ IOSSM_INIT จาก

    iossm_fsm <= IOSSM_WRITE;

    ถึง

    iossm_fsm <= IOSSM_PRE_READ;

     

    7. หลังจากสถานะ IOSSM_INIT ให้เพิ่มสถานะสองสถานะต่อไปนี้:

    IOSSM_PRE_READ: เริ่ม

    if (!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

    ผลิตภัณฑ์ที่เกี่ยวข้อง

    บทความนี้จะนำไปใช้กับ 1 ผลิตภัณฑ์

    เอฟพีจีเอ Intel® Agilex™ และเอฟพีจีเอ SoC

    คำประกาศสิทธิ์

    1

    การโพสต์และการใช้เนื้อหาในเว็บไซต์นี้ทั้งหมดอยู่ภายใต้ข้อกำหนดการใช้งานของ Intel.com

    เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้