SC_METHOD 异常

SC_METHOD Exception

我正在尝试在我的模拟中使用 SC_METHOD。这是代码:

gcrypt::gcrypt(sc_module_name name): 
    gcrypt_base(name)
{
    SC_METHOD(on_clock_update);
    sensitive << clock;
    dont_initialize();
};

void gcrypt::on_clock_update()
 {
     if (clock.read() == 0)
     {
         SC_REPORT_WARNING(name(), "Invalid clock port value of 0");
         _ns_per_cycle = 0;
         return;
     }
     _ns_per_cycle = 1e9 / clock.read();
 }

gcrypt_base 构造函数是:

gcrypt_base::gcrypt_base(sc_module_name name) :
    sc_module(name),
    ...
{
    ...
}

我收到 SC_METHOD 抛出的异常:

Exception thrown at 0x6FB78281 (vcruntime140d.dll) in SystemCModuleTest.exe: 0xC0000005: Access violation reading location 0x115348EF.

我看到 __vfptr 值为 "Unable to read memory"。

如何解决这个问题?

我相信您在编译代码时没有指定 /vmg option/vmg 选项是必需的,因为 SystemC 实现方法过程的方式。