SV
package は class, task, function, typedef, enum などを他の場所から参照するときに使う。
package 内に定義されたものは、その package がスコープとなる。名前空間とほぼ同じ。参照するには、package 名にスコープ演算子 :: をつけるか、import でそれらを使えるようにしておく
// my_pkg.sv
package my_pkg;
class my_class ;
...
endclass
endpackage
module my_module;
import my_pkg::* ; // my_pkg 内のリソースが使える
my_class aa;
//
endmodule
import したスコープ内でしか有効でないはず。
一番外側 (グローバルな部分)。いわゆる source text
どうもここしかだめみたい。
module の中や class の中に package は定義できない。ましてや package の中には
変数/typedef/import
task/function
class
parameter
covergroup
assertion
書けないものは module, interface, package など
package_import_decl は data に属するらしい = data が宣言できる場所
package の中
module の中
class の中ではできなかったような。