インテル® Quartus® Primeプロ・エディション ユーザーガイド: パーシャル・リコンフィグレーション

ID 683834
日付 5/11/2020
Public
ドキュメント目次

2.8.4. インテル® Arria® 10および インテル® Cyclone® 10 GX PR制御ブロックのシミュレーション・モデル

インテル® Quartus® Primeプロ・エディション開発ソフトウェアでは、PR制御ブロックへのパーシャル・リコンフィグレーション・ビットストリームの受け渡しのシミュレーションをサポートしています。このシミュレーションによって、リコンフィグレーション可能なパーティションで生じる変化と中間効果を観察できます。

インテル® Arria® 10および インテル® Cyclone® 10 GX PR制御ブロックでは、PRシミュレーションをサポートします。シミュレーションRBF (PRビットストリーム) を送信すると、PR制御ブロックは、PRシミュレーションの成功または失敗に応じて動作できるようになります。PR領域シミュレーション・ラッパーの特定のPRペルソナのシミュレーションをアクティブにするには、シミュレーションRBFでエンコードされたPR IDをPR制御ブロックと共に使用します。PR制御ブロックのシミュレーションは、スタンドアロンとして、またはPartial Reconfiguration Controller IPコアのシミュレーション・ファイル・セットの一部として行います。

図 75. PR制御ブロックのシミュレーション・モデル

PR制御ブロックのシミュレーション・モデルには、シミュレーション専用ポートが追加されています。それは、sim_statesim_pr_id の2つです。この2つのシミュレーション・ポートとその他のポートを twentynm_prblock_if SystemVerilogインターフェイスに接続します。この接続により、PR制御ブロックを監視をテストベンチのPR制御ブロックモニターを使用して行うことができます。 インテル® Quartus® Prime開発ソフトウェアでは、twentynm_prblock_if インターフェイスの自動インスタンス化は、Partial Reconfiguration IPコアのシミュレーション・ファイル・セットを生成するときに行います。IPによりインスタンス化される twentynm_prblock_if への参照を取得するため、alt_pr_test_pkg::twentynm_prblock_if_mgr シングルトンを使用します。次に示すのはその例です。

virtual twentynm_prblock_if prblock_if; alt_pr_test_pkg::twentynm_prblock_if_mgr cb_mgr; // Get the PR control block from the prblock manager cb_mgr = alt_pr_test_pkg::twentynm_prblock_if_mgr::get(); prblock_if = cb_mgr.if_ref;
twentynm_prblock_if インターフェイスのコードは次のとおりです。
interface twentynm_prblock_if(input logic pr_clk, input logic clk); logic prrequest; logic [31:0] data; wire error; wire ready; wire done; logic [31:0] sim_only_state; wire [31:0] sim_only_pr_id; // All signals are async except data clocking cb1 @(posedge pr_clk); output data; endclocking endinterface : twentynm_prblock_if 
twentynm_prblock_if インターフェイスの詳細については、 <installation directory> /eda/sim_lib/altera_lnsim.sv ファイルを参照してください。
PR制御ブロックのシミュレーション・モデルのシミュレーション状態は、制御ブロックの PR_EVENT_TYPE 列挙状態を表します。twentynm_prblock_test_pkg SystemVerilog パッケージでは、このような列挙を定義します。このような状態は、制御ブロックのさまざまな許可状態を表します。定義された制御ブロックの列挙は次のとおりです。
package twentynm_prblock_test_pkg; typedef enum logic [31:0] { NONE, IDLE, PR_REQUEST, PR_IN_PROGRESS, PR_COMPLETE_SUCCESS, PR_COMPLETE_ERROR, PR_INCOMPLETE_EARLY_WITHDRAWL, PR_INCOMPLETE_LATE_WITHDRAWL } PR_EVENT_TYPE; 

シミュレーション状態が PR_IN_PROGRESS の場合、影響を受けるPR領域では、シミュレーション出力マルチプレクスをXに駆動するため、pr_activate 信号をアサートする必要があります。このアクションは、PR領域の未知の出力のシミュレーションをパーシャル・リコンフィグレーション中に行います。さらに、PRシミュレーション・モデルの pr_activate 信号をアサートし、PRモデルのすべてのレジスタ-をPRアクティベーション値を使用してロードしてください。

シミュレーション状態が PR_COMPLETE_SUCCESS に到達したら、適切なPRペルソナのアクティブ化を適切なPR領域シミュレーション・ラッパーmux sel 信号を使用して行います。領域や、PR制御ブロックの sim_only_pr_id 信号からの特定の選択信号をデコードします。このIDは、シミュレーションRBFのエンコード済みIDに対応しています。

表 63.  シミュレーションRBFにおけるワードの必要なシーケンスステップ1では、次のワードのうち0個以上書き込みます。他のすべてのステップで書き込むのは1ワードのみです。
1 ゼロ・パディング・ブロック 0x00000000
2 PR_HEADER_WORD 0x0000A65C
3 PR_ID 32ビットのユーザーID
4 PRDATA_COUNT_0 0x01234567
5 PRDATA_COUNT_1 0x89ABCDEF
6 PRDATA_COUNT_2 0x02468ACE
7 PRDATA_COUNT_3 0x13579BDF
注: The PR_ID ワードは、sim_only_pr_id への出力で、PRDATA_COUNT_0 から始まります。ヘッダーまたはデータカウントに別の値を使用すると、PRシミュレーション・エラーが発生します。