Ошибка при создании задачи в отдельном файле в verilog
module tb();
reg [7:0] a = 1;
reg [7:0] b;
initial begin
AddTask(a, b);
$display("%d", b);
end
task AddTask;
input [7:0] a;
output reg[7:0] b;
begin
b = a + 1;
end
endtask
endmodule
Приведенный выше код скомпилирован и смоделирован правильно; Но я хочу вырезать задачу "AddTask" из модуля "tb.v" и поместить ее в отдельный модуль "AddModule.v"(то есть в отдельный файл) для четкого кодирования. Когда я делаю это, modelsim может скомпилировать его, но не может смоделировать и выдать ошибку:" Unresolved reference to 'AddTask' "
, Хотя я включаю AddModule.v, он не может распознать AddTask. Можете ли вы помочь мне, пожалуйста, что не так?
module tb;
reg [7:0] a = 1;
reg [7:0] b;
`include "AddModule.v"
initial begin
AddTask(a, b);
$display("%d", b);
end
endmodule
AddTask в отдельном файле:
module AddModule;
task AddTask;
input [7:0] a;
output reg[7:0] b;
begin
b = a + 1;
end
endtask
endmodule
1 ответ
Возможно, проблема в декларации вложенного модуля. Это не разрешено в Verilog, однако возможно в SystemVerilog.
Попробуйте объявить только задачу AddModule()
в отдельном файле без объявления модуля. Этот файл затем может быть включен в область действия другого модуля, например, в ваш тестовый стенд (как в вашем примере кода).