SystemVerilog是否支持全局功能?

时间:2017-03-21 20:21:15

标签: function global system-verilog

我想创建一个可由三个不同模块访问的parity_check函数。这可能在SV?如果是,我在哪里声明此功能以及如何将其导入我的模块?

1 个答案:

答案 0 :(得分:3)

您可以将函数放入单独的文件中,并使用`include:

将其包含在内
public void getData(string[] Data)
    {
        int index = 0;
        bool loop = false;
        string text;

        while (loop == true)
        {
            if (index < 10)
            { text = "tb0" + index.ToString(); }
            else
            { text = "tb" + index.ToString(); }

            index = index + 1;
        }


    }

但是,更好的方法是使用

`include "some_file_name.sv"

您可以将其放入单独的文件中,并且必须在编译使用它的任何模块之前编译它。然后,包导入每个模块:

package some_package_name;
  function string some_function_name;
    return "some_function_name called";
  endfunction
endpackage

将函数放入包中比将其放入文件并使用 include 更好,因为包是命名范围。由于包是命名范围,因此可以通过引用名称冲突的任何问题来解决,而不是使用 import ,引用其包中函数的全名,例如:

module some_module_name;
  import some_package_name::*;   // or import some_package_name::some_function_name;
  initial
    $display(some_function_name);
endmodule