Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SV

[[sv.filesets]] エントリは Veryl プロジェクトと一緒に管理する IP などの SystemVerilog ファイルを指定します。指定したファイルとインクルードディレクトリはファイルリストに追加されます。

[[sv.filesets]]
root         = "ip/foo"
enable_if    = "!for_asic && width == 32"
files        = ["rtl/foo_pkg.sv", "rtl/foo.sv"]
include_dirs = ["include"]

[[sv.filesets]] を繰り返すことで複数のファイルセットを指定できます。

設定

設定設定値必須説明
root文字列いいえfiles と include_dirs の相対パスの基準ディレクトリ
files文字列の配列はいSystemVerilog ファイル
include_dirs文字列の配列いいえインクルードディレクトリ
enable_if文字列いいえプロジェクトプロパティに対する条件式。評価結果が真の場合のみファイルセットが有効になります。省略した場合は常に有効です。

root を省略した場合、相対パスはプロジェクトのルートディレクトリ (Veryl.toml があるディレクトリ) からの相対パスになります。絶対パスでは root は無視されます。

条件式

enable_if フィールドにはプロジェクトプロパティに対する条件式を指定します。以下のオペランドを使えます。

  • プロパティ名
  • Veryl 構文の幅指定なし数値 (例: 32, 'b1010, 'hff)
  • 括弧で囲んだ式

以下の演算子を使えます。すべての演算子は左結合です。

優先順位演算子オペランドの型
高い!bool
<: >: <= >=int
== !=両辺が同じ型
&&bool
低い||bool
[properties]
for_asic = false
width    = 32

[[sv.filesets]]
enable_if = "for_asic"
files     = ["ip/asic/foo_asic.sv"]

[[sv.filesets]]
enable_if = "!for_asic && (width == 32 || width == 64)"
files     = ["ip/fpga/foo_fpga.sv"]

条件式の構文エラーは Veryl.toml の読み込み時に報告されます。未知のプロパティや型の不一致は式の評価時に報告されます。

ファイルリスト

有効なファイルセットのファイルとインクルードディレクトリは、生成されたファイルより前にファイルリストへ追加されます。インクルードディレクトリは veryl test が実行するシミュレータにも渡されます。

依存関係

依存関係のファイルセットもファイルリストに追加されます。依存関係の enable_if は、プロジェクトプロパティの上書きを反映した依存関係側のプロパティ値で評価されます。

  • Git 依存関係: ファイルとインクルードディレクトリは dependencies ディレクトリにコピーされ、コピー先のパスが参照されます。
  • パス依存関係: ファイルとインクルードディレクトリは直接参照されます。

Publish

公開するプロジェクトの [[sv.filesets]] のパスは .. を含まない相対パスでなければなりません。enable_if に関わらず、いずれかのファイルセットに絶対パスや .. を含むパスがあると veryl publish はエラーを報告します。