要在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函数,以使其更易于移植。