Vengineerの妄想(準備期間)

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

packageは、とっても便利です!

Verification Engineerの戯言

SystemVerilogには、packageというものがあります。
これは、C++のnamespaceに相当するものです。SystemCでもnamespaceを使っています。

SystemVerilogのクラスを作っていくと、同じ名前のクラスができてしまう可能性があります。
たとえば、複数のベンダーからのクラスライブラリを混在して使った場合、dma、master、slaveなどの
名前のクラスはかなりの確率で名前がぶつかるでしょう!
そこで、packageを使います。

次のようにvendor_aというpackageとvendor_bというpackageがある場合、

package vendor_a;

class dma;
endclass

class master;
endclass

class slave;
endclass

endpackage

package vendor_b;

class dma;
endclass

class master;
endclass

class slave;
endclass

endpackage

それぞれのクラスは、

import vendor_a::*;

vendor_a::dma
vendor_a::master
vendor_a::slave

import vendor_b::*;

vendor_b::dma
vendor_b::master
vendor_b::slave

のように使います。importを使って、packageを取り込んだ後に、参照します。

これで同じ名前のクラスがあっても問題なく使えます。便利でしょう?