依存関係
他の Veryl プロジェクトへの依存関係をプロジェクトに追加したい場合、Veryl.toml
に [dependencies]
セクションを追加します。エントリの左辺は依存関係のプロジェクト名、右辺はソースパスとバージョンです。github
はGitHub上のリポジトリを参照する糖衣構文です。代わりに git
を用いてURL全体を指定することもできます。
[dependencies]
veryl_sample = {github = "veryl-lang/veryl_sample", version = "0.1.0"}
# これは上記と同じ
veryl_sample = {git = "https://github.com/veryl-lang/veryl_sample", version = "0.1.0"}
デフォルトでは依存関係の名前空間はそのプロジェクト名と同じです。もし左辺の名前を変更した場合は、project
フィールドでプロジェクト名を指定する必要があります。
[dependencies]
veryl_sample_alt = {github = "veryl-lang/veryl_sample", project = "veryl_sample", version = "0.2.0"}
リポジトリの内部プロジェクトは以下のように指定できます。
[dependencies]
inner_prj1 = {github = "veryl-lang/veryl_sample", version = "0.1.0"}
inner_prj2 = {github = "veryl-lang/veryl_sample", version = "0.1.0"}
inner_prj3 = {github = "veryl-lang/veryl_sample", version = "0.1.0"}
依存関係の使用
Veryl.toml
に依存関係を追加したあとは、その依存関係の module
、interface
、package
を使うことができます。以下は veryl_sample
の依存関係に含まれる delay
モジュールを使った例です。
module ModuleA (
i_clk: input clock,
i_rst: input reset,
i_d : input logic,
o_d : output logic,
) {
inst u_delay: veryl_sample::delay (
i_clk,
i_rst,
i_d ,
o_d ,
);
}
注:上記のコードのプレイボタンの結果は依存関係解決を行わないので正確ではありません。実際のモジュール名は
veryl_sample_delay
になります。
バージョン要求
[dependencies]
セクションの version
フィールドはバージョン要求を示します。例えば、version = "0.1.0"
は 0.1.0
と互換性のある最新バージョンを意味します。互換性はセマンティックバージョニングで判定されます。バージョンは以下の3つの部分からなります。
メジャー
バージョンはAPI非互換な変更マイナー
バージョンは互換性のある機能追加パッチ
バージョンは互換性のあるバグ修正
もし メジャー
バージョンが 0
なら、マイナー
が非互換変更と解釈されます。
バージョン 0.1.0
、0.1.1
、0.2.0
があった場合、0.1.1
が選択されます。これは以下のように決定されます。
0.1.0
は0.1.0
と互換性がある0.1.1
は0.1.0
と互換性がある0.2.0
は0.1.0
と互換性がない0.1.1
は互換性のある最新バージョン
version
フィールドは =0.1.0
のような指定も可能です。詳細は Rust のバージョン要求についてのドキュメントを参照してください。Specifying Dependencies.
相対パス依存関係
手元の環境で開発しているとき、ローカルファイルパスへの依存関係が使えると便利なことがあります。相対パス依存関係は以下のように指定することができます。
[dependencies]
veryl_sample = {path = "../../veryl_sample"}
プロジェクトに相対パス依存関係がある場合、そのプロジェクトは veryl publish
で公開することはできません。
ローカルパスによる上書き
場合によってはローカルで変更されたバージョンの依存関係を使う必要があることもあります。そのような場合、以下のようにローカルパスによって依存関係を上書きすることができます。
[dependencies]
veryl_sample = {github = "veryl-lang/veryl_sample", version = "0.1.0", path = "../veryl_sample"}
これは ../veryl_sample
が存在する場合はそれを使い、そうでない場合は Git から取得する、という意味です。