赞
踩
在modelsim搭建uvm验证环境时,出现以下错误:can't locate a C/C++ compiler for 'DPI Export Compilation '。
这是因为modelsim没有gcc编译环境导致的,解决方法如下:
(1)下载modelsim-gcc-4.5.0-mingw64.zip编译器,注意根据自己的情况选择32位还是64位的版本。
(2)解压后,将modelsim-gcc-4.5.0-mingw64文件夹中的所有子文件夹(bin、include、lib、lib64等)拷贝,放在modelsim安装路径下,如果有则覆盖。下图是将这些文件夹放在modelsim安装路径下的截图。
(4)配置环境变量。打开控制面板——>系统和安全——>系统——>高级系统设置——>环境变量——>用户变量。找到path,点击“新建”,将modelsim安装目录下bin文件夹路径添加进来。
(5)电脑重启。打开modelsim后,在命令行窗口输入:g++ --version。会显示g++的版本等信息。配置成功。
(6)下载并解压uvm-1.2的库文件,我将它放在F:/modelsim_workspace/uvm_learning
(7)准备好相应的tb和dut文件,开始运行uvm环境。相应的命令如下,将UVM_HOME、WORK_HOME替换为自己的路径即可,tb文件名、dut文件名替换成自己的即可。直接在modelsim的命令行窗口将下面的命令复制过去即可。
- cd F:/modelsim_workspace/uvm_learning/chapter346
-
- vlib work
-
-
-
- set UVM_HOME F:/modelsim_workspace/uvm_learning/uvm-1.1d/uvm-1.1d
-
- set WORK_HOME F:/modelsim_workspace/uvm_learning/chapter346
-
- vlog +incdir+$UVM_HOME/src -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF $UVM_HOME/src/uvm_pkg.sv $WORK_HOME/dut.sv top_tb.sv
-
- vsim -c -sv_lib F:/tools/Modelsim/setup/uvm-1.2/win64/uvm_dpi work.top_tb +UVM_TESTNAME=my_case0
最后一条指令:vsim -sv_lib F:/tools/Modelsim/setup/uvm-1.2/win64/uvm_dpi work.top_tb +UVM_TESTNAME=my_case0,如果在wave窗口未显示波形,则将
+UVM_TESTNAME=my_case0 ,在top_tb替换为中run("my_case0")。
- `timescale 1ns/1ps
- `include "uvm_macros.svh"
-
- import uvm_pkg::*;
- `include "my_if.sv"
- `include "my_transaction.sv"
- `include "my_sequencer.sv"
- `include "my_driver.sv"
- `include "my_monitor.sv"
- `include "my_agent.sv"
- `include "my_model.sv"
- `include "my_scoreboard.sv"
- `include "my_env.sv"
- `include "base_test.sv"
- `include "my_case0.sv"
-
- module top_tb;
-
- reg clk;
- reg rst_n;
- reg[7:0] rxd;
- reg rx_dv;
- wire[7:0] txd;
- wire tx_en;
-
- my_if input_if(clk, rst_n);
- my_if output_if(clk, rst_n);
-
- dut my_dut(.clk(clk),
- .rst_n(rst_n),
- .rxd(input_if.data),
- .rx_dv(input_if.valid),
- .txd(output_if.data),
- .tx_en(output_if.valid));
-
- initial begin
- clk = 0;
- forever begin
- #100 clk = ~clk;
- end
- end
-
- initial begin
- rst_n = 1'b0;
- #1000;
- rst_n = 1'b1;
- end
-
- initial begin
- run_test("my_case0");
- end
-
- initial begin
- uvm_config_db#(virtual my_if)::set(null, "uvm_test_top.env.i_agt.drv", "vif", input_if);
- uvm_config_db#(virtual my_if)::set(null, "uvm_test_top.env.i_agt.mon", "vif", input_if);
- uvm_config_db#(virtual my_if)::set(null, "uvm_test_top.env.o_agt.mon", "vif", output_if);
- end
-
- endmodule

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。