Parameterized classes
classに対して、parameterを渡すことができます。
渡すことができるのは、
1)、数値
2)、型
1)の例を下記に示します。
#( int size = 1)のようにすることで、数値をパラメータとして渡すことができます。
この例では、型がintで名前がsizeというパラメータを定義し、デフォルト値として1を指定しています。
class parameter_class #(int size = 1);
bit [size-1:0] addr;
endclass
使い方は、次のようになります。
parameter_vector #(8) pc_8; // size = 8 object with vector of size 10
parameter_vector #(.size(16)) pc_16; // もうひとつのやり方
2番目の使い方は、パラメータの一部に対して値を設定するときに便利です。
2)の例を下記に示します。
#( type T int)のようにすることで、型をパラメータとして渡すことができます。
この例では、型がintで名前がTを指定しています。
class parameter_stack #(type T = int);
local T items[];
task push( T a ); ... endtask
task pop( ref T a ); ... endtask
endclass
使い方は、次のようになります。
parameter_stack #(logic[7:0]) l_ps; // 8ビットのlogicのスタック