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

ID 683834
日付 10/23/2024
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コアのシミュレーション・ファイル・セットの一部として行います。

図 87. 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に対応しています。

表 64.  シミュレーション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シミュレーション・エラーが発生します。