ためになるホームページ お問い合わせ




TOP > SystemC > SystemCファイル構成[ヘッダーファイル編]
ヘッダーファイルの記述
ヘッダーファイルにモジュールの概要を記述する。具体的には、入出力のポートとプロセスの宣言を行う。
クラスを宣言する際、マクロのSC_MODULEを使いコンストラクタでは、SC_CTORを使う。

クラス内で定義するもの
クラス内では、以下のものを定義する必要がある。
  • 接続ポート
  • プロセス宣言
  • イベントの定義
  • プロセスのタイプ
  • センシティビティ・リスト

  • 接続ポート
    接続ポートは各モジュール間の接続を定義する。以下のように定義をする。
    [主な接続ポート]
  • sc_in<type> ポート名・・・入力ポート
  • sc_out<type> ポート名・・・出力ポート
  • sc_incout<type> ポート名・・・入出力ポート
  • sc_in_clk ポート名・・・クロック専用ポート
  • ※typeはデータ型

    プロセス宣言
    プロセス宣言は、モジュールの処理を行うメソッドの事である。ヘッダー内に宣言をし、インプリメンテーションファイル内で実装させる。
    プロセスの宣言は引数も戻り値も全てvoidで宣言する
    (例)void Func(void);

    イベントの定義
    モジュール内のイベントの通知を定義する
    (書式)sc_event EventName;

    プロセスのタイプ
    上記で宣言したプロセスのタイプをコンストラクター内で指定する。プロセスタイプは以下の3種類がある
  • SC_METHOD・・・センシティビティ・リストに記述した信号が変化された時、実行されるメソッド。
  •   (例)SC_METHOD(FUNC);
  • SC_THREAD・・・センシティビティ・リストに記述した信号が変化された時、実行される。SC_THREADで指定したプロセスは、一度しか実行されない。よって、while文等で無限ループにする。
  •   (例)SC_THREAD(FUNC);
  • SC_CTHREAD・・・クロック固有のTHREAD。クロックの立ち上がり・立ち下りに実行される。センシティビティ・リストは必要ない。
  •   (例)SC_CTHREAD(FUNC, CLK.pos());

    センシティビティ・リスト
    プロセス実行のトリガを指定する。センシティビティ・リストに表記できるのは、以下のもの。
  • ポート名
  • 信号名
  • クロックの立ち上がり
  • クロックの立ち下がり

  • モジュールヘッダーファイルの例
    /*!
     *******************************************************************************
     * \file module.h
     * \brief モジュールヘッダーファイルの例
     *
     *******************************************************************************
     */
    
    /*!
     *******************************************************************************
     * \class MODULEA
     * \brief モジュールAクラス
     *
     *******************************************************************************
     */
    SC_MODULE(MODULEA)//モジュール名を記述
    {
    public:
      //ポートの定義
      sc_in<bool>  IN;
      sc_out<bool> OUT;
    
      //プロセスの宣言
      void FUNC(void);
    
      //コンストラクター
      SC_CTOR(MODULEA)
      {
        //プロセスのタイプ
        SC_METHOD(FUNC);
        //センシティビティ・リスト
        sensitive << IN;
      }
    };
    
    





    Copyright 2007 ためになるホームページ All Rights Reserved.