SystemCの検証環境モデル構成
おそらく3.のモデル構成が多くに記述する形になる。
1.小規模なモデルテスト
比較的小さなモデルの検証をしたいときのモデル構成。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (verif_model_s.png)
sc_mainのところで、
- 検証モデルのオブジェクトを実体化
- クロック信号を生成、接続
- 入出力信号の接続
- テストパタン用意
- シミュレーション時間の更新
- 必要があれば、テストパタン用意、時間更新を繰り返す。
をする。
メインとモデルの2ファイルで済む。
しかし、シミュレーションがしにくかったり拡張しにくかったりする。
しかし、シミュレーションがしにくかったり拡張しにくかったりする。
サンプルプログラム

- 階層構造
sc_main |==> myModel(MyModel)
- MyModel機能
- クロックなし
- 4つの値を入力(in_a, in_b, in_c, in_d)
- 合計出力(out_total)
- 平均出力(out_ave)
- 最小値出力(out_min)
- 最大値出力(out_max)
2.中規模なモデルテスト
モデルが複雑になり、テストパタンが大きくなったとき、
別にテストベンチを用意して検証を実施するようなモデル構成。
別にテストベンチを用意して検証を実施するようなモデル構成。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (verif_model_m.png)
sc_mainでは、
- モデルの実体化
- テストベンチの実体化
- クロック信号生成、接続
- モデル間信号接続
- シミュレーション開始sc_start()
をする。
シミュレーションの終了は、テストベンチのプロセス内にsc_stop()を入れて、必要なタイミングで終了するようにする。
テストモデルとテストベンチとメインで構成する。
メインプログラムに接続等を記述するので、環境を移動させるのが難がある。
テストモデルとテストベンチとメインで構成する。
メインプログラムに接続等を記述するので、環境を移動させるのが難がある。
サンプルプログラム

- 階層構造
sc_main |==> myModel(MyModel) |==> testBench(TestBench)
- MyModel機能
- クロック動作
- 4つの値を入力(in_a, in_b, in_c, in_d)
- 合計出力(out_total)
- 平均出力(out_ave)
- 最小値出力(out_min)
- 最大値出力(out_max)
3.大規模なモデルテスト
検証環境が複雑になったときのモデル構成。
テストベンチとモデルの上にトップモジュールをおく。
テストベンチとモデルの上にトップモジュールをおく。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (verif_model_l.png)
sc_mainでは、
- TOPモジュールの実体化
- シミュレーション開始sc_start()
TOPモジュールでは、
- モデルの実体化
- テストベンチの実体化
- クロック信号生成、接続
- モデル間信号接続
をする。
ファイルが多くなって複雑にみえるかもしれないが、一度覚えてしまえばモデル追加や検証するのが容易。
この形は、sc_mainで1つのオブジェクト(TOPモジュール)を実体化するだけで済むので、規模の小さいモデル構成でもはじめからこの形にしたほうがよい。
この形は、sc_mainで1つのオブジェクト(TOPモジュール)を実体化するだけで済むので、規模の小さいモデル構成でもはじめからこの形にしたほうがよい。
サンプルプログラム

- 階層構造
sc_main |==> syscTop(SyscTop) |==> myModel(MyModel) |==> testBench(TestBench)
- MyModel機能
- クロック動作
- 4つの値を入力(in_a, in_b, in_c, in_d)
- 合計出力(out_total)
- 平均出力(out_ave)
- 最小値出力(out_min)
- 最大値出力(out_max)