Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Parameterized classes

Verification Engineerの戯言

SystemVerilogのparameterized classには、2種類、あります。

1つ目は、サイズ等をパラメータ化するときです(これをvalue parameterと呼びます)。
下記の例のvectorクラスでは、クラスメンバーのaのサイズを指定するために
パラメータsizeを使っている。
    class vector #(int size = 1);
        bit [size-1:0] a;
    endclass

2つ目は、型をパラメータ化するときです(これをtype parameterと呼びます)。
下記の例の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