【发布时间】:2013-12-14 05:23:27
【问题描述】:
我想在一个包中编写一些任务,然后将该包导入一些使用这些任务的文件中。
其中一项任务会触发复位信号。任务为reset_board,代码如下:
package tb_pkg;
task reset_board(output logic rst);
rst <= 1'b0;
#1;
rst <= 1'b1;
#1;
rst <= 1'b0;
#1;
endtask
endpackage
但是,如果我understand this correctly,输出只在执行结束时分配,所以在这种情况下,rst 信号将在任务执行结束时设置为 0,这显然不是什么我要。
如果这个任务是在使用它的模块中本地声明的,我可以直接引用rst 信号(因为它是在模块中声明的)。但是,这不允许我将任务放在单独的包中。我可以将任务放在一个文件中,然后将其包含在模块中,但我试图避免 SystemVerilog 处理包含的方式带来的令人讨厌的并发症(长话短说,它不像 C确实)。
那么,有什么方法可以让任务在其执行期间驱动具有不同值的输出,而不必引用全局变量?
【问题讨论】:
-
什么是全局变量。您可以使用 testbench.rst 进行分层控制。
-
选词不正确。我的意思是说,如果在模块内声明,任务将与信号在同一范围内。
标签: system-verilog