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

在芯片验证的仿真中,有时候需要从文件中加载一些数据,比如激励、初始化数据、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

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值