如何在垃圾回收时执行 SystemVerilog 代码?

How do I execute SystemVerilog code at garbage collection?

我有一个 SystemVerilog class,它使用 chandle 和 DPI 封装了 C++ class。我想确保 C++ class 的析构函数在 SystemVerilog 对象被销毁时被调用。据我所知,这不是自动完成的,当我认为我不再需要该实例时,我必须通过 DPI 手动调用 C++ 析构函数。不是很优雅。

有没有办法指定某些代码在 GC 时对于 SV class 应该是 运行?类似于 Java finalize 方法。

SystemVerilog 中没有类似于 finalize 的结构。但是,您可以在句柄上注册一个 VPI 回调 (cbReclaimObj)。请参阅 1800-2017 LRM 第 38.36.1 节。