【问题标题】:Getting the names for VCD traced signals in SystemC在 SystemC 中获取 VCD 跟踪信号的名称
【发布时间】:2012-09-25 23:30:46
【问题描述】:

SystemC 允许通过 sc_trace 函数跟踪信号(或成员等),结果是可以在其他程序中使用的 VCD 文件。不过,这些信号的命名相当随意,函数接受任何字符串(不必与变量本身相关)作为要转储的信号的名称。

问题是:我能否通过 SystemC API 获取从 sc_interface 对象到用作其名称的字符串的映射?我正在以其他方式记录大量数据,能够以某种方式将我检索到的值连接到 VCD 数据会很好,如果我只有转储值和随机字符串标识符。

【问题讨论】:

  • 不完全确定您要的是什么,但在 VCD 文件的开头有一个字符串映射的名称(它是 ascii,而不是二进制格式)。
  • 你的意思是像“$var wire 1 aaa clock $end”?这只会将给定的字符串(“clock”)映射到 VCD 变量名称(“aaa”),因此您知道“aaa”的进一步更改应该映射到“clock”。我说的是对象实例......我想知道哪个 sc_interface 由“时钟”变量跟踪。由于名称(“时钟”)只是在 sc_trace 调用中指定,并且可以是任何东西(不一定与信号或端口相关),我很难将其映射到实际的对象实例。

标签: systemc


【解决方案1】:

不确定我是否准确理解了您的问题,但是... SystemC 有所不同,例如。信号模拟名称和 C++ 实例名称。 模拟名称在对象的构造函数参数列表中指定。 除非您在构建过程中省略命名对象,否则出现在 vcd 文件中的名称应该是任意的。另一方面,您省略了名称,替代构造函数将为您生成一个名称。 也许您可以提供一些示例代码来排除任何混淆。

    sc_signal()
: sc_prim_channel( sc_gen_unique_name( "signal" ) ),
  m_change_event_p( 0 ), m_cur_val( T() ), 
  m_delta( ~sc_dt::UINT64_ONE ), m_new_val( T() ), m_output( 0 ), 
  m_writer( 0 ) 
{}

explicit sc_signal( const char* name_ )
: sc_prim_channel( name_ ),
  m_change_event_p( 0 ), m_cur_val( T() ), 
  m_delta( ~sc_dt::UINT64_ONE ), m_new_val( T() ), m_output( 0 ), 
  m_writer( 0 ) 
{}

你想使用后者的构造函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    相关资源
    最近更新 更多