Memory 寄存器数组能否用于verilog中的任务?

Memory 寄存器数组能否用于verilog中的任务?,memory,task,verilog,Memory,Task,Verilog,我试图在Verilog HDL中实现一个Ripple进位加法器的任务。第1行有一个错误显示:“在Verilog 95/2K模式下不允许根作用域声明” task rca; `<---line 1` input [15:0]in1,in2; output reg [15:0]out2; reg [15:0]c; integer i; begin c=16'b0; for(i=0;i<16;i=i+1) begin out2[i]=in1[i]^in2[i]^c[i]; c[i+1]=

我试图在Verilog HDL中实现一个Ripple进位加法器的任务。第1行有一个错误显示:“在Verilog 95/2K模式下不允许根作用域声明”

task  rca;  `<---line 1`
input [15:0]in1,in2;
output reg [15:0]out2;
reg [15:0]c;
integer i;
begin
c=16'b0;
for(i=0;i<16;i=i+1)
begin
out2[i]=in1[i]^in2[i]^c[i];
c[i+1]=(in1[i]&in2[i])|(in2[i]&c[i])|(c[i]&in1[0]);
end
end
endtask

任务rca` 您必须在模块内声明任务。我建议创建扩展名为
.vh
的文件(Verilog头),将您的任务放在此文件中,并通过
`include
指令包含您的任务。例如:

模块示例\u模块(
//港口清单
);
`包括“tasks.vh”
//在这里使用您的任务
端模

在verilog中,任务只能在模块的范围内定义,如ToTamire的示例所示。但是,在大型项目中使用“include”可能会导致代码维护问题。因此,直接在模块范围内使用它或定义任务取决于项目方法。