2016-02-13 98 views
-1

有时我们需要调用一个可综合代码中的任务,这是我们多次将参数传递给一个任务。 ,让我们说或我们的通话任务太长 那么如果我们多次调用任务 所以我的问题是,在每次它创建调用任务的实例我们只是传递参数?如何在verilog中使用任务?

+0

我认为当'Task'定义中使用'automatic'关键字时,它会每次创建一个调用任务的新实例,但是当没有指定'automatic'时,它只会创建一个实例并将其用于其他调用。 –

+0

所以你的意思是它不会在每个声明中产生硬件,它只会将值传递给只有一个硬件,这将是我们的任务 – Mayur

+0

我认为这是如此,只是改变硬件输入信号。等待专家的回答。 –

回答

0

在模块,接口,程序或包中定义的任务默认为默认为静态的 。这些项目应该在同时执行的任务的所有用途 中共享。在课堂上定义的任务是始终自动的 。

在自动任务中声明的所有项目都是为每个调用动态分配的。所有形式参数和局部变量都存储在堆栈中。

任务可能同时启用多次。在每个并发任务调用上复制自动任务的所有变量应为以存储特定于该调用的状态。

静态任务的所有变量应静态在应有对应于每一个变量在一个模块实例声明的局部变量,无论并发激活任务的的数量。

但是,模块不同实例中的静态任务应该具有彼此独立的存储。

有关详细信息,请访问System Verilog LRM的主题13.3。

+0

问题是'Verilog',而不是'SystemVerilog'。主要问题是,每个“任务”调用都会生成新硬件吗? –

+0

我问任务 – Mayur

+0

可合成的性质无论任务的性质我不想创建多个相同任务的实例意味着我不想复制硬件总是你在软件告诉我想知道硬件级别的任务性质 – Mayur