verilog 中的任务
我正在尝试编写一个给出变量 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,时钟);
编译通过 但是当我尝试运行模拟时,我收到错误消息: 未解决对“paddr1”的引用。 谢谢您的回答 该任务位于与测试台不同的文件中
谢谢 亚尼夫
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的模块中有一个任务。 那么,您是否在测试台中实例化了该模块? 如果您这样做了,那么您将需要查看模块内部以调用该任务:
但是您遇到了更严重的问题。 在 verilog 中,参数按值传递给任务。 这意味着“clock”的值在任务调用的生命周期内将是固定的。 你的任务永远不会找到时钟的边缘,并且将永远等待。 此外,您正在分配任务输入,这没有用。
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.
我猜你想要一个
initial
块而不是任务。 将 paddr 和时钟连接为模块的端口,然后在initial begin
块内修改 paddr。当然,您仍然需要在某个地方实例化 paddr1 才能有用。
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.