System verilog 导入包之间的systemverilog名称冲突
正如您在下面的代码中所看到的,我在两个包文件中都有相同的参数名,并且编译器由于这种模糊性而失败。如何修复以下情况下的SystemVerilog代码System verilog 导入包之间的systemverilog名称冲突,system-verilog,System Verilog,正如您在下面的代码中所看到的,我在两个包文件中都有相同的参数名,并且编译器由于这种模糊性而失败。如何修复以下情况下的SystemVerilog代码 //-------------------------------------- package register1_pkg; parameter base_core_regs = 32'h00003000; parameter addr_testreg = (base_axicore_regs + 32'h
//--------------------------------------
package register1_pkg;
parameter base_core_regs = 32'h00003000;
parameter addr_testreg = (base_axicore_regs + 32'h0000000C);
endpackage
//--------------------------------------
package register2_pkg;
parameter base_user_regs = 32'h00007000;
parameter addr_testreg = (base_user_regs + 32'h00000014);
endpackage
//--------------------------------------
module testbench();
timeunit 1ns/10ps;
import register1_pkg::*;
import register2_pkg::*;
task write;
input integer addr;
input integer data;
begin
$display("write addr:%x data:%x", addr, data);
end
endtask;
initial begin
write(addr_testreg, 32'hABCD1234);
$stop;
end
endmodule
只需删除您的
import
语句,然后执行以下操作:
write(register1_pkg::addr_testreg, 32'hABCD1234);
write(register2_pkg::addr_testreg, 32'hABCD1234);
只需删除您的
import
语句,然后执行以下操作:
write(register1_pkg::addr_testreg, 32'hABCD1234);
write(register2_pkg::addr_testreg, 32'hABCD1234);
如果有多个具有相同符号名的包要导入,则不能使用通配符导入
::*
。您需要显式引用包符号以消除歧义
您可以执行显式导入:
import register1_pkg::addr_testreg;
也可以显式引用符号而不导入它
write(register1_pkg::addr_testreg, 32'hABCD1234);
如果有多个具有相同符号名的包要导入,则不能使用通配符导入
::*
。您需要显式引用包符号以消除歧义
您可以执行显式导入:
import register1_pkg::addr_testreg;
也可以显式引用符号而不导入它
write(register1_pkg::addr_testreg, 32'hABCD1234);