TLM HW 設計・検証  
 


モデリング

SystemCモデルの抽象度

1.アルゴリズム・レベル
このレベルのモデルの目的は、機能仕様を満たすアルゴリズムを選択・作成することです。この段階ではハードウェアとソフトウェアの分割がなされていないこともあります。SystemC2.0の特徴の一つは、機能ブロックと通信(インターフェース)ブロックの分離ですが、このモデルでは機能ブロックに注目して調べることになります。この抽象度のモデルではC/C++等のプログラム言語で記述されることも多いのですが、近年重要になっている並列プロセス記述においては、並列動作の記述が可能なSystemCを使用して書き始める事例も出てきています。

2.バーチャル・プロトタイピング・レベル
バーチャル・プロトタイピングは、ハードウェアとソフトウェアからなるシステム全体のうち、ハードウェア部分の機能ブロックをモデル化したものです。バーチャル・プロトタイピング・モデルでは、ハードウェアとソフトウェアの分割は完了し、状態レジスタおよび制御レジスタが定義されます。また、リセットなどの基本的な制御についてもここで定義されます。機能ブロックに加えて、メモリー・マップド・バスのような通信(インタフェース)ブロックがTLM2.0などを用いたトランザクションで定義されます。

バーチャル・プロトタイピングは、その目的と抽象度から、ハードウェアとして割り当てられたアルゴリズムとの整合性検証やSW早期開発を行うためのプラットフォームとする機能バーチャル・プロトタイピングと、アーキテクチャ探索やパフォーマンス見積りを行うための性能バーチャル・プロトタイピングに分けて考えることができます。前者のモデルは、TLM2.0で言うLoosely Timed(LT)、後者ではApproximately Timed(AT)がコーディングスタイルとして用いられます。データの受け渡しも、前者であればシミュレーション高速化のためにポインタの受け渡しで可能ですが、後者ではデータ転送時間をより正確に見積もれるようにデータの転送を定義します。また同様な理由から、前者では並列プロセスは少ないほうがよい一方、後者ではハードウェアのブロック分割を考えたプロセス分割があったほうがよいかもしれません。一般に、機能バーチャル・プロトタイピング・モデルはシミュレーション時間がより短く、性能バーチャル・プロトタイピング・モデルは精度がより高くなります。

3.高位合成可能レベル
バーチャル・プロトタイピング・レベルのモデルは、主にシミュレーションのためのモデルですが、必ずしも高位合成可能ではありません。高位合成可能な条件は高位合成ツール毎に異なりますが、大枠において、機能ブロックを実装を考えた記述に変換する必要があります。例えば、大きなフレームのピクセルを全て取り扱うことは、膨大なメモリを消費するでしょうから、ハードウェアの実装として現実的ではないかもしれません。その場合は、アルゴリズムとしては等価であるが、データアクセスをより小さい単位で行うように書き換える必要があります。また、プロセス間のデータの授受は(ポインタ受け渡しで済ませずに)やり取りするデータの構成を含めて、明確に定義し、ラインバッファのような中間ストレージも定義されなくてはなりません。

高位合成可能レベルなモデルは、そのモデルの外部インタフェースがTLMか信号かによって、高位合成可能TLMレベル・モデルと高位合成可能信号レベル・モデルに分かれます。TLMインタフェース自身はモデリングの抽象化とそのシミュレーションを目的として開発されたものであり、高位合成のためには信号レベルのインタフェース定義を用意する必要があります。ただし、AXIやUSBのような標準バスプロトコルへ接続する場合、TLMから信号への変換のためのIP(トランザクタ)を用意することで、高位合成可能TLMレベル・モデルで高位合成可能となります。