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

ทําไมคุณลักษณะ RAM ของฉัน "no_rw_check" จึงถูกละเลยในซอฟต์แวร์ Intel® Quartus® Prime เวอร์ชั่น 16.0 เป็นต้นไป

สิ่งแวดล้อม

  • Intel® Quartus® Prime Pro Edition
  • Intel® Quartus® Prime Standard Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    คำอธิบาย

    เนื่องจากปัญหาในซอฟต์แวร์ Intel® Quartus® Prime เวอร์ชั่น 16.0 ขึ้นไป คุณอาจพบว่าคุณลักษณะของ 'no_rw_check' ถูกละเลยหากคุณประกาศเอาต์พุตของ RAM เป็นสัญญาณกลางแทนพอร์ตเอาต์พุต ปัญหานี้ไม่เกิดขึ้นในซอฟต์แวร์ Intel Quartus Prime เวอร์ชั่น 15.1 และก่อนหน้า

    หากคุณย้ายการออกแบบไปใช้ซอฟต์แวร์ Intel Quartus Prime เวอร์ชั่น 16.0 ขึ้นไป ให้ตรวจสอบรายงานภายใต้การวิเคราะห์และการสังเคราะห์ -> LPM_Parameter Settings -> RAM ตรวจสอบให้แน่ใจว่าพารามิเตอร์ READ_DURING_WRITE_MODE_MIXED_PORTS มีค่า DON'T CARE หากมีการใช้คุณลักษณะ 'no_rw_check'

    ตัวอย่างด้านล่างแสดงโค้ด "no_rw_check" ของคุณลักษณะที่ตรวจพบไม่พบในซอฟต์แวร์ Intel Quartus Prime เวอร์ชั่น 16.0 เป็นต้นไป:

    LIBRARY ieee;

    ใช้ ieee.std_logic_1164.ALL;

    RAM ของเอ็นติตี

    พอร์ต (

    นาฬิกา: IN STD_LOGIC;

    ข้อมูล: IN STD_LOGIC_VECTOR (2 DOWNTO 0);

    write_address: INTEGER RANGE 0 ถึง 31;

    read_address: ในช่วง INTEGER 0 ถึง 31;

    เรา: ในSTD_LOGIC

    Q: OUT STD_LOGIC_VECTOR (2 DOWNTO 0)

    );

    END RAM;

    สถาปัตยกรรม rtl of ram IS

    TYPE MEM เป็น ARRAY(0 ถึง 31) ของSTD_LOGIC_VECTOR(2 ดาวน์โต 0);

    ram_blockสัญญาณ: MEM;

    ลักษณะ RAM ของคุณลักษณะเฉพาะ : string;

    คุณลักษณะเฉพาะของram_block : สัญญาณคือ "no_rw_check";

    read_address_regสัญญาณ: ช่วง INTEGER 0 ถึง 31;

    SIGNAL q_reg : STD_LOGIC_VECTOR (2 DOWNTO 0);

    เริ่ม ต้น

    PROCESS (นาฬิกา)

    เริ่ม ต้น

    IF (เหตุการณ์นาฬิกาและนาฬิกา = '1') แล้ว

    IF (เรา = '1') แล้ว

    ram_block(write_address) <= ข้อมูล

    สิ้นสุดถ้า;

    read_address_reg <= read_address;

    สิ้นสุดถ้า;

    ไม่พบคุณลักษณะ 'no_rw_check' โค้ดที่สนิปในซอฟต์แวร์ Intel Quartus Prime เวอร์ชั่น 16.0 เป็นต้นไป

    ------------------------------------------------------------------------------------

    IF (เหตุการณ์นาฬิกาและนาฬิกา = '1') แล้ว

    q_reg <= ram_block(read_address_reg);

    สิ้นสุดถ้า;

    q <= q_reg;

    ------------------------------------------------------------------------------------

    กระบวนการสิ้นสุด;

    END RTL;

    ความละเอียด

    หากต้องการแก้ไขปัญหานี้ ให้เปิดตรรกะเพิ่ม Pass-through ไปยัง Inferred RAM ใน

    การมอบหมาย -> การตั้งค่า ->การตั้งค่าคอมไพเลอร์ ->การตั้งค่าขั้นสูง (การสังเคราะห์)

    หรือ

    ประกาศสัญญาณเอาต์พุตของ RAM เป็นพอร์ตเอาต์พุตโดยไม่ใช้สัญญาณกลางโดยเปลี่ยนรหัสสนิปข้างต้นด้วยรหัสด้านล่าง:

    ------------------------------------------------------------------------------------

    IF (เหตุการณ์นาฬิกาและนาฬิกา = '1') แล้ว

    q <= ram_block(read_address_reg);

    สิ้นสุดถ้า;

    ------------------------------------------------------------------------------------

    ปัญหานี้มีกําหนดเวลาให้แก้ไขในซอฟต์แวร์ Intel Quartus Prime Pro Edition ในอนาคต

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

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

    อุปกรณ์ที่ตั้งโปรแกรมได้ Intel®

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