bambooflow Note

SystemC/波形出力

最終更新:

bambooflow

- view
メンバー限定 登録/ログイン

SystemC波形出力




波形出力の設定は、sc_mainとか、検証環境用のファイル内に記述する。
簡単なのはsc_main内に記述する方法。
TLMベースでは波形はほとんど見ないと思う。BCAのバス設計時は見ると思う。


VCD波形ファイル出力

  • sc_main記述例
#include <systemc.h>
#include "TOP.h"
 
int sc_main(int argc, char* argv[])
{
    sc_clock  CLK( "CLK", 10, SC_NS );
 
    TOP   *top = new TOP("TOP");  // モジュール実体化
 
#ifdef SYSC_DUMP_VCD_FILE
    sc_trace_file *trace_f;
 
    trace_f = sc_create_vcd_trace_file( "systemc" ); // 出力ファイル名を指定する(systemc.vcd)
 
    //((vcd_trace_file*)trace_f)->sc_set_vcd_time_unit(-9); // ns(ナノ秒)単位
    trace_f->set_time_unit( 1.0, SC_NS ); // timescale 1ns(ナノ秒)単位 (v2.2.0)
 
    sc_trace( trace_f, CLK, "CLK" );                   //CLKを波形ファイル出力として指定
    sc_trace( trace_f, TOP->in_data, "TOP.in_data" );  //下位階層の信号を指定
    // sc_trace ・・・ 
 
#endif  // SYSC_DUMP_VCD_FILE
 
    sc_start();      // シミュレーション開始
 
#ifdef SYSC_DUMP_VCD_FILE
    sc_close_vcd_trace_file( trace_f );
#endif  // SYSC_DUMP_VCD_FILE
 
    return 0;
}
 

TOPモジュールの実体化(すべてのモデル実体化)のあとに設定する。
sc_start()実行よりも前に設定する。
波形出力できるのは、sc_in<>, sc_out<>, sc_signal<>で普通の変数は表示できない。
シミュレーション実行が終了すると、波形ファイル"systemc.vcd"が出力される。
波形出力の有無の切り替えを#ifdef ~#endifでできるようにすると検証しやすくなる。
Makefileのコンパイルオプションで"-DSYSC_DUMP_VCD_FILE"をつけると波形ファイルが出力される。

WIF波形出力

この波形ファイル形式はよく知らない。
とりあえずVCDと同じように設定すればよい。
以下の点が異なる。単純に"vcd"だったのを"wif"とすればよい。

sc_trace_file *trace_f;
 
    trace_f = sc_create_wif_trace_file( "systemc" ); // 出力フェイル名を指定する
 
    //((wif_trace_file*)trace_f)->sc_set_vcd_time_unit(-9); // ns(ナノ秒)単位
    trace_f->set_time_unit( 1.0, SC_NS ); // 1ns(ナノ秒)単位 (v2.2.0)
        ・・・
 
    sc_close_wif_trace_file(tf);
 
記事メニュー