在 SystemVerilog 中获取当前进程 ID
Get current process id in SystemVerilog
要在 Java 中得到 process_id,我们使用 ProcessHandle.current().pid();
。我们如何在 Systemverilog
?
中获取 current-process-id
使用内置 process
class
begin
process pid;
pid = process::self();
...
end
中的 9.7 细粒度过程控制
SystemVerilog 没有任何工具来获取其进程的 'pid'。它提供了一个对象以独立于系统的方式进行有限的过程控制。您可以检查 lrm 9.7 以获取可用控件。
但是,可以使用 'c' 调用使用 DPI 或 PLI 函数获取 pid。但实现可能取决于系统和模拟器。
例如,以下在 linux 上使用 VCS:
module pid();
import "DPI-C" function int getpid();
initial begin
$display("%d", getpid());
end
endmodule // pid
上面的 getpid()
是一个标准的 libc 函数,它可以从模拟器中调用。它似乎也适用于 EDA playground 中的 vcs、mentor 和 cadence,但不适用于 aldec。
由于函数是全局定义的,所以至少三个模拟器不需要定义dpi函数体。但是,您可能需要使用 'c' 主体定义不同的 dpi 函数以使其更便携。
要在 Java 中得到 process_id,我们使用 ProcessHandle.current().pid();
。我们如何在 Systemverilog
?
使用内置 process
class
begin
process pid;
pid = process::self();
...
end
中的 9.7 细粒度过程控制
SystemVerilog 没有任何工具来获取其进程的 'pid'。它提供了一个对象以独立于系统的方式进行有限的过程控制。您可以检查 lrm 9.7 以获取可用控件。
但是,可以使用 'c' 调用使用 DPI 或 PLI 函数获取 pid。但实现可能取决于系统和模拟器。
例如,以下在 linux 上使用 VCS:
module pid();
import "DPI-C" function int getpid();
initial begin
$display("%d", getpid());
end
endmodule // pid
上面的 getpid()
是一个标准的 libc 函数,它可以从模拟器中调用。它似乎也适用于 EDA playground 中的 vcs、mentor 和 cadence,但不适用于 aldec。
由于函数是全局定义的,所以至少三个模拟器不需要定义dpi函数体。但是,您可能需要使用 'c' 主体定义不同的 dpi 函数以使其更便携。