我正在尝试实例化并使用已在另一个模块中定义的函数。
module simple_function();
function myfunction;
input a, b, c, d;
begin
myfunction = ((a+b) + (c-d));
end
endfunction
endmodule
module function_calling(a, b, c, d, e, f);
input a, b, c, d, e ;
output f;
wire f;
`include "myfunction.v"
assign f = (myfunction (a,b,c,d)) ? e :0;
endmodule
我从http://www.asic-world.com/verilog/task_func1.html获得了此代码 但是,当我在ModelSim Altera入门版10.0d中执行相同操作时,我收到此错误:
Cannot open `include file "myfunction.v".
我哪里错了?
答案 0 :(得分:1)
include指令与在同一位置复制和粘贴代码具有相同的效果。从您的代码看,您似乎正在尝试在另一个模块(function_calling)中定义模块(simple_function),这是不允许的。
您的功能不需要包含在模块中。您应该将myfunction.v更改为仅包含myfunction定义并完全删除simple_function模块。这样当包含myfunction.v时,它与在function_calling中声明的函数具有相同的效果。
答案 1 :(得分:-1)
将一个模块的功能调用到另一个模块的另一种方法是通过接口。您可以将接口端口传递到第一个模块中,因为该接口会将所有功能和任务都带入其中,然后可以将接口传递到第二个模块中,这样第二个模块就可以获取第一个模块的任务和功能。