System verilog 如何在垃圾回收时执行SystemVerilog代码? 我有一个System Verilog类,它使用CHANDLE和DPI封装C++类。我想确保在System Verilog对象被销毁时调用C++类的析构函数。据我所知,这不是自动完成的,我必须通过DPI手动调用C++析构函数,当我认为不再需要实例时。不太优雅

System verilog 如何在垃圾回收时执行SystemVerilog代码? 我有一个System Verilog类,它使用CHANDLE和DPI封装C++类。我想确保在System Verilog对象被销毁时调用C++类的析构函数。据我所知,这不是自动完成的,我必须通过DPI手动调用C++析构函数,当我认为不再需要实例时。不太优雅,system-verilog,system-verilog-dpi,System Verilog,System Verilog Dpi,有没有一种方法可以指定在GC上为SV类运行某些代码?类似于Java finalize方法 SystemVerilog中没有类似于finalize的构造。但是,您可以在句柄上注册VPI回调(cbReclaimObj)。参见1800-2017 LRM第38.36.1节 一个有趣的问题。我从没听说过这样的事。我想你得手工做。或者可能是半自动的:你能有一个线程来检查空引用,并在检测到空引用时调用析构函数吗?这只在你想安排一些C/C++代码运行时起作用,因为你不能从VPI调用SV。@TudorTimi我认

有没有一种方法可以指定在GC上为SV类运行某些代码?类似于Java finalize方法

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

一个有趣的问题。我从没听说过这样的事。我想你得手工做。或者可能是半自动的:你能有一个线程来检查空引用,并在检测到空引用时调用析构函数吗?这只在你想安排一些C/C++代码运行时起作用,因为你不能从VPI调用SV。@TudorTimi我认为这对于他们目前的要求来说是很好的。这只是为了提醒其他阅读答案的人,他们可能会考虑在回收对象时调用SV代码。有些工具确实允许在某些限制内混合VPI和DPI。你知道我的“梦想”能够从VPI调用任何SV函数(即使是非DPI导出的函数)来构建真正的反射库。