我是否可以从verilog

时间:2016-04-13 03:12:21

标签: task verilog

我收到错误 - “测试不是函数名称。”我在这做错了什么?我是否可以从总是阻止任务?

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

2 个答案:

答案 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,否则必须在模块内声明任务和函数。