System verilog 导入包之间的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

正如您在下面的代码中所看到的,我在两个包文件中都有相同的参数名,并且编译器由于这种模糊性而失败。如何修复以下情况下的SystemVerilog代码

//--------------------------------------
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);