記事 ID: 000080324 コンテンツタイプ: エラーメッセージ 最終改訂日: 2021/08/28

内部エラー: サブシステム: FPGA、ファイル: /quartus/synth/wwwx/verific/vhdl/vhdlvalue_elab.cpp、ライン: 6821

環境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

Quartus® II ソフトウェアの問題により、VHDL コードがデュアルクロックの混合幅デュアルポート・メモリーを推論し、幅の狭いポートのプロセスの前に配置されたより広いポートの処理を推論した場合、この内部エラーが発生する場合があります。

例えば:

portA_p : PROCESS (clk)
BEGIN
IF (rising_edge(clk)) THEN
 IF we_a = '1' THEN
  -- Write access
  ram(addr_a / 2)(addr_a mod 2) := data_a;
  -- Read during write on the same port returns NEW data
  q_a <= data_a;
 ELSE
  -- Read returns OLD data
  q_a <= ram(addr_a / 2)(addr_a mod 2);
 END IF;
END IF;
END PROCESS portA_p;

portB_p : PROCESS (clk)
BEGIN
IF (rising_edge(clk)) THEN
 IF we_b = '1' THEN
  ram(addr_b) := data_b;
  -- Read during write on the same port returns NEW data
  q_b <= data_b;
 ELSE
  -- Read returns OLD data
  q_b <= ram(addr_b);
 END IF;
END IF;
END PROCESS portB_p;
解決方法

この問題を回避するには、より広いポートのプロセスが最初に表示されるように、プロセスの順序を元に戻します。

この問題は、インテル® Quartus® II ソフトウェアの今後のリリースで修正される予定です。

関連製品

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

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

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