verilog中的任务

1 verilog task

我正在尝试编写一个给出变量paddr不同值的任务:

module paddr1 ;
task paddr1;
input [10:0]paddr;
input clock;

 @(posedge clock)
begin
paddr=10
#100; 
paddr=20; 
#100; 
paddr=30; 
#100;  
paddr=40;
#100;   
paddr=50;
#100;   
paddr=60;
#100;  
paddr=70;
#100; 
paddr=80;
#100;

end
endtask
endmodule
Run Code Online (Sandbox Code Playgroud)

我试着从测试台上调用这个任务并写道:paddr1(paddr,clock);

它通过编译但是当我正在尝试运行模拟时,我得到了一个错误按摩:未解决的参考'paddr1'.谢谢你的回答,任务是在一个不同的文件然后是测试台

谢谢Yaniv

Mar*_*rty 5

你在模块里面有一个任务.那么,你是否在测试平台中实例化了该模块?如果你这样做,那么你需要在模块内查看以调用任务:

module tb();

  paddr1 U0; // instantiate module with the task in it...

  initial begin
     U0.paddr1(paddr,clock);
  end

endmodule
Run Code Online (Sandbox Code Playgroud)

但是你有更严重的问题.在verilog中,参数按值传递给任务.这意味着'clock'的值将在任务调用的生命周期内固定.你的任务永远不会找到时钟,并将永远等待.此外,您正在分配任务输入,这是无用的.