如何在Verilog/System Verilog中读取环境变量?

Jea*_*ean 6 verilog environment-variables system-verilog

如何在Verilog中读取环境变量?(在VCS模拟器上运行)

我想要完成

File=$fopen("$PATH/FileName","r");
Run Code Online (Sandbox Code Playgroud)

$ PATH是一个环境变量.

jcl*_*lin 12

您只需使用SystemVerilog DPI获取环境即可.因为它getenv是每个POSIX平台的标准C库,所以您不需要getenv()再次为函数定义实现自己的等效函数.

SV中的示例代码.

import "DPI-C" function string getenv(input string env_name);

module top;

  initial begin
    $write("env = %s\n", {getenv("HOME"), "/FileName"});
  end
endmodule
Run Code Online (Sandbox Code Playgroud)

运行

ncverilog -sv dpi.v
Run Code Online (Sandbox Code Playgroud)

要么

vcs -sverilog dpi.v
Run Code Online (Sandbox Code Playgroud)

它会显示出来

env = /home/user/FileName
Run Code Online (Sandbox Code Playgroud)

在原始问题中还有一个问题,PATH是一个可执行搜索路径的环境,并与":"字符连接.我认为这应该是一个例子,而不是真正的"PATH"环境.否则,您的fopen文件名可能是"/bin:/usr/bin:/usr/local/bin/FileName",这是错误的.