我收到错误 - “测试不是函数名称。”我在这做错了什么?我是否可以从总是阻止任务?
task automatic tests(
input a,
input b,
output c);
// code
endtask
module test123
(
input clk,
input a,
input b,
input e
);
reg d;
always @(posedge clk)
if(e)
d <= tests(a, b);
endmodule
答案 0 :(得分:3)
您可以按照以下所示进行操作,
module test123
(
input clk,
input a,
input b,
input e
);
task automatic tests(
input a,
input b,
output c);
// code
endtask
reg d;
always @(posedge clk)
if(e)
// a=a, b=b, d=c
tests(a, b, d); // d is assigned to your output
endmodule
答案 1 :(得分:2)
任务永远不会返回值 - 只有一个函数可以做到这一点。此外,除非您使用SystemVerilog,否则必须在模块内声明任务和函数。