I am trying to write a task that gives a variable paddr diffrent values:
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
I tried to call this task from test bench and wrote: paddr1 (paddr,clock);
It passes compilation But when I'm trying to run simulation I get an eror massage: Unresolved reference to 'paddr1'. Thank you for your answer the task is in a diffrent file then the test bench
Thank you Yaniv
You've a task inside a module. So, did you instantiate the module in the testbench? If you did, then you'll need to peek inside the module to call the task:
You've far more serious problems though. In verilog, arguments are passed to tasks by value. This means that the value of 'clock' will be fixed for the lifetime of the call to the task. Your task will never find a posedge of clock, and will wait forever. Also, you're assigning to a task input, which is not useful.
I'm guessing you want an
initial
block instead of a task. Wire up paddr and clock as ports to the module, then inside aninitial begin
block you modify paddr.Of course you will still need to instantiate paddr1 somewhere to be useful.