インポート
import 宣言は他のパッケージからシンボルをインポートします。モジュール、インターフェース、パッケージの要素としてだけでなくトップレベルにも配置することができます。import 宣言の引数には package::* のようなワイルドカードパターンを使用することができます。
// ファイルスコープインポート
import $sv::SvPackage::*;
package PackageA {
const paramA: u32 = 1;
}
module ModuleA {
import PackageA::*;
import PackageA::paramA;
}
インポート宣言によるシンボルのインポートは、そのインポート宣言が置かれた名前空間内の任意の場所から参照できます。
package PackageA {
const WIDTH: u32 = 8;
}
module ModuleA (
i_d: input logic<WIDTH>, // valid reference
o_d: output logic<WIDTH>, // valid reference
) {
import PackageA::WIDTH;
let d: logic<WIDTH> = i_d; // valid reference
assign o_d = d;
}
enumのメンバーも、個別および wildcard により import できます。これはパッケージ内で定義された enum だけでなく、モジュールやインターフェース内でローカルに宣言された enum にも適用されます。
package PackageB {
enum Color: logic<2> {
Red,
Green,
Blue,
}
}
module ModuleB {
// 単一の enum メンバーを import
import PackageB::Color::Red;
// enum の全メンバーを import
import PackageB::Color::*;
var c: PackageB::Color;
// 修飾なしでメンバーを参照可能
assign c = Green;
}