Verification Engineerの戯言
SystemVerilogのparameterized classには、2種類、あります。
1つ目は、サイズ等をパラメータ化するときです(これをvalue parameterと呼びます)。
下記の例のvectorクラスでは、クラスメンバーのaのサイズを指定するために
パラメータsizeを使っている。
下記の例のvectorクラスでは、クラスメンバーのaのサイズを指定するために
パラメータsizeを使っている。
class vector #(int size = 1); bit [size-1:0] a; endclass
2つ目は、型をパラメータ化するときです(これをtype parameterと呼びます)。
下記の例のstackクラスでは、itemsの型をパラメータTを使って指定しています。
下記の例のstackクラスでは、itemsの型をパラメータTを使って指定しています。
class stack #(type T = int); local T items[]; task push( T a ); ... endtask task pop( ref T a ); ... endtask endclass
これって、C++のテンプレートと基本には同じです。
検証、Verification、SystemVerilog