优秀的编程知识分享平台

网站首页 > 技术文章 正文

function调用task(function调用另一个function中变量)

nanyue 2024-07-25 06:09:50 技术文章 20 ℃

1. 简介

1.1. task通常的特征

1) 在task结束前使用return返回

2) 通过引用、值、名称和位置传递参数值

3) 存在默认的参数值

4) 默认的参数方向是input

5) 默认的参数类型是logic

6) 静态task为所有task调用共享相同的存储空间

7) 动态task为每个task调用分配唯一的堆叠存储空间

8) task没有返回值,但是可以将参数列表中的参数定义为output、ref、inout,将task内部值传递出来

9) task可以调用function

10) function不能消耗仿真时间

1.2. function通常的特征

1) 在function结束前使用return返回

2) 通过引用、值、名称和位置传递参数值

3) 存在默认的参数值

4) 默认的参数方向是input

5) 默认的参数类型是logic

6) function有返回值,但只有一个;另外也可以将参数列表中的参数定义为output、ref、inout,将function内部值传递出来

7) task可以消耗仿真时间

2. function调用task

2.1. task不消耗仿真时间

task t1();

$display(“T1”);

endtask

function void f1();

t1();

endfunction

上述代码可以在VCS下编译仿真通过。



VCS编译会给出上面的告警,不会出错。


如果在t1中加入延时,如下:

task t1();

#1ns;

$display(“T1”);

endtask



VCS会编译出错。


总结:

在task没有延迟语句的情况下,function可以调用task

2.2. task消耗仿真时间

task t1();

#1ns;

$display(“T1”);

endtask

function void f1();

fork

t1();

join_none

endfunction

上述代码可以在VCS下编译仿真通过。

即使是消耗仿真时间的task也可以在function中调用,只需要使用fork...none即可。

Tags:

最近发表
标签列表