我们封装公共函数时,是希望它通用性足够强,可以在多个应用场景中被调用;
说到增强通用性,参数化是最为常见的一种手段;
所以我们在Package打包公共函数时,引入参数类。
package comm_utils_pkg;
/*
* split bits into bit queue.
*/
class one_arg#(int arg0);
static function void bits_split(bit[arg0-1:0] bits, ref bit que[$]);
foreach(bits[i])
que.push_back(bits[arg0-1-i]);
endfunction
endclass
endpackageSystemVerilog注:function虽然被static修饰,但其内声明的变量仍为动态变量。
调用:
comm_utils_pkg::one_arg#(8)::bits_split(8'hff, qout);SystemVerilog