在SystemVerilog中获取当前进程id



要在Java中获取process_id,我们使用ProcessHandle.current().pid();,。Jow我们可以在Systemverilog中获得当前进程id?

使用内置的process

begin
process pid;
pid = process::self();
...
end

请参阅IEEE 1800-2017 SystemVerilog LRM 中的章节9.7细粒度过程控制

SystemVerilog没有任何工具来获取其进程的"pid"。它提供了一个以独立于系统的方式进行有限过程控制的对象。您可以查看lrm 9.7以获取可用的控件。

但是,可以使用DPI或PLI函数,使用"c"调用来获取pid。但实现可能依赖于系统和模拟器。

例如,以下内容适用于linux上的VCS:

module pid();
import "DPI-C" function int getpid();
initial begin
$display("%d", getpid());
end
endmodule // pid

在上面的getpid()是一个标准的libc函数,它可以从模拟器中调用。它似乎也适用于EDA操场上的vcs、导师和节奏,但在aldec中失败了。

由于函数是全局定义的,因此至少对于三个模拟器,不需要定义dpi函数体。但是,您可能需要定义一个具有"c"体的不同dpi函数,以使其更易于移植。

最新更新