記事 ID: 000074042 コンテンツタイプ: トラブルシューティング 最終改訂日: 2021/08/27

複数の RAM (2 ポート インテル FPGA IP) がある場合、この機能のシミュレーション動作が不正なのはなぜですか?

環境

    インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション
    RAM 2-ポート・インテル® FPGA IP
BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション・バージョン 19.1 の問題により、デザインに複数の RAM-2 ポート IP が含まれている場合に「エミュレート TDP デュアルクロックモード」を有効にし、自動生成されたシミュレーション・スクリプトを実行すると、機能のシミュレーション動作が正しくない可能性があります。複数の RAM IP はすべて、同じモジュール名でdcfifo_inをインスタンス化し、サブモジュールをdcfifo_outします。しかし、各 IP のdcfifo_inファイルとdcfifo_outファイルは、異なるサブモジュールをインスタンス化します。シミュレーション・スクリプトでは、すべてのdcfifo_in、dcfifo_out、および異なる RAM IP のサブモジュール・ファイルが同じシミュレーション・ライブラリーにコンパイルされます。したがって、後でコンパイルされたdcfifo_inとdcfifo_outファイルは以前のファイルを上書きします。すべての RAM IP は同じdcfifo_inモジュールとdcfifo_outモジュールを使用するため、不正なシミュレーション動作が生じます。

解決方法

この問題を回避するには、sim/common/_files.tcl でシミュレーション・スクリプトを変更して、異なる RAM IP 用に異なるライブラリーを作成し、dcfifo_inをコンパイルし、インスタンスを対応する異なるライブラリーにdcfifo_outします。

  • 元のスクリプト:

proc get_design_libraries {} {
set ライブラリー [dict create]
dict set ライブラリー fifo_191 1
dict set ライブラリー ram_2port_191 1
dict set ライブラリー dpram32x512 1
dict set ライブラリー dpram16x1024 1
return $libraries}

proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
lap 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
lap 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
lap 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
lap 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
lap 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
lap 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
lap 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
lap 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_files を返す
}

  • 変更されたスクリプト:

proc get_design_libraries {} {
set ライブラリー [dict create] dict set ライブラリー fifo_191 1
dict set ライブラリー ram_2port_191_0 1
dict set ライブラリー ram_2port_191_1 1
 
dict set ライブラリー dpram32x512 1
dict set ライブラリー dpram16x1024 1
返品$libraries}

proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
lap 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
lap 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
lap 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
lap 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
lap 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
lap 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
lap 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
lap 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} を返す

この問題は、インテル® Quartus® Prime 開発ソフトウェア・プロ・エディションのバージョン 19.3 以降で修正されています。

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

1

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。