SystemC:初期化リストを記述するようにしよう
前回 name()関数使ってますか? 紹介した際に、信号名の表示が Port_xになってます。
これを宣言した変数名と同じ名前にするにはどうすればいいか?
解決策としては、コンストラクタの初期化リストに記載することです。
- サンプルコード
SC_MODULE (hoge) { sc_in<bool> clock; sc_in<bool> reset; sc_in<sc_uint<8> > indata; sc_out<sc_uint<8> > outdata; void process() { outdata.write(0); wait(); while (true) { wait(); printf("Instance Name:%s\n", name()); printf("Port(clock ) Name:%s\n", clock.name()); printf("Port(reset ) Name:%s\n", reset.name()); printf("Port(indata ) Name:%s\n", indata.name()); printf("Port(outdata) Name:%s\n", outdata.name()); } } SC_CTOR(hoge) : /////////////////////////////// clock("clock") , reset("reset") , indata("indata") , outdata("outdata") /////////////////////////////// { SC_CTHREAD(process,clock.pos()); reset_signal_is(reset, false); } };
- 実行結果
Instance Name:uhoge Port(clock ) Name:uhoge.clock Port(reset ) Name:uhoge.reset Port(indata ) Name:uhoge.indata Port(outdata) Name:uhoge.outdata
というように、変数名と同じ名前で表示されるようになりました。
書かなくても問題ないのですが、このように明示的になります。
これは、SystemCをサポートしているシミュレータにて波形表示される際の
表示形式にも適用されるので、積極的に書きましょう。