1

我正在尝试编写一个提供变量 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

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

它通过了编译但是当我尝试运行模拟时,我得到一个错误消息:未解决对'paddr1'的引用。感谢您的回答,任务在不同的文件中,然后是测试台

谢谢亚尼夫

4

2 回答 2

5

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

module tb();

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

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

endmodule

你有更严重的问题。在 verilog 中,参数按值传递给任务。这意味着“时钟”的值将在任务调用的生命周期内固定。您的任务将永远找不到时钟,并且将永远等待。此外,您正在分配一个任务输入,这没有用。

于 2009-04-18T18:25:17.067 回答
0

我猜你想要一个initial块而不是一个任务。将 paddr 和时钟作为端口连接到模块,然后在initial begin您修改 paddr 的块内。

当然,您仍然需要在某个地方实例化 paddr1 才能有用。

于 2009-11-10T05:13:39.743 回答