微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 高手指点verilog中task的调用问题

高手指点verilog中task的调用问题

时间:10-02 整理:3721RD 点击:
设计的本意是定义一个task来产生一个上升沿。verilog代码段如下。
`timescale 1ns/10ps
module testben;
reg clk.
....
initial begin
#0 clk=0;
end
//task 定义如下
task posdge_gen;
output posdge_gen_o;
begin
posdge_gen_o =0;
#50;
posdge_gen_o =1;
#50;
end
endtask
//task 调用如下
initial begin
....
posdge_gen(clk);
....
end
endmodule
执行的结果是clk并没有产生一个上升沿。不知是task调用时参数不能如此传递还是其他什么原因。请高手指点,谢谢

找到原因了,原来task是在之行结束后才返回结果,所以,除非操作全局变量,否则动态返回不能实现了。,verilog这一点真是不太爽。



    自己没搞清楚verilog语言特性还闲verilog不爽吗?
    你可以用systemc, systemv, c++等等。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top