Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

TLM コンポーネントのアーキテクチャ

コンポーネントの機能の概要

TLM ジェネレーターは、 Simulink®モデル サブシステムからターゲット TLM コンポーネントをエクスポートします。ターゲット TLM コンポーネントには、TLM 汎用プロトコルと汎用ペイロードを使用した読み取りおよび書き込みトランザクションをサポートする単一の TLM ソケットがあります。

メモ

この機能には、 ASIC Testbench for HDL Verifierアドオンが必要です。

次の図は、生成された TLM コンポーネントに指定できる最も単純な動作を示しています。メモリ マップやコマンドおよびステータス レジスタは含まれておらず、トランザクションは即座に実行されます。

生成された TLM コンポーネントのアーキテクチャを制御するには、いくつかのオプションから選択できます。メモリ マップを組み込むことは、最も効果的なオプションの 1 つです。次の図は、すべての機能を有効にして生成された TLM コンポーネントの動作を示しています。

次の TLM コンポーネント機能のオプションを設定できます。

メモリ マッピング

メモリマップがありません

メモリ マップなしオプションでは、アドレスなしで 1 つの読み取りレジスタと 1 つの書き込みレジスタだけを持つ TLM コンポーネントが生成されます。Simulinkモデルの入力は書き込みレジスターによって表され、出力は読み取りレジスターによって表されます。

メモリ マップがない場合、生成された TLM コンポーネントは次の特性を持ちます。

  • 単一の入力レジスタと単一の出力レジスタがあります。

  • デバイス上の特定のレジスタを選択するためのSystemCシミュレーション中の読み取りおよび書き込み要求のアドレスは必要なく、無視されます。

    • 単一の書き込み要求ですべての入力データを受け取り、読み取り要求は戻り値ですべての出力データを受け取ります。

  • 必要なデータ セット全体を保持するサイズの入力レジスタと出力レジスタ、または仮想プラットフォーム環境で動作 (アルゴリズム ステップ関数) を実行するときに TLM コンポーネントによって作成される入力レジスタと出力レジスタがあります。

  • 入力レジスタがいっぱいになると、この条件によりSystemCシミュレータでの動作の実行がトリガー (スケジュール) されます。出力レジスタも同様に処理されます。

  • コマンドとステータスのすべてのデフォルトが適用されます。

このオプションを使用して TLM コンポーネントを生成すると、それを仮想プラットフォーム (VP) で次のように使用できます。

  • 検証テストベンチのスタンドアロン コンポーネント

  • 直接バインドされたコプロセッシングユニット

  • プロトコルアダプターを使用して通信チャネルに接続されたデバイス

単一アドレスの自動生成メモリマップ

単一アドレス オプションで自動生成されるメモリ マップは、それぞれ 1 つのアドレスを持つ 1 つの読み取りデータ レジスタと 1 つの書き込みデータ レジスタのみを持つ TLM コンポーネントを生成します。

Simulinkモデルの入力は書き込みレジスターで表され、出力は読み取りレジスターで表されます。 HDL Verifier™ソフトウェアは、コード生成中にこれらの特定のレジスタにアクセスするために必要なアドレスを自動的に割り当てます。これらのアドレスは、読み取りおよび書き込み操作を通じて個々のレジスタをアドレス指定するために必要な特定のオフセットを提供します。生成された TLM コンポーネント全体のベース アドレスの定義は、TLM コンポーネントが存在する仮想プラットフォームによって定義される必要があります。オフセット アドレス定義は、TLM コンポーネントとともに生成される定義ファイルに表示されます。

単一アドレス メモリ マップを使用すると、生成された TLM コンポーネントには次の特性があります。

  • 単一の入力レジスタと単一の出力レジスタ、およびオプションのコマンドおよびステータス レジスタとテストおよび設定レジスタがあります。

  • デバイス上の特定のレジスタを選択するには、 SystemCシミュレーション中に読み取りおよび書き込み要求にアドレスが必要です。

    • 単一の書き込み要求ですべての入力データを受け取り、読み取り要求は戻り値ですべての出力データを受け取ります。

  • 必要なデータ セット全体を保持するサイズの入力レジスタと出力レジスタ、または仮想プラットフォーム環境で動作 (アルゴリズム ステップ関数) を実行するときに TLM コンポーネントによって作成される入力レジスタと出力レジスタがあります。

  • コマンドとステータス レジスタが使用されない場合、またはコマンドとステータス レジスタが使用されてデフォルト値が適用される場合、入力レジスタがいっぱいになると、内容がバッファにプッシュされ、 での動作の実行がトリガー (スケジュール) されます。 $SystemCシミュレーター。コマンドおよびステータス レジスタが使用され、プッシュ入力コマンドが 1 に設定されている場合、イニシエータ モジュールは入力データ セットを入力レジスタから入力バッファに移動します。出力レジスタも同様に処理されます。

  • コマンドとステータス レジスタが使用されない場合、コマンドとステータスのすべてのデフォルトが適用されます。

このオプションを使用して TLM コンポーネントを生成すると、それをテストベンチのスタンドアロン コンポーネントとして仮想プラットフォーム (VP) で使用したり、通信チャネルに接続したりできます。

個別アドレスを含む自動生成されたメモリ マップ

個別アドレス オプションを使用して自動生成されたメモリ マップは、モデル出力ごとに 1 つの読み取りデータ レジスタと、個別のアドレスを持つモデル入力ごとに書き込みデータ レジスタを備えた TLM コンポーネントを生成します。

Simulinkモデルの各入力は、対応する書き込みレジスターによって表され、各出力は、対応する読み取りレジスターによって表されます。 HDL Verifierソフトウェアは、コード生成中にこれらの特定のレジスタにアクセスするために必要なアドレスを自動的に割り当てます。これらのアドレスは、読み取りおよび書き込み操作を通じて個々のレジスタをアドレス指定するために必要な特定のオフセットを提供します。生成された TLM コンポーネント全体のベース アドレスの定義は、TLM コンポーネントが存在する仮想プラットフォームによって定義される必要があります。オフセット アドレス定義は、TLM コンポーネントとともに生成される定義ファイルに表示されます。

個別のアドレス メモリ マップを使用すると、生成された TLM コンポーネントには次の特性があります。

  • 各入力レジスタと各出力レジスタには、独自のアドレスのほか、オプションのコマンドおよびステータス レジスタ、テストおよびセット レジスタがあります。

  • デバイス上の特定のレジスタを選択するには、 SystemCシミュレーション中に読み取りおよび書き込み要求にアドレスが必要です。

    • 各入力および出力レジスタには個別にアクセスする必要があります。

  • イニシエーター モジュールは、複数のトランザクションまたは部分的なトランザクション、あるいはその両方で各入力および出力レジスターに書き込みまたは読み取りを行うことができます。

  • 各入出力レジスタのサイズはデータのサイズです。

  • すべての入力が書き込まれたとき、またはコマンドと設定レジスタのビットが自動に設定されたときに、実行がトリガーされます。手動に設定すると、イニシエーター モジュールは入力データ セットを入力レジスタから入力バッファに移動します。

  • 出力レジスタは、すべての出力レジスタが読み取られたとき、またはコマンドおよび設定レジスタのビットが自動に設定されたときにリフレッシュされます。手動に設定すると、イニシエーター モジュールは出力データ セットを出力バッファから出力レジスタに移動します。

このオプションを使用して TLM コンポーネントを生成すると、それをテストベンチのスタンドアロン コンポーネントとして仮想プラットフォーム (VP) で使用したり、通信チャネルに接続したりできます。

コマンドおよびステータスレジスタ

アドレスを含む自動生成されたメモリ マップを使用して TLM コンポーネントを生成することを選択できます。これを行うと、TLM ジェネレーターは、生成された TLM コンポーネントにコマンドおよびステータス レジスター (CSR) を組み込むオプションを提供します。このレジスタの定義が表に表示されます。

書き込み専用ビット

書き込み専用 (WO) ビットは、相互に排他的なコマンドをアサートします。CSR への 1 回の書き込み操作でアサートできるコマンド ビットは 1 つだけです。CSR への書き込みで複数のコマンド ビットが設定されている場合、コマンドは未定義です。レジスタ内のコマンド ビットに 1 を書き込むことで、各コマンドをアクティブにします。その後、コマンドの実行後に各コマンド ビットが自動的にクリアされます。コマンドビットをクリアするためにレジスタに 0 を書き込む必要はありません。書き込み専用ビットは、CSR の読み取り時に常に 0 として返されます。コマンドを書き込んでも、読み取り/書き込みまたは書き込み専用ビットは上書きされません。

読み取りおよび書き込みビット

現在のステータスと設定を取得するには、読み取りおよび書き込み (R/W) ビットを使用します。R/W ビットはスティッキーです。つまり、レジスタ内のビットに 1 を書き込んで設定すると、同じビットに 0 が書き込まれるか、リセット コマンドが呼び出されるまで、R/W ビットは設定されたままになります。読み取りおよび書き込みビットは、CSR の読み取りに対して実際の値を返します。

CSR への 1 回の書き込み操作により、レジスタ内のすべての読み取りおよび書き込みビットが設定されます。一部のビットのみを設定し、他のビットの以前の値を維持することを選択できます。これを行う前に、まず CSR を読み、要件に従って値を変更する必要があります。変更が完了したら、32 ビット全体を CSR に書き戻すことができます。

読み取り専用ビット

読み取り専用 (RO) ビットはステータス情報を提供します。生成された TLM コンポーネントはそれらの値を自動的に設定およびクリアし、イニシエーター モジュールはそれらの値を読み取ってステータスを学習できます。読み取り専用ビットは、CSR の読み取りまたは書き込み中に実際の値を変更しません。

レジスタ定義

次の表には、レジスタ定義全体が含まれています。

次の表では、ビットがどのように定義されているかを説明します。

ビット名前読み取り/書き込みステータス説明
CSR<0>《リセットコマンド》書き込み専用

1 に設定すると、次のことが当てはまります。

  • 入力レジスタの内容は無効となります。

  • 出力レジスタの内容は無効になります。

  • 以下を除くすべての CSR ビットは 0 に設定されます。

    • 入力バッファ空ビットが 1 に設定されます。

    • 出力バッファ空ビットが 1 に設定されます。

    • 入力自動モードはデフォルトに設定されています。

    • 出力自動モードはデフォルトに設定されています。

コマンド実行後は自動的に0に戻ります。

CSR<1>「コマンドの開始」書き込み専用

入力バッファリングがない場合に、現在入力レジスタ内にある入力データ セットを使用して、TLM コンポーネント動作の実行を手動でトリガーします。

入力バッファリングが使用されている場合、このコマンドは未定義です。

CSR<2>《割り込みステータス》読み取り専用割り込み信号の現在の状態を反映します。ステータスのみを提供します。自動的に設定およびクリアされます。
CSR<3>《割り込み禁止》読み書き

0 に設定すると、割り込み信号で割り込みを生成し、CSR の割り込みステータス ビットに反映できるようになります。

1 に設定すると、割り込みの生成が無効になります。

CSR<8>《プッシュ入力コマンド》書き込み専用

バッファリングが使用され、入力モードが 0 (手動モード) に等しい場合、このコマンドにより、イニシエータ モジュールは入力データ セットを入力レジスタから入力バッファに移動できます。次に、TLM コンポーネントの動作の実行をトリガーします。

バッファリングを使用しない場合、このコマンドは未定義です。

入力モードが 1 (自動) の場合、このコマンドは未定義です。

CSR<9>《入力モード》読み書き

1 (自動) に設定すると、完全なデータ セットが入力レジスタに書き込まれていれば、入力レジスタから入力バッファへの入力データ セットの移動と TLM コンポーネント動作の実行が自動的にトリガーされます。

0 (手動) に設定すると、入力レジスタから入力バッファへの入力データ セットの移動と動作の実行を手動で開始する必要があります。これを行うには、バッファリングが使用されていない場合は開始コマンド ビットを 1 に書き込み、バッファリングが存在する場合はプッシュ入力コマンドを 1 に書き込みます。

デフォルトでは、入力モードは 1 (自動) に設定されています。0 (手動) に変更するには、TLM コンポーネントのコンストラクターのパラメーターで指定します。

CSR<12>プル出力コマンド書き込み専用

バッファリングが使用され、出力モードが 0 (手動モード) に設定されている場合、このコマンドにより、イニシエーター モジュールは出力データ セットを出力バッファーの先頭から出力レジスターに移動できます。

バッファリングが使用されていない場合、このコマンドは効果がありません。

出力モードが 1 (自動) の場合、このコマンドは未定義です。

CSR<13>《出力モード》読み書き

1 (自動) に設定すると、出力バッファーの先頭から出力レジスターへのデータの移動が、TLM コンポーネントの動作の実行によって自動的にトリガーされます。

0 (手動) に設定すると、出力バッファの先頭から出力レジスタへのデータの移動を手動で開始する必要があります。バッファリングが存在する場合は、プル出力コマンドに 1 を書き込むことによってこれを行います。

デフォルトでは、出力モードは 1 (自動) に設定されています。0 (手動) に変更するには、TLM コンポーネントのコンストラクターのパラメーターで指定します。

割り込み

生成された TLM コンポーネントに割り込み信号を追加できます。TLM コンポーネントは、出力レジスタで新しい出力が利用可能になるたびに、この信号をアサートします。出力レジスタから値が読み取られると、信号は自動的にクリアされます。

割り込み信号は、 SystemCブール信号アクティブ High です。ステータス レジスタの割り込みアクティブ ビットは、割り込み信号の状態を反映します。

レジスタのテストと設定

オプションの test および set register を使用して、SystemC環境内の共有 TLM コンポーネントへのアクセスを制御できます。このレジスタを読み取ると、現在の値が返され、アトミック操作でレジスタが新しいアサートされた値に設定されます。複数のイニシエータ モジュールを備えたシステムでは、通常、このタスクを実行するには同じターゲットへのアクセスが必要です。そうである場合、イニシエータ モジュールは、他のすべてのイニシエータ モジュールが従う限り、生成された TLM コンポーネントに排他的にアクセスできます。イニシエータ モジュールは、テストおよび設定レジスタを読み取り、その読み取り操作で値 0 が返された場合にのみターゲット デバイスを使用する必要があります。イニシエータ モジュールは、その後のテストおよびセット レジスタの読み取りによって値 1 が返されることを確認できます。これは、デバイスがビジーであることを他のイニシエータ モジュールに示します。TLM コンポーネントへの排他的アクセスを取得した後、イニシエーター モジュールは、テスト アンド セット レジスタに 0 を書き込むことによってターゲット操作が完了するとコンポーネントを解放します。

レジスタと信号ポート

レジスタ

TLM コンポーネントは、アルゴリズム処理中にインターフェイス レジスタから直接入力と出力を読み書きします。イニシエータがすべての入力レジスタを書き込んだ後 (AUTO モードの場合)、またはイニシエータが CSR に START コマンドを書き込んだ後、アルゴリズムは処理を開始します。SystemC待機関数はすべてのタイミングを生成します。

注意

アルゴリズム処理結果の破損を防ぐため、処理中にイニシエーターがレジスタの読み取りまたは書き込みを実行できるようにしないでください。

この図は、登録されたインターフェイスを持つ TLM アダプターを示しています。

信号ポート

TLM コンポーネントは、sc_signalポート (sc_inまたはsc_out) を介して入力と出力の読み取りと書き込みを行います。これらの入出力は登録されていません。ステップ関数が実行されると、 sc_inポートの現在値が読み取られ、実行され、結果がsc_outポートに書き込まれます。

この図は、レジスタ インターフェイスとsc_inポート (赤色) を備えた TLM アダプターを示しています。