Function 从Verilog中的另一个模块调用函数

Function 从Verilog中的另一个模块调用函数,function,Function,我试图实例化并使用在另一个模块中定义的函数 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

我试图实例化并使用在另一个模块中定义的函数

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
我从你那里得到这个密码 但是,当我在ModelSim Altera Starter Edition 10.0d中执行相同操作时,我会出现以下错误:

  Cannot open `include file "myfunction.v".

哪里出错了?

include指令的效果与在同一位置复制和粘贴代码的效果相同。从代码中看,您似乎试图在另一个模块(函数调用)中定义一个模块(简单函数),这是不允许的


您的函数不需要包含在模块中。您应该将myfunction.v更改为只包含myfunction定义,并完全删除simple_函数模块。这样,当包含myfunction.v时,它与在函数调用中声明的函数具有相同的效果。

包含指令与在同一位置复制和粘贴代码具有相同的效果。从代码中看,您似乎试图在另一个模块(函数调用)中定义一个模块(简单函数),这是不允许的


您的函数不需要包含在模块中。您应该将myfunction.v更改为只包含myfunction定义,并完全删除simple_函数模块。这样,当包含myfunction.v时,它与在函数调用中声明的函数具有相同的效果。

将一个模块的函数调用到另一个模块的另一种方法是通过接口。您可以将接口端口传递到第一个模块,因为该接口会将所有功能和任务传递到第一个模块,然后接口可以传递到第二个模块,这样第二个模块就可以获得第一个模块的任务和功能。

将一个模块的功能调用到另一个模块的另一种方法是通过接口。您可以将接口端口传递到第一个模块,因为该接口将把所有功能和任务都传递到第一个模块,然后接口可以传递到第二个模块,这样第二个模块就可以获得第一个模块的任务和功能