どこのご家庭でもお困りですよね.
sc_trace( trace_f, hoge.fuga.signal_a, "hoge.fuga.signal_a" );
sc_trace( trace_f, hoge.piyo.signal_b, "hoge.piyo.signal_b" );
で,自分で試してみて,一番マシだと思った方法は,SC_CTOR() 内で sc_trace() すること.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <systemc.h> | |
#ifdef VCD_WAVE | |
#define TRACE( sig ) sc_trace( trace_f, sig, std::string( this->name()) + "." #sig ) | |
extern sc_trace_file *trace_f; | |
#else | |
#define TRACE( sig ) | |
#endif | |
SC_MODULE( hoge ){ | |
sc_in_clk clk; | |
sc_in<bool> nrst; | |
sc_in<sc_uint<32>> a; | |
sc_in<sc_uint<32>> b; | |
sc_out<sc_uint<32>> c; | |
SC_CTOR( hoge ) | |
//★不要 : clk( "clk" ), nrst( "nrst" ), a( "a" ), b( "b" ), c( "c" ) | |
{ | |
... | |
TRACE( clk ); | |
TRACE( nrst ); | |
TRACE( a ); | |
TRACE( b ); | |
TRACE( c ); | |
} | |
... | |
}; |
this->name() で,インスタンス化されたときのこのモジュール名のフルパス名が取得できるので,sc_trace() の記述自体にはフルパスを記述する必要がなくなる.
この程度の記述であれば,ポート宣言のコピペ & 置換レベルで対応できる.
めんどくさいメンバイニシャライザでの信号名設定 (上記の★不要 の箇所) も不要.
なお trace_f は このモジュールがインスタンス化される前に sc_create_vcd_trace_file() しておく必要がある.
Cadence だとナントカ wizard でこの辺を自動化してくれるんだけど,パンピーには使えないしね...
0 件のコメント:
コメントを投稿