在verilog或者systemverilog中通过systemverilog获得环境变量setenv,getenv

本文介绍了如何在SystemVerilog中通过DPI-C接口来获取和设置系统环境变量,以实现模块间的路径配置共享。通过importC函数setenv和getenv,可以在仿真过程中动态调整环境变量,便于加载文件路径。示例代码展示了如何在模块中调用这两个函数,以适应不同工作目录下的文件引用。
摘要由CSDN通过智能技术生成

在芯片验证的仿真中,有时候需要从文件中加载一些数据,比如激励、初始化数据、code等等,这些文件路径可以用绝对路径,当然为了其他人也可以用,最好用相对路径,这就需要用到环境变量来做路径的前半段。

在module中得到或设置系统环境变量需要用到systemverilog的DPI-C,import C函数,然后在module中的块语句中调用C函数。

步骤如下:

1. 在要获得环境变量的文件中 import setenv和getenv

如下所示,把这两个函数import进去,不需要定义对应的C函数

import "DPI-C" function int setenv(input string env_name, input string env_value, input int overwrite);
import "DPI-C" function string getenv (input string env_name);

2. 直接使用getenv, setenv来获得和设置环境变量

module mem read(
    input [8*200-1: O] mem_file
);
initial begin
    $display("mem_file is %Os", mem_file);
end 
endmodule

module dut (
    input clk,
    input wire [31:0]addr,
    output [31:0] rdata,
    input [31:0] wdata,
    input wire wr
);

string path;

initial begin

    setenv("PRJDIR", "/project/uart", 1);
    path = getenv( "PRJDIR");
    $display("PRJDIR is %Os", path);

    setenv( "PRJDIR", "/project/sp", 1);
    path = getenv( "PRJDIR");
    $display("PRJDIR is %0s", path);
end

mem_read u_mem_rd(.mem_file(path));

endmodule

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值