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を取り込んだ後に、参照します。
これで同じ名前のクラスがあっても問題なく使えます。便利でしょう?