SystemCでは、シミュレーションの動作環境から、sc_objectを取り出す手法は、標準的に用意されている。
ところが、取り出したsc_objectをsc_signalに変換しようとすると、一筋縄ではいかない。
sc_signalがテンプレートで実現されていて、簡単に変換できないようになっている。
ダイナミックキャストを使うと変換は可能だけれど、試してだめなら他の候補を試すといった、試行錯誤となってしまう。
NSLから変換したSystemCにおいて、sc_traceに追加する信号を、シミュレーション動作環境から自動的に取ろうと、今日一日いろいろと試していた。
検討の結果、結局、シミュレーション環境から信号名を拾うことをあきらめ、NSLCOREから、モジュールの階層構造を追いかけて、明示的にsc_traceに追加することにした。
トレースの信号管理のため、-sc_trace_depthで、何階層まで信号を読み出すのかを指定できるようにした。
トレース信号だけなら、これで十分だけれど、将来へのステップとして、テストベンチから、シミュレーション環境内のオブジェクトを参照したり更新する方法を考えていたけれど、これはやはりダイナミックキャストを使わないとだめだろう。
ところが、取り出したsc_objectをsc_signalに変換しようとすると、一筋縄ではいかない。
sc_signalがテンプレートで実現されていて、簡単に変換できないようになっている。
ダイナミックキャストを使うと変換は可能だけれど、試してだめなら他の候補を試すといった、試行錯誤となってしまう。
NSLから変換したSystemCにおいて、sc_traceに追加する信号を、シミュレーション動作環境から自動的に取ろうと、今日一日いろいろと試していた。
検討の結果、結局、シミュレーション環境から信号名を拾うことをあきらめ、NSLCOREから、モジュールの階層構造を追いかけて、明示的にsc_traceに追加することにした。
トレースの信号管理のため、-sc_trace_depthで、何階層まで信号を読み出すのかを指定できるようにした。
トレース信号だけなら、これで十分だけれど、将来へのステップとして、テストベンチから、シミュレーション環境内のオブジェクトを参照したり更新する方法を考えていたけれど、これはやはりダイナミックキャストを使わないとだめだろう。