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

ทําไมรูปแบบการจําลองฟังก์ชันจึงไม่ถูกต้องเมื่อมี RAM หลายตัว: 2 พอร์ต Intel FPGA IP

สิ่งแวดล้อม

  • Intel® Quartus® Prime Pro Edition
  • IP เอฟพีจีเอ Intel® RAM 2-PORT
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    คำอธิบาย

    เนื่องจากปัญหาในซอฟต์แวร์ Intel® Quartus® Prime Pro Edition เวอร์ชั่น 19.1 พฤติกรรมการจําลองฟังก์ชันอาจไม่ถูกต้องเมื่อการออกแบบของคุณมี IP พอร์ต RAM-2 หลายตัวที่เปิดใช้งาน "จําลองโหมดนาฬิกาคู่ TDP" และเรียกใช้สคริปต์การจําลองที่สร้างขึ้นโดยอัตโนมัติ IP RAM หลายตัวสร้างอินสแตนซ์dcfifo_inและdcfifo_outโมเดลย่อยที่มีชื่อโมดูลเดียวกัน แต่ไฟล์dcfifo_inและdcfifo_outของ IP แต่ละไฟล์สร้างโมเดลย่อยที่แตกต่างกันทันที ในสคริปต์การจําลอง dcfifo_in ทั้งหมด dcfifo_out และไฟล์ย่อยของ IP RAM ที่แตกต่างกันจะถูกคอมไพล์ลงในไลบรารีการจําลองเดียวกัน ดังนั้นไฟล์ที่คอมไพล์dcfifo_inและdcfifo_outที่ใหม่กว่าจึงเขียนทับไฟล์ก่อนหน้า IP RAM ทั้งหมดใช้โมดูลdcfifo_inและdcfifo_outเดียวกันและนําไปสู่พฤติกรรมการจําลองที่ไม่ถูกต้อง

    ความละเอียด

    เพื่อแก้ไขปัญหานี้ แก้ไขสคริปต์การจําลองในเครื่องมือจําลอง sim/common/<>_files.tcl เพื่อสร้างไลบรารีที่แตกต่างกันสําหรับ IP RAM ต่างๆ และคอมไพล์อินสแตนซ์dcfifo_inและdcfifo_outไปยังไลบรารีต่างๆ ที่สอดคล้องกัน

    • สคริปต์ดั้งเดิม:

    get_design_libraries proc {} {
    ตั้งค่าไลบรารี [dict create]
    dict set libraries fifo_191 1
    dict set libraries ram_2port_191 1
    dict set libraries dpram32x512 1
    dict set libraries dpram16x1024 1
    return $libraries}

    proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_in.v"]\" -work ram_2port_191"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_out.v"]\" -work ram_2port_191"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dpram32x512_ram_2port_191_6nqqinq.v"]\" -work ram_2port_191"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/tdp_dpram32x512_ram_2port_191_6nqqinq.v"]\" -work ram_2port_191"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_in.v"]\" -work ram_2port_191"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_out.v"]\" -work ram_2port_191"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dpram16x1024_ram_2port_191_u7jjoxa.v"]\" -work ram_2port_191"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/tdp_dpram16x1024_ram_2port_191_u7jjoxa.v"]\" -work ram_2port_191"
    ส่งคืนไฟล์ $design_
    }

    • สคริปต์ที่แก้ไข:

    get_design_libraries proc {} {
    ตั้งค่าไลบรารี [dict create] dict set libraries fifo_191 1
    dict set libraries ram_2port_191_0 1
    dict set libraries ram_2port_191_1 1
     
    dict set libraries dpram32x512 1
    dict set libraries dpram16x1024 1
    return $libraries}

    proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_in.v"]\" -work ram_2port_191_1"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_out.v"]\" -work ram_2port_191_1"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dpram32x512_ram_2port_191_6nqqinq.v"]\" -work ram_2port_191_1"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/tdp_dpram32x512_ram_2port_191_6nqqinq.v"]\" -work ram_2port_191_1"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_in.v"]\" -work ram_2port_191_0"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_out.v"]\" -work ram_2port_191_0"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dpram16x1024_ram_2port_191_u7jjoxa.v"]\" -work ram_2port_191_0"
    lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/tdp_dpram16x1024_ram_2port_191_u7jjoxa.v"]\" -work ram_2port_191_0"
    ส่งคืน $design_files}

    ปัญหานี้ได้รับการแก้ไขเริ่มต้นด้วยเวอร์ชัน 19.3 ของซอฟต์แวร์ Intel® Quartus® Prime Pro Edition

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

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

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

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