如何从Verilog中的单独模块调用任务?

时间:2016-06-03 23:43:43

标签: task verilog iverilog

我是Verilog的新手,如果有人可以帮助我,我会非常感激。

我的任务写在一个单独的文件中 - " task.v" :

module task_create();

task assign_inp;
    reg a,b,c,d;
    //details
endtask

endmodule

我有一个调用此任务的模块:

module tb();
    `include "task.v"
    assign_inp(a,b,c,d);
endmodule

当我执行此操作时,我收到此错误:

  

模块定义task_create无法嵌套到模块tb

当我在task.v中删除模块和endmodule时,我收到此错误:

  

任务必须包含在模块

我哪里错了?非常感谢你!

1 个答案:

答案 0 :(得分:1)

您在模块中的任务只能在模块中看到。你可以做的是删除模块包装器,只需在单独的文件中声明任务。

task assign_inp;
    reg a,b,c,d;
    //details
endtask

您可以包含该任务,您应该能够看到该任务。

删除模块对我有用。

编辑:您可能需要将verilog文件声明为任务的头文件