5. 8 プロセス
SystemC はモジュールを組合せてシステム全体を記述します。 そのモジュールの中の「処理の単位」をプロセスと言います。 そのプロセスを記述する時には thread と method の二通りの種類が使えます。 プロセスの記述内容は 名前と引数の宣言、プロセスの種類の宣言、定義内容 の三点からなります。
【名前と引数の宣言】
名前と引数の宣言は モジュール(SC_MODULE) で定義する中に書きます。
SC_MODULE(cpu)
{
public:
// ポート
// 内部データ
void main(); // プロセスの宣言
void cpureset(); // プロセスの宣言
【種類の宣言】
そうして、コンストラクタ (SC_CTOR) の中で、 そのプロセスの種類を指定します。
SC_CTOR(cpu) {
SC_METHOD(cpureset); // Method と宣言
... // 起動条件
SC_METHOD(main); // Method と宣言
... // 起動条件
}
};
【定義内容】 プロセスの実装は、次のように書きます。文法的には、上の SC_MODULE の中に書くことも、また例えば別のファイルに書くことも出来ます。 良く行なわれる方法は、上のようなモジュールの宣言を filename.h に書き、 filename.cpp の中に実装を書くという方法です。その時には次の一行目のように include 文を使って宣言部分を参照します。
#include "filename.h"
..
cpu::main() {
....
}
そのプロセスの種類を指定する方法には三種類あります。
| 種類 | 記述モデル | 起動 | 動的起動 | 途中停止 | 実行 | 抽象度 | 通信 |
|---|---|---|---|---|---|---|---|
| SC_THREAD | UTF, TF | sensitive | wait | ○ | 速 | 高 | FIFO |
| SC_CTHREAD | BCA | クロック指定 | wait | ○ | 中 | ||
| SC_METHOD | RTL | sensitive | next_trigger | × | 遅 |
